《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

上傳人:na****u 文檔編號:56904951 上傳時間:2022-02-22 格式:DOC 頁數(shù):38 大小:248.50KB
收藏 版權(quán)申訴 舉報 下載
《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
第1頁 / 共38頁
《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
第2頁 / 共38頁
《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
第3頁 / 共38頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì)- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(38頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、 河南工程學(xué)院《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 成果報告 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)號: 學(xué)生姓名: 學(xué) 院: 計(jì)算機(jī)學(xué)院 專業(yè)班級: 軟件工程1341班 專業(yè)課程: 《高級程序設(shè)計(jì)語言》 指導(dǎo)教師: 2014 年 6 月 27 日 題 目 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 考核項(xiàng)目 考核內(nèi)容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基

2、本操作技能、知識應(yīng)用能力、獲取知識能力 系統(tǒng)設(shè)計(jì) (20分)分析系統(tǒng)的功能模塊 編程調(diào)試 (20分)實(shí)現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試 回答問題 (15分)回答老師針對課程設(shè)計(jì)提出的問題 課程設(shè)計(jì)報告撰寫 (10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報告 源代碼 (5分)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版 總 評 成 績 指導(dǎo)教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設(shè)計(jì)的概述和目的 1 1.1系統(tǒng)設(shè)計(jì)的目的 1 1.2 系統(tǒng)設(shè)計(jì)的任務(wù) 1 第2章 系統(tǒng)實(shí)現(xiàn)思路 2

3、 2.1 系統(tǒng)需求分析 2 2.2 系統(tǒng)功能分析 2 2.3 系統(tǒng)性能要求 3 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 4 3.1模塊設(shè)計(jì)與分析 4 3.2主函數(shù)設(shè)計(jì) 5 3.3特色算法分析 6 第4章 系統(tǒng)調(diào)試運(yùn)行 15 課程設(shè)計(jì)體會 19 參考文獻(xiàn) 20 第1章 系統(tǒng)設(shè)計(jì)的概述和目的 在計(jì)算機(jī)領(lǐng)域中,任何好的創(chuàng)意和設(shè)計(jì)最終都需要通過高水平的程序設(shè)計(jì)實(shí)現(xiàn),因此學(xué)習(xí)程序設(shè)計(jì)是計(jì)算機(jī)及相關(guān)專業(yè)學(xué)生必備的基本技能之一。 1.1系統(tǒng)設(shè)計(jì)的目的 C++課程設(shè)計(jì)是計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)的重要實(shí)踐性環(huán)節(jié)之一,是學(xué)生學(xué)習(xí)該課程后的一次全面綜合訓(xùn)練。通過本課程設(shè)計(jì)的實(shí)踐,更進(jìn)一步總結(jié)C+

4、+課程學(xué)習(xí)中的的數(shù)據(jù)類型、程序結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體等基本概念,掌握其使用方法。掌握面向?qū)ο蟪绦蛟O(shè)計(jì)中有關(guān)類、對象、繼承、重載、多態(tài)性、輸入輸出流類體系、文件操作的基本概念,初步學(xué)會用類與對象這種面向?qū)ο蟮某绦蛟O(shè)計(jì)方法編寫應(yīng)用程序。培養(yǎng)使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法編寫計(jì)算機(jī)程序的能力。同時,也鍛煉學(xué)生的團(tuán)隊(duì)分工、協(xié)作能力,讓同學(xué)們在實(shí)踐的過程中,提高發(fā)現(xiàn)問題、分析問題、解決問題的能力。學(xué)會團(tuán)結(jié)互助,共同合作,培養(yǎng)良好的團(tuán)隊(duì)精神。 1.2 系統(tǒng)設(shè)計(jì)的任務(wù) (1)設(shè)計(jì)四個類,包括學(xué)生類(描述學(xué)生基本信息)、成績類、班級類、課程類(描述課程信息:課程編號,科目名稱,如高等數(shù)學(xué),大學(xué)英語等)

5、; (2)學(xué)生成績及課程信息用文件保存,程序執(zhí)行時從文件讀入; (3)能按學(xué)期、按班級完成對學(xué)生成績的錄入、修改,能按班級統(tǒng)計(jì)學(xué)生的成績; (4)求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 ① 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 ②計(jì)算學(xué)生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) ③顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件)

