版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C+面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告(2012 2013 學(xué)年 第 3 學(xué)期)題 目: 學(xué)校人員信息管理系統(tǒng)專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí): 計(jì)算機(jī)科學(xué)與技姓名學(xué)號(hào):DEBUG指導(dǎo)教師:成績:計(jì)算機(jī)科學(xué)與技術(shù)系2012 年6月 21日一、設(shè)計(jì)目的課程設(shè)計(jì)是學(xué)習(xí)C+在學(xué)習(xí)理論知識(shí)并在實(shí)驗(yàn)中進(jìn)行了一系列基本訓(xùn)練的基礎(chǔ)上 C+ 。0 以后,通過使用Visual C+ 6.0合應(yīng)用C+知識(shí)能力的要求。二、設(shè)計(jì)內(nèi)容建立人員信息數(shù)據(jù)。包括學(xué)號(hào)(教工號(hào))、姓名、性別、專)、 PAGE PAGE 17出生時(shí)間、年齡.其中,3門課的成績Chines, Englis, Mathematic成績?yōu)閕nt/講師(如14
2、350型數(shù)據(jù)。310(教師)信息。PeopleStudentTeacher數(shù)據(jù)基本功能::AddData()函數(shù)。DeleteDat(),刪除該人員的記錄。修改數(shù)據(jù): 3對(duì)教師,根據(jù)教工號(hào),能夠修改“職稱”和“工資查找功能:1)SearchData()函數(shù).要求能夠根據(jù)“學(xué)號(hào)(教工號(hào)2)FindMaxData()函數(shù)。對(duì)學(xué)生,查找“English課程成績最高的學(xué)生記錄并打??;對(duì)教師,查找“工資”最高的教師記錄并打印。要求:采用函數(shù)模板實(shí)現(xiàn)。(教工號(hào))升序打印。重載功能:(教工(6)能夠從文件中讀入數(shù)據(jù)。外部文件為Student_ext。dat, Teacher_ext.dat。Student。
3、dat, dat。(7)參考系統(tǒng)界面如示:1增加一位人員(教師、學(xué)生)記錄2刪除一個(gè)人員記錄3修改一個(gè)人員記錄4-根據(jù)“學(xué)號(hào)(教工號(hào)5-根據(jù)人員類別(學(xué)生、教師)高工資的教師6顯示全部人員記錄7-從外部文件追加數(shù)據(jù)8-將所有數(shù)據(jù)保存到磁盤文件9-退出系統(tǒng)。三、總體設(shè)計(jì)1、系統(tǒng)類的層次關(guān)系class people/基class student:virtual public people /學(xué)生派生類class teacher:virtual public people /老師派生類2、類的主要框架描述class people / 基 類public:int num;char name30; ch
4、ar char major_or_department50; char date30;int age;void setpeople(int z)i(z=1)coutelsecoutcoutname;coutcin sex; i(z=)coutelsecoutdate;coutage;class student:virtual public /public:int score_chinese; int score_english;int score_mathematices; char xuanxiu50;int score_xuanxiu; void setstudent(int &z)set
5、peopl(;coutscore_chines; coutcicoutscore_mathematices;coutxuanxiu; score_xuanxiu;stud10;class teacher:virtual public /public:char job5; double salary; char void setteacher(int z)setpeople(z);cout 職稱”;cin job; coutsalary; cout 課程;cinlesson;teacher1100;四、系統(tǒng)測試用例1、增加數(shù)據(jù)和修改數(shù)據(jù)和刪除數(shù)據(jù)功能通過學(xué)號(hào)或工號(hào),姓名,和性別查找老師或?qū)W生的信
6、息學(xué)生選課輸出英語成績最高的學(xué)生和工資最高的老師顯示所有數(shù)據(jù)學(xué)生數(shù)學(xué)平均成績保存數(shù)據(jù)到磁盤再次運(yùn)行時(shí),從磁盤中讀取數(shù)據(jù)五、錯(cuò)誤記錄及原因分析1、類的類型這樣才能輕易的讀取最好選擇用二進(jìn)制的保存方法這樣可以對(duì)整個(gè)類型的對(duì)象 使讀取更方便簡單。2、排序功能有錯(cuò)誤錯(cuò)誤原因分析:排序功能函數(shù)只有一個(gè)循環(huán),當(dāng)沒有按順序輸入教工號(hào)或?qū)W號(hào)時(shí),不能輸出 排序我是拿后面的和前面的交換,但我忘記了判斷只有一個(gè)學(xué)生或老師時(shí)不用排序和判斷這時(shí) 判斷后交換反而是會(huì)錯(cuò)的,這樣就會(huì)出錯(cuò)。于是我加了一個(gè)判斷人數(shù)為一的時(shí)候是不用判斷的。3讓名字可以接收空格也是錯(cuò)誤百出,首先是要對(duì)緩存清理,然后書上的cin才fflus(stdi
7、std:ci同學(xué)提到的,就解決了名字輸入空格的問題。六、源程序#includeinclude #includestdlib.hincludewindows。husing namespace std;static int S=0;/儲(chǔ)存學(xué)生的人數(shù)static int T=0;/儲(chǔ)存老師的人數(shù)static int temp=0;/用來判斷一段代碼是否有運(yùn)行過int main();classpeople/public:int num;char char sex15;char major_or_department50; char date30;int age;void setpeople(int z
8、)if(z=1)cout”學(xué)號(hào):;elsecout”工號(hào):; cin num; fflush(stdin);std:cin.sync();cout性別 cinse; i(z=1)cout專業(yè)elsecout部門:;cout出生年月日:;cindate;coutage;class student:virtual public people/public:int score_chinese; int score_english;int char xuanxi5;int score_xuanxiu; void setstudent(int &z)setpeople(z);cou 語文;cin sco
9、re_chinese; cout”英語;coutscore_mathematices; cout選修:;cinxuanxiu;cout 選修成績:;cinscore_xuanxiu;stud100;class teacher:virtual public people/public:char job50; double salary; char lesson50;void setteacher(int z)setpeople(z);coutjo; cou;cinsalary; coutcinteacher1100;void/int i=1;loop1:while(i)syste(cls;cou
10、t1 學(xué)生endl; cout2 老師endl; coutz; switch(z)case 1:system(”cls);int g=S+1;for(int i=S;ig;i+) stu。setstudent(;: S+;for(int j=0;jS-1;j+)if(studj.num=studi1.num)S-;cout學(xué)號(hào)輸入一樣重新添加end;getcha();getchar);goto loopcout”增加成功getchar;getcha(;break;case 2:system(”cls);int g=T+1;for(int i=T;ig;i+)teacher。setteache(
11、z;::T+;for(int j=0;jT1;j+)if(teacher1j.num=teacher1i-1。num)T-;cout”工號(hào)輸入一樣重新添加” endl;getchar();getchar();goto loop1;try/處理教師工資合法性if (teacher1i1.salary0)throw teacher1。salar;catch(double )cout工資輸入有誤,請(qǐng)重新輸入endl;getchar();getchar();T-;goto loop1;cout”增加成功 getcha(;getcha();break;case3:system(”cls)i=0break
12、;main();void DeleteData()/刪除功能函數(shù)system(”cls); cout1 學(xué)生”endl; cout2 老師”endl;cout”3 鍵退出z; system(”cls); if(z=1)coutn;for(int i=0;iS;i+)if(stud.num= for(;iS;i+) stu=stui+;”刪除成功endl;temp=12;/temp 有沒運(yùn)行12if(temp!=12)cout”沒有該記錄endl; temp=0;if(z=2) coutm;for(int i=0;iT;i+)if(teacher1i.num=m) for(;iT;i+) tea
13、cheri=teacher1i+;cout”刪除成功endl;T-;temp=12;/temp 用來判斷刪除記錄有沒運(yùn)行,有運(yùn)行就賦值為 12i(tem!=12cout temp=0;getcha(;getchar; main();void UpdateDate()/修改數(shù)據(jù)記錄函數(shù)cout1 endl; cout2 老師cout3 endl; int z;cin z; if(z=1)system(cls);cout輸入學(xué)號(hào); int n;cin n;for(int i=0;iS;i+)i(stui.num=cout:endl;stui( cout”修改成功n;for(int i=0;iT;i
14、+)if(teacher。num=n) coutendteacher.setteacher(z);cout修改成功endl;temp=12;/temp 用來判斷修改記錄有沒運(yùn)行,有運(yùn)行就賦值為 12if(temp!=12)cout”沒有該數(shù)據(jù)記錄endl; temp=0; if(z=3)main(); getchar; getchar(); main();void SearchData()/查找函數(shù)int n;coutn;char nam_s30; coutsex_s;for(int i=0;iT;i+)if(teacher1i.num=n&strcmp(,nam_
15、s)=0&strcmp(teacher1i.sex,sex_s)=0)cout 老師:endl;teacher1i.sexteacheri.major_or_departmen;teacher1ijo工資 teachersalary”課程teacher。 lesson;coutendl;temp=12;for(int j=0;jS;j+)if(studj。num=n&strcmp(,nam_s)=0&strcmp(studj.sex,sex_s)=0)cou end;coustudjnu studnamestudj.sex 專業(yè):”studj.major_or_depart
16、ment;coutstud。date年齡stu。age語studj.score_chinesstudj.score_englis stud.score_mathematices選修stud.xuanxiu”選修成績: studj.score_xuanxiu;cout endl; temp=12;if(temp!=1cou 沒有這個(gè)人的信息 getchar();getchar(); main();void FindLesson()/選課的函數(shù)char couta;for(int i=0;iT;i+) if(strcmp(teacher1i.lesson,a)=0|strcmp(teacher1i
17、.name,a)=0)coucout工號(hào)” 性 別 :teacher1i.sex 部 門 :”teacher1i 。 major_or_department; cout”出生年月日:teacher1i。dat 年齡”teacher1。ageteacherjobteacher1i.salaryteacher1i。lesson;cout endl;temp=12;if(temp!=12coutendl;temp=0;getchargetcha(main; cout輸入你的學(xué)號(hào)x;for(int j=0;jS;j+)if(studj.num=x)strcp
18、y(studj。xuanxiu,teacher1i-1.lesson);coutstudj.score_xuanxiu; cout輸出選課成功endl;getchar(); getchar(); main();templatedouble Max(Q j)double max=0; if(teacher1j1.salaryteacher1j.salary)max=teacher1j.salary;return max;void FindMaxDataT()/查找最高英語分?jǐn)?shù)的學(xué)生和最高工資的教師double max=teacher10.salary; for(int j=1;jT;j+)max
19、=Max(j);cout工資最高的教師endl; for(int i=0;iT;i+)i(teacher。salary=max)teacher1i.sex部門:”teacher1i。major_or_department;cout:teacher1idat:teacher1age職稱teacher1joteacheri.salary:teacher1ilesso;coutendl;templatetypename Qdouble SMax(Qdouble max=0;if(studj-1.score_englishstudj.sco
20、re_english)max=studj.score_english;return max;void FindMaxDataS()int max=stud。 for(int i=1;iS;i+)max=SMax(i);cou for(int j=0;jS;j+) if(studj。score_english=max)coustu。nu姓名性別:stu。se:stud.major_or_department;coutstudatestu.agestu。score_chinese”英語:studj。score_englis數(shù)學(xué):stud.score_mathematices”選修
21、stuj。xuanxi選修成績studj score_xuanxiu;coutendl;getchar(); getchar(); mai(;void DisplayData()/顯示所有的學(xué)生和教師的信息for(int x=0;xS;x+)if(S=1)break; for(int if(study.numstudy+1.num)student tem; tem=study; stuy=stuy+; study+1=tem;for(int j=0;jS;j+)cout j+1coustuj.nu姓名studnamstudj。se 專業(yè)”stud。major_or_departmen;cou
22、生日:stu.dat stud.ag stud.score_chinese英語: stu。score_englis數(shù)學(xué)”stud.score_mathematices”選修 stuj.xuanxiu”選修成績 studj.score_xuanxiu;coutendl;for(int g=0;gteacher1y+1.num)teacher tem=teacher; teacher1y=teacher1y+1; teacher1y+1=tem;for(int i=0;iT;i+)cout教師i+1endl;cou 工號(hào) teacheri。num姓名”teacher1。se
23、x部門teacher1.major_or_department;cou teacheridate”年齡teacher。 ageteacherjob:teacher1isalaryteacher1i.lesson;coutendl;getchar(); getcha(; main();void Ssave()/對(duì)學(xué)生類對(duì)象的保存功能函數(shù)ofstream ( for(int i=0;iS;i+)out.writ( cha)&stud,sizeo(studen) out。close();coutend;void Tsave()/對(duì)教師類對(duì)象的保存功能函數(shù)ofstream outt(c:teacher
24、。dat,ios: out); for(int i=0;iT;i+)outt。write( char)teacher1i,sizeof(teacher1)); outt.close();cout”老師成功保存記錄!endl;void save()int i=1; while(i)cout1 學(xué)生endl; cout2 老師”endl; cout 3 退出”choice; system(cls); switch(choice)caseSsave();break; case Tsav(brea; case i=0;break; default:cout”輸入有誤,請(qǐng)重新輸入!endl;main()
25、;void Sload()/對(duì)學(xué)生類對(duì)象的讀取功能函數(shù)ifstream i(”c:ou; for(int i=S;i+)i。read(cha)&stu,sizeof(stui) ; i(stu。num=)break;coustunumstunam: stud。 sexstudi.major_or_department;cou”出生年月日:studi。datestu.age studi.score_chinesestui.score_englis數(shù)學(xué)”stud。S+;coutendl;in.close;stud.xuanxiustuscore_xuanxi;cout”學(xué)生成功讀取記錄!endl;
26、void Tload()/對(duì)教師類對(duì)象的讀取功能函數(shù)ifstream in(”c:teacher。dat”,ios:out); for(int i=T;i+)in。if(teacher1i。num=0)break;cout工號(hào):teacher1i.num”姓名:teacher1.se部門 teacher。major_or_departmen;cou 出生年月日”teacher。dat teacher。 agteacheri。jo 工資teacher1。salary teacher1i.lesson;coutendl; T+;in.clos(; coutvoid lo
27、ad()/讀取功能函數(shù)int i=1; while(i) int choice;cout 1 學(xué)生”endl; cout2 老師endl; cout”3 退出”endl; cin choice; switch(choice)case 1:case 2: case ;Sloa(brea; d (break;i=0;break;default:cout 輸入有誤,請(qǐng)重新輸入!”endl;main();void AverageMath()double total=0; for(int i=0;iS;i+)total+=stud。score_mathematice;cout”學(xué)生的數(shù)學(xué)平均成績是tot
28、al/S getchar();getchar();main();void DeleteT()for(int j=0;j T;j+) for(int i=j+1;iT;i+)if(teacher1j.num=teacher1i.num)for(int a=i;aT;a+)teacher1a=teacher1a+1;i-;T-;cout”重復(fù)刪除成功endl; getchar();getchar(); main();void DeleteSame()int j,i,a; for(j=0;jS;j+) for(i=j+1;iS;i+)if(stu。num=stud.nu)for(a=i;aS;a+)
29、studa=studa+1;i-; S-;DeleteT();int main()system(”cls) cout ”11111111111111111111111111111111111111111111111111111111111111111”endl;cout1歡迎進(jìn)入學(xué)生成績管理系統(tǒng)1”endl;cout”1111111111111111111111111111111111111111111 1111111111111111111111”endl;cout11增加一位人員記錄tcout”12-刪除一個(gè)人員記錄t1endl;cou13修改一個(gè)人員記錄tendl;cout”14根據(jù)“學(xué)
30、號(hào)(教工號(hào))姓名、性別查找記tcout”15-根據(jù)“教師或“課程”進(jìn)行選課t1 endl;cout16查找“English課程成績最高的學(xué)生和最高工資的教t cout”17-顯示全部人員記錄t1”endl;cout”18從外部文件追加數(shù)據(jù)t1”endl;cout19-將所有數(shù)據(jù)保存到磁盤t1”endl;cout110求學(xué)生數(shù)學(xué)平均成績t1endl;cout11把相同的數(shù)據(jù)刪除tend;cout”112其他鍵退出系統(tǒng)1cout”11111111111111111111111111111111111111111111111111111111111111111endl;cout1選擇111數(shù)字進(jìn)行操作1i; s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《自然地理學(xué)Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年河北建筑安全員知識(shí)題庫及答案
- 2025云南省建筑安全員B證考試題庫
- 2025年云南建筑安全員《C證》考試題庫及答案
- 《急中毒總論》課件
- 《癌痛護(hù)理》課件
- 《返回總目錄》課件
- 【物理課件】電壓課件
- 上消化道出血病人的護(hù)理
- 課程《新編財(cái)務(wù)報(bào)表分析》課件(全)
- 2024年中國醫(yī)藥研發(fā)藍(lán)皮書
- 坍塌、垮塌事故專項(xiàng)應(yīng)急預(yù)案(3篇)
- 2024年融媒體中心事業(yè)單位考試工作人員另選錄用55人內(nèi)部選題庫及參考答案(研優(yōu)卷)
- 排水管道疏通、清淤、檢測、修復(fù)方案
- 陜西省安康市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- WPS Office辦公軟件應(yīng)用教學(xué)教案
- 安徽省合肥中學(xué)2025屆高三第一次模擬考試數(shù)學(xué)試卷含解析
- 2024年白山客運(yùn)資格證題庫及答案
- 糖尿病藥物治療分類
- 2024年時(shí)政熱點(diǎn)知識(shí)競賽試卷及答案(共四套)
- 幼兒園后勤主任年終總結(jié)
評(píng)論
0/150
提交評(píng)論