结对情况
姓名 | 学号(后三位) |
---|---|
元 | 223 |
一飞 | 608 |
项目链接
设计说明
students:
学生编号 - sId
兴趣标签 - sTags
标签个数- sTagNum
空闲时间段- sFreeTimes
空闲时间段的个数- sFreeTimeNum
学生志愿的部门- sVoluntaryDepa
departments:
部门编号 -dId
纳新人数 -dNum
标签 -dTags
标签个数 -dTagsNum
常规活动时间 -dSchedules
dScheNum -常规活动时间的个数
匹配算法设计(思想/流程)
经过测试,我发现不是匹配算法错误,而是在json的读入上出了错误,目前还没有解决,所以还不能确定匹配算法是否正确,因此先放在这里,继续解决。。。
测试数据如何生成
本次作业json的最终实现是使用jsonCpp库结合rand()函数的使用来实现的。其中生成部门和学生相关信息的方法基本上一致,以生成学生信息为例:
void dataStu(Students *stu, int stuSum, int depaSum)
{
//srand((int)time(0));
for (int i = 0; i < stuSum; i++) {
stu[i].sId = 1000 + i;
for (int j = 0; j < 5; j++) {
stu[i].sVoluntaryDepa[j] = rand() % depaSum;
}
stu[i].sTagsNum = rand() % 10 + 1;
for (int j1 = 0; j1 < stu[i].sTagsNum; j1++) {
int inx;
inx = rand() % stu[i].sTagsNum;
stu[i].sTags[j1] = tags[j1];
}
stu[i].sFreeTimeNum = rand() % 5 + 1;
for (int k = 0; k < stu[i].sFreeTimeNum; k++) {
int d, h1;
do {
d = rand() % 7;
h1 = rand() % 13;
} while (flag[d][h1] || flag[d][h1 + 1] || flag[d][h1 + 2]);
string res = day[d] + "." + hour[h1] + ":00" + "~" + hour[h1 + 2] + ":00";
stu[i].sFreeTimes[k] = res;
}
}
}
生成json是利用Json::Value来生成一个个节点,然后再调用append()函数把一个个节点接到他们的父节点上,最后形成一个完整的json对象,之后利用toStyledString()函数把这个对象转换为字符串,之后就把字符串输出到文件就完成了数据生成的任务。代码如下:
void jsonOutStu(Students *stu, int stuSum, int depSum) {
//Json::Value jsonRoot;
Json::Value jsonItem;
for (int i = 0; i < stuSum; i++) {
jsonItem["sId"] = stu[i].sId;
jsonItem["sTagsNum"] = stu[i].sTagsNum;
for (int j = 0; j < stu[i].sTagsNum; j++) {
jsonItem["sTags"].append(stu[i].sTags[j]);
}
jsonItem["sFreeTimeNum"] = stu[i].sFreeTimeNum;
for (int k = 0; k < stu[i].sFreeTimeNum; k++) {
jsonItem["sFreeTimes"].append(stu[i].sFreeTimes[k]);
}
for (int l = 0; l < 5; l++) {
jsonItem["sVoluntaryDepa"].append(stu[i].sVoluntaryDepa[l]);
}
//jsonRoot["Students"] = Json::Value(jsonItem);
ALL["Students"].append(jsonItem);
jsonItem.clear();
}
//stuJson.close();
return;
}
如何评价自己的匹配算法
关键代码解释
运行及测试结果展示
遇到的困难及解决办法
本次作业因为要使用json这种数据格式,所以一开始我在网上找了很多关于json的c++库。最开始使用jsonCpp库的时候,因为要将程序编译生成静态链接库然后再引用比较麻烦,所以换用cJson库一段时间,但是在实际编程的时候,查找资料发现网上关于jsonCpp库的资料是最多的,最终还是换用了jsonCpp库,采取将里面的文件包含到工程中的方式,避开了自己所不熟悉的编译静态链接库的过程,可以说在这件小事上浪费了不少时间。
对队友的评价
本次作业布置的时间是在十一国庆时,队友刚好在外面玩,所以我主动请缨承担了比较多的工作,但是由于比较菜,导致这次作业完成的情况不是很好,很多该考虑的东西没有考虑好,在一些不必要的地方花了太多的时间,实在是对不起队友,对不起老师,对不起党的十九大的胜利召开。。。。
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 900 | 1000 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 80 | 140 |
· Design Spec | · 生成设计文档 | ||
· Design Review | · 设计复审 (和同事审核设计文档) | ||
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | ||
· Design | · 具体设计 | 0 | 0 |
· Coding | · 具体编码 | 600 | 800 |
· Code Review | · 代码复审 | 20 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 120 |
Reporting | 报告 | 30 | 60 |
· Test Report | · 测试报告 | ||
· Size Measurement | · 计算工作量 | ||
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1730 | 2210 |
学习进度条
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 150 | 150 | 48 | 48 | 了解了软件工程的一般方法,学会用工程的视角看待项目 |
2 | 120 | 270 | 7 | 55 | 原型设计、合作探讨、复习课程 |
3-4 | 400 | 670 | 90 | 145 | 学习c++中json的使用 |