6、 ④注意:至少應(yīng)包含一個班、30人、三門課 第2章 系統(tǒng)實(shí)現(xiàn)思路 系統(tǒng)主要根據(jù)學(xué)生成績管理的需要,而建立一個“學(xué)生成績管理系統(tǒng)”,以方便對成績的各項(xiàng)管理操作。 2.1 系統(tǒng)需求分析 學(xué)生成績管理系統(tǒng)可以用來管理規(guī)模較大的成績信息,對學(xué)生的成績信息進(jìn)行維護(hù)和統(tǒng)計(jì)。系統(tǒng)的目標(biāo)用戶為老師或其他需要統(tǒng)計(jì)各種信息的人員。系統(tǒng)可以極大的減少用戶的工作量,為用戶節(jié)省更多的時間,讓用戶在幾秒鐘內(nèi)獲得各種統(tǒng)計(jì)信息,在第一時間對學(xué)生成績有全面的了解。系統(tǒng)給用戶提供了簡單而實(shí)用的功能,如圖2-1所示。 學(xué)生成績管理系統(tǒng) 操作 查詢 成績統(tǒng)計(jì) 按總成績排名 錄入 增加 刪除 修改

7、 總成績查詢 姓名、平均分查詢 每個學(xué)生的平均成績 各科不及格的人數(shù) 輸出所有學(xué)生的成績 2-1模塊框架圖 2.2 系統(tǒng)功能分析 根據(jù)課程設(shè)計(jì)題目的要求,以及我們小組成員的討論,最終確定此程序有 以下功能: 1、資料維護(hù): 系統(tǒng)維護(hù)包括對各個學(xué)生姓名、成績、學(xué)號的錄入操作,對數(shù)據(jù)表中的信息進(jìn)行瀏覽。 2、成績查詢:可以對學(xué)生成績進(jìn)行詳細(xì)查詢。 3、排列顯示:包括統(tǒng)計(jì)學(xué)生排名成績等。 (1)能夠?qū)崿F(xiàn)學(xué)生學(xué)號、姓名、成績的錄入 (2)能夠?qū)崿F(xiàn)對學(xué)生信息的瀏覽、查找、刪除 (3)能夠?qū)崿F(xiàn)對學(xué)生信

8、息按學(xué)號順序顯示,成績排名 (4)能夠?qū)Ω骺瞥煽兘y(tǒng)計(jì)情況輸出 2.3 系統(tǒng)性能要求 根據(jù)學(xué)生成績管理系統(tǒng)的標(biāo)準(zhǔn),以及考慮到用戶的需求,所以我們在編寫系統(tǒng)程序時注意其實(shí)用性如下: (1)系統(tǒng)安全、可靠 (2)功能齊全 (3)操作方便 (4)易于維護(hù)和擴(kuò)充 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 要開發(fā)學(xué)生成績管理信息系統(tǒng),首先需要進(jìn)行需求分析和總體設(shè)計(jì),分析系統(tǒng)的使用對象和用戶需求,設(shè)計(jì)系統(tǒng)的體系結(jié)構(gòu),決定使用的開發(fā)工具和后臺數(shù)據(jù)庫,規(guī)劃項(xiàng)目開發(fā)進(jìn)程。 3.1模塊設(shè)計(jì)與分析 (1)輸入學(xué)生資料模塊 主要功能用來對學(xué)生的成績進(jìn)行收集和輸入。在學(xué)生信息保存在系統(tǒng)中的前提下,成績錄入需要

9、輸入學(xué)生資料,比如班級,學(xué)號,姓名。在準(zhǔn)確輸入學(xué)生資料后,就可以對該學(xué)生的各科成績進(jìn)行錄入。該學(xué)生各科成績輸入成功后,系統(tǒng)會提示是否繼續(xù)進(jìn)行操作,如果想繼續(xù)輸入學(xué)生成績就輸入y,不想再輸入學(xué)生成績的話就輸入n,再輸入n之后,系統(tǒng)返回到主菜單。 (2)輸出學(xué)生資料模塊 主要功能用來對學(xué)生的成績進(jìn)行輸出。在系統(tǒng)已經(jīng)錄入了學(xué)生資料成績的前提下,使用該功能可以顯示所有學(xué)生的信息,資料等等。具體包括學(xué)生的班級,學(xué)號,姓名和各科成績。在查看學(xué)生的資料,成績各方面的信息后,按任意鍵就可以返回到主菜單。 (3) 按學(xué)生姓名進(jìn)行排列模塊 主要功能是用來對學(xué)生的資料按姓名進(jìn)行排序。在系統(tǒng)保存學(xué)生資料

