數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)(C++)Word版_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)(C++)Word版_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)(C++)Word版_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)(C++)Word版_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)(C++)Word版_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

整理為word格式整理為word格式整理為word格式課程設(shè)計(jì)(論文)任務(wù)書(shū)軟件學(xué)院學(xué)院專(zhuān)業(yè)班一、課程設(shè)計(jì)(論文)學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)二、課程設(shè)計(jì)(論文)工作自2014年12月22日起至2012年12月27日止三、課程設(shè)計(jì)(論文)地點(diǎn):創(chuàng)新大樓機(jī)房四、課程設(shè)計(jì)(論文)內(nèi)容要求:1.本課程設(shè)計(jì)的目的⑴訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí),獨(dú)立完成問(wèn)題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識(shí),編寫(xiě)程序求解指定問(wèn)題;⑵初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;⑶提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力,鞏固、深化學(xué)生的理論知識(shí),提升編程水平。2.課程設(shè)計(jì)的任務(wù)及要求1)基本要求:⑴要求從分析題目的需求入手,按設(shè)計(jì)抽象數(shù)據(jù)類(lèi)型、構(gòu)思算法、通過(guò)設(shè)計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型、編寫(xiě)上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目,最終寫(xiě)出完整的報(bào)告;⑵在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率;⑶程序設(shè)計(jì)語(yǔ)言推薦使用C/C++,程序書(shū)寫(xiě)規(guī)范,源程序需必要的注釋?zhuān)虎让课煌瑢W(xué)需提交可獨(dú)立運(yùn)行的程序和規(guī)范的課程設(shè)計(jì)報(bào)告。2)課程設(shè)計(jì)論文編寫(xiě)要求⑴理論設(shè)計(jì)部分以課程設(shè)計(jì)論文的形式提交,格式必須按照課程設(shè)計(jì)論文標(biāo)準(zhǔn)格式進(jìn)行書(shū)寫(xiě)和裝訂;⑵課程設(shè)計(jì)報(bào)告(論文)包括中文目錄、設(shè)計(jì)任務(wù)、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)、調(diào)試分析、總結(jié)、謝辭、參考文獻(xiàn)、附錄等;⑶設(shè)計(jì)部分應(yīng)包含系統(tǒng)功能模塊圖,調(diào)試分析應(yīng)包括運(yùn)行截圖等。3)課程設(shè)計(jì)評(píng)分標(biāo)準(zhǔn):⑴學(xué)習(xí)態(tài)度:10分;整理為word格式整理為word格式整理為word格式⑵系統(tǒng)設(shè)計(jì):20分;⑶編程調(diào)試:20分;⑷回答問(wèn)題:20分;⑸論文撰寫(xiě):30分。4)參考文獻(xiàn):⑴嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].清華大學(xué)出版社.2010.3⑵嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)[M].清華大學(xué)出版社.1999.2⑶何欽銘,馮燕等.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)[M].浙江大學(xué)出版社.2007.85)課程設(shè)計(jì)進(jìn)度安排⑴準(zhǔn)備階段(4學(xué)時(shí)):選擇設(shè)計(jì)題目、了解目的要求、查閱相關(guān)資料;⑵程序模塊設(shè)計(jì)分析階段(4學(xué)時(shí)):程序概要設(shè)計(jì)、詳細(xì)設(shè)計(jì);⑶代碼編寫(xiě)調(diào)試階段(8學(xué)時(shí)):程序模塊代碼編寫(xiě)、調(diào)試、測(cè)試;⑷撰寫(xiě)論文階段(4學(xué)時(shí)):總結(jié)設(shè)計(jì)任務(wù)和設(shè)計(jì)內(nèi)容,撰寫(xiě)設(shè)計(jì)論文。學(xué)生簽名:年月日6)課程設(shè)計(jì)題目具體要求:能夠?qū)崿F(xiàn)對(duì)學(xué)生成績(jī)的常用管理功能。⑴采用一定的存儲(chǔ)結(jié)構(gòu)對(duì)學(xué)生成績(jī)進(jìn)行管理;⑵可以進(jìn)行成績(jī)的錄入、查詢(xún)、修改、刪除等操作;⑶可以查詢(xún)某門(mén)課程的平均分,學(xué)生的排名,不同分?jǐn)?shù)段的學(xué)生人數(shù)及學(xué)生信息等;⑷可以查詢(xún)某學(xué)生的各課程分?jǐn)?shù),總分及學(xué)生的班級(jí)排名等;⑸可以按學(xué)號(hào)排序輸出全部學(xué)生的成績(jī)信息、總分及班級(jí)排名等。課程設(shè)計(jì)(論文)評(píng)審意見(jiàn)(1)學(xué)習(xí)態(tài)度(10分):優(yōu)()、良()、中()、一般()、差();(2)系統(tǒng)設(shè)計(jì)(20分):優(yōu)()、良()、中()、一般()、差();整理為word格式整理為word格式整理為word格式(3)編程調(diào)試(20分):優(yōu)()、良()、中()、一般()、差();(4)回答問(wèn)題(20分):優(yōu)()、良()、中()、一般()、差();(5)論文撰寫(xiě)(30分):優(yōu)()、良()、中()、一般()、差();(6)格式規(guī)范性及考勤是否降等級(jí):是()、否()評(píng)閱人:周娟職稱(chēng):講師2014年12月28日目錄第1章設(shè)計(jì)任務(wù)分析 1第2章功能實(shí)現(xiàn)詳細(xì)設(shè)計(jì) 2第3章功能測(cè)試 8第4章調(diào)試與改進(jìn) 19第5章小結(jié) 20整理為word格式整理為word格式整理為word格式第6章源代碼 21整理為word格式整理為word格式整理為word格式第1章設(shè)計(jì)任務(wù)分析需求與功能分析需求分析學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要所以學(xué)生成績(jī)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩?hù)提供充足的信息和快捷的查詢(xún)手段。以前各個(gè)學(xué)校的學(xué)生成績(jī)管理基本上都是靠手工進(jìn)行,但隨著各個(gè)學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績(jī)管理工作所涉及的數(shù)據(jù)量也越來(lái)越大,有的學(xué)校不得不靠增加人力、物力來(lái)進(jìn)行學(xué)生成績(jī)管理。這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差等,另外其所用時(shí)間長(zhǎng),產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少的困難。如今學(xué)校的學(xué)生越來(lái)越多,成績(jī)管理的工作量越來(lái)越大,手工管理成績(jī)的弊端也越來(lái)越明顯。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生檔案信息進(jìn)行管理具有手工管理所無(wú)法比擬的優(yōu)點(diǎn),如檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等,能夠極大地提高學(xué)生檔案管理的效率。所以我想借本次課程設(shè)計(jì)之際,設(shè)計(jì)一個(gè)簡(jiǎn)易的學(xué)生成績(jī)管理系統(tǒng)。功能分析輸入輸出的形式和輸入值的范圍首先輸入學(xué)生個(gè)數(shù)按回車(chē)鍵,然后按照提示選擇輸入學(xué)生信息并將學(xué)生信息保存在文本文檔中,具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢(xún)操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來(lái)保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成后或者在相應(yīng)的命令后再將學(xué)生信息保存到文本文檔中。輸入數(shù)據(jù)類(lèi)型主要是char、int、float等數(shù)據(jù)類(lèi)型,輸入內(nèi)容包括學(xué)號(hào)、姓名、基礎(chǔ)會(huì)計(jì)成績(jī)、大學(xué)英語(yǔ)成績(jī)、數(shù)據(jù)結(jié)構(gòu)成績(jī)、總分、平均分等數(shù)據(jù)。輸出的形式為學(xué)號(hào)、姓名、基礎(chǔ)會(huì)計(jì)成績(jī)、大學(xué)英語(yǔ)成績(jī)、數(shù)據(jù)結(jié)構(gòu)成績(jī)、總分、平均分等數(shù)據(jù)。程序所達(dá)到的功能數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;數(shù)據(jù)刪除功能,能最終從文件中刪除;多種排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法;多種查詢(xún)功能(如按學(xué)號(hào)查詢(xún)、按姓名查詢(xún)等)及輸出功能;學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門(mén)課程的成績(jī)等);整理為word格式整理為word格式整理為word格式其他功能(如各種統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)學(xué)生所有課程的平均分,統(tǒng)計(jì)某門(mén)課程的所有學(xué)生的平均分等等)整理為word格式整理為word格式整理為word格式第2章功能實(shí)現(xiàn)詳細(xì)設(shè)計(jì)庫(kù)函數(shù)先編入系統(tǒng)所需的庫(kù)函數(shù),使程序可運(yùn)行。#include<stdio.h>#include<iostream>#include<stdlib.h>#include<iomanip>//主要是對(duì)cin,cout之類(lèi)的一些操縱運(yùn)算,是I/O流控制頭文件#include<conio.h>//文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出菜單界面的設(shè)計(jì)主菜單的設(shè)計(jì)在主界面中包括“<1>輸入學(xué)生信息并保存到文件<2>讀取文件并輸出學(xué)生信息<3>按學(xué)號(hào)查詢(xún)<4>按姓名查詢(xún)<5>按學(xué)號(hào)修改信息<6>插入學(xué)生信息<7>按學(xué)號(hào)刪除信息<8>各科成績(jī)排序<9>按總分降序排序<10>各科成績(jī)統(tǒng)計(jì)<11>分?jǐn)?shù)段查找<12>按學(xué)號(hào)排序<13>退出”等功能。每個(gè)函數(shù)體如下:voidinput(Stu*r);//輸入voidoutput(Stu*r);//輸出voidsearchnum(Stu*r);//按學(xué)號(hào)查找voidsearchname(Stu*r);//按姓名查找voidmodify(Stu*r);//修改學(xué)生信息Stu*insert(Stu*r);//插入信息voiderase(Stu*r);//按學(xué)號(hào)刪除信息voidsortmenu();//排序菜單voidsortsum(Stu*r);//按總分降序排序voidstat(Stu*r);//統(tǒng)計(jì)各科總分和平均分信息voidintmenu();//分?jǐn)?shù)段查找菜單整理為word格式整理為word格式整理為word格式圖2.2.1主菜單圖2.2.1主菜單界面在此界面中用戶(hù)可以選擇要操作的選項(xiàng),回車(chē)之后即進(jìn)行相關(guān)操作或進(jìn)入相關(guān)二級(jí)菜單排序菜單的設(shè)計(jì)在排序菜單中包括“<1>按基礎(chǔ)會(huì)計(jì)成績(jī)排序<2>按大學(xué)英語(yǔ)成績(jī)排序<3>按數(shù)據(jù)結(jié)構(gòu)成績(jī)排序<4>返回上級(jí)菜單”等功能。每個(gè)函數(shù)體如下:voidsort_BA(Stu*r);//基礎(chǔ)會(huì)計(jì)成績(jī)排序voidsort_UE(Stu*r);//大學(xué)英語(yǔ)成績(jī)排序整理為word格式整理為word格式整理為word格式圖2.2.2排序菜單界面圖2.2.2排序菜單界面分?jǐn)?shù)段查找菜單的設(shè)計(jì)在分?jǐn)?shù)段查找菜單中包括“<1>基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找<2>大學(xué)英語(yǔ)分?jǐn)?shù)段查找<3>數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找<4>返回上級(jí)菜單”等功能。每個(gè)函數(shù)體如下:voidint_BA(Stu*r);//基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找voidint_UE(Stu*r);//大學(xué)英語(yǔ)分?jǐn)?shù)段查找圖2.2.3分?jǐn)?shù)段查找菜單界面圖2.2.3分?jǐn)?shù)段查找菜單界面整理為word格式整理為word格式整理為word格式詳細(xì)設(shè)計(jì)系統(tǒng)流程圖輸入學(xué)生人數(shù)輸入學(xué)生人數(shù)主菜單界面輸入學(xué)生成績(jī)輸出學(xué)生成績(jī)按學(xué)號(hào)查詢(xún)成績(jī)按姓名查詢(xún)成績(jī)修改學(xué)生信息各科成績(jī)排序按學(xué)號(hào)刪除信息插入學(xué)生信息按總分降序排序各科成績(jī)統(tǒng)計(jì)分?jǐn)?shù)段查找按學(xué)號(hào)排序退出退出各功能模塊的設(shè)計(jì)主函數(shù)模塊用函數(shù)intmain()來(lái)實(shí)現(xiàn),主要功能是顯示菜單,讓用戶(hù)根據(jù)提示選擇操作,首先定義一個(gè)指針數(shù)組(全局使用)Stu*p=(Stu*)newStu[num];此處num指學(xué)生個(gè)數(shù),并不是學(xué)號(hào),這里應(yīng)用了do-while和switch-case語(yǔ)句來(lái)進(jìn)行循環(huán)選擇,最后若用戶(hù)選擇“13”則保存記錄并退出循環(huán)。學(xué)生記錄輸入模塊用函數(shù)voidinput(Stu*r)來(lái)實(shí)現(xiàn),在主菜單選擇“1”進(jìn)入輸入模塊之后用戶(hù)需要輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,包括學(xué)號(hào)、姓名、各科成績(jī)等,輸入完成之后會(huì)返回主菜單。本函數(shù)根據(jù)設(shè)計(jì)的條件判斷循環(huán)來(lái)判斷是否有重復(fù)學(xué)號(hào)輸入。本函數(shù)還將算出學(xué)生的總分與平均分并按學(xué)號(hào)的默認(rèn)順序?qū)⑵渑c輸入的原始學(xué)生記錄保存的文件中去。整理為word格式整理為word格式整理為word格式學(xué)生記錄輸入模塊用函數(shù)voidoutput(Stu*r)來(lái)實(shí)現(xiàn),在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,調(diào)用本函數(shù)可以輸出學(xué)生資料。其中setw()控制域?qū)挘ㄌ?hào)里整型數(shù)據(jù)的數(shù)值代表域?qū)挼淖址麛?shù)。按學(xué)號(hào)查找學(xué)生記錄模塊用函數(shù)voidsearchnum(Stu*r)來(lái)實(shí)現(xiàn),首先提示用戶(hù)輸入要查找的學(xué)生學(xué)號(hào),再用for循環(huán)語(yǔ)句和if判斷語(yǔ)句進(jìn)行循環(huán)判斷來(lái)進(jìn)行查找,if(r[m].num==n)表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán),if(r[m].num!=n)表示未找到學(xué)生記錄并輸出提示“該學(xué)號(hào)不存在!”。按姓名查找學(xué)生記錄模塊用函數(shù)voidsearchname(Stu*r)來(lái)實(shí)現(xiàn),首先提示用戶(hù)輸入要查找的學(xué)生姓名,再用for循環(huán)語(yǔ)句和if判斷語(yǔ)句進(jìn)行循環(huán)判斷來(lái)進(jìn)行查找,if(r[m].name[0]==n[0])表示找到學(xué)生記錄,然后顯示學(xué)生記錄并跳出循環(huán),if(r[m].name[0]!=n[0])表示未找到學(xué)生記錄并輸出提示“該姓名不存在!”。按學(xué)號(hào)修改學(xué)生信息模塊用函數(shù)voidmodify(Stu*r)來(lái)實(shí)現(xiàn),首先提示用戶(hù)輸入要修改信息的學(xué)生序號(hào),再通過(guò)if條件語(yǔ)句進(jìn)行判斷輸入的學(xué)號(hào)是否存在,if(r[m].num!=n)表示輸入的學(xué)生學(xué)號(hào)不存在,輸出提示“該學(xué)號(hào)不存在”,再利用begin標(biāo)記和goto語(yǔ)句重新開(kāi)始循環(huán)并提示用戶(hù)重新輸入要修改的學(xué)生學(xué)號(hào)。if(r[m].num==n)若輸入的學(xué)生學(xué)號(hào)存在,則先輸出修改前的學(xué)生信息,此處有一個(gè)while循環(huán)語(yǔ)句和switch-case選擇語(yǔ)句,用來(lái)選擇修改學(xué)生的某一科成績(jī),并讓用戶(hù)選擇是否繼續(xù)進(jìn)行修改。最后將修改過(guò)后的記錄寫(xiě)入文件中,并輸出提示“文件已修改并寫(xiě)入”。插入學(xué)生信息模塊用函數(shù)Stu*insert(Stu*r)來(lái)實(shí)現(xiàn),主要功能是添加學(xué)生資料。在此模塊中定義了另一個(gè)指針數(shù)組:Stu*y=(Stu*)newStu(num+1);用來(lái)存放新添加的學(xué)生記錄。再利用for循環(huán)語(yǔ)句進(jìn)行輸入新學(xué)生記錄,最后輸出一個(gè)提示語(yǔ)句讓用戶(hù)判斷是否繼續(xù)輸入,若用戶(hù)輸入“Y”或“y”則繼續(xù)輸入,否則將返回主菜單。刪除學(xué)生記錄模塊用函數(shù)voiderase(Stu*r)來(lái)實(shí)現(xiàn),首先對(duì)文件進(jìn)行讀取,之后的if判斷語(yǔ)句根據(jù)用戶(hù)輸入的學(xué)號(hào)來(lái)顯示刪除前的信息記錄,然后用for循環(huán)語(yǔ)句循環(huán)把后一位的信息提前一位,整體數(shù)量建議,來(lái)進(jìn)行全局變量的修改,之后再把修改過(guò)后的信息記錄保存到文件中去。整理為word格式整理為word格式整理為word格式各科成績(jī)降序與學(xué)號(hào)(冒泡)排序模塊用函數(shù)voidsort_BA(Stu*r),voidsort_UE(Stu*r),voidsort_DS(Stu*r)三個(gè)函數(shù)來(lái)實(shí)現(xiàn),主要功能是利用用戶(hù)保存在文件的學(xué)生記錄按單科成績(jī)進(jìn)行降序排序。首先對(duì)文件進(jìn)行讀取,然后進(jìn)行冒泡排序。冒泡排序有兩個(gè)優(yōu)點(diǎn),一是代碼比較容易,二是具有穩(wěn)定性。這里的穩(wěn)定性是指原序列中相同兩元素的相對(duì)順序仍然保持到排序后的序列。冒泡排序時(shí)進(jìn)過(guò)n-1趟子排序完成的,第i趟子排序從第1個(gè)數(shù)至第n+1個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大則交換兩數(shù)。排序之后,將排序之后的結(jié)果寫(xiě)入文件,再讀取文件的時(shí)候,輸出的就是按單科成績(jī)排序后的結(jié)果??偡纸敌蚺判蚰K用函數(shù)voidsortsum(Stu*r)來(lái)實(shí)現(xiàn),主要功能是利用保存在文件的學(xué)生總分進(jìn)行排序。首先對(duì)文件進(jìn)行讀取,然后進(jìn)行選擇排序。其基本思想是:n個(gè)記錄的文件的直接選擇排序可經(jīng)過(guò)n-1趟直接選擇排序得到有序結(jié)果:①初始狀態(tài):無(wú)序區(qū)為R[1..n],有序區(qū)為空。②第1趟排序:在無(wú)序區(qū)R[1..n]中選出關(guān)鍵字最小的記錄R[k],將它與無(wú)序區(qū)的第1個(gè)記錄R[1]交換,使R[1..1]和R[2..n]分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)和記錄個(gè)數(shù)減少1個(gè)的新無(wú)序區(qū)?!鄣趇趟排序第i趟排序開(kāi)始時(shí),當(dāng)前有序區(qū)和無(wú)序區(qū)分別為R[1..i-1]和R(i..n)。該趟排序從當(dāng)前無(wú)序區(qū)中選出關(guān)鍵字最小的記錄R[k],將它與無(wú)序區(qū)的第1個(gè)記錄R交換,使R[1..i]和R分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)和記錄個(gè)數(shù)減少1個(gè)的新無(wú)序區(qū)。各科成績(jī)統(tǒng)計(jì)模塊用函數(shù)voidstat(Stu*r)來(lái)實(shí)現(xiàn),主要功能是計(jì)算各科總分和各科平均分。各科分?jǐn)?shù)段查找模塊用函數(shù)voidint_BA(Stu*r),voidint_UE(Stu*r),voidint_DS(Stu*r),voidintsum(Stu*r);四個(gè)函數(shù)實(shí)現(xiàn),首先提示用戶(hù)輸入要查找的單科成績(jī)或總分的上限與下限,然后通過(guò)for循環(huán)語(yǔ)句遍歷學(xué)生記錄找到符合條件的學(xué)生并輸入相應(yīng)學(xué)生記錄。整理為word格式整理為word格式整理為word格式第3章功能測(cè)試圖3-1在圖3-1在主菜單選擇1開(kāi)始輸入學(xué)生信息圖3-2輸入學(xué)生信息圖3-2輸入學(xué)生信息完成后的界面Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.0整理為word格式整理為word格式整理為word格式3TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0圖3-3圖3-3輸出文件內(nèi)的學(xué)生信息圖3-4圖3-4按學(xué)號(hào)查找學(xué)生信息整理為word格式整理為word格式整理為word格式圖3-5按學(xué)生姓名圖3-5按學(xué)生姓名查找圖3-6圖3-6按學(xué)號(hào)修改學(xué)生信息整理為word格式整理為word格式整理為word格式圖3-7修改圖3-7修改完成后的界面Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0圖3-8圖3-8插入學(xué)生信息整理為word格式整理為word格式整理為word格式Student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.06HM99.098.097.0294.098.0圖3-9圖3-9按學(xué)號(hào)刪除學(xué)生記錄student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0整理為word格式整理為word格式整理為word格式圖3-10排序菜單返回主菜單后選擇8進(jìn)入排序菜單,通過(guò)選擇1-圖3-10排序菜單圖3-11排序完成的提示圖3-11排序完成的提示整理為word格式整理為word格式整理為word格式圖3圖3-12按基礎(chǔ)會(huì)計(jì)學(xué)成績(jī)降序?qū)W(xué)生記錄進(jìn)行排序的排序結(jié)果Student.txt:3TT93.094.095.0282.094.05AJS92.093.094.0279.093.01JBJ91.092.093.0276.092.02RS87.088.089.0264.088.04DB84.085.086.0255.085.0整理為word格式整理為word格式整理為word格式圖3-13按總分降序排序返回菜單后選擇9按總分降序?qū)W(xué)生記錄進(jìn)行排序。圖3-13按總分降序排序圖3圖3-14按總分降序排序?qū)W(xué)生記錄排序的結(jié)果Student.txt3TT93.094.095.0282.094.05AJS92.093.094.0279.093.0整理為word格式整理為word格式整理為word格式1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.04DB84.085.086.0255.085.0圖3-15各科總分和平均分的統(tǒng)計(jì)返回主菜單后選擇圖3-15各科總分和平均分的統(tǒng)計(jì)圖3-16圖3-16分?jǐn)?shù)段查找菜單圖3-17數(shù)據(jù)圖3-17數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找結(jié)果整理為word格式整理為word格式整理為word格式圖3-18提示用戶(hù)圖3-18提示用戶(hù)對(duì)學(xué)生記錄已完成按學(xué)號(hào)排序圖3-19按圖3-19按學(xué)生學(xué)號(hào)對(duì)學(xué)生記錄進(jìn)行排序的排序結(jié)果整理為word格式整理為word格式整理為word格式student.txt:1JBJ91.092.093.0276.092.02RS87.088.089.0264.088.03TT93.094.095.0282.094.04DB84.085.086.0255.085.05AJS92.093.094.0279.093.0整理為word格式整理為word格式整理為word格式第4章調(diào)試與改進(jìn)程序編譯連接通過(guò)后在調(diào)試過(guò)程中以及本報(bào)告的編寫(xiě)過(guò)程中遇到了不少的問(wèn)題,經(jīng)過(guò)幾天的調(diào)試與修改大部分問(wèn)題已經(jīng)成功解決。遇到并以解決的部分問(wèn)題如下:在多處需要用戶(hù)輸入數(shù)字時(shí)沒(méi)有設(shè)置數(shù)字范圍或者沒(méi)有限定用戶(hù)只能輸入數(shù)字,導(dǎo)致用戶(hù)在輸入錯(cuò)誤時(shí)出現(xiàn)越界問(wèn)題或者程序崩潰。以用戶(hù)在主菜單輸入數(shù)字選擇操作時(shí)為例,解決方法為利用while循環(huán)語(yǔ)句進(jìn)行循環(huán)判斷,在用戶(hù)輸入越界的數(shù)字或者輸入非數(shù)字時(shí)輸出錯(cuò)誤語(yǔ)句并利用cin.clear();與cin.sync();語(yǔ)句清除錯(cuò)誤狀態(tài)與輸入流再提示用戶(hù)重新輸入。插入學(xué)生記錄時(shí)沒(méi)有進(jìn)行新插入的學(xué)生學(xué)號(hào)是否重復(fù)的檢查,利用for循環(huán)語(yǔ)句與if判斷語(yǔ)句進(jìn)行循環(huán)判斷,在用戶(hù)輸入重復(fù)的學(xué)生學(xué)號(hào)時(shí)輸出提示該學(xué)號(hào)已存在并利用cin.clear();與cin.sync();語(yǔ)句清除錯(cuò)誤狀態(tài)與輸入流再提示用戶(hù)重新輸入。修改學(xué)生記錄函數(shù)voidmodify(Stu*r)沒(méi)有判斷用戶(hù)輸入的學(xué)號(hào)是否存在,初次采用修改方式是增加一個(gè)if判斷語(yǔ)句if(r[m].serial!=n)并將此這個(gè)判斷過(guò)程放在了for(m=0;m<num;m++)的大循環(huán)內(nèi),思考后發(fā)現(xiàn)在m遍歷了一次num之后再進(jìn)行此判斷必定輸出錯(cuò)誤提示,并跳到定義的begin標(biāo)記處,陷入了死循環(huán)。思考過(guò)后定義一個(gè)新變量l,在每次滿(mǎn)足if(r[m].serial!=n)時(shí)自增1,在循環(huán)結(jié)束以后若l的值等于num則輸出錯(cuò)誤提示并提示用戶(hù)重新輸入。修改過(guò)后發(fā)現(xiàn)在執(zhí)行完了修改成績(jī)之后仍會(huì)輸出錯(cuò)誤提示。最后定義了end標(biāo)記,在用戶(hù)輸入了一個(gè)存在的整理為word格式整理為word格式整理為word格式學(xué)號(hào)之后執(zhí)行修改成績(jī)完畢后直接利用goto語(yǔ)句跳到end標(biāo)記處。整理為word格式整理為word格式整理為word格式第5章小結(jié)通過(guò)本次課程設(shè)計(jì),我鞏固了部分本學(xué)期以及上學(xué)期所學(xué)的理論知識(shí),有了一些新的理解與體會(huì)。對(duì)于一些平時(shí)似懂非懂的知識(shí),在這次課程設(shè)計(jì)中也解決了一些困惑,雖然還是不能夠全面的理解,但是已經(jīng)有了進(jìn)步。在課程設(shè)計(jì)中遇到不少困難,包括上一章提及的幾個(gè)問(wèn)題與已經(jīng)解決的一些小問(wèn)題,通過(guò)查閱資料、與同學(xué)討論,在應(yīng)用課本的前提下。拓展課外知識(shí),基本完成了本次課程設(shè)計(jì),雖然其中還有許多不足之處,但是從中我學(xué)到了許多東西,懂得了不能拘泥于課本上的知識(shí)形式,應(yīng)該對(duì)其靈活運(yùn)用。本次課程設(shè)計(jì)使我認(rèn)識(shí)到自己對(duì)知識(shí)的掌握不夠全面,而且感覺(jué)到我們?cè)趯W(xué)習(xí)專(zhuān)業(yè)知識(shí)的同時(shí)還需要加強(qiáng)對(duì)自己邏輯性思維的培養(yǎng)以及對(duì)其他方面知識(shí)的學(xué)習(xí),邏輯性思維對(duì)于能不能寫(xiě)出一個(gè)好的算法以及排除代碼錯(cuò)誤方面至關(guān)重要。在編程的過(guò)程中我又重新復(fù)習(xí)了本學(xué)期的數(shù)據(jù)結(jié)構(gòu)以及上學(xué)期的C++程序設(shè)計(jì)的課本,對(duì)一些以前學(xué)過(guò)的知識(shí)有了更深的理解,對(duì)一些以前沒(méi)學(xué)過(guò)的知識(shí)有了初步的認(rèn)識(shí),當(dāng)自己把程序一點(diǎn)點(diǎn)完善時(shí)讓我對(duì)學(xué)好數(shù)據(jù)結(jié)構(gòu)這門(mén)課程更有信心了,以前一直感覺(jué)枯燥難學(xué)的數(shù)據(jù)結(jié)構(gòu),在編程的過(guò)程中好像顯得不那么高深了。在以后的學(xué)習(xí)過(guò)程中,我一定會(huì)認(rèn)真負(fù)責(zé)地對(duì)待課本中的知識(shí)點(diǎn),進(jìn)一步充實(shí)、提高自己。爭(zhēng)取在不斷的練習(xí)中提高自己的層次。整理為word格式整理為word格式整理為word格式第6章源代碼#include<stdio.h>#include<iostream>#include<iomanip>#include<stdlib.h>#include<conio.h>usingnamespacestd;structStu{ intserial; charname[50]; floatBA_score;//基礎(chǔ)會(huì)計(jì)成績(jī) floatUE_score;//大學(xué)英語(yǔ)成績(jī) floatDS_score;//數(shù)據(jù)結(jié)構(gòu)成績(jī) floatsum;//總分 floataverage;};//平均分intnum=0;intch,choice;voidinput(Stu*r);//輸入voidoutput(Stu*r);//輸出voidmenu();//菜單界面voidsortmenu();//排序菜單voidintmenu();//分?jǐn)?shù)段查找菜單voidsearchnum(Stu*r);//按學(xué)號(hào)查找voidsearchname(Stu*r);//按姓名查找voidmodify(Stu*r);//修改學(xué)生信息voiderase(Stu*r);//按學(xué)號(hào)刪除信息voidsort_BA(Stu*r);//基礎(chǔ)會(huì)計(jì)成績(jī)排序voidsort_UE(Stu*r);//大學(xué)英語(yǔ)成績(jī)排序voidsort_DS(Stu*r);//數(shù)據(jù)結(jié)構(gòu)成績(jī)排序voidsortnum(Stu*r);//按學(xué)號(hào)排序voidsortsum(Stu*r);//按總分降序排序voidstat(Stu*r);//統(tǒng)計(jì)各科總分和平均分信息Stu*insert(Stu*r);//插入信息voidint_BA(Stu*r);//基礎(chǔ)會(huì)計(jì)分?jǐn)?shù)段查找voidint_UE(Stu*r);//大學(xué)英語(yǔ)分?jǐn)?shù)段查找整理為word格式整理為word格式整理為word格式voidint_DS(Stu*r);//數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)段查找voidintsum(Stu*r);//總分分?jǐn)?shù)段查找intmain(){ cout<<"輸入學(xué)生的人數(shù):"; cin>>num;while(!cin) {cout<<"輸入錯(cuò)誤!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入學(xué)生的人數(shù):"; cin>>num;} Stu*p=(Stu*)newStu[num]; intm; menu(); do{cin>>m;while(!cin||m<1||m>13) {cout<<"輸入錯(cuò)誤!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入:"; cin>>m;}begin: switch(m) {case1: input(p); menu(); break; case2: output(p); menu(); break; case3: searchnum(p); menu(); break; case4:整理為word格式整理為word格式整理為word格式 searchname(p); menu(); break; case5: modify(p); menu(); break; case6: p=insert(p); menu(); break; case7: erase(p); menu(); break; case8: sortmenu(); do{ cin>>ch; while(!cin||ch<1||ch>4) {cout<<"輸入錯(cuò)誤!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入:"; cin>>ch;} switch(ch) {case1: system("cls"); sortmenu(); sort_BA(p); output(p); sortmenu(); break; case2: system("cls"); sortmenu(); sort_UE(p); output(p);整理為word格式整理為word格式整理為word格式 sortmenu(); break; case3: system("cls"); sortmenu(); sort_DS(p); output(p); sortmenu(); break;}}while(ch!=4); system("cls"); menu(); break; case9: sortsum(p); output(p); menu(); break; case10: stat(p); menu(); break; case11: intmenu(); do{ cin>>choice; while(!cin||choice<1||choice>6) {cout<<"輸入錯(cuò)誤!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入:"; cin>>choice;} switch(choice) {case1: system("cls"); intmenu(); int_BA(p); intmenu(); break;整理為word格式整理為word格式整理為word格式 case2: system("cls"); intmenu(); int_UE(p); intmenu(); break; case3: system("cls"); intmenu(); int_DS(p); intmenu(); break; case4: system("cls"); intmenu(); intsum(p); intmenu(); break;}}while(choice!=5); system("cls"); menu(); break; case12: system("cls"); sortnum(p); output(p); menu(); break; case13: exit(0); default: while(m<0||m>12||!cin) {cout<<"輸入有誤!請(qǐng)重新輸入"<<endl; cin.clear(); cin.sync(); cin>>m; gotobegin;}}}while(1);}voidmenu()整理為word格式整理為word格式整理為word格式{ cout<<endl;cout<<endl;cout<<"*>菜單欄<*\n"<<endl;cout<<"*<1>輸入學(xué)生信息并保存到文件<2>讀取文件并輸出學(xué)生信息*"<<endl;cout<<"*<3>按學(xué)號(hào)查詢(xún)<4>按姓名查詢(xún)*"<<endl;cout<<"*<5>修改學(xué)生信息<6>插入學(xué)生信息*"<<endl;cout<<"*<7>按學(xué)號(hào)刪除信息<8>各科成績(jī)排序*"<<endl;cout<<"*<9>按總分降序排序<10>各科成績(jī)統(tǒng)計(jì)*"<<endl;cout<<"*<11>分?jǐn)?shù)段查找<12>按學(xué)號(hào)排序*"<<endl;cout<<"*<13>退出*"<<endl;cout<<"**\n"<<endl;cout<<"請(qǐng)選擇:"<<endl;}voidsortmenu(){ cout<<endl;cout<<endl;cout<<"*>排序菜單<*\n"<<endl;cout<<"*各科成績(jī)排序*"<<endl;cout<<"*<1>基礎(chǔ)會(huì)計(jì)<2>大學(xué)英語(yǔ)*"<<endl;cout<<"*<3>數(shù)據(jù)結(jié)構(gòu)<4>返回上級(jí)*"<<endl;cout<<"**\n"<<endl;cout<<"請(qǐng)選擇:"<<endl;}voidintmenu(){ cout<<endl;整理為word格式整理為word格式整理為word格式cout<<endl;cout<<"*>分?jǐn)?shù)段查找菜單<*\n"<<endl;cout<<"*各科及總分分?jǐn)?shù)段查找*"<<endl;cout<<"*<1>基礎(chǔ)會(huì)計(jì)<2>大學(xué)英語(yǔ)*"<<endl;cout<<"*<3>數(shù)據(jù)結(jié)構(gòu)<4>總分查找*"<<endl; cout<<"*<5>返回上級(jí)*"<<endl;cout<<"**\n"<<endl;cout<<"請(qǐng)選擇:"<<endl;}voidinput(Stu*r){ FILE*fp; intn=0; inti; intt=0; cout<<endl<<">請(qǐng)輸入學(xué)生信息<"<<endl; for(i=0;i<num;i++) { cout<<"請(qǐng)輸入第"<<i+1<<"個(gè)人的學(xué)號(hào):"; cin>>r[i].serial; while(!cin||r[i].serial<0) {cout<<"輸入錯(cuò)誤或序號(hào)不合理!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入第"<<i+1<<"個(gè)人的學(xué)號(hào):"; cin>>r[i].serial;} if(i>=1) {for(n=0;n<i;n++) { if(r[n].serial==r[i].serial) { cout<<"該學(xué)號(hào)已存在!"<<endl; t=1;}}} if(t==1) { i--; t=0;整理為word格式整理為word格式整理為word格式 continue;} cout<<"請(qǐng)輸入姓名:"; cin>>r[i].name; cout<<"請(qǐng)輸入基礎(chǔ)會(huì)計(jì)成績(jī):"; cin>>r[i].BA_score; while(!cin||r[i].BA_score>100||r[i].BA_score<0) {cout<<"輸入錯(cuò)誤或成績(jī)不合理!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入基礎(chǔ)會(huì)計(jì)成績(jī):"; cin>>r[i].BA_score;} cout<<"請(qǐng)輸入大學(xué)英語(yǔ)成績(jī):"; cin>>r[i].UE_score; while(!cin||r[i].UE_score>100||r[i].UE_score<0) {cout<<"輸入錯(cuò)誤或成績(jī)不合理!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入大學(xué)英語(yǔ)成績(jī):"; cin>>r[i].UE_score;} cout<<"請(qǐng)輸入數(shù)據(jù)結(jié)構(gòu)成績(jī):"; cin>>r[i].DS_score; while(!cin||r[i].DS_score>100||r[i].DS_score<0) {cout<<"輸入錯(cuò)誤或成績(jī)不合理!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入數(shù)據(jù)結(jié)構(gòu)成績(jī):"; cin>>r[i].DS_score;} r[i].sum=r[i].BA_score+r[i].UE_score+r[i].DS_score; r[i].average=(r[i].BA_score+r[i].UE_score+r[i].DS_score)/3;}fp=fopen("student.txt","w+");if(!fp){cout<<"文件不能打開(kāi)"<<endl; exit(0);}for(n=0;n<i;n++){ fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);整理為word格式整理為word格式整理為word格式fprintf(fp,"\n");}fclose(fp);cout<<"文件已經(jīng)寫(xiě)入!"<<endl;cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidoutput(Stu*r){ intm; system("cls"); if(num>0) { FILE*fp; if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開(kāi)"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} fclose(fp); cout<<"文件已經(jīng)讀入"<<endl; cout<<">學(xué)生信息如下<"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會(huì)計(jì)"<<setw(10)<<"大學(xué)英語(yǔ)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<""<<endl;for(m=0;m<num;m++){ cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;}cout<<"\0\0"<<endl;}elsecout<<"未輸入任何信息!"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"按任意鍵以返回"<<endl; getch(); system("cls");}voidsearchnum(Stu*r){ intn; system("cls"); if(num>0) { FILE*fp; if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開(kāi)"<<endl; exit(0);} cout<<"請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):"; cin>>n; intm; for(m=0;m<num;m++) { if(r[m].serial==n) { cout<<endl; cout<<">要查找的信息如下<"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會(huì)計(jì)"<<setw(10)<<"大學(xué)英語(yǔ)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;break;}} if(r[m].serial!=n) cout<<"該學(xué)號(hào)不存在!"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidsearchname(Stu*r){ charn[50]; system("cls");整理為word格式整理為word格式整理為word格式 if(num>0) { intm; FILE*fp; if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開(kāi)"<<endl; exit(0);} cout<<"請(qǐng)輸入要查找學(xué)生的姓名:"; cin>>n; for(m=0;m<num;m++) { if(r[m].name[0]==n[0]) {cout<<endl; cout<<">要查找的信息如下<"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會(huì)計(jì)"<<setw(10)<<"大學(xué)英語(yǔ)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;break;}} if(r[m].name[0]!=n[0]) cout<<"該姓名不存在!"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidmodify(Stu*r){ FILE*fp; intm=0,n=0; charchoice='Y'; begin: if(num>0) { intn; system("cls"); cout<<"輸入要修改成績(jī)的學(xué)生學(xué)號(hào):";整理為word格式整理為word格式整理為word格式 cin>>n; for(m=0;m<num;m++) { if(n==r[m].serial) { intj; cout<<endl; cout<<">修改前的信息如下<"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會(huì)計(jì)"<<setw(10)<<"大學(xué)英語(yǔ)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(10)<<"平均分"<<endl;cout<<r[m].serial<<setw(8)<<r[m].name<<setw(10)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(7)<<r[m].sum<<setw(9)<<r[m].average<<endl;cout<<endl;while(choice=='Y'||choice=='y'){ cout<<"\t\t\t>可以修改的項(xiàng)目如下<\n"<<endl; cout<<"\t\t\t1.修改學(xué)生的基礎(chǔ)會(huì)計(jì)成績(jī)記錄\n"<<endl; cout<<"\t\t\t2.修改學(xué)生的大學(xué)英語(yǔ)成績(jī)記錄\n"<<endl; cout<<"\t\t\t3.修改學(xué)生的數(shù)據(jù)結(jié)構(gòu)成績(jī)記錄\n"<<endl; cout<<"請(qǐng)選擇:"; cin>>j; while(!cin||j<1||j>3) {cout<<"輸入錯(cuò)誤!";cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入:"; cin>>j;} switch(j) {case1: cout<<"輸入新的基礎(chǔ)會(huì)計(jì)成績(jī):"; cin>>r[m].BA_score; break;整理為word格式整理為word格式整理為word格式 case2: cout<<"輸入新的大學(xué)英語(yǔ)成績(jī):"; cin>>r[m].UE_score; break; case3: cout<<"輸入新的數(shù)據(jù)結(jié)構(gòu)成績(jī):"; cin>>r[m].DS_score; break;} cout<<"是否要繼續(xù)修改此學(xué)生的其他成績(jī)記錄?(Y/N)"; fflush(stdin); cin>>choice;}r[m].sum=r[m].BA_score+r[m].UE_score+r[m].DS_score; r[m].average=(r[m].BA_score+r[m].UE_score+r[m].DS_score)/3; gotoend;}} if(r[m].serial!=n) { cout<<"該學(xué)號(hào)不存在!"<<endl; cin.clear(); cin.sync(); cout<<"按任意鍵開(kāi)始重新輸入"; getch(); gotobegin;}} else cout<<"未輸入任何信息!"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開(kāi)"<<endl; exit(0);} end: for(n=0;n<num;n++) {fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");}fclose(fp);cout<<"文件已修改并寫(xiě)入!"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}Stu*insert(Stu*r){ FILE*fp; intm; charn; do{ if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開(kāi)"<<endl; exit(0);} for(into=0;o<num;o++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[o].serial,&r[o].name,&r[o].BA_score,&r[o].UE_score,&r[o].DS_score,&r[o].sum,&r[o].average);} Stu*y=(Stu*)newStu[num+1]; for(m=0;m<num;m++) { y[m]=r[m];} r=y; cout<<"請(qǐng)輸入學(xué)號(hào):"; cin>>r[num].serial; for(intk=0;k<num;k++) {if(r[k].serial==r[m].serial) {cout<<"該學(xué)號(hào)已存在!"<<endl; cin.clear(); cin.sync(); cout<<"請(qǐng)重新輸入:"<<endl; cin>>r[num].serial;}} cout<<"請(qǐng)輸入姓名:"; cin>>r[num].name; cout<<"請(qǐng)輸入基礎(chǔ)會(huì)計(jì)成績(jī):"; cin>>r[num].BA_score; cout<<"請(qǐng)輸入大學(xué)英語(yǔ)成績(jī):"; cin>>r[num].UE_score; cout<<"請(qǐng)輸入數(shù)據(jù)結(jié)構(gòu)成績(jī):"; cin>>r[num].DS_score; r[num].sum=r[num].BA_score+r[num].UE_score+r[num].DS_score;整理為word格式整理為word格式整理為word格式 r[num].average=(r[num].BA_score+r[num].UE_score+r[num].DS_score)/3; num++; cout<<"是否繼續(xù)輸入?(Y/N)"<<endl; fflush(stdin); cin>>n;}while(n=='Y'||n=='y'); if((fp=fopen("student.txt","w+"))==NULL) { cout<<"文件不能打開(kāi)"<<endl; exit(0);} for(n=0;n<num;n++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫(xiě)入"<<endl; cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls"); returnr;}voiderase(Stu*r){ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) {cout<<"文件不能打開(kāi)"<<endl; exit(0);} for(into=0;o<num;o++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[o].serial,&r[o].name,&r[o].BA_score,&r[o].UE_score,&r[o].DS_score,&r[o].sum,&r[o].average);} intn,t=0; cout<<"請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):"; cin>>n; for(intm=0;m<num;m++)整理為word格式整理為word格式整理為word格式 if(r[m].serial==n) { charj; cout<<endl; cout<<">要?jiǎng)h除學(xué)生的信息如下<"<<endl;cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"基礎(chǔ)會(huì)計(jì)"<<setw(10)<<"大學(xué)英語(yǔ)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<r[m].serial<<setw(6)<<r[m].name<<setw(7)<<r[m].BA_score<<setw(10)<<r[m].UE_score<<setw(10)<<r[m].DS_score<<setw(8)<<r[m].sum<<setw(6)<<r[m].average<<endl;cout<<endl;cout<<"確定刪除?(Y/N)"<<endl;cin>>j; if(j=='Y'||j=='y') { for(intl=m;l<num;l++) { r[l]=r[l+1];} num--; t=1;} else { cout<<"學(xué)生記錄未刪除!"<<endl; gotoend;}} if((fp=fopen("student.txt","w+"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(n=0;n<num;n++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[n].serial,r[n].name,r[n].BA_score,r[n].UE_score,r[n].DS_score,r[n].sum,r[n].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫(xiě)入"<<endl; if(t==0) cout<<"該學(xué)號(hào)不存在!"<<endl;} else整理為word格式整理為word格式整理為word格式 cout<<"未輸入任何信息!"<<endl; end: cout<<"按任意鍵以返回主菜單"<<endl; getch(); system("cls");}voidsort_BA(Stu*r){ FILE*fp; if(num>0) {if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) {Stumax; if(r[m].BA_score<r[m+1].BA_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) {cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫(xiě)入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl;整理為word格式整理為word格式整理為word格式 getch(); system("cls");}voidsort_UE(Stu*r){ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) { Stumax; if(r[m].UE_score<r[m+1].UE_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l].BA_score,r[l].UE_score,r[l].DS_score,r[l].sum,r[l].average);fprintf(fp,"\n");} fclose(fp); cout<<"文件已經(jīng)寫(xiě)入"<<endl;} else cout<<"未輸入任何信息!"<<endl; cout<<"按任意鍵以顯示排序結(jié)果"<<endl; getch(); system("cls");}voidsort_DS(Stu*r)整理為word格式整理為word格式整理為word格式{ FILE*fp; if(num>0) { if((fp=fopen("student.txt","r"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intn=0;n<num;n++) { fscanf(fp,"%d%s%f%f%f%f%f",&r[n].serial,&r[n].name,&r[n].BA_score,&r[n].UE_score,&r[n].DS_score,&r[n].sum,&r[n].average);} for(intk=0;k<num-1;k++) { for(intm=0;m<num-k;m++) { Stumax; if(r[m].DS_score<r[m+1].DS_score) { max=r[m+1]; r[m+1]=r[m]; r[m]=max;}}} cout<<"排序完畢"<<endl; if((fp=fopen("student.txt","w"))==NULL) { cout<<"文件不能打開(kāi)!"<<endl; exit(0);} for(intl=0;l<num;l++) { fprintf(fp,"%d%s%.1f%.1f%.1f%.1f%.1f",r[l].serial,r[l].name,r[l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論