第二次结对作业

结对情况

姓名 学号(后三位)
223
一飞 608
[队友博客链接][1]

项目链接

[coding.net项目链接][2]

设计说明

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的使用
[1]: http://www.cnblogs.com/post/readauth?url=/CYiFei/p/7670973.html
[2]:https://coding.net/u/imagainstzy/p/pairwork/git
posted @ 2017-10-15 19:27  imagainstzy  阅读(169)  评论(1编辑  收藏  举报