10、,成績的前提下,使用此功能可以對學(xué)生的資料按姓名進(jìn)行排序,這樣就方便查找姓氏相同或是相近的同學(xué)的資料。 (4) 添加學(xué)生資料模塊 主要功能是用來添加學(xué)生資料,成績。如果系統(tǒng)有保存學(xué)生資料的情況下,想錄入學(xué)生成績的話,就不用添加學(xué)生資料這模塊。如果系統(tǒng)沒有保存該學(xué)生信息的話,就要使用此模塊,在成功添加學(xué)生資料后,就可以對該學(xué)生進(jìn)行其他的操作。 (5)按姓名查找,刪除該學(xué)生資料模塊 主要功能是用來刪除學(xué)生資料。在系統(tǒng)保存學(xué)生資料的前提下,想刪除某學(xué)生的資料,可以輸入學(xué)生姓名,系統(tǒng)查找該學(xué)生資料后,就可以刪除了。由于學(xué)生輟學(xué),畢業(yè)等原因,及時對系統(tǒng)進(jìn)行更新,刪除一些沒用的信息,可以使系統(tǒng)更

11、加優(yōu)化。 (6)查找并顯示學(xué)生資料模塊 主要功能是用來查找學(xué)生資料。在系統(tǒng)保存了某學(xué)生資料的前提下,想要查找該學(xué)生資料,可以輸入該學(xué)生姓名,這樣系統(tǒng)就會顯示該學(xué)生資料和各科成績等信息。 (7)按姓名查找,修改學(xué)生資料模塊 主要功能是用來修改學(xué)生資料。在系統(tǒng)保存了某學(xué)生資料的前提下,想要查找該學(xué)生資料,可以輸入該學(xué)生姓名,系統(tǒng)就會顯示該學(xué)生資料和各科成績等信息,這樣就可以修改該學(xué)生的資料,成績等信息。 (8)從文件中讀入數(shù)據(jù)模塊 主要功能是用來從文件中讀入學(xué)生數(shù)據(jù)。由于一些資料可以用Word文檔或Excel表格輸入,故在此模塊中增加了導(dǎo)入數(shù)據(jù)的功能。這樣就方便很多,不用把學(xué)生資

12、料一個一個添加,節(jié)省了很多時間精力。 (9)儲存學(xué)生資料并退出系統(tǒng)模塊 主要功能是用來儲存學(xué)生資料。在對系統(tǒng)進(jìn)行一系列操作,比如添加、刪除、修改學(xué)生資料后,對系統(tǒng)的最新操作進(jìn)行保存,及時更新系統(tǒng),方便下一次的操作。 3.2主函數(shù)設(shè)計(jì) 在main()函數(shù)中主要是通過”switch(menu())”選擇判斷來調(diào)用相關(guān)功能模塊。系統(tǒng)的運(yùn)行是在一個永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出本系統(tǒng)”時,才會跳出永真循環(huán),并退出程序。主函數(shù)在程序中起核心作用,本程序的主函數(shù)主要完成了界面的設(shè)計(jì)、調(diào)用成績類的函數(shù)計(jì)算總成績、平均成績和總評成績,然后是定義指針方便后面調(diào)用類的數(shù)據(jù)成員,還定義了全局

13、變量用于輸入數(shù)據(jù)的下標(biāo)。 (1)首先是介紹界面設(shè)計(jì)和選擇操作的設(shè)計(jì): void main() { cout<<" 歡迎進(jìn)入學(xué)生成績管理系統(tǒng) "<

14、<

15、色算法分析 功能:定義菜單函數(shù),通過輸出函數(shù)顯示系統(tǒng)功能。利用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。 1.算法思路:switch語句的執(zhí)行流程是:首先計(jì)算switch后面圓括號中表達(dá)式的值,然后用此值依次與各個case的常量表達(dá)式比較,若圓括號中表達(dá)式的值與某個case后面的常量表達(dá)式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句。 代碼: void main() //主函數(shù)調(diào)用。 { int n=0; for(;;) { switch(menu()) { case 1: 輸入學(xué)生資料

16、cout<

17、etw(15)<<" "<<"插入學(xué)生資料"<

18、<"查找學(xué)生"<

19、ext(stu,n); break; case 9: 將所有資料寫入文件 cout<

20、() {}; Tstu ( char n[20], int num,float ma,float cj,float eng ) ; float getsum(); float getaver(); friend void main(); }; Tstu::Tstu ( char n[20], int num,float ma,float cj,float eng ) { strcpy(name,n); number=num; math=ma; cpp=cj; english=eng; } float

