今天的主题是录取,但在真正的录取之前要先准备容纳投档结果的Admission Box。而AdmissionBox则是由AdmissionBoxManager来管理的。

C++建模实战1-高考录取系统(6)_二维码

处理的具体步骤如下:

  1. 从PlanManager处取得提交招生计划的学校清单university_list。
  2. 利用清单取得各学校的招生计划。
  3. 由招生计划生成投档结果箱Admission Box。
  4. 将生成的AdmissionBox交给AdmissionBoxManager管理。


接下来就是真正的招生环节了。


这个环节中出现了一个新类ScoreManager,它到职责是管理高考成绩。在前面的文章中提到过,我们已经将考试那部分排除本次联系的范围之外在外。可以认为考试已经结束,而成绩也已经录入到ScoreManager中了。

C++建模实战1-高考录取系统(6)_建模_02


接下来说明高考录取的步骤。

  1. 从ScoreManger处取得考试的排名清单ranking_list。ranking_list里容纳的是考生号,顺序为从高分到低分。当然了,如果有要求,也可以生成一分一段统计表。
  2. 如果所有大学都已经录满,就终止本轮录取工作。
  3. 从ranking_list里取得每个考生号student_id。
  4. 通过student_id从ApplcationManager获取该考生的志愿application。如果该学生已经被录取则后续处理终止。
  5. 从志愿中取得该学生填报的学校清单target_list。
  6. 获取target_list中的大学编号target_id。
  7. 将大学编号target_id和考生号student_id发送给AdmissionBoxManager以确认该考生能够投档成功。如果成功则通过调用setEnrolled方法将当前志愿设为已经录取。否则投档到下所大学。
  8. 如果运气不好,志愿中的每个大学都没有投档成功,那该考生就失去的本轮录取的机会。
  9. 本轮录取结束后,录取结果就保存在各所学校的AdmissionBox中。


这是本次练习中最复杂的流程了,好像也不那么复杂吧。


如果有兴趣可以通过以下连接下载EA文档:

​http://pan.baidu.com/s/1nvpvg8L​

阅读最新文章请扫描下面二维码,关注公众号【面对对象思考】,欢迎分享给更多的朋友!

C++建模实战1-高考录取系统(6)_二维码_03