C++建模实战-高考录取系统
扫描二维码
随时随地手机看文章
今天的主题是录取,但在真正的录取之前要先准备容纳投档结果的Admission Box。而AdmissionBox则是由AdmissionBoxManager来管理的。
处理的具体步骤如下:
从PlanManager处取得提交招生计划的学校清单university_list。
利用清单取得各学校的招生计划。
由招生计划生成投档结果箱Admission Box。
将生成的AdmissionBox交给AdmissionBoxManager管理。
接下来就是真正的招生环节了。
这个环节中出现了一个新类ScoreManager,它到职责是管理高考成绩。在前面的文章中提到过,我们已经将考试那部分排除本次联系的范围之外在外。可以认为考试已经结束,而成绩也已经录入到ScoreManager中了。
接下来说明高考录取的步骤。
从ScoreManger处取得考试的排名清单ranking_list。ranking_list里容纳的是考生号,顺序为从高分到低分。当然了,如果有要求,也可以生成一分一段统计表。
如果所有大学都已经录满,就终止本轮录取工作。
从ranking_list里取得每个考生号student_id。
通过student_id从ApplcationManager获取该考生的志愿application。如果该学生已经被录取则后续处理终止。
从志愿中取得该学生填报的学校清单target_list。
获取target_list中的大学编号target_id。
将大学编号target_id和考生号student_id发送给AdmissionBoxManager以确认该考生能够投档成功。如果成功则通过调用setEnrolled方法将当前志愿设为已经录取。否则投档到下所大学。
如果运气不好,志愿中的每个大学都没有投档成功,那该考生就失去的本轮录取的机会。
本轮录取结束后,录取结果就保存在各所学校的AdmissionBox中。
这是本次练习中最复杂的流程了,好像也不那么复杂吧。