21、Tstu::getsum() //得到總分的函數(shù) { sum=cpp+english+math; return sum; } float Tstu::getaver() { average=getsum()/3; return average; } (3)然后用switch函數(shù)判斷和選擇 case 1: 數(shù)據(jù)的錄入 case 2: 增加學(xué)生數(shù)據(jù) case 3:刪除學(xué)生信息 case 4:修改數(shù)據(jù) case 5:按總分查詢 case 6:按姓名查詢 case 7:輸出所有學(xué)生數(shù)據(jù) case 8:統(tǒng)計(jì)每個學(xué)生的平均成績 c

22、ase 9:統(tǒng)計(jì)各學(xué)科不及格人數(shù) case 10:按總分排名 2.下面是操作選項(xiàng)的選擇下標(biāo)的設(shè)計(jì),設(shè)計(jì)全局變量可以很好的控制下標(biāo)的選擇,而且定義的指向各個類的指針可以方便后面操作程序的編寫。 (1)cout<<"選擇操作請選擇相應(yīng)操作前的阿拉伯?dāng)?shù)字!"<

23、000]; int i=0;//全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo) int j=0; int chrisl=0;//用于判斷do-while語句 do//判斷輸入是否正確 { cin>>p; if((p>=1&&p<=12)) chrisl=1; else cout<<"!!輸入錯誤,請重新輸入:"<

24、1://數(shù)據(jù)錄入 {char c;//用于在小項(xiàng)中選擇是否繼續(xù)操作 char name[30];//定義各個數(shù)據(jù) int number; float math,cpp,chinese; float pingshicj; float zpcj; 上面是數(shù)據(jù)成員的定義,接下來是具體操作的編譯: do{ cout<<"請輸入姓名"<>name; cout<<"請輸入學(xué)號"<>number; cout<<"請輸入數(shù)學(xué)成績"<>math; cout<<"請輸入c++成績"<

25、l; cin>>cpp; cout<<"請輸入語文成績"<>chinese; cout<<"請輸入平時成績"<>pingshicj; (3)以下是查詢操作的編寫 首先為按總分查詢,以指針來調(diào)用類中數(shù)據(jù),其他的查詢操作都是以相同的方式設(shè)計(jì)完成,因代碼篇幅過多這里不一一列出 case 5://按總分查詢 {int j=0;float SUM;char c;int flag; if(i==0) { cout<<"數(shù)據(jù)庫中沒有數(shù)據(jù),請輸入后再操"<

26、 do{ flag=0; cout<<"請輸入你要查詢的學(xué)生的總成績:"<>SUM; for(int j=0;jgetsum()==SUM) {flag=1; cout<<"你要查詢的學(xué)生是:"<<(*s[j]).name<

27、語文分?jǐn)?shù):"<<(*d[j]).chinese<<"平時成績:"<<(*f[j]).pingshicj<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!"<>c; }; }while(c=='y'); break; } 按平均分查詢操作的設(shè)計(jì),您可以

28、方便的查詢到你所希望的平均分的學(xué)生輸出所以學(xué)生數(shù)據(jù)操作 case 6://輸出所有學(xué)生數(shù)據(jù) { cout<<"所有學(xué)生數(shù)據(jù)如下:"<

29、m=0;m

30、=0;n=0;k=0; for(j=0;jmath<60)m++; if(d[j]->cpp<60)n++; if(d[j]->chinese<60)k++; } cout<<"數(shù)學(xué)不及格人數(shù)為:"<

31、來測試,從而保證每個模塊作為一個單元能正確運(yùn)行。進(jìn)而進(jìn)行子系統(tǒng)測試,子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試。模塊相互間的協(xié) 行系統(tǒng)測試,系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試,在這個過程中我發(fā)現(xiàn)設(shè)計(jì)和編碼的一些錯誤,并改正。 進(jìn)入主界面,首先可以看到,主界面共有11個操作選項(xiàng),11個小選項(xiàng)又分為4個大的選項(xiàng):操作、查詢、成績統(tǒng)計(jì)和排名,當(dāng)用戶看完操作選項(xiàng)以后是一條溫馨的提示:選擇操作請選擇相應(yīng)的阿拉伯?dāng)?shù)字。如圖4-1所示。 用戶選擇的是數(shù)字“1”,接下來就是輸入學(xué)生姓名等信息了。 4-1 登陸界面圖 輸入完學(xué)生信息以后界面顯示的信息,可以看到

