buibui

# 设计说明

## 接口设计（API）

 bool wish(DDepartment *d, SStudent *s)//判断部门是否满足学生志愿
bool right(DDepartment *d, SStudent *s)//判断学生是否与部门的活动时间满足
match(int D_num, int S_num)//进行匹配


-

## match算法

	void match(int D_num, int S_num)
{
int i, j, k = 0;
bool  b;
for (i = 0; i < D_num; ++i)
{
for (j = 0; j < S_num; ++j)
{
b = right(&D[i], &S[j]);
if ( b)
{
Department_view[D[i].department_no].append(S[j].student_no);
Student_view[S[j].student_no].append(D[i].department_no);
//repeat[i][j] = false;
k++;
}
}
k = 0;
}
}


-

### 志愿判断

	bool wish(DDepartment *d, SStudent *s)
{
int i;
for (i = 0; i < s->wd; ++i)
{
if (d->department_no == s->Wish_department[i])
{
return true;
}
}
return false;
}


-

### 时间判断

	bool right(DDepartment *d, SStudent *s)
{
if (s->hbmatch < 5 && d->hbmatch < d->member_limit && wish(d, s))
{
int i, j;
for (i = 0; i < d->dschedules_num; ++i)
{
for (j = 0; j < s->sschedules_num; ++j)
{
if (d->event_schedules[i] == s->event_schedules[j])
{
//
s->event_schedules[j] = " ";
d->hbmatch++;
s->hbmatch++;
return true;
}
}
}
//

return false;
}
return false;
}


### 测试数据如何生成？

学号



部门编号



-

## 随机生成编号

double Random_gra()
{
return (1 + (double)(rand() / (double)RAND_MAX) + (double)(rand() / (double)RAND_MAX) + (double)(rand() / (double)RAND_MAX));
}int Ramdom_one_to_sev()
{
return (rand() % 7 + 1);
}
string int_to_string(int x, int num)
{
string tmp;
int j;
if (num >= 1000)x -= 3;
if (num > 9 && num < 100)x -= 2;
else if (num >= 100)x -= 3;
else x -= 1;
for (j = 0; j < x; ++j)tmp += "0";
tmp += to_string(num);
return tmp;
}


-

## 随机生成时间

string Schedule(int map[][7])
{
int i, j;
string str;
i = (rand() % 7);
j = (rand() % 7);
if (map[i][j] == 0)
{
str = Schedules[i][j];
map[i][j] = 1;
return str;
}
else  return Schedule(map);

}


-

## 随机生成标签

string Tag(int *map1)
{
int i;
string str;
i = (rand() % 15);
if (map1[i] == 0)
{
str = Tags[i];
map1[i] = 1;
return str;
}
else return Tag(map1);
}



# 运行及测试结果展示

-

## cmd运行结果

xxx.exe -c 200 20 //  -c   生成随机数据,第一个数据 studengt数量，第二个数据department数量
xxx.exe -m 200 20 //  -m 进行数据匹配,第一个数据 studengt数量，第二个数据department数量


-

# 遇到的困难及解决方法

OK

## 有何收获

Json::value::clear()

# PSP表格

• ## PSP

PSP2.1 Personal Software Process Stages 预估耗时（分钟） 实际耗时（分钟）
Planning 计划
· Estimate · 估计这个任务需要多少时间 10 5
Development 开发
· Analysis · 需求分析 (包括学习新技术) 120 90
· Design Spec · 生成设计文档 20 30
· Design Review · 设计复审 (和同事审核设计文档) 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 30
· Design · 具体设计 30 45
· Coding · 具体编码 360 480
· Code Review · 代码复审 100 60
· Test · 测试（自我测试，修改代码，提交修改） 120 240
Reporting 报告 20
· Test Report · 测试报告 30 20
· Size Measurement · 计算工作量 5 3
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 40

• ## 学习进度条

posted @ 2017-10-15 20:53  TangTiOne  阅读(309)  评论(1编辑  收藏  举报