版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 引言------------------------------------------------------------1</p><p> 一、系統(tǒng)概述------------------------------------------------2</p><p> 二
2、、需求分析------------------------------------------------2</p><p> 1、系統(tǒng)需求-------------------------------------------2</p><p> 2、開(kāi)發(fā)環(huán)境-------------------------------------------4</p><p>
3、; 三、詳細(xì)設(shè)計(jì)------------------------------------------------6</p><p> 四、所遇到的問(wèn)題和分析解決--------------------------15</p><p> 五、系統(tǒng)特色及關(guān)鍵技術(shù)--------------------------------16</p><p> 六、結(jié)論及心得
4、體會(huì)--------------------------------------16</p><p> 七、附錄(源代碼)--------------------------------------17</p><p> 參考文獻(xiàn)-----------------------------------------------------35</p><p><
5、;b> 引言</b></p><p> 通過(guò)本課程設(shè)計(jì),使自己更加系統(tǒng)地理解和掌握數(shù)據(jù)結(jié)構(gòu)的基本概念;能自如地根據(jù)實(shí)際要求,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并運(yùn)用C或C++語(yǔ)言實(shí)現(xiàn)所設(shè)計(jì)的算法,編寫(xiě)較大型的程序,分析和解決實(shí)際應(yīng)用問(wèn)題,進(jìn)一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問(wèn)題和解決問(wèn)題的能力。掌握C語(yǔ)言或C++語(yǔ)言獨(dú)立的編寫(xiě)、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技
6、能。</p><p> 此項(xiàng)目主要是考察我們對(duì)結(jié)構(gòu)體、數(shù)組、文件等具體操作,以及對(duì)C語(yǔ)言語(yǔ)法的掌握,所以做成此項(xiàng)目要求比較高的設(shè)計(jì)要求,對(duì)整體有很熟悉的概括,同時(shí)調(diào)試過(guò)程也是很重要的,對(duì)程序界面的要求也比較高,要設(shè)計(jì)的合理同時(shí)也要美觀一點(diǎn),能夠人性化的描述清楚你的各個(gè)功能,一目了然,對(duì)其他用戶使用本程序簡(jiǎn)單易懂,這才能成本程序或本系統(tǒng)是成功的。</p><p> 對(duì)于學(xué)生成績(jī)管理系統(tǒng),
7、此項(xiàng)目每年都有學(xué)生去做,但是能夠在其他項(xiàng)目中脫穎而出,還要有自己的設(shè)計(jì)特色,用簡(jiǎn)單的語(yǔ)言詳細(xì)描述系統(tǒng)的功能,這才是關(guān)鍵。</p><p> 這個(gè)設(shè)計(jì)能夠練習(xí)我們的理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法,掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,學(xué)會(huì)調(diào)試一個(gè)比較長(zhǎng)的程序的基本方法,同時(shí)掌握書(shū)寫(xiě)程序設(shè)計(jì)開(kāi)發(fā)文檔的能力。</p><p><b> 1</b></p>
8、<p><b> 系統(tǒng)概述</b></p><p> 1、課程設(shè)計(jì)應(yīng)完成的工作</p><p><b> (1)編寫(xiě)算法</b></p><p> ?。?)算法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分析</p><p> (3)撰寫(xiě)課程報(bào)告,內(nèi)容包括:</p><p
9、><b> ?、俜饷?lt;/b></p><p><b> ②目錄</b></p><p><b> ?、壅n程設(shè)計(jì)報(bào)告正文</b></p><p><b> ④使用說(shuō)明</b></p><p><b> ?、輩⒖嘉墨I(xiàn)</b>&l
10、t;/p><p> 2、總體設(shè)計(jì)工作(包含幾大功能模塊)</p><p> ?。?)輸入學(xué)生信息并保存到文件 </p><p> ?。?)讀取文件并輸出學(xué)生信息</p><p> ?。?)按學(xué)號(hào)及學(xué)期查詢</p><p> ?。?)按姓名及學(xué)期查詢</p><p> ?。?)按學(xué)號(hào)及學(xué)期修改信息&
11、lt;/p><p><b> ?。?)插入信息</b></p><p> (7)按學(xué)號(hào)及學(xué)期刪除信息</p><p> ?。?)按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序</p><p> ?。?)按總分降序(選擇)排序</p><p> ?。?0)統(tǒng)計(jì)各科成績(jī)的總分和平均分</p><p>
12、;<b> ?。?1)退出</b></p><p><b> 需求分析</b></p><p><b> 1、系統(tǒng)需求</b></p><p><b> 問(wèn)題描述:</b></p><p> 該系統(tǒng)實(shí)現(xiàn)對(duì)若干個(gè)大學(xué)生的學(xué)習(xí)成績(jī)進(jìn)行管理。至少包括以下
13、信息:</p><p> 學(xué)號(hào)、姓名、科目、成績(jī),學(xué)期。學(xué)期取值范圍可為1-8。</p><p><b> 2</b></p><p><b> ?。?)功能要求:</b></p><p> 1.使用中文菜單,界面設(shè)計(jì)和用戶輸入輸出要人性化些;</p><p> 2.
14、 將學(xué)生信息保存在文本文檔中,具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來(lái),保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中。</p><p> 3.具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;</p><p> 4.具有數(shù)據(jù)刪除功能,能最終從文件中刪除;</p>&l
15、t;p> 5.排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法</p><p> 6.具有多種查詢(如按學(xué)號(hào)查詢、按姓名查詢、按成績(jī)查詢等)及輸出功能;</p><p> 7.其它功能(如各種統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)學(xué)生所有課程的平均分,統(tǒng)計(jì)某門(mén)課程所有學(xué)生的平均分等等)</p><p> 8.學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門(mén)課程的成績(jī))</p
16、><p><b> ?。?)說(shuō)明:</b></p><p> ?、俟δ芨鞣矫嬖酵晟圃胶?lt;/p><p> ?、谧远x的數(shù)據(jù)結(jié)構(gòu)可以使用數(shù)組,鏈表,樹(shù)等,然后根據(jù)不 同的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)不同的排序,查找算法。其中,排序算法至少有兩種,可以使用多種數(shù)據(jù)結(jié)構(gòu)來(lái)存放數(shù)據(jù),然后在其上使用不同的排序算法。</p><p> ?、廴粲?/p>
17、數(shù)組,必須動(dòng)態(tài)分配空間(文本文件中最好有一行表示學(xué)生人數(shù))</p><p> ?。?)、輸入輸出的形式</p><p> 本系統(tǒng)是一個(gè)學(xué)生成績(jī)管理系統(tǒng),采用VC++6.0 編譯器作為開(kāi) 發(fā)環(huán)境,這個(gè)環(huán)境是我們?cè)趯W(xué)習(xí)C++的平臺(tái)。輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入內(nèi)容包括:學(xué)期、學(xué)號(hào)、姓名、高等數(shù)學(xué)成績(jī),數(shù)據(jù)機(jī)構(gòu)成績(jī),組成原理成績(jī),總分,平均分等數(shù)據(jù)。用戶在輸入
18、學(xué)生數(shù)據(jù)時(shí)要保證輸入數(shù)據(jù)格式的正確性,系統(tǒng)不會(huì)自動(dòng)檢測(cè)輸入的數(shù)據(jù)是否正確,輸出形式與輸入形式類似,根據(jù)需要可以選擇顯示輸入的各項(xiàng)內(nèi)容,還可以選擇顯示計(jì)算好平均分后并排序后的記錄,顯示內(nèi)容包括:學(xué)期、學(xué)號(hào)、姓名、高等數(shù)學(xué)成績(jī),數(shù)據(jù)機(jī)構(gòu)成績(jī),組成原理成績(jī),總分,平均分等數(shù)據(jù)。</p><p><b> 3</b></p><p><b> 開(kāi)發(fā)環(huán)境</
19、b></p><p> Visual C++不僅僅是是一個(gè)C++編譯器,而是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境IDE,這種環(huán)境開(kāi)發(fā)出來(lái)的軟件穩(wěn)定性好、可移植性強(qiáng),可以編制各種各樣的Windows應(yīng)用程序。</p><p><b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 1、系統(tǒng)流程圖</b&
20、gt;</p><p><b> 2、界面設(shè)計(jì)</b></p><p> 主界面:在此界面用戶可以選擇要操作的選項(xiàng),回車之后即可進(jìn)入相關(guān)的頁(yè)面進(jìn)行操作(例如:選擇1 ,即可進(jìn)入輸入學(xué)生數(shù)據(jù)頁(yè)面)</p><p> 在本界面里用戶可以輸入學(xué)生相關(guān)的信息數(shù)據(jù),按照提示進(jìn)行操作即可,例如:</p><p> 所有操作均
21、有提示語(yǔ),比較人性化的管理,易懂,簡(jiǎn)單。</p><p><b> 3、大概設(shè)計(jì)模塊</b></p><p> ?。?)先編入系統(tǒng)所需的庫(kù)函數(shù),從而使程序可運(yùn)行。</p><p> #include<iostream.h></p><p> #include<stdlib.h></p&
22、gt;<p> #include<iomanip.h>//主要是對(duì)cin,cout之類的一些操縱運(yùn)算,是I/O流控制頭文件。 </p><p> #include <conio.h> //文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出</p><p> #include<stdio.h> </p><p> Main()函數(shù)的設(shè)
23、計(jì)</p><p> 在main()函數(shù)中主要運(yùn)用do-while循環(huán)語(yǔ)句和switch()-case選擇判斷語(yǔ)句來(lái)調(diào)用相關(guān)</p><p> 功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出永真循環(huán),并退出程序。</p><p><b> 主界面的設(shè)計(jì)</b></p><p>
24、; 在主界面中包括“①輸入學(xué)生信息并保存到文件 ②讀取文件并輸出學(xué)生信息 ③按學(xué)號(hào)及學(xué)期查詢 ④按姓名及學(xué)期查詢 ⑤按學(xué)號(hào)及學(xué)期修改信息 ⑥插入信息 ⑦按學(xué)號(hào)及學(xué)期刪除信息 ⑧按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 ⑨按總分降序(選擇)排序 ⑩統(tǒng)計(jì)各科成績(jī)的總分和平均分 11退出”等全部的功能,之所以設(shè)計(jì)這麼一個(gè)主界面,一是因?yàn)槟苁褂脩魧?duì)程序操作的流程更加清晰簡(jiǎn)明,二是保證了用戶同時(shí)只能對(duì)一個(gè)文件進(jìn)行操作系統(tǒng)的要求,保證了系統(tǒng)不會(huì)打開(kāi)文件紊亂或者
25、出現(xiàn)致命的錯(cuò)誤。每個(gè)函數(shù)體如下:</p><p> Void main(); //主函數(shù)</p><p> void input(Student *r); //輸入學(xué)生信息及數(shù)據(jù)</p><p> void output(Student *r); //輸出學(xué)生信息及數(shù)據(jù)</p><p>
26、 void searchnum(Student *r); //按學(xué)號(hào)及學(xué)期查找學(xué)生信息</p><p> void searchname(Student *r); //按姓名及學(xué)期查找學(xué)生信息</p><p> void change(Student *r); //按學(xué)號(hào)及學(xué)期修改學(xué)生信息</p><p> Student *insert(S
27、tudent *r); //插入學(xué)生信息</p><p> void shanchu(Student *r); //按學(xué)號(hào)及學(xué)期刪除循聲信息</p><p> void maopao(Student *r); //按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序</p><p> void xuanze(Student *r); //按總分降序(選
28、擇)排序</p><p> void tongji(Student *r); //統(tǒng)計(jì)各科總分和平均分信息</p><p><b> 4、詳細(xì)設(shè)計(jì)思想</b></p><p><b> (1)確定語(yǔ)言算法</b></p><p> 由于之前都沒(méi)有做過(guò)類似的設(shè)計(jì),所以一時(shí)間不能夠確
29、定到底使用何種語(yǔ)言來(lái)設(shè)計(jì)本系統(tǒng),所以在網(wǎng)上看了一些其他人設(shè)計(jì)的程序,鏈表的、數(shù)組的,C++的,各種各樣的,也不知如何選擇,但是仔細(xì)地看了其中的設(shè)計(jì)思想,最終還是用C++和指針數(shù)組的來(lái)做,一是覺(jué)得本人對(duì)鏈表掌握的不是很熟練,那么在設(shè)計(jì)過(guò)程中容易產(chǎn)生不能理解的錯(cuò)誤,耽誤時(shí)間,二是想運(yùn)用C++,可以鞏固一下所學(xué)的數(shù)據(jù)結(jié)構(gòu)的知識(shí),之前做實(shí)驗(yàn)的時(shí)候一直用C來(lái)做,都沒(méi)怎么用所學(xué)的知識(shí),這時(shí)候想練練。就這樣確定了整體的結(jié)構(gòu)算法。</p>
30、<p> 確定程序主要功能模塊</p><p> 這個(gè)就比較簡(jiǎn)單了,主要是根據(jù)系統(tǒng)設(shè)計(jì)的說(shuō)明及要求來(lái)設(shè)計(jì),從而設(shè)計(jì)了十大功能模塊,有文件操作,有系統(tǒng)維護(hù)功能,排序和統(tǒng)計(jì)功能,有輸入輸出等基本功能,比較人性化,添加了較多的提示語(yǔ)。這個(gè)程序的主要功能時(shí)輸入學(xué)生的學(xué)號(hào),姓名,學(xué)期和三科成績(jī)來(lái)對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績(jī)按學(xué)號(hào)及學(xué)期或姓名及學(xué)期來(lái)進(jìn)行查詢,同時(shí)輸出此同學(xué)的平均分及總分,之后可以對(duì)
31、某個(gè)同學(xué)的成績(jī)進(jìn)行各種操作,例如修改,刪除等,同時(shí)還可以對(duì)學(xué)生們的成績(jī)按照總分或單科成績(jī)排序,在整個(gè)過(guò)程中所做的操作都會(huì)保存到"student.txt"文件中并顯示。</p><p><b> 系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì)</b></p><p> struct Student //結(jié)構(gòu)體</p><p><b> {&
32、lt;/b></p><p> int term;//學(xué)期</p><p> int num;//學(xué)號(hào)</p><p> char name[12];//姓名</p><p> float mark1;//成績(jī)</p><p> float mark2;</p><p> fl
33、oat mark3;</p><p> float sum;//總分</p><p> float average;//平均分</p><p><b> };</b></p><p> Student結(jié)構(gòu)體說(shuō)明表</p><p><b> 各功能模塊的設(shè)計(jì)</b>&
34、lt;/p><p> ******主函數(shù)模塊</p><p> 用函數(shù)void main()來(lái)實(shí)現(xiàn)</p><p> 主要是來(lái)顯示主菜單,使用戶選擇操作。首先定義一個(gè)指針數(shù)組(全局使用)Student *p=(Student *)new Student[num];在此處num是指學(xué)生個(gè)數(shù),并不是學(xué)號(hào),之前有定義的(不要弄混了),在這里應(yīng)用了do-while和swi
35、tch-case語(yǔ)句來(lái)進(jìn)行選擇,是個(gè)比較簡(jiǎn)單實(shí)現(xiàn)的模塊。最后若選擇“11”則是保存記錄并退出永真循環(huán)。</p><p> ******輸入學(xué)生記錄模塊</p><p> 用函數(shù)void input(Student *r); 來(lái)實(shí)現(xiàn)</p><p> 主要功能用來(lái)對(duì)學(xué)生的成績(jī)進(jìn)行收集和輸入。首先會(huì)有個(gè)提示“輸入最初要求的學(xué)生數(shù)”,之后跳出主菜單,選擇"
36、1",進(jìn)入輸入模塊輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)期,學(xué)號(hào),姓名,成績(jī)等。輸完之后會(huì)自動(dòng)跳出主菜單,根據(jù)主菜單來(lái)在此基礎(chǔ)上進(jìn)行操作。期間會(huì)有一些提示語(yǔ),按此操作即可。根據(jù)if和for語(yǔ)句來(lái)判定期間是否有重復(fù)學(xué)號(hào)輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。在此模塊中,用到了文件操作的指針FILE *fp;同時(shí)也用到了一個(gè)控制變量t,它是用來(lái)判定的條件變量,t=1表示找到了與之重復(fù)的學(xué)號(hào),t=0表示未出現(xiàn)重復(fù)學(xué)號(hào)。在此期間會(huì)根據(jù)語(yǔ)
37、句算出總分和平均分,并默認(rèn)按學(xué)號(hào)排序保存到文件中去。之后返回主菜單。</p><p><b> 寫(xiě)文件操作代碼:</b></p><p> if((fp=fopen("student.txt","w"))==NULL) {</p><p> cout<<"文件不能打開(kāi)"
38、;<<endl;</p><p><b> exit(0); </b></p><p><b> }</b></p><p> for(n=0;n<i;n++){</p><p> fprintf(fp,"%d %s %.1f %.1f %.1f
39、 %d %.1f %.1f",r[n].num,r[n].name,r[n].mark1,r[n].mark2,r[n].mark3,r[n].term,r[n].sum,r[n].average);</p><p> fprintf(fp,"\n");</p><p><b> }</b></p><p
40、> fclose(fp);</p><p> cout<<"文件已經(jīng)寫(xiě)入"<<endl;</p><p> ******顯示學(xué)生記錄模塊</p><p> 用函數(shù)void output(Student *r);來(lái)實(shí)現(xiàn)</p><p> 主要功能是用來(lái)顯示學(xué)生的信息進(jìn)行輸出。在系統(tǒng)已經(jīng)
41、錄入了學(xué)生資料的前提下,只用該功能可以顯示學(xué)生的信息資料等等。同時(shí)也會(huì)自動(dòng)跳出主菜單進(jìn)行后續(xù)操作。主要的程序代碼就是從文件的讀操作和界面顯示操作。其中stew()指的是兩字節(jié)之間的間隔,在括號(hào)中填入該有的數(shù)字就會(huì)有相應(yīng)的間隔,從而使輸出有一定的美感。</p><p><b> 讀文件操作代碼:</b></p><p> if((fp=fopen("stu
42、dent.txt","r"))==NULL) {</p><p> cout<<"文件不能打開(kāi)"<<endl;</p><p><b> exit(0); </b></p><p><b> }</b></p><p>
43、 for(int n=0;n<num;n++){</p><p> fscanf(fp,"%d%s%f%f%f%d%f%f",&r[n].num,r[n].name,&r[n].mark1,&r[n].mark2,&r[n].mark3,&r[n].term,&r[n].sum,&r[n].average);</p>
44、<p><b> }</b></p><p> fclose(fp);</p><p> cout<<"文件已經(jīng)讀入"<<endl;</p><p> ******插入學(xué)生資料模塊</p><p> 用函數(shù)Student *insert(Student
45、*r);來(lái)實(shí)現(xiàn)</p><p> 主要功能是用來(lái)添加學(xué)生資料,成績(jī)。若顯示時(shí)沒(méi)有此學(xué)生的信息,就可以使用本模塊來(lái)進(jìn)行添加。在此模塊代碼中定義了另一個(gè)指針數(shù)組:Student *y=(Student *)new Student[num+1];用來(lái)存放新添加的學(xué)生記錄。再利用for循環(huán)進(jìn)行輸入新學(xué)生記錄,for(m=0;m<num;m++) {y[m]=r[m];}先將指針數(shù)組r中的內(nèi)容賦給y,之后添加語(yǔ)句r
46、=y;將y的地址送給r,這樣可以保證新輸入的記錄可以在全程序中使用,使其變成全局變量,這樣也可以將新輸入的記錄保存到文件中去,最后會(huì)有一個(gè)提示語(yǔ)句cout<<"是否繼續(xù)輸入?(繼續(xù),輸入y,否則輸入其他)"<<endl;若輸入y則繼續(xù)輸入,否則將返回主菜單,本模塊功能到此結(jié)束。</p><p> ******按學(xué)號(hào)及學(xué)期來(lái)查找學(xué)生記錄模塊</p><
47、;p> 用函數(shù)void searchnum(Student *r);來(lái)實(shí)現(xiàn)</p><p> 主要功能時(shí)用來(lái)查找學(xué)生記錄。首先會(huì)有提示輸入學(xué)號(hào)及學(xué)期,再用for循環(huán)語(yǔ)句和if判斷語(yǔ)句來(lái)進(jìn)行查找,if(r[m].num[0]==n[0]&&r[m].term==k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(r[m].num[0]!=n[0]&&r[m].term!=k) 若沒(méi)有
48、則提示</p><p> "該學(xué)號(hào)不存在,或沒(méi)有這個(gè)學(xué)期的成績(jī)!"。</p><p> ******按姓名及學(xué)期來(lái)查找學(xué)生記錄模塊</p><p> 用函數(shù)void searchname(Student *r) 來(lái)實(shí)現(xiàn)</p><p> 主要功能也是用來(lái)查找學(xué)生記錄的。首先會(huì)有提示輸入姓名及學(xué)期,再用for循環(huán)語(yǔ)句
49、和if判斷語(yǔ)句來(lái)進(jìn)行查找,if(r[m].name[0]==n[0]&&r[m].term==k)若找到則顯示學(xué)生記錄并跳出循環(huán);if(r[m].name[0]!=n[0]&&r[m].term!=k) 若沒(méi)有則提示</p><p> "該姓名不存在,或沒(méi)有這個(gè)學(xué)期的成績(jī)!"。</p><p> ******-查找輸出語(yǔ)句實(shí)現(xiàn)的代碼如
50、下:</p><p> cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"組成原理"<<setw
51、(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;</p><p> cout<<r[m].num<<setw(6)<<r[m].name<<setw(7)<<r[m].mark
52、1<<setw(10)<<r[m].mark2<<setw(10)<<r[m].mark3<<setw(8)<<r[m].term<<setw(6)<<r[m].sum<<setw(8)<<r[m].average<<endl;</p><p> ******修改學(xué)生記錄模塊<
53、;/p><p> 用函數(shù)void change(Student *r)來(lái)實(shí)現(xiàn)</p><p> 主要功能是用來(lái)修改學(xué)生記錄。首先也要有個(gè)判斷語(yǔ)句,來(lái)看看要修給的學(xué)生是否存在,這個(gè)是通過(guò)學(xué)號(hào)及學(xué)期來(lái)判斷的(學(xué)號(hào)是不會(huì)有重復(fù)的),這里會(huì)有提示輸入學(xué)號(hào)及學(xué)期,之后是for和if語(yǔ)句,if(r[m].num==n&&r[m].term==k)若存在則先輸出修改之前的信息,查看是否正
54、確。若正確,則修改此學(xué)生記錄,這里有個(gè)while循環(huán)語(yǔ)句,和switch-case選擇語(yǔ)句,用來(lái)選擇修改哪科成績(jī),和是否進(jìn)行再修改記錄(通過(guò)選擇Y或y來(lái)實(shí)現(xiàn))。最后將修改過(guò)后的記錄保存到文件中去,并輸出提示"文件已修改并寫(xiě)入"。</p><p> ******按學(xué)號(hào)及學(xué)期刪除學(xué)生記錄</p><p> 用函數(shù)void shanchu(Student *r)來(lái)實(shí)現(xiàn)&l
55、t;/p><p> 主要功能是用來(lái)刪除學(xué)生記錄。首先有個(gè)度文件的操作,之后會(huì)有判斷語(yǔ)句,根據(jù)所輸入的學(xué)號(hào)及學(xué)期,來(lái)顯示刪除前的信息記錄,添加for循環(huán)語(yǔ)句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來(lái)進(jìn)行全局變量的修改,之后再把修改過(guò)后的信息記錄保存到文件中去。在現(xiàn)實(shí)中會(huì)有由于某些原因而不在學(xué)校的同學(xué)的記錄,這時(shí)候就要對(duì)其記錄進(jìn)行刪除操作,這樣可以使系統(tǒng)及時(shí)更新并得到優(yōu)化。</p><p>
56、 ******按數(shù)據(jù)結(jié)構(gòu)成績(jī)(冒泡)降序排序模塊</p><p> 用函數(shù)void maopao(Student *r)來(lái)實(shí)現(xiàn)</p><p> 主要功能時(shí)是用來(lái)對(duì)學(xué)生的記錄來(lái)按單科成績(jī)進(jìn)行排序。這樣方便對(duì)某科成績(jī)有個(gè)大致的了解。首先會(huì)有一個(gè)讀文件操作,為排序做基礎(chǔ)。</p><p> 本排序使用冒泡排序。它有兩個(gè)優(yōu)點(diǎn):一是“編程復(fù)雜度”很低,很容易寫(xiě)出代碼
57、;二是具有穩(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ù)。本程序中冒泡排序代碼如下:</p><p> for(int k=0;k<num-1;k++){</p><p> for(int m=0;m<
58、;num-k;m++){ </p><p> Student max;</p><p> if(r[m].mark2<r[m+1].mark2) {</p><p> max=r[m+1];</p><p> r[m+1]=r[m];</p><p><b> r[m]=max;</b&
59、gt;</p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> cout<<"排序完畢"<<endl;</p><p>
60、 排序之后,將排序之后的結(jié)果寫(xiě)入文件,再打開(kāi)文件的時(shí)候,里面顯示的就是按單科成績(jī)排序后的結(jié)果。</p><p> ******按總分(選擇)降序排序</p><p> 用函數(shù)void xuanze(Student *r)來(lái)實(shí)現(xiàn)</p><p> 主要功能時(shí)是用來(lái)對(duì)學(xué)生的記錄來(lái)按總分成績(jī)進(jìn)行排序。這樣方便對(duì)學(xué)生總體有個(gè)大致的了解。首先會(huì)有一個(gè)讀文件操作,為排序做
61、基礎(chǔ)。</p><p> 本排序使用選擇排序。其基本思想是:n個(gè)記錄的文件的直接選擇排序可進(jìn)過(guò)n-1趟直接選擇排序得到有序結(jié)果:①初始狀態(tài),無(wú)</p><p> 序區(qū)為R[1..n],有序區(qū)為空。②第一趟排序 在無(wú)序區(qū)R[1..n]中選出關(guān)鍵字最小的記錄R[k],將它與無(wú)序區(qū)的第一個(gè)記錄R[1]交換,使R[1..n]和R[2..n]分別變?yōu)橛涗泜€(gè)數(shù)增加1個(gè)的新有序區(qū)記錄和記錄數(shù)減少
62、1個(gè)的新無(wú)序區(qū)。 ..... ③第i趟排序 第i唐排序開(kāi)始時(shí),當(dāng)前有序區(qū)和無(wú)序區(qū)分別為R[1..i-1]和R(1≤i≤n-1)。該趟排序從當(dāng)前無(wú)序區(qū)中選出關(guān)鍵字最小的記錄R[k],將它與無(wú)序區(qū)的第一個(gè)記錄與R交換,使R[1..i]和R分別變成為記錄個(gè)數(shù)增加1個(gè)的新有序區(qū)和記錄個(gè)數(shù)減少1個(gè)的新無(wú)序區(qū)。 這樣,n個(gè)記錄的文件的直接選擇排序可經(jīng)過(guò)n-1趟直接選擇排序得到有序結(jié)果。本程序中選擇排序代碼如下:</p>
63、<p> for(int i=0;i<num;i++){</p><p> int max=i;</p><p> for(int j=i;j<num;j++){</p><p> if(r[max].sum<r[j].sum){</p><p><b> max=j;</b>&l
64、t;/p><p><b> }</b></p><p><b> }</b></p><p> Student temp;</p><p> temp=r[max];</p><p> r[max]=r[i];</p><p> r[i]=te
65、mp;</p><p><b> }</b></p><p> cout<<"排序完畢"<<endl;</p><p> 排序之后,將排序之后的結(jié)果寫(xiě)入文件,再打開(kāi)文件的時(shí)候,里面顯示的就是按單科成績(jī)排序后的結(jié)果。</p><p> ******統(tǒng)計(jì)各科總分及平均分模塊
66、</p><p> 用函數(shù)void tongji(Student *r)來(lái)實(shí)現(xiàn)</p><p> 主要功能是計(jì)算總分和各科平均分。代碼比較容易實(shí)現(xiàn),計(jì)算完之后將總分保存到文件中即可。</p><p> *****以上就是本程序的詳細(xì)設(shè)計(jì)及基本思想*****</p><p> 所遇到的問(wèn)題和分析解決</p><p&g
67、t;<b> 存在的不足</b></p><p> 本學(xué)生成績(jī)管理系統(tǒng)由十大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績(jī)管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問(wèn)題,這個(gè)系統(tǒng)可以實(shí)現(xiàn)的功能非常有限。只能實(shí)現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進(jìn)行簡(jiǎn)單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信息,能直接從文件中讀入數(shù)據(jù),能對(duì)系統(tǒng)所作的修改、操作進(jìn)行保存等。而且在每個(gè)模塊也有不足的地方
68、,比如在輸入學(xué)生資料時(shí),對(duì)每個(gè)信息項(xiàng)沒(méi)有嚴(yán)格的規(guī)定,可以輸入任何的字符。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。</p><p> do-while語(yǔ)句的位置問(wèn)題</p><p> 在修改學(xué)生記錄此模塊中,若循環(huán)語(yǔ)句的位置不對(duì)那么這個(gè)循環(huán)就會(huì)自動(dòng)跳出,或變?yōu)閬y碼,不能實(shí)現(xiàn)原有的功能。所以要想清楚到底是在哪安放,按照邏輯思路找到相應(yīng)的語(yǔ)句正確添加就行了。 </p>
69、<p><b> 指針數(shù)組的使用</b></p><p> 就是在插入學(xué)生記錄模塊中,另一個(gè)指針數(shù)組的定義,之前做的時(shí)候沒(méi)有注意到這點(diǎn),結(jié)果所做的修改不能夠保存到文件,之后操作的時(shí)候也沒(méi)有顯示所做修改的記錄,之后找了資料看了之后才知道,是變量的問(wèn)題,所以最后作了修改,加了一個(gè)另外的指針數(shù)組。</p><p> system('cls'
70、)的使用問(wèn)題</p><p> 剛開(kāi)始時(shí)對(duì)菜單的切換不是很了解,編寫(xiě)的程序運(yùn)行的時(shí)候是一豎行向下的,很影響使用者的視覺(jué)范圍,通過(guò)查詢一些資料得知了system('cls')的作用,能夠把一些暫時(shí)不用或不相關(guān)的信息通過(guò)清屏來(lái)處理。</p><p><b> 細(xì)節(jié)方面</b></p><p> 其實(shí)在有些細(xì)節(jié)方面還是要特別注意
71、啊,比如分號(hào)的添加,<<與>>的方向問(wèn)題,函數(shù)的返回值等問(wèn)題,雖然容易改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會(huì)浪費(fèi)時(shí)間,所以在一開(kāi)始寫(xiě)的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫(xiě)程序的時(shí)候也會(huì)心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。</p><p><b> 文件的寫(xiě)入與讀出</b></p><p> 剛開(kāi)
72、始時(shí)對(duì)文件的操作不是很明白,一直不能很好的操作文件,直到最后驗(yàn)收的時(shí)候,仍舊出現(xiàn)了嚴(yán)重的問(wèn)題,就是對(duì)已經(jīng)存在的文件讀取問(wèn)題,通過(guò)"讀取文件并輸出學(xué)生信息",將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語(yǔ)句進(jìn)行仔細(xì)檢查后,發(fā)現(xiàn)語(yǔ)句的順序有點(diǎn)問(wèn)題,把fscanf()語(yǔ)句進(jìn)行再修改后就能夠正常的讀取文件了。</p><p><b> 內(nèi)存的分配問(wèn)題</b>&l
73、t;/p><p> 對(duì)于初學(xué)者的話對(duì)內(nèi)存的分配和釋放問(wèn)題是比較抽象的和模糊的問(wèn)題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問(wèn)題,以及內(nèi)存分配空間繁瑣釋放空間不及時(shí)的問(wèn)題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲(chǔ)記錄的方式,這就能改變前面所出現(xiàn)的問(wèn)題。</p><p><b> 較小的問(wèn)題方面</b></p><p> 其余的就
74、沒(méi)什么比較大的問(wèn)題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試了。</p><p><b> 系統(tǒng)特色及關(guān)鍵技術(shù)</b></p><p> 其實(shí)在本程序的設(shè)計(jì)過(guò)程當(dāng)中,沒(méi)有很吸引人的關(guān)鍵技術(shù),因?yàn)楸救说腃語(yǔ)言或C++語(yǔ)言都不是學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺(jué)得很滿足了。所以都是設(shè)計(jì)的比較簡(jiǎn)單易懂的語(yǔ)言,
75、這樣自己能夠更明白一些,所以就沒(méi)有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說(shuō)有什么值得說(shuō)的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝耍蕴砑恿撕茉敱M的提示,這樣在編程的過(guò)程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while語(yǔ)句和switch-case語(yǔ)句,這兩個(gè)語(yǔ)句在之前不是很常用,所以在這個(gè)程序中試煉了一下,雖然在編寫(xiě)的過(guò)程中總是出錯(cuò),但還是成功的用好了,也是程序有條理一些。我也知道這些東西別人可
76、能比我弄得還要好,但是我在我所學(xué)的知識(shí)中成功的應(yīng)用了這些,我覺(jué)得就是好事,就是進(jìn)步。</p><p><b> 結(jié)論及心得體會(huì)</b></p><p> 一周多的課程設(shè)計(jì),終于成功的驗(yàn)收了,雖然有些疲憊,但還是有很多的收獲的,像計(jì)算機(jī)組成原理的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識(shí),之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后,才是真正的理解及體會(huì)。C++
77、也學(xué)了近一年,有很多知識(shí)都是似懂非懂,通過(guò)平時(shí)上機(jī)操作,自己也了解了一些,但讓我有了更深的理解和更好的認(rèn)識(shí),則是在這次的課設(shè)上,之前的困惑也通過(guò)這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。</p><p> 在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫(xiě)代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過(guò)不了,再來(lái)檢查出問(wèn)題,是很費(fèi)費(fèi)力的事情,因此分析和規(guī)劃
78、代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫(xiě)好,這樣就不會(huì)出現(xiàn)大問(wèn)題,寫(xiě)代碼就要先找出核心的內(nèi)容,用多種方法來(lái)實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。</p><p> 通過(guò)本次論文設(shè)計(jì),我初步學(xué)會(huì)了論文設(shè)計(jì)的基本方法,學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),使我感覺(jué)比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會(huì)經(jīng)常因?yàn)橐恍┬〉?/p>
79、錯(cuò)誤而心煩意亂,但是也不失為一件好事,失敗的越多積累的經(jīng)驗(yàn)越豐富,對(duì)人的考驗(yàn)也比較多,那么在最后編譯成功時(shí)的喜悅就越濃烈,也是自己的能力有了進(jìn)一步的提高。由于知識(shí)和經(jīng)驗(yàn)的不足,這個(gè)程序編寫(xiě)的不是很盡如人意,但是融合了自己的心血,就覺(jué)得是最好的,所以在以后還是需要較多的努力的,還是會(huì)在以后的學(xué)習(xí)過(guò)程中不斷地提高和改進(jìn)的。</p><p><b> 附錄(源代碼)</b></p>
80、<p> #include<iostream.h></p><p> #include<stdlib.h></p><p> #include<iomanip.h>//主要是對(duì)cin,cout之類的一些操縱運(yùn)算,是I/O流控制頭文件。 </p><p> #include <conio.h> //文
81、件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出</p><p> #include<stdio.h> </p><p> struct Student //結(jié)構(gòu)體</p><p><b> {</b></p><p> int term;//學(xué)期</p><p> int num;//學(xué)號(hào)<
82、/p><p> char name[12];//姓名</p><p> float mark1;//成績(jī)</p><p> float mark2;</p><p> float mark3;</p><p> float sum;//總分</p><p> float average;
83、//平均分</p><p><b> };</b></p><p> int num=0;</p><p> void input(Student *r); //輸入</p><p> void output(Student *r); //輸出</p><p> v
84、oid searchnum(Student *r); //按學(xué)號(hào)及學(xué)期查找</p><p> void searchname(Student *r); //按姓名及學(xué)期查找</p><p> void change(Student *r); //按學(xué)號(hào)及學(xué)期修改信息</p><p> Student *insert(Student *r
85、); //插入信息</p><p> void shanchu(Student *r); //按學(xué)號(hào)及學(xué)期刪除信息</p><p> void maopao(Student *r); //按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序</p><p> void xuanze(Student *r); //按總分降序(選擇)排序</p&
86、gt;<p> void tongji(Student *r); //統(tǒng)計(jì)各科總分和平均分信息</p><p> void main()</p><p><b> {</b></p><p> cout<<"輸入學(xué)生的個(gè)數(shù):";</p><p><b&
87、gt; cin>>num;</b></p><p> Student *p=(Student *)new Student[num];//定義指針數(shù)組,存放學(xué)生個(gè)數(shù)</p><p><b> int m;</b></p><p><b> do{</b></p><p>
88、; cout<<endl;</p><p> cout<<endl;</p><p> cout<<"\t*************************菜單欄**********************************\n"<<endl;</p><p> cout<<
89、;"\t* 1 輸入學(xué)生信息并保存到文件 2 讀取文件并輸出學(xué)生信息 *"<<endl;</p><p> cout<<"\t* 3 按學(xué)號(hào)及學(xué)期查詢 4 按姓名及學(xué)期查詢 *"<<endl;</p><p> cout<<&quo
90、t;\t* 5 按學(xué)號(hào)及學(xué)期修改信息 6 插入信息 *"<<endl;</p><p> cout<<"\t* 7 按學(xué)號(hào)及學(xué)期刪除信息 8 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 *"<<endl;</p><p> cout<<"
91、;\t* 9 按總分降序(選擇)排序 10 統(tǒng)計(jì)各科成績(jī)的總分和平均分 *"<<endl;</p><p> cout<<"\t* 11 退出 *"<<endl;</p><p> cout<
92、;<"\t*****************************************************************\n"<<endl;</p><p> cout<<"請(qǐng)選擇:";</p><p><b> cin>>m;</b></p>&l
93、t;p> switch(m){</p><p><b> case 1: </b></p><p><b> input(p);</b></p><p><b> break;</b></p><p><b> case 2:</b><
94、;/p><p> output(p);</p><p><b> break;</b></p><p><b> case 3: </b></p><p> searchnum(p);</p><p><b> break;</b></p&g
95、t;<p><b> case 4: </b></p><p> searchname(p);</p><p><b> break;</b></p><p><b> case 5: </b></p><p> change(p);</p>
96、<p><b> break;</b></p><p><b> case 6: </b></p><p> p=insert(p);</p><p><b> break;</b></p><p><b> case 7: </b>
97、;</p><p> shanchu(p);</p><p><b> break;</b></p><p><b> case 8: </b></p><p> maopao(p);</p><p><b> break;</b></p
98、><p><b> case 9:</b></p><p> xuanze(p);</p><p><b> break;</b></p><p><b> case 10: </b></p><p> tongji(p);</p>
99、<p><b> break;</b></p><p><b> case 11:</b></p><p><b> break;</b></p><p><b> }</b></p><p> }while(m!=11); <
100、;/p><p><b> }</b></p><p> void input(Student *r) //輸入信息</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p><b>
101、int n=0;</b></p><p><b> int i;</b></p><p> int t=0; //t為控制標(biāo)量,1為找到,0為未找到 </p><p> cout<<endl<<"========>> 請(qǐng)輸入學(xué)生信息 <<========&
102、quot;<<endl;</p><p> for(i=0;i<num;i++){</p><p> cout<<"請(qǐng)輸入學(xué)期:";</p><p> cin>>r[i].term;</p><p> cout<<"請(qǐng)輸入第"<<
103、i+1<<"個(gè)人的學(xué)號(hào):";</p><p> cin>>r[i].num; </p><p><b> if(i>=1){</b></p><p> for(n=0;n<i;n++){</p><p> if(r[n].num==r[i].num){
104、 </p><p> cout<<"該學(xué)號(hào)已存在!!"<<endl;</p><p><b> t=1;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
105、t;<b> }</b></p><p> if(t==1){//表示有重復(fù)</p><p><b> i--;</b></p><p><b> t=0;</b></p><p><b> continue;</b></p>&l
106、t;p><b> }</b></p><p> cout<<"請(qǐng)輸入姓名:";</p><p> cin>>r[i].name;</p><p> cout<<"請(qǐng)輸入 高等數(shù)學(xué) 成績(jī):";</p><p> cin>>
107、;r[i].mark1;</p><p> cout<<"請(qǐng)輸入 數(shù)據(jù)結(jié)構(gòu) 成績(jī):";</p><p> cin>>r[i].mark2;</p><p> cout<<"請(qǐng)輸入 組成原理 成績(jī):";</p><p> cin>>r[i].mark
108、3;</p><p> r[i].sum=r[i].mark1+r[i].mark2+r[i].mark3;</p><p> r[i].average=(r[i].mark1+r[i].mark2+r[i].mark3)/3;</p><p><b> }</b></p><p> if((fp=fopen(&
109、quot;student.txt","w"))==NULL) {</p><p> cout<<"文件不能打開(kāi)"<<endl;</p><p><b> exit(0); </b></p><p><b> }</b></p>&
110、lt;p> for(n=0;n<i;n++){</p><p> fprintf(fp,"%d %s %.1f %.1f %.1f %d %.1f %.1f",r[n].num,r[n].name,r[n].mark1,r[n].mark2,r[n].mark3,r[n].term,r[n].sum,r[n].average);</p>
111、<p> fprintf(fp,"\n");</p><p><b> }</b></p><p> fclose(fp);</p><p> cout<<"文件已經(jīng)寫(xiě)入"<<endl;</p><p><b> }<
112、/b></p><p> void output(Student *r) //輸出信息</p><p><b> {</b></p><p><b> int m;</b></p><p> system("cls");</p><p>
113、 if(num>0){</p><p><b> FILE *fp;</b></p><p> if((fp=fopen("student.txt","r"))==NULL) {</p><p> cout<<"文件不能打開(kāi)"<<endl;<
114、/p><p><b> exit(0); </b></p><p><b> }</b></p><p> for(int n=0;n<num;n++){fscanf(fp,"%d%s%f%f%f%d%f%f",&r[n].num,r[n].name,&r[n].mark1
115、,&r[n].mark2,&r[n].mark3,&r[n].term,&r[n].sum,&r[n].average);</p><p><b> }</b></p><p> fclose(fp);</p><p> cout<<"文件已經(jīng)讀入"<<e
116、ndl;</p><p> cout<<"******************************學(xué)生信息如下**********************************"<<endl;</p><p> cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"
117、<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"組成原理"<<setw(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<&qu
118、ot;平均分"<<endl;</p><p> cout<<"---------------------------------------------------------------"<<endl;</p><p> for(m=0;m<num;m++){cout<<r[m].num<&
119、lt;setw(6)<<r[m].name<<setw(7)<<r[m].mark1<<setw(10)<<r[m].mark2<<setw(10)<<r[m].mark3<<setw(8)<<r[m].term<<setw(6)<<r[m].sum<<setw(6)<<r[m].a
120、verage<<endl;</p><p><b> }</b></p><p> cout<<"\0\0"<<endl;</p><p><b> }</b></p><p><b> else</b></
121、p><p> cout<<"未輸入任何信息??!"<<endl;</p><p><b> }</b></p><p> void searchnum(Student *r) //按學(xué)號(hào)及學(xué)期查找</p><p><b> {</b></p&
122、gt;<p><b> int n,k;</b></p><p> system("cls");</p><p> if(num>0){</p><p> cout<<"請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):";</p><p><b> ci
123、n>>n;</b></p><p> cout<<"請(qǐng)輸入學(xué)期號(hào):";</p><p><b> cin>>k;</b></p><p> for(int m=0;m<num;m++){</p><p> if(r[m].num==n&am
124、p;&r[m].term==k){//如果找到了輸出并跳出循環(huán)</p><p> cout<<endl;</p><p> cout<<"---------------------------要查找的信息如下--------------------------------"<<endl;</p><p&
125、gt; cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)<<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"組成原理"<<setw(6)<<"學(xué)期&
126、quot;<<setw(6)<<"總分"<<setw(8)<<"平均分"<<endl;cout<<r[m].num<<setw(6)<<r[m].name<<setw(7)<<r[m].mark1<<setw(10)<<r[m].mark2<&
127、lt;setw(10)<<r[m].mark3<<setw(8)<<r[m].term<<setw(6)<<r[m].sum<<setw(8)<<r[m].average<<endl;</p><p><b> break;</b></p><p><b>
128、}</b></p><p><b> }</b></p><p> if(r[m].num!=n&&r[m].term!=k) //若沒(méi)找到提示不存在</p><p> cout<<"該學(xué)號(hào)不存在,或沒(méi)有這個(gè)學(xué)期的成績(jī)!"<<endl;</p><
129、;p><b> }</b></p><p><b> else</b></p><p> cout<<"未輸入任何信息??!"<<endl;</p><p><b> }</b></p><p> void search
130、name(Student *r) //按姓名及學(xué)期查找</p><p><b> {</b></p><p> char n[12];</p><p><b> int k;</b></p><p> system("cls");</p><p&
131、gt; if(num>0){ //如果沒(méi)輸入就查找提示</p><p> cout<<"請(qǐng)輸入要查找學(xué)生的姓名:";</p><p><b> cin>>n;</b></p><p> cout<<"請(qǐng)輸入學(xué)期號(hào):";</p><p&
132、gt;<b> cin>>k;</b></p><p> for(int m=0;m<num;m++){</p><p> if(r[m].name[0]==n[0]&&r[m].term==k){ //如果找到了輸出并跳出循環(huán)</p><p> cout<<endl;</p>
133、<p> cout<<"---------------------------要查找的信息如下--------------------------------"<<endl;</p><p> cout<<"學(xué)號(hào)"<<setw(6)<<"姓名"<<setw(10)&
134、lt;<"高等數(shù)學(xué)"<<setw(10)<<"數(shù)據(jù)結(jié)構(gòu)"<<setw(10)<<"組成原理"<<setw(6)<<"學(xué)期"<<setw(6)<<"總分"<<setw(8)<<"平均分"<&
135、lt;endl;cout<<r[m].num<<setw(6)<<r[m].name<<setw(7)<<r[m].mark1<<setw(10)<<r[m].mark2<<setw(10)<<r[m].mark3<<setw(8)<<r[m].term<<setw(6)<<
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 《學(xué)生成績(jī)管理系統(tǒng)》課程設(shè)計(jì)報(bào)告
- vb學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (2)
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (3)
- c課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- java學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告.doc
- vfp課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論