32、,當(dāng)輸入完成時系統(tǒng)會自動顯示出學(xué)生信息,如圖4-2所示。 4-2學(xué)生數(shù)據(jù)的錄入圖 選擇刪除操作,可以發(fā)現(xiàn)當(dāng)完成刪除操作后都會提醒您是否要繼續(xù),如圖4-3。 4-3學(xué)生數(shù)據(jù)的刪除圖 數(shù)據(jù)的修改操作,您可以發(fā)現(xiàn)當(dāng)完成刪除操作后都會提醒您是否要繼續(xù),如圖4-4所示。 4-4學(xué)生數(shù)據(jù)的修改圖 執(zhí)行按總成績查詢操作,需要先輸入總成績,如圖4-5所示。 4-5按總成績查詢圖 執(zhí)行按學(xué)生姓名操作,需要先輸入學(xué)生姓名,如圖4-6所示。 4-6按姓名查詢圖 每個學(xué)生平均成績的輸出,如圖4-7所示。 4-7每個學(xué)生的平均成績圖 各科不及格人數(shù)的輸出如圖4-8所

33、示。 4-8各科不及格的人數(shù)圖 系統(tǒng)的退出,如圖4-9所示。 4-9退出圖 課程設(shè)計(jì)體會 通過這次的實(shí)訓(xùn)我深刻的體會到了要想把程序做好要有清晰的思路有較強(qiáng)的語言組織能力,一絲的馬虎否則會前功盡棄。程序的檢查和系統(tǒng)的調(diào)用程序?qū)懲旰蟛⒉荒鼙WC它一定能運(yùn)行,所以要對它進(jìn)行調(diào)試發(fā)現(xiàn)其中的弊端并作出相應(yīng)的修改以完善程序的目的。經(jīng)過努力,課程設(shè)計(jì)基本完成了。通過本次實(shí)訓(xùn),我對所學(xué)的C++語言知識有同學(xué)請教,借助網(wǎng)絡(luò)等等。實(shí)驗(yàn)過程中也走了很多的彎路,由于在開始設(shè)計(jì)的時候思路不時很清晰,對于一些問題不能很好的提出解決問題的方法,在設(shè)計(jì)過程中,代碼總是重復(fù)的修改,在很多問題上,代

34、碼并不時最優(yōu)的。相信在以后的學(xué)習(xí)中,隨著知識的增多,問題會逐漸得到解決。在課程設(shè)計(jì)的實(shí)踐中,學(xué)到很多有用的知識,也積累了不少寶貴的經(jīng)驗(yàn)。我相信本次的課程設(shè)計(jì)會使我以后再各種方面都有很大的提高。 參考文獻(xiàn) [1] 譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》.清華大學(xué)出版社 [2] 譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計(jì)習(xí)題上機(jī)指導(dǎo)》.清華大學(xué)出版社 [3] Kenneth C.Louden.《編譯原理及實(shí)踐》.機(jī)械工業(yè)出版社 [4] H.M.Deitel(美) P.J.Deitel(美).《C++大學(xué)教程》.電子工業(yè)出版社 [5] Herbert Schildt.《C++編譯藝術(shù)》.清華大學(xué)出版

35、社? [6] Al Stevens Clayton Walnum(美).《標(biāo)準(zhǔn)C++寶典》.電子工業(yè)出版社 #include #include #include #include #include using namespace std; class Tstu //通過定義一個類來定義數(shù)據(jù)錄入的函數(shù) { char name[20]; int number; float math,cpp,english,average,sum; public:

36、 Tstu() {}; Tstu ( char n[20], int num,float ma,float cj,float eng ) ; float getsum();//得到總分的函數(shù) float getaver(); //得到平均分的函數(shù) friend void main(); //將主函數(shù)定義為友元函數(shù),方便訪問類中的成員 }; Tstu::Tstu ( char n[20], int num,float ma,float cj,float eng ) { strcpy(name,n); //得到姓名 numbe

