資源描述:
《高校自動排課系統(tǒng).docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、//簡化版高校自動排課系統(tǒng)//排課任務(wù)簡化后包含:年級專業(yè)(教學(xué)班級,如計科13)、課程名稱、任課教師、上課地點和時間//教學(xué)班級簡化為不分人數(shù),不分專業(yè)方向。//上課教室簡化為不分理論課、實驗課,不分教室容納人數(shù),不分是否多媒體。//上課時段簡化為:一周五天,周一到周五,白天上課,上午四節(jié),下午四節(jié),//1~2(8:00~9:400)、3~4(10:00~11:40)、5~6(14:00~15:40)、7~8(16:00~17:40)//為了便于處理,將五天的所有上課時段用數(shù)字0~19表示//上課地點和時間組合成一個整數(shù)數(shù)組(位集,bitset),每20
2、個為1組為一個教室的上課時段安排//約束條件:1、教學(xué)班級的上課時間不能沖突//2、每個教室不能同時安排多個教學(xué)班級上課//3、任課教師的上課時間不能沖突//#include#include#include#include#include#include#include#includeusingnamespacestd;//原始數(shù)據(jù)文件中的每一行數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)structschedule{stringgrade_spec
3、ial;//年級專業(yè)stringcourse;//課程名稱stringteacher;//任課教師stringtotal_hour;//總學(xué)時stringteach_hour;//講課學(xué)時stringexperiment_hour;//實驗學(xué)時stringpractice_hour;//課程實踐學(xué)時stringcredit;//學(xué)分stringweek_hour;//周學(xué)時stringstart_stop;//起止周stringspeciality_orientation;//專業(yè)方向stringperson_num;//人數(shù)};//排課任務(wù)的數(shù)據(jù)結(jié)構(gòu)st
4、ructarrange{arrange(stringgs,stringc,stringt,intct=-1):grade_special(gs),course(c),teacher(t),classroom_time(ct){}stringgrade_special;//年級專業(yè)stringcourse;//課程名稱stringteacher;//任課教師//stringclassroom;//上課地點//stringtime;//上課時間intclassroom_time;//上課地點、時間};//教師倒排表數(shù)據(jù)結(jié)構(gòu),通過教師姓名找到該教師的排課情況st
5、ructteacher_inverted{teacher_inverted(stringtea,intcl=-1,intar=-1):teacher(tea),class_loc(cl),arrange_loc(ar){}stringteacher;intclass_loc;intarrange_loc;};//教室倒排表數(shù)據(jù)結(jié)構(gòu),通過教室名稱查找該教室的排課情況structclassroom_inverted{classroom_inverted(stringcr,intcl=-1,intar=-1):classroom(cr),class_loc(cl
6、),arrange_loc(ar){}stringclassroom;intclass_loc;intarrange_loc;};intmain(intargc,char**argv){if(argc!=3){cout<<"程序調(diào)用格式錯誤!調(diào)用格式:csp排課計劃文件可用教室文件";return0;}ifstreaminfile(argv[1]);vectorplan;strings;getline(infile,s);while(getline(infile,s)){schedulesch;istringstreamreco
7、rd(s);record>>sch.grade_special>>sch.course>>sch.teacher>>sch.total_hour>>sch.teach_hour>>sch.experiment_hour>>sch.practice_hour>>sch.credit>>sch.week_hour>>sch.start_stop>>sch.speciality_orientation>>sch.person_num;plan.push_back(sch);}infile.close();vector>arrang
8、es;//整個系的排課安排vectorarr;/