C++建模實(shí)戰(zhàn)-高考錄取系統(tǒng)
今天的主題是錄取,但在真正的錄取之前要先準(zhǔn)備容納投檔結(jié)果的Admission Box。而AdmissionBox則是由AdmissionBoxManager來管理的。
處理的具體步驟如下:
從PlanManager處取得提交招生計(jì)劃的學(xué)校清單university_list。
利用清單取得各學(xué)校的招生計(jì)劃。
由招生計(jì)劃生成投檔結(jié)果箱Admission Box。
將生成的AdmissionBox交給AdmissionBoxManager管理。
接下來就是真正的招生環(huán)節(jié)了。
這個(gè)環(huán)節(jié)中出現(xiàn)了一個(gè)新類ScoreManager,它到職責(zé)是管理高考成績。在前面的文章中提到過,我們已經(jīng)將考試那部分排除本次聯(lián)系的范圍之外在外??梢哉J(rèn)為考試已經(jīng)結(jié)束,而成績也已經(jīng)錄入到ScoreManager中了。
接下來說明高考錄取的步驟。
從ScoreManger處取得考試的排名清單ranking_list。ranking_list里容納的是考生號,順序?yàn)閺母叻值降头帧.?dāng)然了,如果有要求,也可以生成一分一段統(tǒng)計(jì)表。
如果所有大學(xué)都已經(jīng)錄滿,就終止本輪錄取工作。
從ranking_list里取得每個(gè)考生號student_id。
通過student_id從ApplcationManager獲取該考生的志愿application。如果該學(xué)生已經(jīng)被錄取則后續(xù)處理終止。
從志愿中取得該學(xué)生填報(bào)的學(xué)校清單target_list。
獲取target_list中的大學(xué)編號target_id。
將大學(xué)編號target_id和考生號student_id發(fā)送給AdmissionBoxManager以確認(rèn)該考生能夠投檔成功。如果成功則通過調(diào)用setEnrolled方法將當(dāng)前志愿設(shè)為已經(jīng)錄取。否則投檔到下所大學(xué)。
如果運(yùn)氣不好,志愿中的每個(gè)大學(xué)都沒有投檔成功,那該考生就失去的本輪錄取的機(jī)會。
本輪錄取結(jié)束后,錄取結(jié)果就保存在各所學(xué)校的AdmissionBox中。
這是本次練習(xí)中最復(fù)雜的流程了,好像也不那么復(fù)雜吧。