今天的主题是录取,但在真正的录取之前要先准备容纳投档结果的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中。
这是本次练习中最复杂的流程了,好像也不那么复杂吧。
如果有兴趣可以通过以下连接下载EA文档:
http://pan.baidu.com/s/1nvpvg8L
阅读最新文章请扫描下面二维码,关注公众号【面对对象思考】,欢迎分享给更多的朋友!

















