學(xué)生成績(jī)排名系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩31頁(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)介

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

評(píng)論

0/150

提交評(píng)論