




已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
一、設計目的課程設計是學習C+程序設計的一個重要環(huán)節(jié)。通過課程設計的綜合訓練,可以使學生在學習理論知識并在實驗中進行了一系列基本訓練的基礎上,進一步加強學生對實際問題分析、編程和動手能力的提高,強化綜合應用能力,擴充知識,開闊視野。學生在熟練運用Visual C+ 6.0以后,通過使用Visual C+ 6.0的訓練,擴展程序設計的知識面,提高綜合應用C+知識能力的要求。二、設計內(nèi)容設計一個學校人員信息管理系統(tǒng),可以實現(xiàn)對學校人事的信息管理?;竟δ芤笕缦拢?(1)建立人員信息數(shù)據(jù)。包括學號(教工號)、姓名、性別、專業(yè)(工作系別部門)、出生時間、年齡。其中,1)對學生,還包括3門課的成績(Chinese, English, Mathematics)。三門課的成績?yōu)閕nt型數(shù)據(jù)。2)對教師,還包括職稱(如教授/副教授/講師),工資(如1432.50)。工資為double型數(shù)據(jù)。(2)使用繼承的方法構造3個類,對相應的對象放置10個學生(教師)信息。 People類虛基類 Student類派生類 Teacher類派生類(3)數(shù)據(jù)基本功能: 增加數(shù)據(jù):AddData()函數(shù)。 刪除數(shù)據(jù):DeleteData()函數(shù)。根據(jù)學號(教工號),刪除該人員的記錄。 修改數(shù)據(jù): UpdateData()函數(shù)。對學生,根據(jù)學號,能夠修改3門課的成績;對教師,根據(jù)教工號,能夠修改“職稱”和“工資”。 查找功能:1)SearchData()函數(shù)。要求能夠根據(jù)“學號(教工號)”、“姓名”、“性別”三項實現(xiàn)查詢,并能在屏幕上顯示滿足條件的數(shù)據(jù)記錄。2)FindMaxData()函數(shù)。對學生,查找“English”課程成績最高的學生記錄并打印;對教師,查找“工資”最高的教師記錄并打印。要求:采用函數(shù)模板實現(xiàn)。 顯示功能:DisplayData()函數(shù)。在屏幕上打印所有的數(shù)據(jù)記錄;打印時,先打印學生的記錄,后打印教師的記錄。并且按學生(教工號)升序打印。(4)重載功能: 要求對“”和“”運算符進行重載??紤]到輸人學生(教工)姓名時,名字中可能引入空格,所以重載“”運算符時,需要滿足這個要求。(5)異常處理功能: 設置異常處理,對教師工資為負數(shù)的情況給出提示。(6)文件的輸入輸出功能: 能夠從文件中讀入數(shù)據(jù)。外部文件為Student_ext.dat, Teacher_ext.dat。 能夠?qū)?shù)據(jù)保存到相應目錄的文件中。保存數(shù)據(jù)時,分兩個文件分別保存Student.dat, Teacher.dat。(7)參考系統(tǒng)界面如示: 1-增加一位人員(教師、學生)記錄 2-刪除一個人員記錄 3-修改一個人員記錄 4-根據(jù)“學號(教工號)”、“姓名”、“性別”查找記錄 5-根據(jù)人員類別(學生、教師)查找“English”課程成績最高的學生,或最高工資的教師 6-顯示全部人員記錄 7-從外部文件追加數(shù)據(jù) 8-將所有數(shù)據(jù)保存到磁盤文件 9-退出系統(tǒng)。三、總體設計1.系統(tǒng)類的程序關系2.類的主要框架描述*基類:*class peoplepublic:int num;char name30;char sex15;char major_or_department50;char date30;int age;people(int n,char nam30,char s15,char o50,char d30,int a)num=n;strcpy(name,nam);strcpy(sex,s);strcpy(major_or_department,o);strcpy(date,d);age=a;* 教師類:*class teacher:virtual public peoplepublic: teacher(int n=0,char nam30=,char s15=,char o50=,char d30=,int a=0,char j50=,double sa=0):people(n,nam,s,o,d,a),salary(sa)strcpy(job,j);char job50;double salary;friend istream &operator( istream &is,teacher &tea);/重載運算符函數(shù)聲明friend ostream &operator( ostream &os,teacher &tea) ;/重載( istream &is,student &stu);/重載運算符函數(shù)聲明friend ostream &operator( ostream &os,student &stu);/重載運算符函數(shù)聲明 void AddData();void DisplayData();stu10;*教師類功能函數(shù)*template Q Max(Q * x,int len) void TAddData()/對教師類對象的添加功能函數(shù)void TDeleteData()/對教師類對象的刪除功能函數(shù)void TUpdateData()/對教師類對象的修改功能函數(shù)void TSearchData_num()/按教工號查詢教師類對象void TSearchData_nam()/按姓名查詢教師類對象void TSearchData_sex()/按性別查詢教師類對象void TFindMaxData()/對教師類對象的最高工資查詢功能函數(shù)void TDisplayData()/對教師類對象按教工號升序排序打印功能函數(shù)void Tsave()/對教師類對象的保存功能函數(shù)void Tload()/對教師類對象的讀取功能函數(shù)*學生類功能函數(shù)*template Q Max(Q * x,int len) void SAddData()/對學生類對象的添加功能函數(shù)void SDeleteData()/對學生類對象的刪除功能函數(shù)void SUpdateData()/對學生類對象的修改功能函數(shù)void SSearchData_num()/按學號查詢學生類對象void SSearchData_nam()/按姓名查詢學生類對象void SSearchData_sex()/按性別查詢學生類對象void SFindMaxData()/對學生類對象的最高英語成績查詢功能函數(shù)void SDisplayData()/對學生類對象按學號升序排序打印功能函數(shù)void Ssave()/對學生類對象的保存功能函數(shù)void Sload()/對學生類對象的讀取功能函數(shù)*功能函數(shù)*void Showmenu() void Menu()void Menu1()void AddData()/添加功能函數(shù)void DeleteData()/刪除功能函數(shù)void UpdateData()/修改功能函數(shù)void SearchData()/查詢功能函數(shù)void FindMaxDataS()/英語成績最高學生查詢函數(shù)void FindMaxDataT()/工資最高教師查詢函數(shù)void DisplayData()/顯示全部人員記錄函數(shù)void save()/保存功能函數(shù)void load()/讀取功能函數(shù)int main()四、系統(tǒng)測試用例主菜單界面異常處理教工號學號輸入重復報錯按升序排列所有記錄保存記錄五、錯誤記錄及原因分析1.字符數(shù)組直接賦值發(fā)生錯誤錯誤原因分析:字符數(shù)組不可直接賦值,而要用stycpy函數(shù)進行賦值。2.在派生類析構函數(shù)中初始化出現(xiàn)問題。錯誤原因分析:要給形參賦初值。3.排序功能有錯誤錯誤原因分析:排序功能函數(shù)只有一個循環(huán),當沒有按順序輸入教工號或?qū)W號時,不能輸出排序。要在循環(huán)外再加一個循環(huán)進行控制。4.添加記錄輸入重復教工號或?qū)W號時不會顯示輸入有誤錯誤原因分析:當輸入有誤時再次調(diào)用添加函數(shù),添加函數(shù)里有清屏函數(shù),會將錯誤提示清屏掉。應再從主函數(shù)中調(diào)用添加函數(shù)。六、源程序#include#include#include#include#includeusing namespace std;int main();static int T=0;/用于標記老師類對象的個數(shù)static int S=0;/用于標記學生類對象的個數(shù)class peoplepublic:int num;char name30;char sex15;char major_or_department50;char date30;int age;people(int n,char nam30,char s15,char o50,char d30,int a)num=n;strcpy(name,nam);strcpy(sex,s);strcpy(major_or_department,o);strcpy(date,d);age=a;class teacher:virtual public peoplepublic: teacher(int n=0,char nam30=,char s15=,char o50=,char d30=,int a=0,char j50=,double sa=0):people(n,nam,s,o,d,a),salary(sa)strcpy(job,j);char job50;double salary;friend istream &operator( istream &is,teacher &tea)/重載運算符函數(shù)聲明 istea.num; is.getline(,30,n); /使其能夠讀入字符串中的空格 istea.sex; istea.major_or_department; istea.date; istea.age; istea.job; istea.salary;return is; /退出函數(shù)friend ostream &operator( ostream &os,teacher &tea) /重載運算符函數(shù)聲明 ostea.numn; n; ostea.sexn; ostea.major_or_departmentn; ostea.daten; ostea.agen;ostea.jobn;ostea.salaryn;return os; /退出函數(shù) void AddData()system(cls);coutnum;for(int k=1;k11;k+)if(num=k)k=11;if(k=11)cout請輸入10以內(nèi)的教工號endl;AddData();coutname;coutsex;coutmajor_or_department;coutdate;coutage;coutjob;coutsalary;try /處理教師工資合法性if (salary0)throw salary;catch(double )cout輸入有誤,請重新輸入endl;main();void DisplayData()cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl;cout教工號 姓名 性別 工作部門 出生時間 年齡 職稱 工資endl;cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl;coutnumtnametsextmajor_or_departmenttdatetagetjobtsalaryendl;cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl;void save(ofstream &outf)outf教工號 姓名 性別 工作部門 出生時間 年齡 職稱 工資endl;outfnumtnametsextmajor_or_departmenttdatetagetjobtsalarynumnamesexmajor_or_departmentdateagejobsalary;tea10;template Q Max(Q * x,int len) Q max=x0; for(int i=1;ixi? max:xi; return i; void TAddData()/對教師類對象的添加功能函數(shù)teaT.AddData();for(int i=0;i10;i+)if(i!=T&teaT.num=teai.num)cout輸入教工號重復,請重新輸入!endl;main();cout添加記錄成功!endl;teaT.DisplayData();T+;void TDeleteData()/對教師類對象的刪除功能函數(shù)int n;if(T=0)cout沒有可刪除的記錄!endl;elsecoutn;for(int i=0;iT;i+)if(teai.num=n) for(;iT;i+)teai=teai+1;T-;cout成功刪除記錄!endl;void TUpdateData()/對教師類對象的修改功能函數(shù)int n;if(T=0)cout沒有可刪除的記錄!endl;elsecoutn;for(int i=0;iT;i+)if(teai.num=n)cout原有的記錄:endl;teai.DisplayData();cout請輸入新的記錄:endl;coutteai.job; coutteai.salary;cout新的記錄:endl;teai.DisplayData();void TSearchData_num()/按教工號查詢教師類對象int n;coutn;for(int i=0;iT;i+)if(teai.num=n)teai.DisplayData();i=T;if(i=T)cout查詢的記錄不存在,請重新輸入!endl;TSearchData_num();void TSearchData_nam()/按姓名查詢教師類對象char nam_s30;cout請輸入教師名字:nam_s;for(int j=0;jT;j+)if(strcmp(,nam_s)=0)teaj.DisplayData();j=T;if(j=T)cout查詢的記錄不存在,請重新輸入!endl;TSearchData_nam();void TSearchData_sex()/按性別查詢教師類對象char sex_s15;cout請輸入教師性別:sex_s;for(int p=0;pT;p+)if(strcmp(teap.sex,sex_s)=0)teap.DisplayData();p=T;if(p=T)cout查詢的記錄不存在,請重新輸入!endl;TSearchData_sex();void TFindMaxData()/對教師類對象的最高工資查詢功能函數(shù)int nu;double t10;for(int a=0;aT;a+)ta=teaa.salary;nu=Max(t,T);teanu-1.DisplayData();void TDisplayData()/對教師類對象按教工號升序排序打印功能函數(shù)for(int i=1;i11;i+)for(int c=0;cT;c+)if(teac.num=i)teac.DisplayData();void Tsave()/對教師類對象的保存功能函數(shù)ofstream outf(c:teacher.dat,ios:out);for(int i=0;iT;i+)teai.save(outf);outf.close();cout成功保存記錄!endl;void Tload()/對教師類對象的讀取功能函數(shù)ifstream inf(c:teacher_ext.dat,ios:out);for(int i=0;iT;i+)teai.load(inf);inf.close();cout成功讀取記錄!endl;cout所有教師記錄:endl;for(i=0;i( istream &is,student &stu)/重載運算符函數(shù)聲明 isstu.num; is.getline(,30,n); /使其能夠讀入字符串中的空格 isstu.sex; isstu.major_or_department; isstu.date; isstu.age; isstu.score_chinese; isstu.score_english; isstu.score_mathematices; return is; /退出函數(shù)friend ostream &operator( ostream &os,student &stu)/重載運算符函數(shù)聲明 osstu.numn; n; osstu.sexn; osstu.major_or_departmentn; osstu.daten; osstu.agen; osstu.score_chinesen; osstu.score_englishn; osstu.score_mathematicesn; return os; /退出函數(shù) void AddData() system(cls);coutnum;for(int k=1;k11;k+)if(num=k)k=11;if(k=11)cout請輸入10以內(nèi)的學號endl;AddData();coutname;coutsex;coutmajor_or_department;coutdate;coutage;coutscore_chinese;cinscore_english;cinscore_mathematices;void DisplayData()cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl;cout學號 姓名 性別 專業(yè) 出生時間 年齡 語文成績 英語成績 數(shù)學成績endl;cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl;coutnumtnametsextmajor_or_departmenttdatetagetscore_chinesetscore_englishtscore_mathematicesendl;cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl;void save(ofstream &outf)outf學號 姓名 性別 專業(yè) 出生時間 年齡 語文成績 英語成績 數(shù)學成績endl;outfnumtnametsextmajor_or_departmenttdatetagetscore_chinesetscore_englishtscore_mathematicesnumnamesexmajor_or_departmentdateagescore_chinesescore_englishscore_mathematices; stu10;void SAddData()/對學生類對象的添加功能函數(shù)stuS.AddData();for(int i=0;i10;i+)if(i!=S&stuS.num=stui.num)cout輸入學號重復,請重新輸入!endl; main();cout添加記錄成功!endl;stuS.DisplayData();S+;void SDeleteData()/對學生類對象的刪除功能函數(shù)int n;if(S=0)cout沒有可刪除的記錄!endl;elsecoutn;for(int i=0;iS;i+)if(stui.num=n) for(;iS;i+)stui=stui+1;S-;cout成功刪除記錄!endl;void SUpdateData()/對學生類對象的修改功能函數(shù) int n;if(S=0)cout沒有可刪除的記錄!endl;elsecoutn;for(int i=0;iS;i+)if(stui.num=n)cout原有的記錄:endl;stui.DisplayData();cout請輸入新的記錄:endl;coutstui.score_chinese;cinstui.score_english;cinstui.score_mathematices;cout新的記錄:endl;stui.DisplayData();void SSearchData_num()/按學號查詢學生類對象int n;coutn;for(int i=0;iS;i+)if(stui.num=n)stui.DisplayData();i=S;if(i=S)cout查詢的記錄不存在,請重新輸入!endl;SSearchData_num();void SSearchData_nam()/按姓名查詢學生類對象char nam_s15;cout請輸入學生名字:nam_s;for(int j=0;jS;j+)if(=nam_s) stuj.DisplayData();j=S;if(j=S)cout查詢的記錄不存在,請重新輸入!endl;SSearchData_nam();void SSearchData_sex()/按性別查詢學生類對象char sex_s15;cout請輸入學生性別:sex_s;for(int p=0;pS;p+)if(stup.sex=sex_s)stup.DisplayData();p=S;if(p=S)cout查詢的記錄不存在,請重新輸入!endl;SSearchData_sex();void SFindMaxData()/對學生類對象的最高英語成績查詢功能函數(shù)int nu;double t10;for(int a=0;aS;a+)ta=stua.score_english;nu=Max(t,S);stunu-1.DisplayData();void SDisplayData()/對學生類對象按學號升序排序打印功能函數(shù)for(int i=1;i11;i+)for(int c=0;cS;c+)if(stuc.num=i)stuc.DisplayData();void Ssave()/對學生類對象的保存功能函數(shù)ofstream outf(c:student.dat,ios:out);for(int i=0;iS;i+)stui.save(outf);outf.close();cout成功保存記錄!endl;void Sload()/對學生類對象的讀取功能函數(shù)ifstream inf(c:student_ext.dat,ios:out);for(int i=0;iS;i+)stui.load(inf);inf.close();cout成功讀取記錄!endl;cout所有學生記錄:endl;for(i=0;iS;i+)stui.DisplayData();void Showmenu() cout* * * * * * * * * * * *歡迎進入人員信息管理系統(tǒng)* * * * * * * * * * * *endl; cout* * 1.添加數(shù)據(jù) * *endl;cout* * 2.刪除數(shù)據(jù) * *endl;cout* * 3.修改數(shù)據(jù) * *endl; cout* * 4.查詢記錄 * *endl;cout* * 5.英語成績最高學生查詢* *endl;cout* * 6.工資最高教師查詢 * *endl;cout* * 7.顯示全部人員記錄 * *endl;cout* * 8.保存數(shù)據(jù) * *endl;cout* * 9.讀取數(shù)據(jù) * *endl;cout* * 10.退出系統(tǒng) * *endl;cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl; void Menu()cout* * * * * * * * * *請輸入操作對象* * * * * * * * * * * * * * *endl;cout* * 1.教師 * *endl; cout* * 2.學生 * *endl; cout* * 3.退出 * *endl; cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl;void Menu1()system(cls);cout* * * * * * * * * * *請輸入操作對象* * * * * * * * * * * * * * *endl;cout* * 1.按教工號/學號查詢 * *endl; cout* * 2.按姓名查詢 * *endl; cout* * 3.按性別查詢 * *endl; cout* * 4.退出 * *endl;cou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國餐飲街行業(yè)發(fā)展分析及產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025-2030中國反向火焰蒸汽鍋爐行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 牙齦息肉的護理課件
- 頸動脈閉塞個案護理
- 容器編排優(yōu)化-第1篇-洞察及研究
- 工業(yè)物聯(lián)網(wǎng)設備安全教育創(chuàng)新-洞察及研究
- 部編版二年級下冊語文復習計劃考試應對
- 牙科口腔診所店長員工培訓職責
- 家族肺腫瘤流行病學調(diào)查-洞察及研究
- 胞膜蛋白靶向疫苗-洞察及研究
- VTE相關知識理論考試試題及答案
- GB/T 10413-2002窄V帶輪(有效寬度制)
- GB 30439.1-2013工業(yè)自動化產(chǎn)品安全要求第1部分:總則
- GA/T 1441-2017法庭科學同版印刷鑒定意見規(guī)范
- 氣缸的檢測課件
- DB37T 536-2019 文書檔案目錄數(shù)據(jù)采集規(guī)范
- (完整版)GB2893-2008-安全色
- FMS功能性動作篩查PPT課件
- 高一新生入學分班考試語文試卷含答案
- 格拉辛紙項目投資價值分析報告【參考模板】
- 最新四川水利工程質(zhì)量備案表格填寫范例
評論
0/150
提交評論