C++課程設計設計一個排課程序_第1頁
C++課程設計設計一個排課程序_第2頁
C++課程設計設計一個排課程序_第3頁
C++課程設計設計一個排課程序_第4頁
C++課程設計設計一個排課程序_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、荊楚理工學院課程設計成果學院:計算機工程學院_班級:09級計算機科學與技術(一)班學生姓名:李其德學號:設計地點(單位)觀澗3棟102宿舍一設計題目:設計一個排課程序一完成日期:2011年12月30日指導教師評語:成績(五級記分制):_教師簽名:_C+面向對象程序設計課程設計目錄-H-第一節(jié)課程設計的問題描述H-第二節(jié)本次設計的基本要求A/YH-第三節(jié)源程序第四節(jié)測試數(shù)據(jù)及結果第五節(jié)總結第六節(jié)參考資料課程設計的問題描述每位教師都有教學工作量,教師對他所希望講授的課程表達為一個期望值,1,2.,n,其中1位最高的期望值。課程也有優(yōu)先級,1,2,n,用來決定將課程分給教師的順序,其中1時最高的優(yōu)先

2、級。設計一個程序針對某些課程給某些教師進行排課。本次設計的基本要求程序運行時,用戶輸入教師信息(姓名、教師號、工作量)、課程信息(課程名、課程號、周學時、總學時、優(yōu)先級)、教師對所希望講授課程的期望值以及教學工作量等相關信息,所有信息應保存在文件中,程序根據(jù)課程的優(yōu)先級以及教師對課程的期望值進行排課。為了公平起見,程序隨機分配課程,如果10門課程都有優(yōu)先級1,程序以隨機的順序將這些課程分給教師,如果10位教師對某門課程的期望值為1,程序應從10位教師中隨機選擇一個。最后輸出排課情況,即某位老師上某門課程,以及某位老師的工作量。測試數(shù)據(jù):程序應能實現(xiàn)對不少于20門課和10個教師的排課,并且使每個

3、教師的滿意度達到最大,不存在工作量不滿的教師以及未分配的課等情況。實現(xiàn)提示:可定義一個教師類存放教師信息,所有教師的信息可以用鏈表存儲;定義一個課程類存放課程信息,所有課程的信息可以用鏈表存儲;定義一個排課類進行排課,排課類可以訪問課程和教師信息。選作內容:對兩個同類班級安排一學期(20周)的課程,程序應能處理某些限制,如一個老師不能同時給兩個班上課。A/yll第三節(jié)源程序#include#include#include#include#defineN10#defineM20#defineSIZE40usingnamespacestd;typedefstructtcnodecharname20

4、;intipri;tclist,*ptclist;typedefstructnodecharname20;charnum20;intwork_time;tclisttcM;charcbufSIZE;structnode*next;tlist,*ptlist;typedefstructNodecharname20;charnum20;intweek_time;intall_time;intpriority;boolmc;/是否被選structNode*next;clist,*pclist;classteacherpublic:teacher();teacher();voidinitdata();

5、voidsave();friendvoidprint(teacher&,ptlist);tlist*pt;classcoursepublic:course();course();voidinitdata();voidsave();friendpclistconvert(course&,char*s);private:clist*pc;teacher:teacher()pt=NULL;teacher:teacher()ptlistp;while(pt)p=pt;pt=pt-next;deletep;voidteacher:initdata()chartag;ptlistp=pt;ptlists;

6、intt=0;coutvv請輸入教師信息:vvendl;coutvv姓名t教師號t工作量vvendl;doif(t=1)coutvv請輸入教師信息:vvendl;coutvv姓名t教師號t工作量vvendl;s=(ptlist)malloc(sizeof(tlist);cins-names-nums-work_time;coutvv請輸入相應課程名及期望值:vvendl;for(inti=0;ivM;i+)s-tci.ipri;fflush(stdin);s-next=NULL;if(!pt)pt=s;p=pt;elsep-next=s;p=p-next;t+;cou

7、tvv是否繼續(xù)輸入信息:vvendl;fflush(stdin);cintag;system(cls);while(tag=y|tag=Y)&tvN);voidteacher:save()ptlistp=pt;charpath20=D:teacher.txt;charstr50=0;coutvv請選擇保存教師信息文件的路徑:vvendl;cinpath;ofstreamoutfile(path);if(!outfile)cerrvv保存失敗,請檢查所選路徑是否正確!vvendl;return;sprintf(str,姓名t教師號t工作量n);outfile.write(char*)str,st

8、rlen(str);while(p)sprintf(str,%st%st%dn,p-name,p-num,p-work_time);outfile.write(char*)str,strlen(str);sprintf(str,對相應課程的期望值:n);outfile.write(char*)str,strlen(str);for(inti=0;ivM;i+)sprintf(str,%st%dn,,p-tci.ipri);outfile.write(char*)str,strlen(str);sprintf(str,n);outfile.write(char*)str,st

