《高級程序設(shè)計語言》課程設(shè)計 -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)
河南工程學(xué)院高級程序設(shè)計語言課程設(shè)計成果報告學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)學(xué)生學(xué)號 : 學(xué)生姓名: 學(xué) 院: 計算機(jī)學(xué)院 專業(yè)班級: 軟件工程1341 專業(yè)課程: 高級程序設(shè)計語言指導(dǎo)教師: 2014 年 6 月 27 日題 目學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)考核項目考核內(nèi)容得分平時考核(30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力系統(tǒng)設(shè)計(30分)分析系統(tǒng)的功能模塊編程調(diào)試(30分)實現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試回答問題(15分)回答老師針對課程設(shè)計提出的問題課程設(shè)計報告撰寫(10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計報告源代碼(5分)按照規(guī)范要求完成課程設(shè)計源代碼的排版總 評 成 績指導(dǎo)教師評語: 日期: 年 月 日目 錄第1章 系統(tǒng)設(shè)計目的11.1 設(shè)計內(nèi)容11.2 課程設(shè)計的要求11.3課程設(shè)計基本操作方法1第2章 系統(tǒng)實現(xiàn)思路22.1 頁面設(shè)計22.2 功能設(shè)計與實現(xiàn)22.3系統(tǒng)模塊化設(shè)計圖32.4 系統(tǒng)需求分析3第3章 系統(tǒng)詳細(xì)設(shè)計43.1 系統(tǒng)的需求43.2主函數(shù)設(shè)計113.3系統(tǒng)的性能要求133.4 系統(tǒng)的功能分析133.5系統(tǒng)的功能模塊13第4章 系統(tǒng)調(diào)試運行144.1測試結(jié)果144.2程序運行總結(jié)17課程設(shè)計體會19參考文獻(xiàn)20第1章 系統(tǒng)設(shè)計目的1.1 設(shè)計內(nèi)容a.設(shè)計四個類;學(xué)生類(描述學(xué)生基本信息);成績類;班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數(shù)學(xué),大學(xué)英語等);學(xué)生成績及課程信息用文件保存,每個類一個文件,程序執(zhí)行時從文件讀入。b.能按學(xué)期,按班級完成對學(xué)生成績的錄入,修改,能按班級統(tǒng)計學(xué)生的成績;求學(xué)生的總分及平均分;并能根據(jù)學(xué)生的平均成績進(jìn)行排序。能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出的學(xué)生的成績單。設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比計算學(xué)生總評成績:總評成績=平時成績*平時成績所占比百分比+期末成績*(1平時成績所占百分比)顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件)注意,至少一個班,30人三門課1.2 課程設(shè)計的要求根據(jù)c+課程所學(xué)的概念、理論和方法,按照c+程序設(shè)計的基本步驟,設(shè)計出一個適當(dāng)規(guī)模的程序設(shè)計課程內(nèi)容中的全部內(nèi)容功能;設(shè)計主控模塊程序。對給出的程序源代碼要給出各部分的詳細(xì)注釋。自己根據(jù)能力及需要添加相應(yīng)功能模塊。包括系統(tǒng)的功能分析、系統(tǒng)的功能模塊設(shè)計、程序流程圖或結(jié)構(gòu)框圖、邏輯結(jié)構(gòu)設(shè)計,數(shù)據(jù)庫中的表、視圖(如果使用)、索引的機(jī)構(gòu)和定義、觸發(fā)器、儲存過程、課程設(shè)計體會。1.3課程設(shè)計基本操作方法1按照系統(tǒng)用戶手冊及文檔規(guī)范要求進(jìn)行操作,養(yǎng)成查閱手冊、文檔的良好習(xí)慣;2對特殊疑難問題采用討論、協(xié)作等方式進(jìn)行解決,有意識地訓(xùn)練團(tuán)隊合作意識;3課程設(shè)計報告應(yīng)多包含在課程設(shè)計過程中出現(xiàn)的錯誤及解決方法。第2章 系統(tǒng)實現(xiàn)思路2.1 頁面設(shè)計程序運行后會出現(xiàn)一個簡潔的窗口,便于用戶查詢數(shù)據(jù)。(1)基本要求:a要求利用面向?qū)ο蟮姆椒ㄒ约癱+的編程思想來完成系統(tǒng)的設(shè)計;b要求在設(shè)計的過程中,建立清晰的類層次;c在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法;d在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制。(2)創(chuàng)新設(shè)計在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進(jìn)行修改的功能。(3)寫出設(shè)計說明書2.2 功能設(shè)計與實現(xiàn) 通過主窗體調(diào)用其他窗體,具體實現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。應(yīng)用系統(tǒng)主控界面包括記錄編和記錄查詢等功能模塊。記錄編輯功能完成學(xué)生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進(jìn)行查詢1.設(shè)計方法和基本原理:(1)問題描述設(shè)計一個實用的小型班級程序,具有查詢和刪除功能,并且能夠打開或修改指定文件及將多個文件組成組成一個文件。他完全使用類來實現(xiàn),充分體現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計特點。要求:實現(xiàn)主要功能:建立文件,文件的存取和顯示,刪除記錄,查詢記錄。(2)問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題分為: a.應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的設(shè)計和組織;b分析系統(tǒng)中的各個實體及它們之間的關(guān)系包括屬性和行為;c.根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;d完成類層次中各個類的描述(包括屬性和方法);e完成類中各個成員函數(shù)的定義;f完成系統(tǒng)的應(yīng)用模塊;g.功能調(diào)試;h完成系統(tǒng)總結(jié)以及系統(tǒng)應(yīng)用說明書。 2.3系統(tǒng)模塊化設(shè)計圖該學(xué)生管理系統(tǒng)主要分為七個功能模塊,各個功能模塊由相應(yīng)的功能函數(shù)來實現(xiàn),模塊化圖如下:學(xué)生管理系統(tǒng)主菜單錄入數(shù)據(jù)查詢數(shù)據(jù)修改數(shù)據(jù)保存數(shù)據(jù)數(shù)據(jù)排序數(shù)據(jù)讀取退出系統(tǒng)圖表 21 系統(tǒng)模塊化設(shè)計圖2.4 系統(tǒng)需求分析(1)學(xué)生信息錄入功能;(2)學(xué)生成績查詢功能;(3)學(xué)生成績輸出功能;(4)學(xué)生信息修改功能;(5)學(xué)生信息刪除功能;(6)學(xué)生成績的排序功能。第3章 系統(tǒng)詳細(xì)設(shè)計3.1 系統(tǒng)的需求1.構(gòu)造學(xué)生信息結(jié)構(gòu)體存儲學(xué)生信息學(xué)生信息包括:姓名,學(xué)號,數(shù)學(xué),英語,數(shù)構(gòu),物理,總分,平均分等信息。構(gòu)造代碼如下:struct Student /聲明一個名為student的結(jié)構(gòu)體類型 string name; /姓名 string number; /學(xué)號 double maths; /數(shù)學(xué) double english; /英語 double datastruct; /數(shù)構(gòu) double physical; /物理 double total; /總分 double average;/均分; 2. 系統(tǒng)功能函數(shù)類的設(shè)計把該系統(tǒng)要實現(xiàn)的功能封裝在此類中,方便增加和修改。在本系統(tǒng)中設(shè)計了七個函數(shù)分別實現(xiàn)學(xué)生成績的錄入,查詢,輸出,修改,刪除,求總分和平均分。其代碼如下::class SYSTEM /聲明類systempublic:SYSTEM()n=0; /構(gòu)造函數(shù) void add();/添加 void show();/顯示 void search();/查詢 void change();/修改 void delet();/刪除 void sort();/排序 void Max();/最高分 void Min();/最低分private:Student stu1000;/定義一個結(jié)構(gòu)體類型student的變量stu int n;各功能函數(shù)代碼如下:學(xué)生信息輸入函數(shù)add()void SYSTEM:add()/添加 cout<<"學(xué)號:"<<endl; cin>>stun.number; cout<<"姓名:"<<endl; cin>>stun.name; cout<<"數(shù)學(xué):"<<endl; cin>>stun.maths; cout<<"英語:"<<endl; cin>>stun.english; cout<<"數(shù)構(gòu):"<<endl; cin>>stun.datastruct; cout<<"物理:"<<endl; cin>>stun.physical; stun.total= stun.maths+ stun.english+ stun.datastruct+ stun.physical; stun.average=stun.total/4; n+;/學(xué)生人數(shù)增加一個 (2)學(xué)生成績查詢函數(shù)search()void SYSTEM:search()/查詢 cout<<"請選擇查詢方式:"<<endl; cout<<"1.按學(xué)號查詢"<<endl; cout<<"2.按姓名查詢"<<endl; int c,i;cin>>c; switch (c) case 1:/按照學(xué)號查詢string num;cout<<"請輸入要查詢的學(xué)號:"<<endl;cin>>num;for(i=0;i<n;i+) if(stui.number=num) cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"<<endl;cout<<stui.number<<" "<<stui.name<<" "<<stui.maths<<" "<<stui.english<<" "<<stui.datastruct<<" "<<stui.physical<<" "<<stui.total<<" "<<stui.average<<endl;break; if(stui.number!=num)cout<<"未找到該學(xué)生信息!"<<endl;break;case 2:/按照學(xué)號查詢string name1;cout<<"請輸入要查詢的姓名:"<<endl;cin>>name1;for(i=0;i<n;i+) if(stui.name=name1) cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"<<endl;cout<<stui.number<<" "<<stui.name<<" "<<stui.maths<<" "<<stui.english<<" "<<stui.datastruct<<" "<<stui.physical<<" "<<stui.total<<" "<<stui.average<<endl; break; (3)學(xué)生成績輸出函數(shù)show()void SYSTEM:show()/輸出 cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"<<endl; for(int i=0;i<n;i+) cout<<stui.number<<" "<<stui.name<<" " <<stui.maths<<" "<<stui.english<<" " <<stui.datastruct<<" "<<stui.physical<<" " <<stui.total<<" "<<stui.average<<endl; void SYSTEM:change() /修改string num;int i; cout<<"請輸入要修改的學(xué)生學(xué)號:"<<endl; cin>>num; for(i=0;i<n;i+) if(stui.number=num) cout<<"該學(xué)號的學(xué)生信息如下:"<<endl; cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"<<endl; cout<<stui.number<<" "<<stui.name<<" "<<stui.maths<<" "<<stui.english<<" "<<stui.datastruct<<" "<<stui.physical<<" "<<stui.total<<" "<<stui.average<<endl;cout<<"請輸入新的學(xué)生信息:"<<endl;cout<<"學(xué)號:"<<endl;cin>>stui.number;stun.number=stui.number;cout<<"姓名:"<<endl;cin>>stui.name;stun.name=stui.name;cout<<"數(shù)學(xué):"<<endl;cin>>stui.maths;stun.maths =stui.maths;cout<<"英語:"<<endl;cin>>stui.english;stun.english=stui.english;cout<<"數(shù)構(gòu):"<<endl;cin>>stui.datastruct;stun.datastruct=stui.datastruct;cout<<"物理:"<<endl;cin>>stui.physical;stun.physical=stui.physical;stui.total= stui.maths+ stui.english+ stui.datastruct+ stui.physical;stui.average=stui.total/4;break; if(stui.number!=num)cout<<"無此學(xué)生信息!"<<endl;void SYSTEM:delet() /刪除 string num; cout<<"請輸入要刪除學(xué)生的學(xué)號,然后按回車確認(rèn):"<<endl; cin>>num; for(int i=0;i<n;i+) if(stui.number=num) for(int j=i;j<n-1;j+) stuj=stuj+1;/用后一個學(xué)生信息覆蓋前一個學(xué)生信息 n-; /學(xué)生人數(shù)減少一個 cout<<"已成功刪除該學(xué)生信息!"<<endl;break;(4)排序函數(shù)sort()void SYSTEM:sort() /排序cout<<"請選擇排序方式:"<<endl;cout<<"1.按學(xué)生總分排序"<<endl;cout<<"2.按學(xué)生平均分排序"<<endl;cout<<"3.返回"<<endl; int k; cin>>k; switch (k) case 1:/按學(xué)生總分排序 Student p; for(int i=0;i<n;i+) for(int j=0;j<n-i;j+) if(stuj.total<stuj+1.total) p=stuj; stuj=stuj+1; stuj+1=p; cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分"<<endl; for(int m=0;m<n;m+) cout<<stum.number<<" "<<stum.name<<" "<<stum.maths<<" "<<stum.english<<" "<<stum.datastruct<<" "<<stum.physical<<" "<<stum.total<<endl; break; case 2:/按學(xué)生平均分排序 Student p;/定義一個Student類型的變量p for(int i=0;i<n;i+) for(int j=0;j<n-i;j+) if(stuj.average<stuj+1.average) p=stuj; stuj=stuj+1; stuj+1=p; cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 平均分"<<endl; for(int m=0;m<n;m+) cout<<stum.number<<" "<<stum.name<<" "<<stum.maths<<" "<<stum.english<<" "<<stum.datastruct<<" "<<stum.physical<<" "<<stum.average<<endl; break;case 3:return;/返回 (5)求各科最高分函數(shù)Max()void SYSTEM:Max()/最高分double max1,max2,max3,max4,max5,max6;max1=stu0.maths;max2=stu0.english;max3=stu0.datastruct;max4=stu0.physical;max5=stu0.total;max6=stu0.average; for(int i=0;i<n;i+) if(stui.maths >max1) max1=stui.maths ; if(stui.english>max2) max2=stui.english; if(stui.datastruct>max3) max3=stui.datastruct; if(stui.physical>max4) max4=stui.physical; if(stui.total>max5) max5=stui.total; if(stui.average>max6) max6=stui.average; cout<<"數(shù)學(xué)最高分 英語最高分 數(shù)構(gòu)最高分 物理最高分 總分最高 平均分最高"<<endl; cout<<" "<<max1<<" "<<max2<<" "<<max3<<" "<<max4<<" "<<max5<<" "<<max6<<endl; (6)求各科最低分函數(shù)Min()void SYSTEM:Min()/最低分double min1,min2,min3,min4,min5,min6; min1=stu0.maths; min2=stu0.english; min3=stu0.datastruct; min4=stu0.physical; min5=stu0.total; min6=stu0.average; for(int i=0;i<n;i+) if(stui.maths<min1) min1=stui.maths; if(stui.english<min2) min2=stui.english; if(stui.datastruct<min3) min3=stui.datastruct; if(stui.physical<min4) min4=stui.physical; if(stui.total<min5) min5=stui.total; if(stui.average<min6) min6=stui.average; cout<<"數(shù)學(xué)最低分 英語最低分 數(shù)據(jù)結(jié)構(gòu)最低分 物理最低 總分最低 平均分最低"<<endl; cout<<" "<<min1<<" "<<min2<<" "<<min3<<" "<<min4<<" "<<min5<<" "<<min6<<endl; 3. 主函數(shù)設(shè)計先用循壞語句實現(xiàn)不斷重復(fù),通過多重選擇語句調(diào)用功能函數(shù)類中的相應(yīng)函數(shù)實現(xiàn)學(xué)生成績管理系統(tǒng)的各項功能需求。其代碼如下:void main() SYSTEM person; int b;3.2主函數(shù)設(shè)計先用循壞語句實現(xiàn)不斷重復(fù),通過多重選擇語句調(diào)用功能函數(shù)類中的相應(yīng)函數(shù)實現(xiàn)學(xué)生成績管理系統(tǒng)的各項功能需求。void main() SYSTEM person; int b; do cout<<"*"<<endl; cout<<" 1.輸入學(xué)生成績 5.刪除學(xué)生成績"<<endl; cout<<" 2.查詢學(xué)生成績 6.學(xué)生成績排序"<<endl; cout<<" 3.輸出學(xué)生成績 7.最高分"<<endl; cout<<" 4.修改學(xué)生成績 8.最低分"<<endl; cout<<" 0.退出學(xué)生成績管理系統(tǒng)"<<endl; cout<<"*"<<endl; cout<<"請請根據(jù)你的需要選擇(08):" cin>>b; switch(b) case 1: cout<<"請依次輸入該學(xué)生的相關(guān)信息:"<<endl; person.add(); break; case 2: person.search(); break; case 3: person.show(); break; case 4: person.change(); break; case 5: person.delet(); break; case 6: person.sort(); break; case 7: person.Max(); break; case 8: person.Min(); break; case 0:cout<<"謝謝使用本系統(tǒng)!"<<endl; while(b<10);3.3系統(tǒng)的性能要求(1)系統(tǒng)安全、可靠;(2)功能齊全;(3)操作方便、界面友好;(4)易于維護(hù)和擴(kuò)充。3.4 系統(tǒng)的功能分析(1)資料維護(hù):系統(tǒng)維護(hù)包括對學(xué)生的信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。(2)系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。(3)系統(tǒng)查詢:可以對學(xué)生的信息進(jìn)行查詢。3.5系統(tǒng)的功能模塊學(xué)生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改、數(shù)據(jù)查詢,排序顯示構(gòu)成。第4章 系統(tǒng)調(diào)試運行4.1測試結(jié)果每一個case都能執(zhí)行,但是很多的地方都不夠完善,例如:在總成績排序中,只能輸出總成績,不能單獨的輸出學(xué)生的相應(yīng)的信息;每次進(jìn)行別的操作之前都要進(jìn)行一次數(shù)據(jù)的錄入,不能直接對原有的文件進(jìn)行讀取。 4-1修改學(xué)生成績4-2刪除學(xué)生成績4-3學(xué)生成績排序4-4輸出各科最高分4-5輸出各科最低分4-6退出系統(tǒng)4.2程序運行總結(jié)該程序經(jīng)過多次運行后,最終通過執(zhí)行結(jié)果,很多細(xì)節(jié)需要我們留意,一個很小的錯誤就可能造成程序無法運行。課程設(shè)計體會親身體會:這次的c+課程設(shè)計實踐中,在老師的指導(dǎo)下,運用c+的知識編寫一個課題。在整個過程中我們要明白設(shè)計目的,然后進(jìn)行分析,而且團(tuán)隊意識很重要。在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。第一次進(jìn)行實訓(xùn),剛開始不知該如何下手,感覺跟平時學(xué)的知識跟現(xiàn)實無法連接,但是在老師和其他同學(xué)的幫助下,還是最終做到了有始有終,嘗到了成功的甜頭。對程序這門課又有了新的認(rèn)識,并且產(chǎn)生了濃厚的興趣。參考文獻(xiàn)1 譚浩強(qiáng)著,C+語言設(shè)計題解與上機(jī)指導(dǎo),清華大學(xué)出版社2 譚浩強(qiáng)著,C+面向?qū)ο蟪绦蛟O(shè)計,清華大學(xué)出版社3 Deitel.Java大學(xué)基礎(chǔ)教程(第六版).電子工業(yè)出版社 4 MaryCampione.Java語言導(dǎo)學(xué)(第四版).機(jī)械工業(yè)出版社 5 Y.Daniel Liang.Java語言程序設(shè)計基礎(chǔ)篇(第六版). 機(jī)械工業(yè)出版社 6 Kathy Sierra.Head First Java(第二版).東南大學(xué)出版社 #include<iostream> #include<string> #include<fstream>#include<sstream>#include<iomanip>using namespace std; class Tstu /通過定義一個類來定義數(shù)據(jù)錄入的函數(shù) char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum();/得到總分的函數(shù) float getaver(); /得到平均分的函數(shù) friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問類中的成員 ; Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到學(xué)號 math=ma; /得到數(shù)學(xué)成績 cpp=cj; /得到c+成績 english=eng; /得到英語成績 float Tstu:getsum() /得到總分的函數(shù) sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函數(shù) average=getsum()/3; return average; void main() cout<<"*歡迎來到學(xué)生成績查詢系統(tǒng)*"<<endl; cout<<"請選擇您需要的操作!"<<endl; /菜單的輸出 cout<<"操作:"<<endl; cout<<"(1)數(shù)據(jù)錄入"<<endl; cout<<"(2)增加學(xué)生"<<endl; cout<<"(3)刪除學(xué)生"<<endl; cout<<"(4)修改數(shù)據(jù)"<<endl; cout<<"查詢:"<<endl; cout<<"(5)按總成績查詢"<<endl; cout<<"(6)按姓名查詢"<<endl; cout<<"(7)輸出所有學(xué)生的數(shù)據(jù)"<<endl; cout<<"成績統(tǒng)計:"<<endl; cout<<"(8)每個學(xué)生的平均成績"<<endl; cout<<"(9)各科不及格人數(shù)"<<endl; cout<<"排名:"<<endl; cout<<"(10)按總分查詢排名"<<endl; cout<<"(11)退出"<<endl; cout<<"選擇相關(guān)操作請輸入相對的括號里的阿拉伯?dāng)?shù)字及字母!"<<endl; int p=0; /全局變量,用于選擇菜單時的輸入 char w;/全局變量,用于在大項中選擇是否繼續(xù)操作 Tstu *s100; /類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲 ofstream *file100; int i=0; /全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo) int j=0; int chris1=0; /用于判斷dowhile語句 do /判斷輸入是否正確 cin>>p; if(p>=1&&p<=11) chris1=1; else cout<<"指令錯誤!請重新輸入:"<<endl; while(chris1=0); do switch(p) case 1: /數(shù)據(jù)的錄入 char c; /用于在小項中選擇是否繼續(xù)操作 char name20; int number; float math,cpp,english; do cout<<"請輸入姓名:"<<endl; cin>>name; cout<<"請輸入學(xué)號:"<<endl; cin>>number; cout<<"請輸入數(shù)學(xué)成績:"<<endl; cin>>math; cout<<"請輸入C+成績:"<<endl; cin>>cpp; cout<<"請輸入英語成績:"<<endl; cin>>english; fstream outfile,infile; /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) outfile.open("f1.txt",ios:out|ios:app); if(!file) cout<<"f1.txt can not open.n" return; outfile<<name<<" "<<"學(xué)號:"<<number<<" "<<"數(shù)學(xué)成績:"<<math<<" "<<"C+成績:"<<cpp<<" "<<"外語成績:"<<english<<endl; outfile.close(); infile.open("f1.txt",ios:in); if(!file) /判斷文件是否打開 cout<<"f1.txt can not open.n" return; char ch; while(infile.get(ch) cout<<ch; cout<<endl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"<<endl; cin>>c; chris1=0; do if(c!='y'&&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; else chris1=1; while(chris1=0); while(c='y'); /重復(fù)輸入 break; case 2: /增加學(xué)生數(shù)據(jù) char name20; int number; float math,cpp,english; char c; do cout<<"請輸入您要增加的學(xué)生的姓名:"<<endl; cin>>name; cout<<"請輸入你要增加的學(xué)生的學(xué)號:"<<endl; cin>>number; cout<<"請輸入數(shù)學(xué)成績:"<<endl; cin>>math; cout<<"請輸入C+成績:"<<endl; cin>>cpp; cout<<"請輸入英語成績:"<<endl; cin>>english; fstream outfile,infile; outfile.open("f1.txt",ios:out|ios:app); if(!file) cout<<"f1.txt can not open.n" return; outfile<<name<<" "<<"學(xué)號:"<<number<<" "<<"數(shù)學(xué)成績:"<<math<<" "<<"C+成績:"<<cpp<<" "<<"外語成績:"<<english<<endl; outfile.close(); infile.open("f1.txt",ios:in); if(!file) cout<<"f1.txt can not open.n" return; char h; while(infile.get(h) cout<<h; cout<<endl; infile.close(); j+; si=new Tstu(name,number, math, cpp, english); i+; cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; while(c='y'); break; case 3:/刪除學(xué)生信息 char c; string xingming,line,str,name; do ifstream fin("f1.txt"); fstream outfile("f2.txt",ios:trunc|ios:out); /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) cout<<"請輸入您要刪除的學(xué)生的姓名:"<<endl; cin>>xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find(" ",0);/找到名字,判斷是否相等 if(name != xingming) outfile<<line<<endl; outfile.close(); fin.close(); fstream f("f1.txt",ios:trunc|ios:out); ifstream outf("f2.txt"); f<<outf.rdbuf(); outf.close(); f.close(); cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; while(c='y'); break; case 4:/修改數(shù)據(jù) string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;do flag=0; cout<<"請輸入您要修改的學(xué)生的姓名:" cin>>name; fstream fin("f1.txt",ios:in); ofstream outfile("f.txt",ios:trunc|ios:out); cout<<endl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find(" ",0);if(name!=sname)outfile<<line<<endl;else flag=1; fin.close(); if(flag=1) cout<<"請輸入修改學(xué)生姓名及其新學(xué)號,數(shù)學(xué),c+和英語成績:"cin>>name>>nu>>ma>>com>>eng;cout<<endl;outfile<<name<<" "<<"學(xué)號:"<<nu<<" "<<"數(shù)學(xué)成績:"<<ma<<" "<<"C+成績:"<<com<<" "<<"外語成績:"<<eng<<endl; outfile.close();fstream outf("f1.txt",ios:trunc|ios:out);fstream inf("f.txt",ios:in);outf<<inf.rdbuf()<<endl;outf.close();inf.close(); if(flag=0)cout<<"對不起,您要修改的學(xué)生不存在!請查證后輸入!"<<endl; cout<<"想繼續(xù)修改嗎(y/n):" cin>>c; cout<<endl; if(c!='y'&&c!='n') cout<<" 指令錯誤!請重新輸入!"<<endl<<" "cin>>c; while(c='y');break; case 5:/按總分查詢 int j=0;float SUM;char c;int flag; if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break; do flag=0; cout<<"請輸入您要查詢的學(xué)生的總成績:"<<endl; cin>>SUM; for(int j=0;j<i;j+) if(sj->getsum()=SUM) flag=1;cout<<"您要查詢的學(xué)生是:"<<(*sj).name<<endl;cout<<"該生的信息為:"<<endl;cout<<" 學(xué)號:"<<(*sj).number<<" 數(shù)學(xué)分?jǐn)?shù):"<<(*sj).math<<" c+分?jǐn)?shù):"<<(*sj).cpp<<" 英語分?jǐn)?shù)"<<(*sj).english<<endl; if(flag=0)cout<<"對不起!您要查詢的學(xué)生不存在!"<<endl;cout<<"是否繼續(xù)查?(y/n):"cin>>c;if(c!='y'&&c!='n')cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; ; while(c='y'); break; case 6