结对项目第二次作业


## 结对成员: ### 031501102 叶文滔 ### 031502409 杜宏庆

2.项目的Github链接:https://github.com/a270331257/Matching


## 部分数据展示: ### 学生数据 ![](http://images2017.cnblogs.com/blog/1226935/201710/1226935-20171009225103902-1531898964.png)

部门数据

数据生成原理:

数据生成过程主要由rand函数来完成,例如星期几、时间段、兴趣标签等。随后开始将这些零散的信息拼凑起来,组合成一个个学生实体和部门实体。举个例子,组合学生信息实体时,先随机决定空闲时间段数,再根据数目随机选择时间段,接下来是按序生成学生的学号,再随机生成学生的部门志愿,最后随机生成学生的兴趣标签等等。部门信息实体的组合同理,不再赘述。


## 匹配模式 ![](http://images2017.cnblogs.com/blog/1226935/201710/1226935-20171009225204855-403990674.png)

因为我们考虑到兴趣爱好和部门工作联系比较紧密,而且比较容易实现和维护。另外,我们觉得学生与部门的匹配重要的应该是学生的工作兴趣是否与部门相适应,这决定的学生在部门的工作热情与工作效率,所以我们经过讨论决定采用以兴趣标签为主的匹配模式。具体的实现方法是——遍历20个部门,每个部门遍历300个学生,若学生的志愿中包含该部门,那么检索学生的兴趣标签,当兴趣标签中有一项与部门相符,学生对该部门的flag值+1,遍历完成后,按flag值进行排序(其中还涉及到下标的跟踪),选取flag值最大的N(N为各部门纳新人数)名学生纳新,这样就完成了部门和学生的匹配。最后找出未招满的部门和未被录取的学生。


## 团队代码规范 (1)随机生成的各种信息、匹配算法用到的信息都用以下数组实现: ![](http://images2017.cnblogs.com/blog/1226935/201710/1226935-20171009230254449-2096666028.png)

(2)程序每个部分的区域划分(注释方式)如下:


6.结果评估 程序的匹配结果大部分达到了预期要求: (1)部门和学生匹配成功的结果如下: ![](http://images2017.cnblogs.com/blog/1226935/201710/1226935-20171011213621684-1674985181.png)

(2)落选的学生如下:

(3)未招满的部门如下:(大部分情况下每个部门都能招满)

程序的匹配结果总体来说是比较符合要求的,但是因为主要考虑兴趣标签,弱化了空闲时间段,因此程序的功能缺乏完备性。正在进一步的完善中。


## 个人总结 这次作业因为前期JSON生成数据不会做,一直卡在那边解决不了,导致假期荒废了几天。好在叶同学及时回来解决了这个问题,我队友不愧是大神,我不懂的问题在他那边基本都能得到解决。特别是他的生成数据算法给了我很大启发,算法的思想很值得我学习。尽管我们做的时间相比于其他结对小组不长,但我们通过这几天的不断摸索,交换代码意见,分工比较明确,所以过程也很顺利。我主要负责匹配算法这一块,我们觉得以兴趣标签来进行学生和部门之间的匹配比较合理,因为兴趣决定学生在部门的工作热情与工作效率,而时间比较灵活,可以调整。所以我利用学生兴趣和部门兴趣的“匹配度”为核心设计这个匹配算法,而且“匹配度”不会超过部门的限定纳新人数,这样算法比较容易实现和维护。但是目前对JSON的具体实现还没有完全得到解决,导致程序不够完善,和题目要求有些偏差,所以这几天会不断改进。
posted @ 2017-10-09 22:05  Biubiupia  阅读(196)  评论(2编辑  收藏  举报