9、rlen(str);p=p-next;outfile.close();coutvv保存成功!vvendl;course:course()pc=NULL;course:course()pclistp;while(pc)p=pc;pc=pc-next;deletep;voidcourse:initdata()pclistp=pc;pclists;chartag;inti=0;coutvv請輸入課程信息:vvendl;coutvv課程名t課程號t周學時t總學時t優(yōu)先級vvendl;doif(i=1)coutvv請輸入課程信息:vvendl;coutvv課程名t課程號t周學時t總學時t優(yōu)先級vvend

10、l;s=(pclist)malloc(sizeof(clist);cins-names-nums-week_times-all_times-priority;fflush(stdin);s-mc=true;s-next=NULL;i+;if(!pc)pc=s;p=pc;elsep-next=s;p=p-next;coutvv是否繼續(xù)載入課程信息?y/Yvvendl;cintag;system(cls);while(tag=y|tag=Y);voidcourse:save()charpath20=D:course.txt;pclistp=pc;charstr100=0;coutvv請輸入文件保存

11、路徑:vvendl;cinpath;ofstreamoutfile(path);if(!outfile)cerrvv保存失敗,請檢查輸入路徑是否正確;return;sprintf(str,課程名t課程號t周學時t總學時t優(yōu)先級n);outfile.write(char*)str,strlen(str);while(p)sprintf(str,%st%st%dt%dt%dn,p-name,p-num,p-week_time,p-all_time,p-priority);outfile.write(char*)str,strlen(str);p=p-next;outfile.close();cou

12、tvv保存成功!vvendl;voidsort(teacher&t,course&c)ptlistq=t.pt;ptlistn=t.pt;ptlistm=n;intsum=0;intnum=-1;srand(time(0);for(inti=0;inext;if(m=NULL)break;for(intj=0;jtci.ipri=n-tcj.ipri)&(0=strcmp(,)num=rand()%2;switch(num)case0:(convert(c,)-mc=false;break;case1:(convert(c,q-t

13、)-mc=false;break;default:break;n=n-next;while(q)for(inti=0;)-mc)sum+=(convert(c,)-all_time;(convert(c,)-mc=false;if(i=0)strcpy(q-cbuf,);elsestrcat(q-cbuf,);strcat(q-cbuf,);if(sum=q-work_time)break;sum=0;q=q-next;coutvv課程已排好!vvendl;/testvoidpr

14、int(teacher&t)ptlistp=t.pt;coutvv最終排課情況:vvendl;coutvv教師姓名t工作量t教授課程vvendl;while(p)coutvvp-namevvttvvp-work_timevvtvvp-cbufvvendl;p=p-next;pclistconvert(course&c,char*s)pclistp=c.pc;while(p)if(0=strcmp(p-name,s)returnp;elsep=p-next;coutvv應用程序出錯!vvendl;returnNULL;teachertea;coursecou;voiddis_menu()bool

15、ttag=false;boolctag=false;chartag;intchoice=0;dosystem(cls);cout歡迎使用教師排課系統(tǒng),請根據(jù)提示完成相關操作l:載入教師信息vvendl;coutvv2:載入課程信息vvendl;coutvv3:存儲教師信息vvendl;coutvv4:存儲課程信息vvendl;coutvv5:教師排課vvendl;coutvv6:打印排課結果vvendl;coutvv0:退出vvendl;fflush(stdin);coutvv請輸入選擇:vvendl;cinchoice;switch(choice)casel:system(cls);cout

16、vv*教師信息載入*vvendl*tea.initdata();ttag=true;break;case2:system(cls);coutvv*課程信息載入*vvendl,cou.initdata();ctag=true;break;case3:system(cls);coutvv*教師信息保存*vvendl,if(!ttag)coutvv請先載入教師信息vvendl;elsetea.save();break;case4:system(cls);coutvv*課程信息保存*vvendl;if(!ctag)coutvv請先載入課程信息vvendl;elsecou.save();break;ca

17、se5:system(cls);coutvv*教師排序界面*if(!ttag|!ctag)coutvv請先載入相關信息vvendl;elsesort(tea,cou);break;case6:system(cls);coutvv*排課信息打印*vvendl;if(!ttag|!ctag)coutvv請先載入相關信息vvendl;elseprint(tea);break;default:system(cls);coutvvt*THANKSFORYOURUSE*vvendl;coutvvt*感謝使用本系統(tǒng)!*vvendl;exit(0);coutvv系統(tǒng)使用中vvendl;coutvv是否繼續(xù)其他

18、操作?y/Yvvendl;cintag;while(tag=y|tag=Y);voidmain()dis_menu();第四節(jié)測試數(shù)據(jù)及結果teacherljcoarse?icourse6teachei2coupsellcourse?teachei3course20course8couise2teachei4coupsel2coupsel3teacher5course4icourselteachei6coupseScourse5teachei7counsel?coupsel0teacherScoupseScourselSteacher?couisel?courselSteachei10course3課程守配情況如下:耳M耳MJC啟師姓名課程名tlellcSt2c9c3t3ci2c4t4c7t5cl3clt6c5c20t?cScl?cl0tsc20cl5t9cl?c6tlSci8pessanykeitocontinue,T第五節(jié)總結在老師和同學的幫助下,通過自己的努力,終于完成了這次職工信息表的簡單課程設計。我經(jīng)過這段時間的編程,對其中的艱辛

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論