版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、面向?qū)ο蠹夹g與C+課程設計任務書課 程面向?qū)ο蠹夹g與C+ 班級xxxx指導教師xxx題 目教師排課系統(tǒng)完成時間xxxxx至xxxxx主要內(nèi)容1問題描述每位教師都有教學工作量,教師對他所希望講授的課程表達為一個期望值,1,2,n,其中1是最高的期望值。課程也有優(yōu)先級,1,2,n,用來決定將課程分給教師的順序,其中1是最高的優(yōu)先級。設計一個程序針對某些課程給某些教師進行排課。2基本要求程序運行時,用戶輸入教師信息(姓名、教師號、工作量)、課程信息(課程名、課程號、周學時、總學時、優(yōu)先級),教師對所希望講授課程的期望值以及教學工作量等相關信息,所有信息應保存在文件中,程序根據(jù)課程的優(yōu)先級以及教師對課
2、程的期望值進行排課。為了公平起見,程序隨機分配課程,如果10門課程都有優(yōu)先級1,程序以隨機的順序?qū)⑦@些課程分給教師,如果10位教師對某門課程的期望值為1,程序應從10位教師中隨機選擇一個。最后輸出排課情況,即某位老師上某門課程,以及某位老師的工作量。3測試數(shù)據(jù)程序應能實現(xiàn)對不少于20門課和10個教師的排課,并且使每個教師的滿意度達到最大,不存在工作量不滿的教師以及未分配的課等情況。設計報告要求1封面:(格式附后)2課程設計任務書3課程設計報告: 系統(tǒng)總體方案 設計思路和主要步驟 各功能模塊和流程圖 設計代碼 心得體會和參考資料說明:學生完成課程設計后,提交課程設計報告及軟件,要求文字通暢、字跡
3、工整(也可用以打?。?,文字不少于5000 字,并裝訂成冊。版面要求1.題目用黑體三號,段后距18磅(或1行),居中對齊;2.標題用黑體四號,段前、段后距6磅(或0.3行);3.正文用小四號宋體,行距為1.25倍行距;4.標題按“一”、“”、“1”、“”順序編號。上機時間安排星期周次一二三四五六日第17周1-41-41-41-41-4指導時間地點上機時間,E520一系統(tǒng)總體方案:某學校每位教師都有教學工作量,教師對他所希望講授的課程表達為一個期望值,1,2,n,其中1是最高的期望值。課程也有優(yōu)先級,1,2,n,用來決定將課程分給教師的順序,其中1是最高的優(yōu)先級。設計一個程序針對某些課程給某些教師
4、進行排課。要求:(一)程序運行時,用戶輸入教師信息(姓名、教師號、工作量)、課程信息(課程名、課程號、周學時、總學時、優(yōu)先級),教師對所希望講授課程的期望值以及教學工作量等相關信息,所有信息應保存在文件中。(二)程序根據(jù)課程的優(yōu)先級以及教師對課程的期望值進行排課。最后輸出排課情況,即某位老師上某門課程,以及某位老師的工作量。(三)可以實現(xiàn)對文件的修改。(四)可以在各個界面中實現(xiàn)退出以及進入的循環(huán)。(五)可以退出本系統(tǒng)。(六)程序應能實現(xiàn)對不少于20門課和10個教師的排課,并且使每個教師的滿意度達到最大,不存在工作量不滿的教師以及未分配的課等情況。方法:為了公平起見,程序隨機分配課程,如果10門
5、課程都有優(yōu)先級1,程序以隨機的順序?qū)⑦@些課程分給教師,如果10位教師對某門課程的期望值為1,程序應從10位教師中隨機選擇一個。2.設計思路和主要步驟:我們使用面向?qū)ο蟪绦蛟O計方法的思路進行分析,得出了整個系統(tǒng)應該涉及三個類的信息和操作,分別是教師類,課程類,排課類。各類信息以文件方式的儲存以及實現(xiàn)各種功能和界面的實現(xiàn)是在main函數(shù)中體現(xiàn)。(一)教師類 teacher:包括私有數(shù)據(jù)成員 姓名 name,編號 id ,工作量work_load ,已有工作量 total(方便判斷是否排滿課)。成員函數(shù)包括設置和得到私有成員值的成員函數(shù)與輸出教師信息的成員函數(shù)。(2)課程類 course:私有成員有
6、 課程名 course_name,課程號 course_id,周課時 week_hour,總課時 total_hour,優(yōu)先度 N。(3)由于考慮到這應該是一個完整的排系統(tǒng),加上我們希望這個系統(tǒng)的界面能夠做到清晰、明了,我們經(jīng)討論后決定采用一個總操作界面,一個分操作界面??偛僮鹘缑鎽摪?(分別對應 1.輸入教師信息 2.輸入課程信息 3輸入教師對課程期望度 4.排課 5.輸出排課結(jié)果 6.顯示操作菜單 7.輸出教師文件信息 8.輸出課程文件信息 9.輸出教師期望度文件信息 10.修改文件信息 0.退出)修改文件信息界面中又因該包括 1.修改教師文件 2.修改課程文件 3.修改教師期望度信息
7、 0.退出3.各功能模塊與流程圖:說明:以下是對應上面系統(tǒng)功能模塊實圖的系統(tǒng)流程圖,因為制圖的不便,故只將成功完成一次操作的流程給出,而“各個流程中中途如果輸入了菜單中沒有的項以及數(shù)據(jù)保存文件中沒有的數(shù)據(jù)而被強制退出”的流程因為過于復雜(每步都要進行判斷)而沒有給出,實際情況讀者朋友一試便知。在此我們對此表示深深的歉意,我們以后一定會努力完善我們各方面的工作的。開始輸入教師基本數(shù)據(jù)輸入課程基本數(shù)據(jù)輸入教師期望度排課輸出排課結(jié)果幫助輸出教師信息輸出課程信息輸出教師期望度文件修改退出修改教師信息修改課程信息修改教師期望度信息結(jié)束各功能模塊:命令對應函數(shù)功能描述1input_teacher輸入數(shù)據(jù)并
8、寫入文件2input_course輸入數(shù)據(jù)并寫入文件3input_num輸入數(shù)據(jù)并寫入文件4arranging排課5print輸出排課結(jié)果6print_help幫助7print_teacher輸出文件信息8print_course輸出文件信息9print_num輸出文件信息10change修改文件信息(五)程序代碼:Teacher.h:#include#includeclass teacherprivate:char name11;int id;int work_load;int total;public:teacher();void set_teacher(char *pn,int i,in
9、t w);void set_total(int t)total=t;char *get_name()return name;int get_id()return id;int get_work_load()return work_load;int get_total()return total;void print();teacher:teacher()strcpy(name,無);id=0;work_load=0;total=0;void teacher:set_teacher(char *pn,int i,int w)strcpy(name,pn);id=i;work_load=w;voi
10、d teacher:print()cout姓名:nameendl;cout編號:idendl;cout工作量:work_loadendl;Course.h:#includeclass courseprivate: char course_name15; int course_id; int week_hour; int total_hour; int N;public: course(void);void set_course(char *pname,int i,int w,int t,int n);char *get_course_name()return course_name;int g
11、et_course_id()return course_id; int get_week_hour()return week_hour;int get_total_hour()return total_hour;int get_N()return N;void print();course:course(void)strcpy(course_name,無);course_id=0;week_hour=0;total_hour=0;N=0;void course:set_course(char *pname,int i,int w,int t,int n)strcpy(course_name,p
12、name);course_id=i;week_hour=w;total_hour=t;N=n;void course:print()cout課程名:course_nameendl;cout編號:course_idendl;cout周學時:week_hourendl;cout總學時:total_hourendl;cout優(yōu)先級:Nendl;Arrange.h:class arrangeprivate:int x;int y;public:arrange(void)x=0;y=0;void set_x(int a)x=a;void set_y(int b)y=b;int get_x()return
13、 x;int get_y()return y;排課.cpp:#include#include #include#include#include#includeteacher.h#includecourse.h#includearrange.h#include /using namespace std;void input_teacher(teacher *t,int n,int m); /教師基本數(shù)據(jù)輸入void input_course(course *c,int m); /課程基本信息輸入void input_num(int *num,int n,int m); /教師對課程滿意度輸入vo
14、id arranging(int *num,teacher *t,course *c,arrange *a,int n,int m); /排課void print(teacher *t,course *c,arrange *a,int m); /輸出排課結(jié)果void print_help(); /幫助函數(shù)void print_teacher(); /輸出教師信息void print_course(); /輸出課程信息void print_num(); /輸出教師對課程的滿意度void change(int *num,teacher *t,course *c,arrange *a,int n,i
15、nt m); /修改文件信息void change_teacher(teacher *t,int n); /修改教師信息void change_course(course *c,int m); /修改課程信息void change_num(teacher *t,course *c,int *num,int n,int m); /修改教師對課程滿意度void main() int i,n,m; cout=教師排課系統(tǒng)=endl; coutn; coutm; int* num=new int*n; /為每一行分配空間 for(i=0; in; +i) numi=new intm; teacher
16、*t; course *c; arrange *a; t=new teachern; c=new coursem; a=new arrangem; if(t=NULL|c=NULL|a=NULL) cout內(nèi)存分配失敗endl; return ; cout 1. 輸入教師基本數(shù)據(jù)n;cout 2. 輸入課程基本數(shù)據(jù)n;cout 3. 輸入教師對課程滿意度n;cout 4. 排課n;cout 5. 輸出排課結(jié)果n;cout 6. 幫助n;cout 7. 輸出教師信息n;cout 8. 輸出課程信息n;cout 9. 輸出教師對課程滿意度n;cout 10.修改文件數(shù)據(jù)n;cout 0. 退出n;
17、coutn 輸入你的選擇:; int ch; do /coutnn 請選擇:n;/cout 1. 輸入教師基本數(shù)據(jù)n;/cout 2. 輸入課程基本數(shù)據(jù)n;/cout 3. 輸入教師對課程滿意度n;/cout 4. 排課n;/cout 5. 輸出排課結(jié)果n;/cout 6. 幫助n;/cout 0. 退出n;/coutch;switch(ch) case 1 : input_teacher(t,n,m);break; case 2 : input_course(c,m);break; case 3 : input_num(num,n,m);break; case 4 : arranging(n
18、um,t,c,a,n,m);break; case 5 : print(t,c,a,m);break; case 6 : print_help();break; case 7 : print_teacher();break; case 8 : print_course();break; case 9 : print_num();break; case 10: change(num,t,c,a,n,m);break; case 0 : break; while(ch); /刪除每一行分配的空間 for(i=0; in; +i) delete numi; /刪除行指針數(shù)組 delete num;
19、delete t; delete c; delete a; /釋放內(nèi)存void input_teacher(teacher *t,int n,int m) /教師基本數(shù)據(jù)輸入fstream teachers(d:teachers.txt,ios:out);teachers姓名setw(20)編號setw(20)工作量endl;int i,j,work,id;char name11,nn11;coutn 請輸入教師基本數(shù)據(jù):endl;while(1) int total=0;for(i=0;in;i+) cout第i+1個教師:n; cout id) break;else cout編號應為數(shù)字,
20、請重新輸入:endl;cin.clear();cin.ignore();coutname;for(j=0;j11;j+) if ( (!=namej&namej=)|(=namej&namej=)|=namej&namej= )nnj=0; else nnj=1;if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn10=1) break;else cout姓名應為字母,請重新輸入:endl; cin.clear(); cin.ignore();cout work) break;else cout工作量應為數(shù)字,請重新輸入:m) cout總工作量大于課程數(shù),
21、請重新輸入:endl;break;ti.set_teacher(name,id,work);teachersnamesetw(20)idsetw(20)workm) continue;teachers.close();void input_course(course *c,int m) /課程基本信息輸入fstream courses(d:courses.txt,ios:out);courses課程名setw(10)課程號setw(10)周學時setw(10)總學時setw(10)優(yōu)先級endl;int week_hour,total_hour,d1,id,i,j;char name11;ch
22、ar nn11;for(i=0;im;i+) cout第i+1門課:n; cout id) break;else cout課程號應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();coutname;for(j=0;j11;j+) if ( (!=namej&namej=)|(=namej&namej=)|=namej&namej= )nnj=0; else nnj=1;if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn10=1) break;else cout課程名應為字母,請重新輸入:endl; cin.clear();
23、cin.ignore(); cout week_hour ) break;else cout周學時應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();cout total_hour ) break;else cout總學時應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore(); cout d1) break;else cout優(yōu)先級應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore(); ci.set_course(name,id,week_hour,total_hour,d1);coursesnamesetw(
24、10)idsetw(10)week_hoursetw(10)total_hoursetw(10)d1endl; courses.close();void input_num(int *num,int n,int m) /教師對課程滿意度輸入fstream nums(d:hope.txt,ios:out);numssetw(4)滿意度setw(6);int nu,i,j,k;for(k=0;km;k+)nums第k+1門課程setw(5);numsendl;for(i=0;in;i+)nums第i+1名老師setw(3);for(j=0;jm;j+)cout第i+1位老師對第j+1門課程的滿意度
25、nu;while(1) if (cin nu) break; else cout滿意度應為數(shù)字,請重新輸入:endl; cin.clear(); cin.ignore(); numij=nu;numsnusetw(13);numsendl;nums.close();void arranging(int *num,teacher *t,course *c,arrange *a,int n,int m) /排課int h,s,i,j,b,k=1,min,min1,q=0;min=c0.get_N();srand(unsigned)time(NULL);for(s=0;sm;s+)if(cs.get
26、_N()min)min=cs.get_N();while(h)for(i=0;im;i+) if(ci.get_N()=min) /判斷課程優(yōu)先級 min1=num0i;for(j=0;jn;j+)if ( numjimin1&tj.get_total()0)b=rand()%n;if(bn)continue;else if(tb.get_total()tb.get_work_load()continue;else if(numbi!=min1) /判斷教師優(yōu)先級continue;elseaq.set_x(b);aq.set_y(i);q+;int w=tb.get_total()+1;tb.
27、set_total(w);/k=0;cout第q次排課endl;break; /if(i=m-1) min+;min+;if(qm) h=1;else h=0;void print(teacher *t,course *c,arrange *a,int m) /輸出排課結(jié)果int i,a1,b1;for(i=0;im;i+) a1=ai.get_x();b1=ai.get_y();cout第a1+1位老師上第b1+1門課endl; ta1.print();cb1.print();void print_help() /幫助函數(shù) cout 1. 輸入教師基本數(shù)據(jù)n;cout 2. 輸入課程基本數(shù)據(jù)
28、n;cout 3. 輸入教師對課程滿意度n;cout 4. 排課n;cout 5. 輸出排課結(jié)果n;cout 6. 幫助n;cout 7. 輸出教師信息n;cout 8. 輸出課程信息n;cout 9. 輸出教師對課程滿意度n;cout 10.修改文件數(shù)據(jù)n;cout 0. 退出n;void print_teacher() /輸出教師信息 ifstream fin(d:teachers.txt,ios:nocreate);if(!fin)coutFile open error!n;return;char c80;while(!fin.eof() /判斷文件是否讀結(jié)束 fin.read(c,80
29、); cout.write(c,fin.gcount(); fin.close();void print_course() /輸出課程信息 ifstream fin(d:courses.txt,ios:nocreate);if(!fin)coutFile open error!n;return;char c80;while(!fin.eof() /判斷文件是否讀結(jié)束 fin.read(c,80); cout.write(c,fin.gcount(); fin.close();void print_num() /輸出教師對課程的滿意度 ifstream fin(d:hope.txt,ios:no
30、create);if(!fin)coutFile open error!n;return;char c80;while(!fin.eof() /判斷文件是否讀結(jié)束 fin.read(c,80); cout.write(c,fin.gcount(); fin.close();void change(int *num,teacher *t,course *c,arrange *a,int n,int m) /修改文件信息 int ch; do coutnn 請選擇:n;cout 1. 修改教師基本數(shù)據(jù)n;cout 2. 修改課程基本數(shù)據(jù)n;cout 3. 修改教師對課程滿意度n;cout 0. 退
31、出n;coutch;switch(ch) case 1 : change_teacher(t,n);break; case 2 : change_course(c,m);break; case 3 : change_num(t,c,num,n,m);break; case 0 : break; while(ch);void change_teacher(teacher *t,int n) /修改教師數(shù)據(jù)int i,aa,bb,k,j,ii;char na11;char nn11;coutii;for(i=0;in;i+)if(ti.get_id()=ii)cout此教師原信息:endl;ti.
32、print();k=i; cout請輸入此教師新信息:endl; cout aa) break;else cout編號應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();coutna;for(j=0;j11;j+) if ( (!=naj&naj=)|(=naj&naj=)|=naj&naj= )nnj=0; else nnj=1;if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn10=1) break;else cout姓名應為字母,請重新輸入:endl; cin.clear(); cin.ignore();cout bb
33、) break;else cout工作量應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();tk.set_teacher(na,aa,bb); fstream teachers(d:teachers.txt,ios:out);teachers姓名setw(20)編號setw(20)工作量endl; for(j=0;jn;j+) if(j=k) teachersnasetw(20)aasetw(20)bbendl; else teacherstj.get_name()setw(20)tj.get_id()setw(20)tj.get_work_load()endl;
34、 teachers.close();void change_course(course *c,int m) /修改課程信息 int i,aa,bb,cc,dd,k,j,ii;char na11;char nn11;coutii;for(i=0;im;i+)if(ci.get_course_id()=ii)cout此課程原信息:endl;ci.print();k=i; cout請輸入此課程新信息:endl;cout aa) break;else cout課程號應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();coutna;for(j=0;j11;j+) if (
35、(!=naj&naj=)|(=naj&naj=)|=naj&naj= )nnj=0; else nnj=1;if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn10=1) break;else cout課程名應為字母,請重新輸入:endl; cin.clear(); cin.ignore(); cout bb ) break;else cout周學時應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore();cout cc ) break;else cout總學時應為數(shù)字,請重新輸入:endl;cin.clear();cin.igno
36、re(); cout dd) break;else cout優(yōu)先級應為數(shù)字,請重新輸入:endl;cin.clear();cin.ignore(); ck.set_course(na,aa,bb,cc,dd);fstream courses(d:courses.txt,ios:out);courses課程名setw(10)課程號setw(10)周學時setw(10)總學時setw(10)優(yōu)先級endl; for(j=0;jm;j+) if(j=k) coursesnasetw(10)aasetw(10)bbsetw(10)ccsetw(10)ddendl; else coursescj.get
37、_course_name()setw(10)cj.get_course_id()setw(10)cj.get_week_hour()setw(10)cj.get_total_hour()setw(10)cj.get_N()endl; courses.close();void change_num(teacher *t,course *c,int *num,int n,int m) /修改教師對課程滿意度int ii,jj,i,j,k,nn,a1,b1,c1;cout ii) break; else cout滿意度應為數(shù)字,請重新輸入:endl; cin.clear(); cin.ignore(); for(i=0;in;i+)if(ti.get_id()=ii) a1=i;cout jj) break; else cout滿意度應為數(shù)字,請重新輸入:endl; cin.clear(); cin.ignore(); for(i=0;im;i+)if(ci.get_course_id()=jj) b1=i;cout nn) break; else cout滿意
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025馬鈴薯生產(chǎn)購銷合同
- 研究項目延期申請書
- 房屋裝飾裝修合同
- 南京房屋裝修合同范本
- 村民土地轉(zhuǎn)租合同
- 家俱定制合同范例
- 吊車設備短期租賃合同范例
- 收購舊房木材合同范例
- 安全生產(chǎn)培訓合同范例
- 工程水暖安裝合同范例
- 廣東省普通高中學生檔案
- (2024年)診療規(guī)范培訓課件
- 基于PLC與工業(yè)機器人控制的物料搬運及分揀系統(tǒng)的設計
- 全國古建筑行業(yè)現(xiàn)狀分析
- 《核心力量訓練》課件
- 北師大版2024-2025學年六年級數(shù)學上冊典型例題系列第二單元:量率對應問題“一般型”專項練習(原卷版+解析)
- 企業(yè)管理人員德能勤績廉考核細則
- 設備維修年終個人工作總結(jié)
- 電機制造中的電機環(huán)境適應性設計
- 無領導小組討論案例題目及答案分析
- 多學科綜合MDT2024年度多學科綜合MDT工作總結(jié)與計劃
評論
0/150
提交評論