




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序類課程設(shè)計(jì)說(shuō)明書指導(dǎo)教師: 姓 名: 學(xué) 號(hào): 年 月 日一需求分析本應(yīng)用程序是基于c+的教師排課程序該程序可以根據(jù)教師對(duì)課程的期望,課程優(yōu)先級(jí)對(duì)相應(yīng)課程,教師進(jìn)行合理分配,既可以使每位教師達(dá)到最大滿意度,又能很好的安排課程,使課程不出現(xiàn)重排,漏排等情況.根據(jù)要求,本程序應(yīng)該實(shí)現(xiàn)課程信息載入,教師信息載入,保存相關(guān)信息到文件,排課,打印排課結(jié)果等同時(shí),我們還要為使用者即客戶提供一個(gè)人性化的界面,使系統(tǒng)應(yīng)用方便快捷更重要的是,我們還要提供相應(yīng)的錯(cuò)誤處理機(jī)制二系統(tǒng)功能實(shí)現(xiàn)根據(jù)需求分析,本程序?qū)崿F(xiàn)以下功能:. 主菜單 主菜單主要是為客戶顯示本程序的主要功能及相關(guān)操作提示,人性化的主菜單可以讓客戶
2、很容易的使用程序相關(guān)功能本程序主菜單設(shè)計(jì)簡(jiǎn)潔,界面簡(jiǎn)單,使用者可以根據(jù)相關(guān)提示進(jìn)行操作,方便快捷. 信息載入信息載入模塊主要實(shí)現(xiàn)教師信息載入和課程信息載入教師信息主要包括教師姓名,教師號(hào),工作量及對(duì)相應(yīng)課程的期望值課程信息主要包括課程名,課程號(hào),周學(xué)時(shí),總學(xué)時(shí),優(yōu)先級(jí)此模塊是使用者(客戶)把相關(guān)信息載入數(shù)據(jù)庫(kù)進(jìn)行排課操作的前提,它提供了良好的交互界面,操作簡(jiǎn)單方便. 信息保存信息保存模塊主要實(shí)現(xiàn)教師信息和課程信息的保存功能由于教師信息和課程信息載入量大,為以后查詢方便最好存儲(chǔ)在文件中,同時(shí)也算對(duì)數(shù)據(jù)的備份此模塊提供路徑選擇功能,客戶可以根據(jù)自己的情況選擇相應(yīng)的路徑存儲(chǔ)信息文件,安全高效. 教師
3、排課教師排課模塊主要實(shí)現(xiàn)根據(jù)課程優(yōu)先級(jí),教師對(duì)課程的期望值大小來(lái)安排課程情況的功能此模塊考慮到不同課程優(yōu)先級(jí)可能相同及不同教師對(duì)某門課程期望值可能相同的情況為讓教師達(dá)到最大滿意度,本模塊采用隨機(jī)分配原則,通過(guò)生成偽隨機(jī)數(shù)來(lái)安排期望值相同的課程,從而達(dá)到公平公正原則同時(shí),本模塊實(shí)現(xiàn)每門課都得到安排,不出現(xiàn)漏課,重復(fù)選取的功能達(dá)到教師工作量得到滿足且不會(huì)操工作量,合理有效. 排課結(jié)果打印此模塊主要實(shí)現(xiàn)排課完成后相關(guān)信息的顯示功能主要顯示教師姓名,工作量,教授課程打印界面簡(jiǎn)單明了,易于查看. 系統(tǒng)保護(hù)系統(tǒng)保護(hù)模塊主要實(shí)現(xiàn)非法操作時(shí)對(duì)程序的損壞或惡意破壞此模塊主要應(yīng)用于當(dāng)操作人員(客戶)沒(méi)有事先載入教
4、師信息和課程信息就進(jìn)行保存,排課操作行為時(shí)的保護(hù)安全可靠. 退出此模塊主要實(shí)現(xiàn)操作完畢后的退出功能退出時(shí),此模塊會(huì)顯示一個(gè)感謝界面,并完成后臺(tái)資源釋放等功能,很人性化三流程圖程序流程圖主菜單提示按鍵選擇操作信息載入信息保存教師排課打印結(jié)果課程信息教師信息教師信息保存課程信息保存是否繼續(xù)退出系統(tǒng)0退出yn四數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì).結(jié)點(diǎn)設(shè)計(jì)本程序主要采用結(jié)構(gòu)體存儲(chǔ)相關(guān)結(jié)點(diǎn)信息,教師信息通過(guò)tlist結(jié)構(gòu)體實(shí)現(xiàn),其中包括教師姓名,教師號(hào),工作量,相應(yīng)課程期望值及預(yù)留緩存區(qū)空間課程信息通過(guò)clist結(jié)構(gòu)體實(shí)現(xiàn),其中包括課程名,課程號(hào),周學(xué)時(shí),總學(xué)時(shí),優(yōu)先級(jí),被選標(biāo)記(是否已經(jīng)分配)等信息tclist結(jié)構(gòu)體存儲(chǔ)教
5、師期望值比較高的課程信息,包括課程名及教師對(duì)其期望值.結(jié)構(gòu)設(shè)計(jì)本程序采用結(jié)構(gòu)體存儲(chǔ)結(jié)點(diǎn)信息,通過(guò)鏈表完成相關(guān)操作,如查詢,刪除等鏈表添加刪除結(jié)點(diǎn)靈活高效,符合本程序要求.子類設(shè)計(jì)本程序設(shè)計(jì)一個(gè)教師類和一個(gè)課程類,教師類在其內(nèi)部主要實(shí)現(xiàn)初始化教師鏈表(教師信息),保存教師信息到文件功能課程類主要實(shí)現(xiàn)初始化課程鏈表(課程信息),保存課程信息到文件功能同時(shí),在教師類中增加一個(gè)print友元函數(shù),實(shí)現(xiàn)排課結(jié)果打印功能在課程類中增加一個(gè)convert友元函數(shù),實(shí)現(xiàn)由給定字符串查找相應(yīng)課程結(jié)點(diǎn)并返回指向該結(jié)點(diǎn)指針的功能五類設(shè)計(jì).教師類:數(shù)據(jù)成員tlist* pt 功能說(shuō)明pt為指向教師結(jié)點(diǎn)的指針,維持著整
6、個(gè)教師鏈表通過(guò)它可以動(dòng)態(tài)添加刪除教師信息成員函數(shù)void initdata();void save();friend void print(teacher&,ptlist);功能說(shuō)明initdata()初始化教師鏈表(教師信息),save()保存教師信息到文件print(teacher&,ptlist)排課結(jié)果打印.課程類:數(shù)據(jù)成員clist* pc功能說(shuō)明pc為指向課程結(jié)點(diǎn)的指針,維持著整個(gè)課程鏈表,通過(guò)它可以動(dòng)態(tài)添加刪除課程信息成員函數(shù)void initdata();void save();friend pclist convert(course&,char * s);功能說(shuō)明initda
7、ta()初始化課程鏈表(課程信息)save()保存課程信息到文件convert(course&,char * s)通過(guò)給定字符串查找指向課程名與該字符串相同的課程結(jié)點(diǎn)的指針進(jìn)而通過(guò)該指針操作相應(yīng)課程結(jié)點(diǎn)中的數(shù)據(jù)六算法設(shè)計(jì).難點(diǎn)問(wèn)題描述:多個(gè)教師對(duì)某門課程具有相同期望值及多門課程具有相同優(yōu)先級(jí)時(shí)的公平分配算法設(shè)計(jì)解決方案:先將課程鏈表按優(yōu)先級(jí)由高到低排序,依次從教師鏈表頭結(jié)點(diǎn)開始處理,取出該結(jié)點(diǎn)所對(duì)應(yīng)課程期望值最高者,掃描其余教師結(jié)點(diǎn),查看是否其他結(jié)點(diǎn)對(duì)該課程有更高的期望,若有則取出該結(jié)點(diǎn)所對(duì)應(yīng)課程較高者,掃描其余教師結(jié)點(diǎn),查看是否其他結(jié)點(diǎn)對(duì)該課程有更高的期望,若該結(jié)點(diǎn)為最高,則把該課程分配給它
8、,并修改該課程被選標(biāo)記依次重復(fù)上述過(guò)程直到該教師結(jié)點(diǎn)工作量得到滿足然后按此過(guò)程處理其余教師結(jié)點(diǎn)如果出現(xiàn)不同教師某門課程期望值相同,則使用偽隨機(jī)數(shù)生成函數(shù)rand()實(shí)現(xiàn)隨機(jī)分配,達(dá)到公平原則函數(shù)實(shí)現(xiàn)void sort(teacher& t,course& c) ptlist q=t.pt;ptlist n=t.pt; ptlist m=n; int sum=0; int num=-1; srand(time(0); for(int i=0;inext; if(m=null) break; for(int j=0;jtci.ipri=n-tcj.ipri)&(0=strcmp(m-tci.nam
9、e,) num=rand()%2; switch(num) case 0:(convert(c,)-mc=false; break; case 1:(convert(c,)-mc=false; break; default:break; n=n-next; while(q) for(int i=0;)-mc) sum+=(convert(c,)-all_time;(convert(c,)-mc=false; if(i=0) strcpy(q-cbuf,q-tci.nam
10、e); else strcat(q-cbuf, ); strcat(q-cbuf,); if(sum=q-work_time) break; sum=0; q=q-next; cout課程已排好!endl;七主要代碼.主菜單:void dis_menu() bool ttag=false;bool ctag=false;char tag;int choice=0;dosystem(cls);cout歡迎使用教師排課系統(tǒng),請(qǐng)根據(jù)提示完成相關(guān)操作endl;cout1:載入教師信息endl;cout2:載入課程信息endl;cout3:存儲(chǔ)教師信息endl;cout4:存儲(chǔ)課程信
11、息endl;cout5:教師排課endl;cout6:打印排課結(jié)果endl;cout0:退出endl;fflush(stdin);cout請(qǐng)輸入選擇:choice;switch(choice)case 1:system(cls);cout*教師信息載入*endl; tea.initdata();ttag=true;break;case 2:system(cls);cout*課程信息載入*endl;cou.initdata();ctag=true;break;case 3:system(cls);cout*教師信息保存*endl;if(!ttag)cout請(qǐng)先載入教師信息endl;elsetea
12、.save();break; case 4:system(cls);cout*課程信息保存*endl;if(!ctag) cout請(qǐng)先載入課程信息endl;elsecou.save();break;case 5:system(cls);cout*教師排序界面*endl;if(!ttag|!ctag)cout請(qǐng)先載入相關(guān)信息endl;elsesort(tea,cou);break;case 6:system(cls);cout*排課信息打印*endl;if(!ttag|!ctag)cout請(qǐng)先載入相關(guān)信息endl;elseprint(tea);break;default:system(cls);
13、coutt*thanks for your use*endl;coutt*感謝使用本系統(tǒng)!*endl;exit(0);cout系統(tǒng)使用中.endl;cout是否繼續(xù)其他操作? y/ytag;while(tag=y|tag=y);教師信息載入void teacher:initdata()char tag;ptlist p=pt;ptlist s;int t=0;cout請(qǐng)輸入教師信息:endl;cout姓名t教師號(hào)t工作量=1) cout請(qǐng)輸入教師信息:endl; cout姓名t教師號(hào)t工作量s-names-nums-work_time; cout請(qǐng)輸入相應(yīng)課程名及期望值(從高到低,默認(rèn)不超過(guò)3
14、門):endl; for(int i=0;s-tci.ipri; fflush(stdin); s-next=null; if(!pt) pt=s; p=pt; else p-next=s; p=p-next; t+; cout是否繼續(xù)輸入信息:tag; system(cls); while(tag=y|tag=y);.教師信息保存void teacher:save()ptlist p=pt;char path20=c:teacher.txt;char str50=0;cout請(qǐng)選擇保存教師信息文件的路徑:path;ofstream outfile(path);if(!o
15、utfile)cerr保存失敗,請(qǐng)檢查所選路徑是否正確!name,p-num,p-work_time);outfile.write(char*)str,strlen(str);sprintf(str,對(duì)相應(yīng)課程的期望值:n);outfile.write(char*)str,strlen(str);for(int i=0;,p-tci.ipri); outfile.write(char*)str,strlen(str);sprintf(str,n); outfile.write(char*)str,strlen(str);p=p-next;outfile.close();cou
16、t保存成功!endl;.課程信息載入void course:initdata()pclist p=pc;pclist s;char tag;int i=0;cout請(qǐng)輸入課程信息:endl;cout課程名t課程號(hào)t周學(xué)時(shí)t總學(xué)時(shí)t優(yōu)先級(jí)=1)cout請(qǐng)輸入課程信息:endl; cout課程名t課程號(hào)t周學(xué)時(shí)t總學(xué)時(shí)t優(yōu)先級(jí)s-names-nums-week_times-all_times-priority;fflush(stdin);s-mc=true;s-next=null;i+;if(!pc)pc=s;p=pc; else p-next=s; p=p-next; cout是否繼續(xù)載入課程信
17、息? y/ytag; system(cls);while(tag=y|tag=y);.課程信息保存void course:save()char path20=c:course.txt;pclist p=pc;char str100=0;cout請(qǐng)輸入文件保存路徑:path;ofstream outfile(path);if(!outfile)cerrname,p-num,p-week_time,p-all_time,p-priority);outfile.write(char*)str,strlen(str);p=p-next;outfile.close();cout保存成功!endl;.教師
18、排課void sort(teacher& t,course& c) ptlist q=t.pt; ptlist n=t.pt; ptlist m=n; int sum=0; int num=-1; srand(time(0); for(int i=0;inext; if(m=null) break; for(int j=0;jtci.ipri=n-tcj.ipri)&(0=strcmp(,) num=rand()%2; switch(num) case 0: (convert(c,)-mc=false; break; case 1
19、: (convert(c,)-mc=false; break; default: break; n=n-next; while(q) for(int i=0;)-mc) sum+=(convert(c,)-all_time; (convert(c,)-mc=false; if(i=0) strcpy(q-cbuf,); else strcat(q-cbuf, ); strcat(q-cbuf,); if(sum=q-work_time) break; sum=0; q=q-next; cout課程已排好!endl;.排課結(jié)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- C1跨學(xué)科學(xué)習(xí)活動(dòng)設(shè)計(jì)與文本閱讀心得體會(huì)
- 六年級(jí)應(yīng)急安全演練教學(xué)計(jì)劃
- 倍速生活視角下的2025高三作文范文
- 化工廠工程質(zhì)量目標(biāo)及安全措施
- 小學(xué)一年級(jí)語(yǔ)文教學(xué)評(píng)價(jià)心得體會(huì)
- 中學(xué)2024-2025學(xué)年度第一學(xué)期實(shí)驗(yàn)教學(xué)計(jì)劃
- 以形助數(shù)以數(shù)解形:數(shù)形結(jié)合法在高中數(shù)學(xué)教學(xué)中的深度融合與應(yīng)用
- 以實(shí)踐為翼:基于核心素養(yǎng)的高中地理野外考察-孝順中學(xué)的探索與啟示
- 教科版科學(xué)四年級(jí)上冊(cè)教學(xué)能力提升計(jì)劃
- 2024-2025年春季第二學(xué)期小學(xué)德育科技教育計(jì)劃
- (2024)湖北省公務(wù)員考試《行測(cè)》真題及答案解析
- 建筑工程資料填寫范例與指南
- 2023年貴州貴州賴茅酒業(yè)有限公司招聘考試真題
- 行政案例分析-終結(jié)性考核-國(guó)開(SC)-參考資料
- 操作系統(tǒng)-001-國(guó)開機(jī)考復(fù)習(xí)資料
- 《商務(wù)郵件禮儀》課件
- 《讓子彈飛》電影賞析
- PLC入門課程課件
- 中學(xué)生高效學(xué)習(xí)策略體系(學(xué)習(xí)的邏輯)
- 【課件】第五單元化學(xué)反應(yīng)的定量關(guān)系新版教材單元分析九年級(jí)化學(xué)人教版(2024)上冊(cè)
- 十堰房縣國(guó)有企業(yè)招聘筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論