37、r=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<<"

38、*****************歡迎來到學(xué)生成績查詢系統(tǒng)*****************"<

39、ut<<"(7)輸出所有學(xué)生的數(shù)據(jù)"<

40、s[100]; //類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲 ofstream *file[100]; int i=0; //全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo) int j=0; int chris1=0; //用于判斷do—while語句 do //判斷輸入是否正確 { cin>>p; if((p>=1&&p<=11)) chris1=1; else cout<<"指令錯誤!請重新輸入:"<

41、 case 1: //數(shù)據(jù)的錄入 { char c; //用于在小項(xiàng)中選擇是否繼續(xù)操作 char name[20]; int number; float math,cpp,english; do{ cout<<"請輸入姓名:"<>name; cout<<"請輸入學(xué)號:"<>number; cout<

42、<"請輸入數(shù)學(xué)成績:"<>math; cout<<"請輸入C++成績:"<>cpp; cout<<"請輸入英語成績:"<>english; fstream outfile,infile; //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) outfile.open("f1.txt",ios::out|ios::app); if(!file)

43、 { cout<<"f1.txt can not open.\n"; return; } outfile<

44、1.txt can not open.\n"; return; } char ch; while(infile.get(ch)) cout<

45、 cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"<>c; chris1=0; do{ if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!"<>c; } else chris1=1; }while(chris1==0); }while(c=='y'); //重復(fù)輸入 break

46、; } case 2: //增加學(xué)生數(shù)據(jù) { char name[20]; int number; float math,cpp,english; char c; do { cout<<"請輸入您要增加的學(xué)生的姓名:"<>name; cout<<"請輸入你要增加的學(xué)生的學(xué)號:"

47、<>number; cout<<"請輸入數(shù)學(xué)成績:"<>math; cout<<"請輸入C++成績:"<>cpp; cout<<"請輸入英語成績:"<>english; fstream outfile,infile; out

48、file.open("f1.txt",ios::out|ios::app); if(!file) { cout<<"f1.txt can not open.\n"; return; } outfile<

49、 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<

50、<>c; if(c!='y'&&c!='n') {

51、cout<<"指令錯誤!請重新輸入!"<>c; } }while(c=='y'); break; } case 3://刪除學(xué)生信息 { char c; string xingming,line,str,name; do { ifstream fin("f1.txt"); fstream outfile("f2

52、.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) cout<<"請輸入您要刪除的學(xué)生的姓名:"<>xingming; while(!fin.eof() ) { getline(fin,line); istringstream stream(line);

53、 name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等 if(name != xingming) outfile<

54、::out); ifstream outf("f2.txt"); f<>c; if(c!='y'&&c!='n')

55、 { cout<<"指令錯誤!請重新輸入!"<>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) { co

56、ut<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<>name; fstream fin("f1.txt",ios::in); ofstream outfile("f.txt",ios::trunc|ios::out); cout<

57、line); istringstream stream(line); sname = line.substr(0,line.find(" ",0)); if(name!=sname) { outfile<>name>>

58、nu>>ma>>com>>eng; cout<

59、lose(); inf.close(); } if(flag=0)cout<<"對不起,您要修改的學(xué)生不存在!請查證后輸入!"<>c; cout<>c; } }while(c=='y'); break;

60、} case 5://按總分查詢 { int j=0;float SUM;char c;int flag; if(i==0) { cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<>SUM; for(int j=0;jgetsum()==SUM)

61、 { flag=1; cout<<"您要查詢的學(xué)生是:"<<(*s[j]).name<

62、<<"是否繼續(xù)查?(y/n):"; cin>>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!"<>c; }; }while(c=='y'); break; } case 6://按姓名查詢 { char n[20];char c;int j=0;int flag; if(i==0) { cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<

63、l;break; } do { flag=0; cout<<"請輸入要查詢的名字: "<>n; for(int j=0;j

64、s[j]).math<<"c++分?jǐn)?shù):"<<(*s[j]).cpp<<"英語分?jǐn)?shù):"<<(*s[j]).english<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入:"<>c; } }whi

65、le(c=='y'); break; } case 7://輸出所有學(xué)生數(shù)據(jù) { cout<<"所有學(xué)生數(shù)據(jù)如下:"<

66、i==0) { cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<math<60)m++; if(s[j]->cpp<60)n++; if(s[j]->english<60)k++;

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!