第六次作业--结对编程第二次
本次作业deadline: 2017-10-15 21:00
根据上一次结对作业的背景,实现一个分配算法,根据输入信息,输出:
- 部门和学生间的匹配信息(一个学生可以确认多个他所申请的部门,一个部门可以分配少于等于其要求的学生数的学生)
- 未被分配到学生的部门
- 未被部门选中的学生
说明:仅就上述内容,实现一个单独的程序模块。不需要和之前的原型整合在一起。
要求:
- 1、输入的数据,另外写生成程序随机实现。
- 2、为输入输出设计接口,为该匹配程序模块后期可能的整合入系统提供便利。
- 3、输入输出采用 json 文本文件方式,可自由讨论确定细节内容,但需要明确并体现在博客中。
- 4、需要为匹配算法确立几条分配或排序原则,比如 绩点优先、或兴趣优先、或活动时间优先、或其他等等,请你们结对讨论确定。
- 5、对不同策略做出评价,并在博客中展示测试结果。提醒:对于同一组输入,输出的未被导师选中的学生数越少越好。
- 6、博客中列出代码你们的代码规范要求。
- 7、实现的程序语言以C/C++优先,部分同学如果对Java/C#掌握更加熟练也可接受。
- 8、代码提交在GitHub上,并在博客中提供项目链接(注意不是Github个人主页)。
- 9、两人博客中涉及到设计及代码展示可以相同,但是要求使用自己语言加以描述。
博客要求(模板/评分)
-
结对情况【1分】
- 自己
- 学号后3位
- 名(为保护隐私省去姓)
- 队友
- 学号后3位
- 名(为保护隐私省去姓)
- 队友博客链接(本次作业链接,不是主页,既然是一个队伍,保持同时发布并获取对方链接)
- 自己
-
GitHub 项目链接(不是主页)【1分】
-
设计说明
- 接口设计(API)【5分】
- 内部实现设计(类图)【5分】
- 匹配算法设计(思想/流程等)【5分】
- 测试数据如何生成?【5分】
- 如何评价自己的匹配算法?【10分】
-
关键代码解释
- 贴出你认为重要的/有价值的代码片段,并解释【5分】
-
运行及测试结果展示
- 测试200位同学,20个部门的情况【5分】
- 测试500位同学,30个部门的情况【8分】
- 测试1000位同学,50个部门的情况【10分】
- 测试5000位同学,100个部门的情况【15分】
- 以上每组测试分别提供:
- 测试结果概况描述
- 测试输入数据片段展示及完整数据链接
- 测试输出数据片段展示及完整数据链接
- 完整测试数据建议提交到Github项目tests目录内,再提供链接到博客
- 测试数据文件命名:
- 输入:
sxxx-dxxx-in.json
- 输出:
sxxx-dxxx-out.json
sxxx
中的xxx
替换同学数目dxxx
中的xxx
替换部门数目
- 输入:
- 效能分析报告【5分】
-
遇到的困难及解决方法【5分】
- 困难描述
- 做过哪些尝试
- 是否解决
- 有何收获
-
对队友的评价【5分】
- 有哪些好的地方值得学习
- 有哪些不好或者需要改进的地方
-
PSP表格【5分】
-
学习进度条【5分】
关于PSP/学习进度条等模板请参考: http://www.cnblogs.com/vertextao/p/7469789.html
参考输入输出信息
输入信息:
- 部门
- 部门编号
- 部门需要学生数的要求的上限,单个,数值,在[0,15]内;
- 部门的特点标签,多个,字符;
- 部门的常规活动时间段,多个;
- 更多...
- 学生
- 绩点信息,单个,数值;
- 兴趣标签,多个,字符;
- 每个学生有不多于5个的部门意愿(部门意愿不能空缺);
- 更多...
参考输入示例
{
"departments" :
[
{
"department_no" : "FZU_BL01",
"department_name" : "balabala",
"member_limit" : 10,
"tags": ["singing", "dancing", "guitar", ...],
"event_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
...
},
{
"department_no" : "FZU_WL01",
"department_name" : "wulalala",
"member_limit" : 15,
"tags": ["xxx", "yyy", "bbb", ...],
"event_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
...
},
...
],
"students" :
[
{
"student_no" : "FUZSTU_00134011",
"student_name" : "ZHANGSHAN",
"tags" : ["dangcing", "painting", "running", ...],
"available_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
...
},
{
"student_no" : "FUZSTU_00134010",
"student_name" : "LISI",
"tags" : ["reading", "abc", "ddd", ...],
...
},
...
]
}
参考输出示例
{
"matched_department_view" :
{
...
},
"matched_student_view" :
{
...
},
"standalone_departments" :
[
...
],
"standalone_students" :
[
...
]
}