结对作业——第二次作业
1.结对成员:
031502537 叶己峰
031502518 练斐弘
2.Github链接:
作业地址:http://www.cnblogs.com/easteast/p/7604534.html
3.作业描述:
- 1、构造输入数据的生成程序,实现可定制的输入数据(输入数据是指input_data.txt)。在博客中举一个样例(贴出关键数据即可),并说明生成数据的所考虑因素。
- 2、需要为智能匹配算法确立几条分配或排序原则,比如兴趣优先、或活动时间优先、或其他等等,请你们结对讨论确定。
- 3、给出结果分析,分析自己的输出是否达到算法所达到的指标。关于相关指标条件,每个组感受应当不同,请把想法写在博客中。
- 4、代码需要遵循一定的规范,在博客中描述结对团队遵循的代码规范,并截取部分关键代码佐证说明。
- 5、本次结对项目实现使用程序语言不做具体限制,但需要能生成Windows平台的可执行文件。C/C++/C#编译后即可生成,其他语言可以使用打包工具把依赖打包上传,比如exe4j。但注意,本次没有重测机会,请确保你项目的所有依赖文件都上传到了Github中。为确保没有问题,最好在无相应语言环境的机器上克隆项目并进行测试。
- 6、代码提交在GitHub上,并给GitHub链接。
- 7、两个人发布独立博客,包含上述内容的描述,同时包含结对感受,以及两个人对彼此结对中的闪光点或建议的分享。项目的测试分数两人共享,博客的分数各自独立。博客可以有共享的架构设计图等,但不可雷同,否则视作抄袭。
- 8、助教将收集各组成员的程序,并基于一组特殊数据进行测试(该测试数据遵循下面的输入规范,该数据由助教根据真实场景讨论得出,作业评定时会给出,事先不对外公布)。测试结果基于全部同学的输出,助教将统计各组同学对于各个部门录取相关人员的频率,得出一组部门与成员的录取关系数据(该数据遵循下面的输出规范),并与各组同学的数据作对比,最终评判同学们的测试结果。
4.生成数据
首先先枚举如下数据:
string all_tags[10] = {"reading","programming","film","English","music",
"dance","basketball","chess","running","swimming"};
string freeweek[7] = {"Mon.","Tues.","Wed.","Thurs.","Fri.","Sat.","Sun."};
string freetimes[8] = {"08:00~10:00","9:00~11:00","10:00~12:00","14:00~16~00","15:00~17:00",
"18:00~20:00","19:00~21:00","20:00~22:00"};
string all_department_no[20] = {"D001","D002", "D003", "D004", "D005", "D006","D007","D008", "D009", "D010",
"D011", "D012","D013","D014","D015","D016", "D017", "D018","D019","D020" };
- 我们的第一个生成数据程序是完全随机。学生学号、部门编号、空闲时间段、志愿申请都是用随机生成的,然后用一个string数组记下,但是这样的最大问题是要花费大量时间判断是否重复,重复的数据要丢弃重新生成。
- 之后我们使用如下条件来生成数据:
- 学生学号、部门编号:
- 按顺序生成,
- 学生以”031502xxx“格式,部门按”D0xx“格式
- 学生300人,部门20个
- 空闲时间、活动时间:
- 使用二维数组 bool time[x][y],分别表示星期几和时间段
- 两小时为一个时间段,而且从8:00到22:00,中间还抛开午餐晚餐休息时间
- 部门志愿:因为部门志愿有优先级,所以只能用原来的方式string记录
- 学生学号、部门编号:
- 我们生成的最好一组数据:详情戳我
5.数据建模及匹配程序的思路及实现方式
6.代码规范
1.对代码的注释放在其上方或者右边:
2.变量命名使用驼峰式,而且使用下划线,力求让人见字知意
3.在代码缩进上规范使用4个空格
4.在每个函数头部上方都有相应注释,说明函数实现的功能
5.每个大括号一定要单独一行
//部门结构体
struct Department
{
string department_no; //部门编号(唯一确定值),字符
int member_limit; //各部门需要学生数的要求的上限,单个,数值,在[10,15]内;
int tags_num; //部门的特点标签个数
int tags[10]; //各部门的特点标签,多个(两个以上),字符;
int event_schedules_num; //各部门的常规活动时间段个数
int event_schedules[7][8]; //各部门的常规活动时间段,多个(两个以上),字符。
};
```
//常规活动时间段
dep[i].event_schedules_num = unsigned(rand()%6) + 2;
for(int j = 0; j < dep[i].event_schedules_num; j++)
{
int t1 = unsigned(rand()%7);
int t2 = unsigned(rand()%8);
if(dep[i].event_schedules[t1][t2]==1)
j--;
else
dep[i].event_schedules[t1][t2] = 1;
}
---
7.结果评估
8.结对感受
本次作业完成进度超乎预料的慢,甚至到截止时间还有部分没有完成,分析其原因:其一是这次作业正值国庆假期,我和队友都回家了,然后在完成本次作业上线上的交流是不如面对面交流来的流畅,无法很好了解双方工作进度;其二是在家中无法像在校去投入更多精力去完成任务。
当然,通过这次作业也收获很多感受。不同于第一次结队作业,这次要求写代码,然后当两个人代码整合时,代码不规范的确是非常折磨人的;再然后是在json的使用上,特别是对于VC工具不是很熟悉情况下,一直出现错误,花费大量时间去搞这个东西最后才弄好。