Loading

结对项目第二次作业

结对成员的学号及姓名

031502624 赖志平 博客链接
031502627 王国华

项目的Github链接

laizhiping/department_student

贴出你们生成的一组最“好”的数据(给出对应链接即可),并详细说明"数据生成"程序的原理以及你们所考虑的因素。(15')

数据
数据生成原理:这里数据生成采用了随机数生成数据,时间:在客观可行的情况下来生成合适的时间点,再按照正确的格式输出到文件中。为了方便计算只考虑了整点的情况。tags的生成也是随机首先要有全部的tags,大概有20个左右。首先要随机生成tags的数量,在随机挑选该数量的tags。接着学生报的部门数、部门的名额数量也要依照题目要求随机生成。

详细说明你们数据建模及匹配程序的思路及实现方式。(30')

结构体构成

struct Department{
	string department_no;
	int member_limit;
	string event_schedules[20];
	string tags[20];
	int accept_members[300];
	int accept_members_time[300];
	int member_num = 0;
}department[N];//部门结构体

struct Student{
	string student_no;
	string applications_department[5];
	string free_time[20];
	string tags[20];
	int join_departments = 0;
}student[M];//学生结构体

/*输出部分存放数据*/
struct Admitted {
	string member[15];
	string department_no;
}admitted[20];

string unlucky_student[300];
string unlucky_department[20];

匹配程序

首先,我们将匹配分成两轮,每次通过不同的标准来匹配,每一次匹配都会更加细化和合理。
第一次匹配:按照支援的匹配 第一次匹配依照的是学生的志愿。因为部门和学生的匹配中最重要的肯定是志愿。学生报了志愿部门才能将学生录取。所以我们采用志愿为条件进行最初的筛选。
遍历全部学生,根据每个学生填报的部门志愿,即 applications_department,并且在每一个部门的accept_members数组里填入志愿加入部门的学生的结构体数组编号。完成按照志愿的匹配。
第二次匹配:按照时间的匹配 第二次匹配是依照学生空闲时间和部门活动时间来进行匹配。依次扫描预录取的学生,通过分析时间的字符串计算出学生的空闲时间和部门活动时间的重复时间,并记录在数组中。之后进行排序,以此决定录取的学生优先级。选择最靠前的学生录取。决定录取时将部门序号填入学生结构体中,将学生序号填入部门结构体中,方便输出。

你们在代码遵循了一定的规范,在博客中描述结对团队遵循的代码规范,并截取部分关键代码佐证说明。(5')

代码规范
部分代码规范:
代码佐证:

结果评估。对于程序的匹配结果,你们是否满意?请对你们程序处理结果进行分析。(20')

匹配结果:点击

数据按照要求的格式生成,其中学生匹配先按照志愿分组,再进行时间满足毒的排序,用排序结果来决定学生是否被录取。空闲时间和部门活动时间完全不重合的学生将会被淘汰。故学生加入部门一定是合理的。但是还是有一些不足之处。比如说减去学生空闲时间中已加入部门占用的时间,以及学生所加的部门数。还有tags,这个兴趣标签可以作为学生录取优先级的参考,但是由于时间关系,我们在前面的部分占用太多时间,而且这些功能过于复杂,最后还是放弃了,只采取了按照志愿和时间为条件来匹配。原先我们考虑过一些特殊情况,比如说学生没有进入部门的话给学生推荐一些部门,将学生加入符合兴趣标签的部门。但是这样很明显是不符合实际的要求的,如果这么做的话这位同学可能会骂娘

已经尝试过结对编码,你一定很多话要说。请发表结对感受,以及两个人对彼此结对中的闪光点或建议的分享。(10‘)

本次结对还是学到了很多东西的。然而自己做的并不好。由于自己一直搞不懂 json ,所以这部分大多都是对方做的。我主要做的是配对的算法部分。实际上不是很难。但是由于自己很少练习,很难上手,写出来的代码总会有各种各样的错误。我认为这是自己应当加强的。
在结对中,大家一起完成项目,所以一点都不能懈怠。因为自己而拖累到两个人时会很内疚。所以我会尽量的联系,让自己尽快的熟练打代码,不再因为自己的一些低级问题拖累到整个项目的进度。
两个人各自写代码一定要提前交流好,我们因为一些错误走了很多弯路,多次修改代码。通过这次作业感受到两个人一定要沟通好,明确各自的任务,及时沟通进度。可以大大提高效率,减少走弯路的次数。

posted @ 2017-10-09 21:29  egbert_wgh  阅读(137)  评论(1编辑  收藏  举报