學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)--課程設(shè)計(jì)報(bào)告_第1頁(yè)
學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)--課程設(shè)計(jì)報(bào)告_第2頁(yè)
學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)--課程設(shè)計(jì)報(bào)告_第3頁(yè)
學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)--課程設(shè)計(jì)報(bào)告_第4頁(yè)
學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)--課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

高級(jí)程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)成果報(bào)告學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)學(xué)生學(xué)號(hào): 學(xué)生姓名: 學(xué) 院: 計(jì)算機(jī)學(xué)院 專業(yè)班級(jí): 軟件工程1341班 專業(yè)課程: 高級(jí)程序設(shè)計(jì)語(yǔ)言指導(dǎo)教師: 2014 年 6 月 27 日題 目學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)考核項(xiàng)目考核內(nèi)容得分平時(shí)考核(30分)出勤情況、態(tài)度、效率;知識(shí)掌握情況、基本操作技能、知識(shí)應(yīng)用能力、獲取知識(shí)能力系統(tǒng)設(shè)計(jì)(20分)分析系統(tǒng)的功能模塊編程調(diào)試(20分)實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊,并完成調(diào)試回答問(wèn)題(15分)回答老師針對(duì)課程設(shè)計(jì)提出的問(wèn)題課程設(shè)計(jì)報(bào)告撰寫(xiě)(10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報(bào)告源代碼(5分)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版總 評(píng) 成 績(jī)指導(dǎo)教師評(píng)語(yǔ): 日期: 年 月 日目 錄第1章 系統(tǒng)分析11.1 設(shè)計(jì)任務(wù)11.2 課程設(shè)計(jì)要求1第2章 系統(tǒng)實(shí)現(xiàn)思路22.1 系統(tǒng)需求分析22.2 系統(tǒng)性能要求32.3 系統(tǒng)功能分析32.4 系統(tǒng)功能模塊4 2.5 模塊框架圖5第3章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)83.1 界面設(shè)計(jì)83.2 界面分析83.3 功能設(shè)計(jì)與實(shí)現(xiàn)9第4章 系統(tǒng)調(diào)試運(yùn)行17課程設(shè)計(jì)體會(huì)21參考文獻(xiàn)22第1章 系統(tǒng)分析1. 1設(shè)計(jì)任務(wù)(1)設(shè)計(jì)四個(gè)類,包括學(xué)生類(描述學(xué)生基本信息);成績(jī)類:班級(jí)類;課程類(描述課程信息:課程編號(hào),科目名稱,如高等數(shù)學(xué),大學(xué)英語(yǔ)等);(2)學(xué)生成績(jī)及課程信息用文件保存,程序執(zhí)行時(shí)從文件讀入;(3)能按學(xué)期,按班級(jí)完成對(duì)學(xué)生成績(jī)的錄入、修改,能按班級(jí)統(tǒng)計(jì)學(xué)生的成績(jī);(4)求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績(jī)進(jìn)行排序,能查詢學(xué)生成績(jī),不及格科目及學(xué)生名單;能按班級(jí)輸出學(xué)生的成績(jī)單。 設(shè)置學(xué)生的成績(jī)信息:學(xué)生學(xué)號(hào)、姓名、所選課程名稱、平時(shí)成績(jī)、期末成績(jī)、平時(shí)成績(jī)所占百分比 計(jì)算學(xué)生總評(píng)成績(jī):總評(píng)成績(jī)=平時(shí)成績(jī)*平時(shí)成績(jī)所占百分比+期末成績(jī)*(1-平時(shí)成績(jī)所占百分比) 顯示學(xué)生的姓名、所選課程名稱以及平時(shí)成績(jī)、期末成績(jī)和總評(píng)成績(jī)信息。分單人顯示和以班輸出(班成績(jī)單格式輸出到文件) 注意,至少應(yīng)包含一個(gè)班、30人、三門(mén)課 1.2 課程設(shè)計(jì)要求根據(jù)高級(jí)程序設(shè)計(jì)語(yǔ)言課程所學(xué)的概念、理論與方法,按照C+程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序來(lái)實(shí)現(xiàn)設(shè)計(jì)課程內(nèi)容中的全部功能;設(shè)計(jì)主控模塊程序,對(duì)給出的程序源代碼要給出各部分的詳細(xì)注釋;自己根據(jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能;最終設(shè)計(jì)報(bào)告應(yīng)包含系統(tǒng)的功能分析、系統(tǒng)的功能模塊設(shè)計(jì)與實(shí)現(xiàn)、主要程序流程圖、調(diào)試運(yùn)行、課程設(shè)計(jì)心得與體會(huì)等內(nèi)容。第2章 系統(tǒng)實(shí)現(xiàn)思路2.1 系統(tǒng)需求分析學(xué)生成績(jī)管理系統(tǒng)主要提供成績(jī)查詢,方便管理的網(wǎng)上的信息查閱平臺(tái),學(xué)生可以通過(guò)該系統(tǒng)查閱與自己相關(guān)信息,查看留言、提交留言。教師可以通過(guò)成績(jī)管理系統(tǒng)查閱學(xué)生成績(jī)信息,教師信息,查看教師留言、學(xué)生留言、提交留言、留言的管理等相關(guān)操作。系統(tǒng)管理員可以實(shí)現(xiàn)以上的所有功能,還有對(duì)學(xué)生的添加、刪除、修改、教師的添加、刪除、修改,數(shù)據(jù)庫(kù)的備份、數(shù)據(jù)庫(kù)的還原等相關(guān)操作。 通過(guò)定義四個(gè)類用來(lái)保持各類信息的對(duì)立性,也可使之關(guān)聯(lián),使系統(tǒng)有以下幾個(gè)功能: (1)能對(duì)學(xué)生的成績(jī)進(jìn)行錄入、增加、刪除、修改。 (2)能對(duì)學(xué)生的成績(jī)按總成績(jī),姓名,班級(jí),學(xué)期,進(jìn)行查詢。 (3)能輸出學(xué)生的所有數(shù)據(jù)。 (4)能進(jìn)行成績(jī)統(tǒng)計(jì)。 (5)能進(jìn)行總分查詢排名。 (6)學(xué)生信息分單人顯示呢和以班輸出(班成績(jī)單格式輸出到文件)。 系統(tǒng)通過(guò)定義以下四個(gè)類來(lái)顯示各類信息的功能:class Student/定義學(xué)生類 char name20; int number;public: Student() ; Student ( char n20 ) ; friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問(wèn)類中的成員 ;class Grade/定義一個(gè)成績(jī)類 float (num,average)public:float getsum();/得到總分的函數(shù)float getaver();/得到平均分的函數(shù)class Class/定義一個(gè)班級(jí)類int project10;class Subjet/定義一個(gè)課程類float (math,cpp,english)public:float ma;float cj;float eng;2.2 系統(tǒng)性能要求 (1)系統(tǒng)安全、可靠。 (2)功能齊全。 (3)操作方便、界面友好。 (4)易于維護(hù)和擴(kuò)充。2.3 系統(tǒng)功能分析 資料維護(hù):系統(tǒng)維護(hù)包括對(duì)學(xué)生信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。 系統(tǒng)功能:可以對(duì)數(shù)據(jù)表中的信息進(jìn)行瀏覽。 系統(tǒng)查詢:可以對(duì)學(xué)生的信息進(jìn)行查詢。2.4 系統(tǒng)功能模塊 學(xué)生成績(jī)查詢系統(tǒng)有:成績(jī)錄入、增加、刪除、修改、數(shù)據(jù)查詢,排序顯示構(gòu)成。cout*歡迎來(lái)到學(xué)生成績(jī)查詢系統(tǒng)*endl; cout請(qǐng)選擇您需要的操作!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)按總成績(jī)查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學(xué)生的數(shù)據(jù)endl; cout成績(jī)統(tǒng)計(jì):endl; cout(8)每個(gè)學(xué)生的平均成績(jī)endl;cout(9)各科不及格人數(shù)endl;cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl;cout選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字及字母!endl;2.5 模塊框架圖 程序中包含類與主函數(shù),類構(gòu)成了程序的數(shù)據(jù)管理與存放區(qū)。在主函數(shù)中包括多種功能。以類為依托構(gòu)成程序框架,在主函數(shù)中實(shí)現(xiàn)每一個(gè)功能。類與功能共同構(gòu)成程序框架。 系統(tǒng)模塊框架圖見(jiàn)圖2-1:學(xué)生成績(jī)管理系統(tǒng)按總成績(jī)排名成績(jī)統(tǒng)計(jì)查詢操作錄入增加刪除修改查詢姓名平均成績(jī)不及格人數(shù)輸出學(xué)生的成績(jī)圖2-1 系統(tǒng)模塊框架圖(1)頭文件:#include#include#include#include#include(2)主函數(shù):void main() cout*歡迎來(lái)到學(xué)生成績(jī)查詢系統(tǒng)*endl; cout請(qǐng)選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)修改數(shù)據(jù)endl; cout查詢:endl; cout(3)按總成績(jī)查詢endl; cout(4)按姓名查詢endl; cout(5)輸出所有學(xué)生的數(shù)據(jù)endl; cout成績(jī)統(tǒng)計(jì):endl; cout(6)每個(gè)學(xué)生的平均成績(jī)endl; cout(7)各科不及格人數(shù)endl; cout排名:endl; cout(8)按總分查詢排名endl; cout(9)退出endl; cout選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字及字母!p; if(p=1&p=11) chris1=1; else cout指令錯(cuò)誤!請(qǐng)重新輸入:endl; (3)定義的函數(shù):float getsum();/得到總分的函數(shù)float getaver(); /得到平均分的函數(shù)(4)循環(huán)結(jié)構(gòu):while(chris1=0); do switch(p) case 1:. /錄入功能case 2:. /增加功能case 3:. /刪除功能case 4:. /修改數(shù)據(jù)功能case 5:. /按成績(jī)查詢功能case 6:. /按姓名查詢功能case 7:. /輸出所有的數(shù)據(jù)case 8:. /輸出學(xué)生的平均分case 9:. / /查詢不及格人數(shù) case 10:. /總成績(jī)排名while(w=y);/循環(huán)語(yǔ)句結(jié)束第3章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3.1 界面設(shè)計(jì) 界面共設(shè)計(jì)八個(gè)模塊: (1)輸入學(xué)生資料模塊; (2)輸出學(xué)生資料模塊; (3)按學(xué)生姓名進(jìn)行排列模塊; (4)添加學(xué)生資料模塊; (5)按姓名查找,刪除學(xué)生資料模塊; (6)查找并顯示學(xué)生資料模塊; (7)按姓名查找,修改學(xué)生資料模塊; (8)存儲(chǔ)學(xué)生資料并退出系統(tǒng)模塊;3.2 界面分析通過(guò)主窗體調(diào)用其他窗體,具體實(shí)現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。 應(yīng)用系統(tǒng)主界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學(xué)生成績(jī)記錄編輯和記錄查詢功能。記錄查詢功能可以對(duì)數(shù)據(jù)各分類的記錄進(jìn)行查詢。程序運(yùn)行后會(huì)出現(xiàn)一個(gè)便捷的窗口,便于用戶查詢數(shù)據(jù)。-主界面顯示(見(jiàn)圖3-1):圖3-1 窗口顯示-選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字及字母!3.3 功能設(shè)計(jì)與實(shí)現(xiàn) (1)錄入功能: 使用cin輸入流輸入學(xué)生的相關(guān)信息,并創(chuàng)立文件,將所輸入的數(shù)據(jù)存入到文件中。docout請(qǐng)輸入姓名name;cout請(qǐng)輸入學(xué)號(hào)number;cout請(qǐng)輸入數(shù)學(xué)成績(jī)math;cout請(qǐng)輸入c+成績(jī)cpp;cout請(qǐng)輸入英語(yǔ)成績(jī)english;cout請(qǐng)輸入數(shù)學(xué)平時(shí)成績(jī)mathp;cout請(qǐng)輸入c+平時(shí)成績(jī)cppp;cout請(qǐng)輸入英語(yǔ)平時(shí)成績(jī)englishp;cout請(qǐng)輸入成績(jī)百分比baif;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);/打開(kāi)文件if(!file)coutf1.txt can not open.n;return ;outfilename 學(xué)號(hào):numberendl;outfile數(shù)學(xué)成績(jī): setw(2)mathsetw(20)數(shù)學(xué)平時(shí)成績(jī): setw(2)mathpsetw(20)數(shù)總成績(jī): setw(2)math*baif+mathp*(1-baif)endl;outfile外語(yǔ)成績(jī):setw(2)englishsetw(20)外語(yǔ)平時(shí)成績(jī): setw(2)englishpsetw(20)外總成績(jī): setw(2)english*baif+englishp*(1-baif)endl;outfilec+成績(jī): setw(2)cppsetw(20)c+平時(shí)成績(jī): setw(2)cpppsetw(20)c總成績(jī): setw(2)cpp*baif+cppp*(1-baif)endl;outfile總成績(jī): math*baif+mathp*(1-baif)+cpp*baif+cppp*(1-baif)+english*baif+englishp*(1-baif)endl;outfile.close(); infile.open(f1.txt,ios:in);if(!file)coutf1.txt can not open.n;return ;char ch;while(infile.get(ch)coutch;coutendl;infile.close();j+;si=new Chengji(number,name,math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz); /將數(shù)據(jù)錄入文件i+;cout數(shù)據(jù)錄入成功,想繼續(xù)嗎(y/n)c;chris1=0;doif(c!=y&c!=n)cout指令錯(cuò)誤!請(qǐng)重新輸入!c;elsechris1=1;while(chris1=0); (2)增加功能: 與錄入功能程序操作與代碼大體相同 參考錄入功能。 (3)刪除功能:用對(duì)文件的操作,判斷所需刪除的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否相同,利用文件流操作刪除對(duì)應(yīng)數(shù)據(jù)。char c;string xingming,line,str,name;doifstream fin(f1.txt);fstream outfile(f2.txt,ios:trunc|ios:out); /創(chuàng)建文件2cout請(qǐng)輸入您要?jiǎng)h除的學(xué)生的姓名:xingming;while(!fin.eof() /執(zhí)行判斷并刪除數(shù)據(jù)getline(fin,line);istringstream stream(line);name=line.substr(0,line.find( ,0);if(name!=xingming)outfilelineendl;outfile.close();fin.close();fstream f(f1.txt,ios:trunc|ios:out);ifstream outf(f2.txt);foutf.rdbuf();outf.close();f.close();cout數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)c;(4)修改功能: 參考錄入功能,利用對(duì)文件的操作達(dá)到對(duì)數(shù)據(jù)的修改功能。(5)按總成績(jī)查詢: 用if語(yǔ)句調(diào)用getsum()判斷輸入的總分?jǐn)?shù)與數(shù)據(jù)庫(kù)中的總分?jǐn)?shù)是否有相同的,并執(zhí)行輸出文件操作。int j=0;float SUM;char c;int flag;if(i=0) /根據(jù)前面的疊加判斷文件中是否有數(shù)據(jù)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break;do /輸入查找的成績(jī)利用函數(shù)查找符合條件的數(shù)據(jù)flag=0;cout請(qǐng)輸入您要查詢的學(xué)生的總成績(jī):SUM;for(int j=0;jgetsum()=SUM) /將符合的數(shù)據(jù)輸出flag=1;cout您要查詢的學(xué)生是:(*sj).nameendl;cout該生的信息為:endl;cout 學(xué)號(hào):(*sj).num 數(shù)學(xué)分?jǐn)?shù):(*sj).math*(*sj).baif+(*sj).mathp*(1-(*sj).baif) c+分?jǐn)?shù)(*sj).cpp*(*sj).baif+(*sj).cppp*(1-(*sj).baif) 英語(yǔ)分?jǐn)?shù)(*sj).english*(*sj).baif+(*sj).englishp*(1-(*sj).baif)endl;if(flag=0) /錯(cuò)誤操作返回繼續(xù)cout對(duì)不起!您要查詢的學(xué)生不存在!endl;coutc;(6)按姓名查詢: 程序代碼與按總分功能類似,區(qū)別在于這個(gè)功能中利用指針訪問(wèn)類中成員,并進(jìn)行判斷。(7)輸出所有數(shù)據(jù): 通過(guò)打開(kāi)文件,對(duì)文件中的所有數(shù)據(jù)進(jìn)行輸出。cout所有學(xué)生數(shù)據(jù)如下:endl;ifstream file;file.open(f1.txt,ios:in); /以輸入方式打開(kāi)文件coutfile.rdbuf(); /以輸出文件的所有數(shù)據(jù)file.close(); (8)輸出學(xué)生的平均分: 利用指針訪問(wèn)Chengji類中的成員,調(diào)用getaver ()函數(shù)求得平均分并執(zhí)行輸出操作。if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break;for(int m=0;mi;m+)cout(*sm).name 學(xué)號(hào)(*sm).num 總分 (*sm).getsum() 均分(*sm).getaver ()endl;(9)查詢不及格人數(shù): 調(diào)用get函數(shù)求得三科平均成績(jī),并統(tǒng)計(jì)不及格人數(shù),并輸出查詢結(jié)果。 if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break;int m,n,k,j;m=0;n=0;k=0;for(j=0;jgetshu()getcpp()geteng()60)k+;cout數(shù)學(xué)不及格人數(shù)為:mendl;coutc+不及格人數(shù)為:nendl;cout英語(yǔ)不及格人數(shù)為:kendl;(10)總成績(jī)排名: 通過(guò)for函數(shù)尋找最大值并進(jìn)行交換,交換得最大值與最大值對(duì)應(yīng)名字。 if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break;int h,g,n;int j=0;float a100,temp;string k100,temp1;for(g=0;gi;g+)aj=(*sg).getsum(); kj=(*sg).name;j+;for(h=0;hi;h+)for(n=0;nan+1)temp=an; /交換得到最大值an=an+1;an+1=temp;temp1=kn; /交換名字kn=kn+1; kn+1=temp1;for(n=1;n=i;n+)coutknsetw(5)anendl;第4章 系統(tǒng)調(diào)試運(yùn)行 每一個(gè)case都能執(zhí)行,但是有很多地方都不夠完善,例如:在總成績(jī)排序中,只能輸出總成績(jī),不能單獨(dú)的輸出學(xué)生的相映的信息;每次進(jìn)行別的操作之前都要在進(jìn)行一次數(shù)據(jù)的錄入,不能直接對(duì)原有的文件進(jìn)行讀取。(1)對(duì)學(xué)生信息的錄入,如姓名、學(xué)號(hào)、班級(jí)、所選課程名稱、平時(shí)成績(jī)、期末成績(jī)、平時(shí)成績(jī)所占百分比(見(jiàn)圖4-1):圖4-1 信息錄入 (2)對(duì)學(xué)生信息的增加(輸入所要增加學(xué)生的所有信息)(見(jiàn)圖4-2):圖4-2 信息增加 (3)對(duì)學(xué)生信息的刪除(輸入所要?jiǎng)h除的信息)(見(jiàn)圖4-3):圖4-3 信息刪除 (4)對(duì)學(xué)生數(shù)據(jù)的修改(對(duì)所需信息進(jìn)行修改)(見(jiàn)圖4-4):圖4-4 信息修改 (5)選擇相關(guān)操作退出系統(tǒng)(見(jiàn)圖4-5):圖4-5 退出系統(tǒng) (6)系統(tǒng)循環(huán)(見(jiàn)圖4-6):圖4-6 系統(tǒng)循環(huán)課程設(shè)計(jì)體會(huì) 這一周的c+程序設(shè)計(jì)實(shí)訓(xùn),我們?cè)赾+老師的指導(dǎo)下對(duì)這一門(mén)課程有了更深一步的了解。之前對(duì)c+學(xué)了一學(xué)期,對(duì)其有了一定的了解,但這只是停留在表面,里面有好多知識(shí)對(duì)我們來(lái)講還是很陌生。 學(xué)習(xí)這門(mén)課必須要通過(guò)上機(jī)實(shí)驗(yàn)來(lái)加深對(duì)其的理解,鞏固自己的知識(shí)。也可以通過(guò)上機(jī)來(lái)認(rèn)識(shí)自己對(duì)知識(shí)點(diǎn)的漏洞,便于以后更好地學(xué)習(xí),掌握知識(shí)。通過(guò)這次實(shí)訓(xùn),我知道了,只要努力,就會(huì)有收獲。參考文獻(xiàn)1 譚浩強(qiáng) c+面向?qū)ο蟪绦蛟O(shè)計(jì)(第六版) 清華大學(xué)出版社2 譚浩強(qiáng) c+程序題解與上機(jī)指導(dǎo) 清華大學(xué)出版社3 朱福喜 c+語(yǔ)言程序設(shè)計(jì)(第二版) 科學(xué)出版社4 陳國(guó)君等 c+程序設(shè)計(jì)基礎(chǔ)(第二版) 清華大學(xué)出版社5 Deitel c+大學(xué)基礎(chǔ)教程(第六版) 電子工業(yè)出版社6 MaryCampione c+語(yǔ)言導(dǎo)學(xué)(第四版) 機(jī)械工業(yè)出版社7 Y.DanielLiang c+語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第六版) 機(jī)械工業(yè)出版社8 KathySierra HeadFirstc+(第二版) 東南大學(xué)出版社#include #include #include#include#includeusing namespace std; class Student/定義學(xué)生類 char name20; int number;public: Student() ; Student ( char n20 ) ; friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問(wèn)類中的成員 ;class Grade/定義一個(gè)成績(jī)類 float (num,average)public:float getsum();/得到總分的函數(shù)float getaver();/得到平均分的函數(shù)class Class/定義一個(gè)班級(jí)類int projict;class Subjet/定義一個(gè)課程類float (math,cpp,english)public:float ma;float cj;float eng; Student:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到學(xué)號(hào) float Grade:getsum() /得到總分的函數(shù) sum=cpp+english+math; return sum; float Grade:getaver() /得到平均分的函數(shù) average=getsum()/3; return average; float Subjict:gued(float ma,float cj,float eng) math=ma; /得到數(shù)學(xué)成績(jī) cpp=cj; /得到c+成績(jī) english=eng; /得到英語(yǔ)成績(jī) void main() cout*歡迎來(lái)到學(xué)生成績(jī)查詢系統(tǒng)*endl; coutsetw(10)請(qǐng)選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)修改數(shù)據(jù)endl; cout查詢:endl; cout(3)按總成績(jī)查詢endl; cout(4)按姓名查詢endl; cout(5)輸出所有學(xué)生的數(shù)據(jù)endl; cout成績(jī)統(tǒng)計(jì):endl; cout(6)每個(gè)學(xué)生的平均成績(jī)endl; cout(7)各科不及格人數(shù)endl; cout排名:endl; cout(8)按總分查詢排名endl; cout(9)退出endl; cout選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字及字母!p; if(p=1&p=11) chris1=1; else cout指令錯(cuò)誤!請(qǐng)重新輸入:endl; while(chris1=0); do switch(p) case 1: /數(shù)據(jù)的錄入 char c; /用于在小項(xiàng)中選擇是否繼續(xù)操作 float projict; char name20; int number; float math,cpp,english; do cout請(qǐng)輸入班級(jí):projict; cout請(qǐng)輸入姓名:name; cout請(qǐng)輸入學(xué)號(hào):number; cout請(qǐng)輸入數(shù)學(xué)成績(jī):math; cout請(qǐng)輸入C+成績(jī):cpp; cout請(qǐng)輸入英語(yǔ)成績(jī):english; fstream outfile,infile; /作一個(gè)文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 班級(jí):projict 學(xué)號(hào):number 數(shù)學(xué)成績(jī):math C+成績(jī):cpp 外語(yǔ)成績(jī):englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判斷文件是否打開(kāi) coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令錯(cuò)誤!請(qǐng)重新輸入!c; else chris1=1; while(chris1=0); while(c=y); /重復(fù)輸入 break; case 2:/修改數(shù)據(jù) string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break;do flag=0; coutname; fstream fin(f1.txt,ios:in); ofstream outfile(f.txt,ios:trunc|ios:out); coutendl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutnameprojictnumacomeng;coutendl;outfilename 班級(jí): 學(xué)號(hào):nu 數(shù)學(xué)成績(jī):ma C+成績(jī):com 外語(yǔ)成績(jī):engendl; outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close(); if(flag=0)cout對(duì)不起,您要修改的學(xué)生不存在!請(qǐng)查證后輸入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令錯(cuò)誤!請(qǐng)重新輸入!endlc; while(c=y);break; case 3:/按總分查詢 int j=0;float SUM;char c;int flag; if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break; do flag=0; cout請(qǐng)輸入您要查詢的學(xué)生的總成績(jī):SUM; for(int j=0;jgetsum()=SUM) flag=1;cout您要查詢的學(xué)生是:(*sj).nameendl;cout該生的信息為:endl;cout 學(xué)號(hào):(*sj).number 班級(jí):(*sj).projict 數(shù)學(xué)分?jǐn)?shù):(*sj).math c+分?jǐn)?shù):(*sj).cpp 英語(yǔ)分?jǐn)?shù)(*sj).englishendl; if(flag=0)cout對(duì)不起!您要查詢的學(xué)生不存在!endl;coutc;if(c!=y&c!=n)cout指令錯(cuò)誤!請(qǐng)重新輸入!c; ; while(c=y); break; case 4:/按姓名查詢 char n20;char c;int j=0;int flag; if(i=0)cout系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!endl;break; do flag=0; cout請(qǐng)輸入要查詢的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout您要查詢的學(xué)生是:(*sj).nameendl;cout該生的信息是:學(xué)號(hào):(*sj).number 班級(jí):(*sj).projict 數(shù)學(xué)分?jǐn)?shù):(*sj).mathc+分?jǐn)?shù):(*sj).cpp英語(yǔ)分?jǐn)?shù):(*sj).english

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論