博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对第二次作业
阅读量:4628 次
发布时间:2019-06-09

本文共 979 字,大约阅读时间需要 3 分钟。

结对第二次作业

成员

  • 媛 528
  • 佳莹 516

github

设计说明

内部实现设计

类图
1215401-20171015195044074-401062226.jpg

匹配算法

1.思路分析
我们将社团录取社员的影响因素列举出来,分别是:绩点、志愿数(填报志愿越多得分越低)、Tag匹配度、时间匹配度共四个影响因素。
因为四个因素的对于录取的影响强度不同,我们准备为个因素分配不同的权重值用来计算学生的最后得分。参考了,我们最终选定第三种对偶比较法来分配权重,结果为:绩点:0.18 志愿数:0.25 Tag匹配度:0.32 时间匹配度:0.25.
每个社团加权计算出报名学生的得分后,依据得分高低录取学生,得到最终的录取列表。
2.流程图
1215401-20171015195121387-1603808574.jpg

评价算法

算法是按照比较公平的方式决定录用那些学生,对于社团来说,有助于招收到更适合自己的成员,但对于学生来说,会有一大部分人最终无法成功加入社团且测试结果表明,学生总数越多,最后无社团人数占比越大,这是一个很大的不足的地方。

关键代码

按照定好的公式算出得分并放入列表
void calculate(Students stu)
{
int i = 0;
for (vector::iterator it_s = stu.aspi.begin(); it_s != stu.aspi.end(); ++it_s)
{
double sum = 0;
int k;
k = get_department(*it_s);

sum += stu.gpa * 0.18;       sum += point_num_aspi(stu) * 0.25;      sum += point_num_tag(stu ,depart[k]) * 0.32;            sum += stu_dep_time(stu ,depart[k]) * (-3) * 0.25;              depart[k].csm_list.push_back(sum);    depart[k].ID_list.push_back(stu.stuID);    depart[k].num_mem += 1;}

}

运行结果

s200-d20-in.json

1215401-20171015195206434-1632081155.png

S200-d20-out.json

1215401-20171015195210043-1413281387.png

转载于:https://www.cnblogs.com/su-yuan/p/7673876.html

你可能感兴趣的文章
WebService原理
查看>>
【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠
查看>>
计算机网络中的TCP/IP模型
查看>>
spring mvc 自定义Handlermapping
查看>>
JS验证密码安全级别
查看>>
Cookie是可以覆盖的,如果重复写入同名的Cookie,那么将会覆盖之前的Cookie。
查看>>
高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程
查看>>
高并发 Nginx+Lua OpenResty系列(8)——Lua模版渲染
查看>>
跟我学SpringCloud | 第三篇:服务的提供与Feign调用
查看>>
高并发 Nginx+Lua OpenResty系列(9)——HTTP服务
查看>>
跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine
查看>>
高并发 Nginx+Lua OpenResty系列(10)——商品详情页
查看>>
跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
查看>>
openGL 六边形
查看>>
openGL 蓝天白云
查看>>
openGL 画线条
查看>>
pyqt5desinger的安装即配置
查看>>
openGL 折线
查看>>
python 通过函数的使用,将字典的深度搜索化简(减少循环次数)
查看>>
openGL 大作业之n星变换
查看>>