

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)</p><p> ------學(xué)生成績(jī)排名系統(tǒng)</p><p> 課程設(shè)計(jì)的目的和要求</p><p> 高級(jí)語(yǔ)言課程設(shè)計(jì)的主要目的是培養(yǎng)學(xué)生能夠提高綜合應(yīng)用語(yǔ)言的能力,通過(guò)課程設(shè)計(jì)的訓(xùn)練,使學(xué)生能及時(shí)鞏固已學(xué)的知識(shí),補(bǔ)充未學(xué)的但有必要的內(nèi)容,掌握應(yīng)用計(jì)算機(jī)解決實(shí)際問(wèn)題的基本方法,熟悉程序開(kāi)發(fā)的全過(guò)程,提高綜合應(yīng)
2、用語(yǔ)言的能力。高級(jí)語(yǔ)言程序設(shè)計(jì)的主要任務(wù)是要求學(xué)生遵循軟件開(kāi)發(fā)過(guò)程的基本規(guī)范,運(yùn)用結(jié)構(gòu)程序設(shè)計(jì)的方法按照課程設(shè)計(jì)的題目要求,分析,編寫(xiě),調(diào)試和測(cè)試高級(jí)語(yǔ)言程序及編寫(xiě)設(shè)計(jì)報(bào)告。</p><p> 1.1課程設(shè)計(jì)的目的</p><p> 1.鞏固和掌握高級(jí)語(yǔ)言程序設(shè)計(jì)基本概念;</p><p> 2.掌握基本的程序設(shè)計(jì)方法;</p><p>
3、; 3.掌握開(kāi)發(fā)軟件所需的需求定義能力;</p><p> 4.提高書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力;</p><p> 5.提高綜合運(yùn)用高級(jí)語(yǔ)言的能力,強(qiáng)化編程和調(diào)試能力。</p><p> 1.2 課程設(shè)計(jì)的基本要求</p><p> 1.根據(jù)所給的課程設(shè)計(jì)題目,分析課程設(shè)計(jì)題目的要求;</p><p> 2
4、.對(duì)系統(tǒng)功能模塊進(jìn)行分析,寫(xiě)出詳細(xì)的設(shè)計(jì)說(shuō)明文檔;</p><p> 3.編寫(xiě)程序代碼,調(diào)試所編寫(xiě)程序使其能正確運(yùn)行;</p><p> 4.設(shè)計(jì)完成的軟件便于完成和使用;</p><p> 5.設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告;</p><p><b> 課程設(shè)計(jì)任務(wù)內(nèi)容</b></p><p&g
5、t;<b> 2.1 考核內(nèi)容</b></p><p> 2.1.1 編寫(xiě)的C++語(yǔ)言程序</p><p> ●針對(duì)編寫(xiě)的C++程序,應(yīng)該主要考查下列內(nèi)容:</p><p> ●是否符合題目要求,是否完成了主要功能;</p><p> ●是否存在語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤及運(yùn)行錯(cuò)誤;</p><p&
6、gt; ●程序設(shè)計(jì)是否合理;</p><p> ●程序是否具有良好的可讀性和可靠性;</p><p> ●是否符合結(jié)構(gòu)化程序設(shè)計(jì)所倡導(dǎo)的基本理念;</p><p> ●用戶(hù)界面是否友好。</p><p> 2.1.2 課程設(shè)計(jì)報(bào)告</p><p> ●針對(duì)提交的課程設(shè)計(jì)報(bào)告,應(yīng)該主要考查下列內(nèi)容:</
7、p><p> ●程序設(shè)計(jì)的報(bào)告內(nèi)容是否全面,觀點(diǎn)是否正確;</p><p> ●設(shè)計(jì)過(guò)程是否符合結(jié)構(gòu)化程序設(shè)計(jì)方法的基本原則;</p><p> ●層次是否清楚,語(yǔ)言是否通順;</p><p> ●各種圖表是否規(guī)范;是否具有良好的程序設(shè)計(jì)習(xí)慣。</p><p><b> 2.2 課題</b>
8、</p><p> 10、學(xué)生信息管理系統(tǒng)設(shè)計(jì)</p><p><b> 實(shí)現(xiàn)以下功能:</b></p><p> 1) 系統(tǒng)以菜單方式工作;</p><p> 2) 學(xué)生信息錄入功能(學(xué)生信息用文件保存);</p><p> 3) 學(xué)生信息瀏覽功能;</p><p&
9、gt; 4) 查詢(xún)、排序功能(至少兩種查詢(xún)依據(jù)和兩種排序依據(jù));</p><p> 5) 學(xué)生信息刪除、修改功能。</p><p> 備注:學(xué)生信息包括:學(xué)號(hào),姓名,年齡,性別,出生年月,地址,電話(huà),E-mail等。</p><p><b> 詳細(xì)設(shè)計(jì)說(shuō)明</b></p><p><b> 3.1 模
10、板設(shè)計(jì)圖</b></p><p> 該系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊如圖3-1所示:</p><p> 圖3-1 模板設(shè)計(jì)圖</p><p><b> 其中:</b></p><p><b> 1.學(xué)生成績(jī)錄入</b></p><p> 2..增加學(xué)
11、生成績(jī)記錄模塊可以完成學(xué)生成績(jī)的輸入,輸入信息包括班級(jí)、學(xué)號(hào)、姓名、課程名、成績(jī)。</p><p> 3 .刪除學(xué)生成績(jī)記錄模塊可以完成學(xué)生成績(jī)的刪除。</p><p> 4.查詢(xún)學(xué)生成績(jī)記錄模塊可以完成學(xué)生成績(jī)的查詢(xún),可以通過(guò)輸入姓名、學(xué)號(hào)</p><p> 或者是課程 名來(lái)查詢(xún)學(xué)生成績(jī)。 </p><p> 5.學(xué)生成績(jī)排序模塊可
12、以完成對(duì)學(xué)生成績(jī)的排序,按照成績(jī)的高低來(lái)進(jìn)行排</p><p><b> 序。</b></p><p> 3.2 函數(shù)模塊、功能分析、參數(shù)說(shuō)明</p><p> 1.增加學(xué)生成績(jī)記錄模塊(void Manage::add( ))</p><p> 對(duì)應(yīng)于總體設(shè)計(jì)時(shí)的系統(tǒng)功能模塊圖,各個(gè)功能模塊的處理邏輯如下:&l
13、t;/p><p> 主要完成將數(shù)據(jù)存入單鏈表中的工作。在這次增加學(xué)生成績(jī)記錄中,記錄可以從二進(jìn)制形式存儲(chǔ)的數(shù)據(jù)文件中讀入,也可以從鍵盤(pán)逐個(gè)讀入學(xué)生記錄。如圖3-2所示:圖3-2 增加學(xué)生成績(jī)記錄流程圖.</p><p> 2.刪除學(xué)生成績(jī)記錄模塊(void Manage::del( ))</p><p> 要?jiǎng)h除某個(gè)學(xué)生的信息,就要從磁盤(pán)文件中將所有同學(xué)信息讀
14、出來(lái),然后除要?jiǎng)h除的學(xué)生外,其它的所有記錄再重新存入原來(lái)的磁盤(pán)文件中,如圖3-3所示:</p><p><b> N</b></p><p><b> Y</b></p><p> 圖3-3 刪除學(xué)生成績(jī)記錄流程圖</p><p> 3..查詢(xún)學(xué)生成績(jī)記錄模塊(void Manage::se
15、arch( ))</p><p> 主要完成在單鏈表中查找滿(mǎn)足相關(guān)條件的學(xué)生記錄。用戶(hù)可以按照學(xué)生的 學(xué)號(hào)、姓名或課程名在單鏈表中進(jìn)行查找。未找到輸出提示信息,如圖3-4所示:</p><p> 圖3-4 查詢(xún)學(xué)生成績(jī)記錄流程圖</p><p> 4.學(xué)生成績(jī)排序模塊</p><p> 主要完成按照成績(jī)的高低來(lái)進(jìn)行排序,如圖3
16、-6所示:</p><p> 圖3-6 學(xué)生成績(jī)排序流程圖</p><p><b> 3.3 函數(shù)流程圖</b></p><p> 系統(tǒng)首先進(jìn)入歡迎界面并提示用戶(hù)輸入不同的阿拉伯?dāng)?shù)字會(huì)進(jìn)行不同的操作。在用戶(hù)做出選擇后,根據(jù)用戶(hù)輸入的阿拉伯?dāng)?shù)字,程序?qū)⒄{(diào)用相應(yīng)的功能模塊,實(shí)現(xiàn)用戶(hù)要進(jìn)行的操作。完成一次用戶(hù)的操作后,再回到歡迎界面,等待用戶(hù)再
17、做出選擇,再調(diào)用相應(yīng)的功能模塊……,知道用戶(hù)在歡迎界面選擇了退出,該系統(tǒng)結(jié)束,終止執(zhí)行,如圖3-7所示:</p><p> 圖3-7 函數(shù)流程圖</p><p><b> 編碼與調(diào)試</b></p><p><b> 4.1 軟件與測(cè)試</b></p><p> 打開(kāi)軟件后,界面會(huì)出現(xiàn)你所
18、需要的功能,根據(jù)你要進(jìn)行的操作來(lái)選擇。</p><p> 4.2 運(yùn)行結(jié)果及截圖</p><p> 1.此圖為程序運(yùn)行成功后,出現(xiàn)的界面,此為主菜單界面,可依據(jù)界面執(zhí) </p><p> 行。如圖4-1所示:</p><p> 2.首先錄入學(xué)生成績(jī)記錄,輸入學(xué)生的班級(jí)、學(xué)號(hào)、姓名、課程名、成績(jī),如圖4-2所示:</p>
19、<p> 圖4-2 錄入學(xué)生成績(jī)記錄</p><p> 3返回主菜單,選擇相應(yīng)的操作,對(duì)學(xué)生成績(jī)進(jìn)行排序和相應(yīng)的查詢(xún),如圖4-3所示:</p><p> 圖4-3 學(xué)生成績(jī)排序</p><p> 4.返回主菜單,進(jìn)行查詢(xún)學(xué)生成績(jī)記錄操作,如圖4-4所示:</p><p> 圖4-4 學(xué)生成績(jī)排序</p>&l
20、t;p> 5.返回主菜單,進(jìn)行對(duì)學(xué)生成員進(jìn)行增加。如圖4-5所示:</p><p> 圖4-5 查詢(xún)學(xué)生成績(jī)</p><p> 6.返回主菜單,進(jìn)行刪除學(xué)生成績(jī)記錄操作,按照學(xué)號(hào)來(lái)刪除學(xué)生信息,如圖4-6所示:</p><p> 圖4-6 刪除學(xué)生成績(jī)記錄</p><p><b> 課程設(shè)計(jì)心得與體會(huì)</b&g
21、t;</p><p> 本次課程設(shè)計(jì),使我對(duì)《數(shù)據(jù)結(jié)構(gòu)》這門(mén)課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門(mén)實(shí)踐性較強(qiáng)的課程,為了學(xué)好這門(mén)課程,必須在掌握理論知識(shí)的同時(shí),加強(qiáng)上機(jī)實(shí)踐。一個(gè)人的力量是有限的,要想把課程設(shè)計(jì)做的更好,就要學(xué)會(huì)參考一定的資料,吸取別人的經(jīng)驗(yàn),讓自己和別人的思想有機(jī)的結(jié)合起來(lái),得出屬于你自己的靈感。</p><p> 在本課程設(shè)計(jì)中,我明白了理論與實(shí)際應(yīng)用相結(jié)合的重要
22、性,并提高了自己組織數(shù)據(jù)及編寫(xiě)大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計(jì)技能以及合作能力。這次課程設(shè)計(jì)同樣提高了我的綜合運(yùn)用所學(xué)知識(shí)的能力。程序的編寫(xiě)需要有耐心,有些事情看起來(lái)很復(fù)雜,但問(wèn)題需要一點(diǎn)一點(diǎn)去解決,分析問(wèn)題,把問(wèn)題一個(gè)一個(gè)劃分,劃分成小塊以后就逐個(gè)去解決。再總體解決大的問(wèn)題。這樣做起來(lái)不僅有條理也使問(wèn)題得到了輕松的解決。</p><p> 在這段時(shí)間里,一直修改著相應(yīng)的程序,并且嘗試著調(diào)試 各種運(yùn)
23、行結(jié)果。終于,在自己的努力下,課程設(shè)計(jì)還算是有點(diǎn)起色。經(jīng)過(guò)這次的編程,我學(xué)會(huì)了很多東西。比如說(shuō),如何在網(wǎng)上查找一些有用的東西,如何設(shè)計(jì)自己的目標(biāo),如何規(guī)劃好自己的學(xué)習(xí)時(shí)間,如何讓自己的思想應(yīng)用到程序的編程過(guò)程中去,如何合理運(yùn)用各種資源來(lái)提高自己的編程甚至是學(xué)習(xí)的能力。另外,還有幾點(diǎn),我深有感觸,就是我還問(wèn)了別人怎樣在Word文檔中截圖、怎樣擴(kuò)大或縮小圖片等等??傊?,收獲真的是挺大的。</p><p> 通過(guò)這段
24、時(shí)間的課程設(shè)計(jì),我認(rèn)識(shí)到數(shù)據(jù)結(jié)構(gòu)是一門(mén)比較難的課程。需要多花時(shí)間上機(jī)練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實(shí)際分析問(wèn)題、編程和動(dòng)手能力,使我掌握了程序設(shè)計(jì)的基本技能,提高了我適應(yīng)實(shí)際,實(shí)踐編程的能力。</p><p> 這次的課程設(shè)計(jì)我對(duì)于專(zhuān)業(yè)課的學(xué)習(xí)有了更加深刻的認(rèn)識(shí),以為現(xiàn)在學(xué)的知識(shí)用不上就加以怠慢,等到想用的時(shí)候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來(lái)是那么的不扎實(shí)。以后努力學(xué)好每門(mén)專(zhuān)業(yè)課,讓自己擁有更多的知識(shí),才能解決更多的問(wèn)題!
25、 </p><p> 總的來(lái)說(shuō),這次課程設(shè)計(jì)讓我獲益匪淺,對(duì)數(shù)據(jù)結(jié)構(gòu)也有了進(jìn)一步的理解和認(rèn)識(shí)。</p><p> 不管怎么說(shuō),這次C++課程設(shè)計(jì)不僅給了我提高編程的能力的機(jī)會(huì),而且讓我的綜合素質(zhì)得到了一個(gè)全面的發(fā)展。我相信,這樣的日子一定能成為我以后生活中一段美好的回憶。</p><p><b> 附錄一 參考文獻(xiàn)</b></p&g
26、t;<p> [1]譚浩強(qiáng)著《C++程序設(shè)計(jì)》,清華大學(xué)出版社 </p><p> [2]嚴(yán)蔚敏、吳偉民編著 《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》,清華大學(xué)出版社 </p><p> [3]王杰《數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法實(shí)現(xiàn)與習(xí)題解答》,人民郵電大學(xué)出版社</p><p><b> 附錄二 程序清單</b></p><
27、p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <malloc.h></p><p> #include <string.h></p><p> #define LEN sizeof(Stu
28、dent)</p><p> #define NULL 0</p><p> typedef struct student</p><p><b> {</b></p><p> int num; /*學(xué)號(hào)*/</p><p> char name[20]; /*姓名*/</p&g
29、t;<p> char sex[2]; /*性別*/</p><p> int score[4]; /*成績(jī)*/</p><p> int sum; /*總成績(jī)*/</p><p> struct student *next;</p><p><b> }Student;</b></p>
30、;<p> int n; /*聲明一個(gè)全局變量*/</p><p> Student *cin(void); /*聲明學(xué)生信息函數(shù)*/</p><p> Student *sort_all(Student *head); /*聲明排序函數(shù)*/</p><p> Student *sort_1(Student *head,int choose);
31、 /*聲明按學(xué)號(hào)排序函數(shù)*/</p><p> void sort_2(Student *head); /*聲明按總分排序函數(shù)*/</p><p> void print(Student *head); /*聲明顯示函數(shù)*/</p><p> void find(Student *head); /*聲明查詢(xún)函數(shù)*/</p><p>
32、Student *add_new(Student *head);</p><p> Student *cin()/*聲明學(xué)生信息函數(shù)*/</p><p><b> {</b></p><p><b> int flag;</b></p><p> Student *head,*p1,*p2;
33、</p><p><b> n=0;</b></p><p> head=(Student *)malloc(LEN);/*分配LEN大小的內(nèi)存空間給head,head為首地址*/</p><p><b> p2=head;</b></p><p> printf("\n請(qǐng)輸入第%
34、d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:",n+1);</p><p> scanf("%d",&flag);</p><p> while(getchar()!='\n');</p><p> for(;flag;) /*輸入每個(gè)學(xué)生的信息*/</p><p><b>
35、{</b></p><p><b> n++;</b></p><p> p1=(Student *)malloc(LEN);</p><p> p1->num=flag;/*把flag復(fù)制給p1里面的num*/</p><p> printf("請(qǐng)輸入第%d名學(xué)生的姓名:&quo
36、t;,n); /*輸入姓名*/</p><p> scanf("%s",p1->name);</p><p> printf("請(qǐng)輸入第%d學(xué)生的性別:",n); /*輸入性別*/</p><p> scanf("%s",p1->sex);</p><p> pr
37、intf("請(qǐng)輸入第%d名學(xué)生的語(yǔ)文成績(jī):",n); /*輸入語(yǔ)文成績(jī)*/</p><p> scanf("%d",&p1->score[0]);</p><p> printf("請(qǐng)輸入第%d名學(xué)生的數(shù)學(xué)成績(jī):",n); /*輸入數(shù)學(xué)成績(jī)*/</p><p> scanf("
38、%d",&p1->score[1]);</p><p> printf("請(qǐng)輸入第%d名學(xué)生的英語(yǔ)成績(jī):",n); /*輸入英語(yǔ)成績(jī)*/</p><p> scanf("%d",&p1->score[2]);</p><p> printf("請(qǐng)輸入第%d名學(xué)生的C語(yǔ)言成績(jī)
39、:",n); /*輸入C語(yǔ)言成績(jī)*/</p><p> scanf("%d",&p1->score[3]);</p><p> p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];/*求和*/</p><p> p2-&
40、gt;next=p1;/*將后一個(gè)節(jié)點(diǎn)指向當(dāng)前節(jié)點(diǎn)*/</p><p> p2=p1;/*讓p2成為當(dāng)前節(jié)點(diǎn)*/</p><p> printf("\n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:",n+1);</p><p> scanf("%d",&flag);</p><p&g
41、t;<b> }</b></p><p> p2->next=NULL;/*結(jié)束標(biāo)志*/</p><p> printf("\n\n");</p><p> return head;</p><p><b> }</b></p><p>
42、 Student *sort_all(Student *head) /*定義排序函數(shù)*/</p><p><b> {</b></p><p> int choose;</p><p><b> for(;;)</b></p><p><b> {</b></p&
43、gt;<p> printf("\n\t\t& & & & & 學(xué)生成績(jī)統(tǒng)計(jì)排序 & & & & &\n");</p><p> printf("\t\t&\t1.按學(xué)生學(xué)號(hào)排序\t &\n");</p><p> printf(&qu
44、ot;\t\t&\t2.按學(xué)生總分排序\t &\n");</p><p> printf("\t\t&\t7.單科高分及均分\t &\n");</p><p> printf("\t\t&\t8.顯示當(dāng)前學(xué)生成績(jī)\t &\n");</p><p> printf(
45、"\t\t&\t0.返回上一級(jí)菜單\t &\n");</p><p> printf("請(qǐng)輸入你要執(zhí)行的操作:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p>
46、<p> switch(choose)</p><p><b> {</b></p><p><b> case 1:</b></p><p><b> case 2:</b></p><p><b> case 3:</b><
47、;/p><p><b> case 4:</b></p><p><b> case 5:</b></p><p> case 6:head=sort_1(head,choose);break;</p><p> case 7:print(head);sort_2(head);break;<
48、;/p><p> case 8:print(head);break;</p><p> case 0:return head;</p><p> default: printf("\n\n您的輸入錯(cuò)誤!請(qǐng)重新輸入:\n\n");break;</p><p><b> }</b></p>
49、<p><b> }</b></p><p><b> }</b></p><p> Student *sort_1(Student *head,int choose) /*定義按學(xué)號(hào)排序函數(shù)*/</p><p><b> {</b></p><p>
50、Student *p1,*p2=head->next,*pm,*px;</p><p> Student mid;</p><p><b> if (!p2) </b></p><p> return head;</p><p> for(p1=p2;p1->next!=NULL;p1=p1->
51、next)</p><p><b> {</b></p><p><b> pm=p1;</b></p><p> for(p2=p1->next;p2!=NULL;p2=p2->next)</p><p> switch(choose)</p><p>
52、<b> {</b></p><p> case 1:if (pm->num>p2->num) pm=p2;break;</p><p> case 2:if (pm->sum<p2->sum) pm=p2;break;</p><p> case 3:if (pm->score[0]<p
53、2->score[0]) pm=p2;break;</p><p> case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;</p><p> case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;</p><p><b&g
54、t; }</b></p><p> if (pm!=p1)</p><p><b> {</b></p><p><b> mid=*pm;</b></p><p><b> *pm=*p1;</b></p><p><b&g
55、t; *p1=mid;</b></p><p> px=pm->next;</p><p> pm->next=p1->next;</p><p> p1->next=px;</p><p><b> }</b></p><p><b>
56、}</b></p><p> printf("\n排序后的成績(jī)表為:\n");</p><p> print(head);</p><p> return head;</p><p><b> }</b></p><p> void sort_2(Stud
57、ent *head) /*定義按總分排序函數(shù)*/</p><p><b> {</b></p><p> Student *p=head->next;</p><p> int count; </p><p> int max_1,max_2,max_3,max_4,min_1,min_2,min_3,mi
58、n_4;</p><p> int max_sum,min_sum;</p><p> int sum_1=0,sum_2=0,sum_3=0,sum_4=0;</p><p> double aver_1,aver_2,aver_3,aver_4,aver_sum,percent;</p><p><b> if (!p)
59、</b></p><p><b> return;</b></p><p> max_1=min_1=p->score[0];</p><p> max_2=min_2=p->score[1];</p><p> max_3=min_3=p->score[2];</p>
60、<p> max_4=min_4=p->score[3];</p><p> max_sum=min_sum=p->sum;</p><p> for(;p;p=p->next)</p><p><b> {</b></p><p> if (max_1<p->scor
61、e[0]) max_1=p->score[0];</p><p> else if (min_1>p->score[0]) min_1=p->score[0];</p><p> if (max_2<p->score[1]) max_2=p->score[1];</p><p> else if (min_2>p
62、->score[1]) min_2=p->score[1];</p><p> if (max_3<p->score[2]) max_3=p->score[2];</p><p> else if (min_3>p->score[2]) min_3=p->score[2];</p><p> if (max_4&
63、lt;p->score[3]) max_4=p->score[3];</p><p> else if (min_4>p->score[3]) min_4=p->score[3];</p><p> if (max_sum<p->sum) max_sum=p->sum;</p><p> else if (min
64、_sum>p->sum) min_sum=p->sum;</p><p> sum_1+=p->score[0];</p><p> sum_2+=p->score[1];</p><p> sum_3+=p->score[2];</p><p> sum_4+=p->score[3];<
65、;/p><p><b> }</b></p><p> aver_1=1.0*sum_1/n;</p><p> aver_2=1.0*sum_2/n;</p><p> aver_3=1.0*sum_3/n;</p><p> aver_4=1.0*sum_4/n;</p>
66、<p> for (p= head; p; p = p->next)</p><p> for(int i=0;i<4;i++)</p><p> {if(p->score[i]>=60)</p><p><b> count++;</b></p><p><b>
67、}</b></p><p> percent=(float)count/(float)n/4;</p><p> aver_sum=aver_1+aver_2+aver_3+aver_4;</p><p> printf("總共%d名學(xué)生,具體數(shù)據(jù)為:\n",n);</p><p> printf(&q
68、uot;總分最高分為%d,最低分位%d,平均分為%.2f,percent=%.2f\n,count=%d",</p><p> max_sum,min_sum,aver_sum,percent,count);</p><p><b> }</b></p><p> void find(Student *head) /*定義查詢(xún)函
69、數(shù)*/</p><p><b> {</b></p><p> Student *p;</p><p> int choose,fnum;</p><p> char tem[20];</p><p> if (n==0) {printf("\n當(dāng)前系統(tǒng)沒(méi)有任何學(xué)生數(shù)據(jù)!\n
70、");return;}</p><p><b> for(;;)</b></p><p><b> {</b></p><p> printf("\n請(qǐng)輸入您要查詢(xún)學(xué)生的方式:\n\n");</p><p> printf("1、按學(xué)號(hào)查詢(xún);2、按姓名
71、查詢(xún);0、我不查詢(xún)了。\n\n");</p><p> printf("請(qǐng)選擇:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> if (choose==1)&
72、lt;/p><p><b> {</b></p><p> printf("\n請(qǐng)輸入你要查詢(xún)的學(xué)生的學(xué)號(hào),輸入0退出學(xué)號(hào)查詢(xún):");</p><p> scanf("%d",&fnum);</p><p> for(;fnum;)</p><p&g
73、t;<b> {</b></p><p> for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);</p><p><b> if (!p)</b></p><p><b> {</b></p>&l
74、t;p> printf("\n\n找不到你要查詢(xún)的學(xué)號(hào),請(qǐng)重新輸入,輸入0表示結(jié)束:");</p><p> scanf("%d",&fnum);</p><p><b> }</b></p><p> else if (p->num==fnum)</p><
75、;p><b> {</b></p><p> printf("\n學(xué)號(hào)為%d學(xué)生的數(shù)據(jù)為:\n",p->num);</p><p> printf("學(xué)號(hào)\t姓名\t性別\t 語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) C語(yǔ)言成績(jī) 總分\n");/*輸出所有的學(xué)生信息*/</p><p&g
76、t; printf("%d\t%s\t%s\t %d %d %d %d %d\n",p->num,</p><p> p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->score[3],p->sum);</p&g
77、t;<p> printf("\n\n請(qǐng)輸入你還要查詢(xún)的學(xué)生的學(xué)號(hào),輸入0表示不按學(xué)號(hào)查詢(xún)了:");</p><p> scanf("%d",&fnum);</p><p><b> }</b></p><p><b> }</b></p>
78、<p><b> }</b></p><p> else if (choose==2)</p><p><b> {</b></p><p> printf("\n請(qǐng)輸入你要查詢(xún)的學(xué)生的姓名,輸入0退出姓名查詢(xún):");</p><p> scanf(&quo
79、t;%s",tem);</p><p> for(;strcmp(tem,"0");)</p><p><b> {</b></p><p> for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);</p>
80、;<p><b> if (!p)</b></p><p><b> {</b></p><p> printf("\n\n找不到你要查詢(xún)的姓名,請(qǐng)重新輸入,輸入0表示結(jié)束:");</p><p> scanf("%s",tem);</p><
81、;p><b> }</b></p><p> else if (!strcmp(p->name,tem))</p><p><b> {</b></p><p> printf("\n姓名為%s學(xué)生的數(shù)據(jù)為:\n",p->name);</p><p>
82、 printf("學(xué)號(hào)\t姓名\t性別\t 語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) C語(yǔ)言成績(jī) 總分\n");</p><p> printf("%d\t%s\t%s\t %d %d %d %d %d\n",p->num,</p><p> p->name,p->sex ,p-&g
83、t;score[0],p->score[1],p->score[2],p->score[3],p->sum);</p><p> printf("\n\n請(qǐng)輸入你還要查詢(xún)的學(xué)生的姓名,輸入0表示不按姓名查詢(xún)了:");</p><p> scanf("%s",tem);</p><p><b&g
84、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> else if (choose==0) {printf("\n你選擇了不查詢(xún)!\n");break;}</p><p> else {printf
85、("\n你以其他方式選擇了不查詢(xún)!\n");break;}</p><p><b> }</b></p><p><b> }</b></p><p> Student *add_new(Student *head) /*定義插入函數(shù)*/</p><p><b>
86、 {</b></p><p> Student *p;</p><p><b> int flag;</b></p><p> printf("\n\n請(qǐng)輸入你要新加入學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:");</p><p> scanf("%d",&
87、flag);</p><p> while(getchar()!='\n');</p><p> for(;flag;)</p><p><b> {</b></p><p> p=(Student *)malloc(LEN);</p><p> p->num=fl
88、ag;</p><p> printf("請(qǐng)輸入新加入學(xué)生的姓名:",n); /*輸入姓名*/</p><p> scanf("%s",p->name);</p><p> printf("請(qǐng)輸入新加入學(xué)生的性別:"); /*輸入性別*/</p><p> scanf(
89、"%s",p->sex);</p><p> printf("請(qǐng)輸入新加入學(xué)生的語(yǔ)文成績(jī):",n); /*輸入語(yǔ)文成績(jī)*/</p><p> scanf("%d",&p->score[0]);</p><p> printf("請(qǐng)輸入新加入學(xué)生的數(shù)學(xué)成績(jī):",n
90、); /*輸入數(shù)學(xué)成績(jī)*/</p><p> scanf("%d",&p->score[1]);</p><p> printf("請(qǐng)輸入新加入學(xué)生的英語(yǔ)成績(jī):",n); /*輸入英語(yǔ)成績(jī)*/</p><p> scanf("%d",&p->score[2]);</p
91、><p> printf("請(qǐng)輸入新加入學(xué)生的C語(yǔ)言成績(jī):",n); /*輸入英語(yǔ)成績(jī)*/</p><p> scanf("%d",&p->score[3]);</p><p> p->sum=p->score[0]+p->score[1]+p->score[2]+p->score
92、[3];</p><p> p->next=head->next;</p><p> head->next=p;</p><p><b> n++;</b></p><p> printf("\n請(qǐng)輸入還要加入學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:");</p>
93、<p> scanf("%d",&flag);</p><p><b> }</b></p><p> head=sort_1(head,1);</p><p> printf("加入后的成績(jī)表為:\n");</p><p> print(head)
94、;</p><p> return head;</p><p><b> }</b></p><p> void print(Student *head)</p><p><b> {</b></p><p> Student *p=head->next;&l
95、t;/p><p> if (!p) {printf("\n\n此系統(tǒng)目前沒(méi)有任何學(xué)生數(shù)據(jù)!\n\n\n");return;}</p><p> printf("此系統(tǒng)目前共計(jì)學(xué)生%d名:\n",n);</p><p> printf("&&&&&&&&
96、&&&&&&&&&&&&&&&&&&學(xué)生成績(jī)統(tǒng)計(jì)一覽&&&&&&&&&&&&&&&&&&&&&&&&&a
97、mp;&&&\</p><p> &&&&&\n");</p><p> printf("學(xué)號(hào)\t姓名\t性別\t 語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) C語(yǔ)言成績(jī)總分\n");</p><p> for(;p;p=p->next)</p><
98、;p> printf("%d\t%s\t%s\t %d %d %d %d %d\n",</p><p> p->num,p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->score[3],p->sum=p->score[0
99、]+p->score[1]+p->score[2]+p->score[3]);</p><p><b> }</b></p><p> struct student *del(struct student *head,long num) /*定義刪除學(xué)生信息函數(shù)*/</p><p> {struct student *p
100、1,*p2;</p><p> if(head==NULL) {printf("\nlist null! \n");return head;}</p><p><b> p1=head;</b></p><p> while(num!=p1->num && p1->next!=NULL)&l
101、t;/p><p> {p2=p1;p1=p1->next;}</p><p> if(num==p1->num)</p><p> {if(p1==head)head=p1->next;</p><p> else p2->next=p1->next;</p><p> printf
102、("delete:%ld\n",num);</p><p><b> n=n-1;</b></p><p><b> }</b></p><p> else printf("%ld not deen found! \n",num);</p><p>
103、return(head);</p><p><b> }</b></p><p> int main()/*主函數(shù)即用戶(hù)的操作界面*/</p><p><b> {</b></p><p> Student *head;</p><p> int choose,i,
104、num; /*聲明局部變量*/</p><p> head=(Student *)malloc(LEN);</p><p> head->next=NULL;</p><p><b> for(;;)</b></p><p><b> {</b></p><p>
105、; printf("\n\t\t* * * * * 學(xué)生成績(jī)管理系統(tǒng) * * * * * *\n"); /*學(xué)生成績(jī)管理系統(tǒng)*/</p><p> printf("\t\t*\t1.學(xué)生數(shù)據(jù)鍵盤(pán)錄入\t *\n"); /*.學(xué)生數(shù)據(jù)鍵盤(pán)錄入*/</p><p> printf("\t\t*\t2.學(xué)生數(shù)據(jù)統(tǒng)計(jì)排序和計(jì)算\
106、t*\n"); /*學(xué)生數(shù)據(jù)統(tǒng)計(jì)排序*/</p><p> printf("\t\t*\t3.查詢(xún)學(xué)生數(shù)據(jù)\t\t *\n"); /*.查詢(xún)學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t4.插入學(xué)生數(shù)據(jù)\t\t *\n"); /*插入學(xué)生數(shù)據(jù)*/</p><p> p
107、rintf("\t\t*\t5.顯示當(dāng)前成績(jī)表\t *\n"); /*顯示當(dāng)前成績(jī)表*/</p><p> printf("\t\t*\t6.刪除學(xué)生數(shù)據(jù)\t\t *\n"); /*刪除學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t0.退出成績(jī)管理系統(tǒng)\t *\n");
108、 /*退出成績(jī)管理系統(tǒng)*/</p><p> printf("\n請(qǐng)輸入你要執(zhí)行的操作:"); /*請(qǐng)輸入你要執(zhí)行的操作*/</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> s
109、witch(choose)</p><p><b> {</b></p><p> case 1:printf("\n\t\t\t\t&&&&&&&&&&&&&注意&&&&&&&&&
110、;&&&&&");</p><p> printf("\n\n 此選項(xiàng)將會(huì)建立新的學(xué)生數(shù)據(jù)系統(tǒng) ,原來(lái)的數(shù)據(jù)將\</p><p> 不再存在,你確信要?jiǎng)h除原來(lái)的數(shù)據(jù)并建立新的數(shù)據(jù)系統(tǒng)么?\n\n");</p><p> printf("1、建立新的數(shù)據(jù)系統(tǒng);0、放棄建立新的數(shù)
111、據(jù)系統(tǒng)。\n\n");</p><p> printf("請(qǐng)選擇:");</p><p> scanf("%d",&i);</p><p> if (i==1) {head=cin();print(head);break;}</p><p> else if (i==0)<
112、;/p><p><b> {</b></p><p> printf("\n選擇了放棄建立新的數(shù)據(jù)系統(tǒng)!\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b&
113、gt; else {</b></p><p> printf("\n請(qǐng)做出別的選擇,當(dāng)作放棄建立!\n");</p><p><b> break;</b></p><p><b> }</b></p><p> case 2:head=sort_all(h
114、ead);break; /*調(diào)用排序函數(shù)*/</p><p> case 3:find(head);break; /*調(diào)用查詢(xún)函數(shù)*/</p><p> case 4:head=add_new(head); /*調(diào)用插入函數(shù)*/</p><p> case 5:print(head);break; /*調(diào)用顯示函數(shù)*/</p><p>
115、 case 6:printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):");</p><p> scanf("%d",&num);</p><p> del(head,num);break; /*調(diào)用刪除函數(shù)*/</p><p> case 0:system("pause");return 0; /*退出
116、系統(tǒng)*/</p><p> default: printf("\n\n您的輸入有誤!請(qǐng)重新輸入:\n\n");break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)--學(xué)生成績(jī)排名系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生成績(jī)排名系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績(jī)排名系統(tǒng)
- 成績(jī)排名證明
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng) 課程設(shè)計(jì)
- 課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 成績(jī)排名證明模板
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)9
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)10
- vfp課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論