2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《程序設(shè)計基礎(chǔ)》課程設(shè)計</p><p>  ------學(xué)生成績排名系統(tǒng)</p><p>  課程設(shè)計的目的和要求</p><p>  高級語言課程設(shè)計的主要目的是培養(yǎng)學(xué)生能夠提高綜合應(yīng)用語言的能力,通過課程設(shè)計的訓(xùn)練,使學(xué)生能及時鞏固已學(xué)的知識,補充未學(xué)的但有必要的內(nèi)容,掌握應(yīng)用計算機解決實際問題的基本方法,熟悉程序開發(fā)的全過程,提高綜合應(yīng)

2、用語言的能力。高級語言程序設(shè)計的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運用結(jié)構(gòu)程序設(shè)計的方法按照課程設(shè)計的題目要求,分析,編寫,調(diào)試和測試高級語言程序及編寫設(shè)計報告。</p><p>  1.1課程設(shè)計的目的</p><p>  1.鞏固和掌握高級語言程序設(shè)計基本概念;</p><p>  2.掌握基本的程序設(shè)計方法;</p><p>

3、;  3.掌握開發(fā)軟件所需的需求定義能力;</p><p>  4.提高書寫程序設(shè)計說明文檔的能力;</p><p>  5.提高綜合運用高級語言的能力,強化編程和調(diào)試能力。</p><p>  1.2 課程設(shè)計的基本要求</p><p>  1.根據(jù)所給的課程設(shè)計題目,分析課程設(shè)計題目的要求;</p><p>  2

4、.對系統(tǒng)功能模塊進(jìn)行分析,寫出詳細(xì)的設(shè)計說明文檔;</p><p>  3.編寫程序代碼,調(diào)試所編寫程序使其能正確運行;</p><p>  4.設(shè)計完成的軟件便于完成和使用;</p><p>  5.設(shè)計完成后提交課程設(shè)計報告;</p><p><b>  課程設(shè)計任務(wù)內(nèi)容</b></p><p&g

5、t;<b>  2.1 考核內(nèi)容</b></p><p>  2.1.1 編寫的C++語言程序</p><p>  ●針對編寫的C++程序,應(yīng)該主要考查下列內(nèi)容:</p><p>  ●是否符合題目要求,是否完成了主要功能;</p><p>  ●是否存在語法錯誤、邏輯錯誤及運行錯誤;</p><p&

6、gt;  ●程序設(shè)計是否合理;</p><p>  ●程序是否具有良好的可讀性和可靠性;</p><p>  ●是否符合結(jié)構(gòu)化程序設(shè)計所倡導(dǎo)的基本理念;</p><p>  ●用戶界面是否友好。</p><p>  2.1.2 課程設(shè)計報告</p><p>  ●針對提交的課程設(shè)計報告,應(yīng)該主要考查下列內(nèi)容:</

7、p><p>  ●程序設(shè)計的報告內(nèi)容是否全面,觀點是否正確;</p><p>  ●設(shè)計過程是否符合結(jié)構(gòu)化程序設(shè)計方法的基本原則;</p><p>  ●層次是否清楚,語言是否通順;</p><p>  ●各種圖表是否規(guī)范;是否具有良好的程序設(shè)計習(xí)慣。</p><p><b>  2.2 課題</b>

8、</p><p>  10、學(xué)生信息管理系統(tǒng)設(shè)計</p><p><b>  實現(xiàn)以下功能:</b></p><p>  1) 系統(tǒng)以菜單方式工作;</p><p>  2) 學(xué)生信息錄入功能(學(xué)生信息用文件保存);</p><p>  3) 學(xué)生信息瀏覽功能;</p><p&

9、gt;  4) 查詢、排序功能(至少兩種查詢依據(jù)和兩種排序依據(jù));</p><p>  5) 學(xué)生信息刪除、修改功能。</p><p>  備注:學(xué)生信息包括:學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-mail等。</p><p><b>  詳細(xì)設(shè)計說明</b></p><p><b>  3.1 模

10、板設(shè)計圖</b></p><p>  該系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊如圖3-1所示:</p><p>  圖3-1 模板設(shè)計圖</p><p><b>  其中:</b></p><p><b>  1.學(xué)生成績錄入</b></p><p>  2..增加學(xué)

11、生成績記錄模塊可以完成學(xué)生成績的輸入,輸入信息包括班級、學(xué)號、姓名、課程名、成績。</p><p>  3 .刪除學(xué)生成績記錄模塊可以完成學(xué)生成績的刪除。</p><p>  4.查詢學(xué)生成績記錄模塊可以完成學(xué)生成績的查詢,可以通過輸入姓名、學(xué)號</p><p>  或者是課程 名來查詢學(xué)生成績。 </p><p>  5.學(xué)生成績排序模塊可

12、以完成對學(xué)生成績的排序,按照成績的高低來進(jìn)行排</p><p><b>  序。</b></p><p>  3.2 函數(shù)模塊、功能分析、參數(shù)說明</p><p>  1.增加學(xué)生成績記錄模塊(void Manage::add( ))</p><p>  對應(yīng)于總體設(shè)計時的系統(tǒng)功能模塊圖,各個功能模塊的處理邏輯如下:&l

13、t;/p><p>  主要完成將數(shù)據(jù)存入單鏈表中的工作。在這次增加學(xué)生成績記錄中,記錄可以從二進(jìn)制形式存儲的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個讀入學(xué)生記錄。如圖3-2所示:圖3-2 增加學(xué)生成績記錄流程圖.</p><p>  2.刪除學(xué)生成績記錄模塊(void Manage::del( ))</p><p>  要刪除某個學(xué)生的信息,就要從磁盤文件中將所有同學(xué)信息讀

14、出來,然后除要刪除的學(xué)生外,其它的所有記錄再重新存入原來的磁盤文件中,如圖3-3所示:</p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖3-3 刪除學(xué)生成績記錄流程圖</p><p>  3..查詢學(xué)生成績記錄模塊(void Manage::se

15、arch( ))</p><p>  主要完成在單鏈表中查找滿足相關(guān)條件的學(xué)生記錄。用戶可以按照學(xué)生的 學(xué)號、姓名或課程名在單鏈表中進(jìn)行查找。未找到輸出提示信息,如圖3-4所示:</p><p>  圖3-4 查詢學(xué)生成績記錄流程圖</p><p>  4.學(xué)生成績排序模塊</p><p>  主要完成按照成績的高低來進(jìn)行排序,如圖3

16、-6所示:</p><p>  圖3-6 學(xué)生成績排序流程圖</p><p><b>  3.3 函數(shù)流程圖</b></p><p>  系統(tǒng)首先進(jìn)入歡迎界面并提示用戶輸入不同的阿拉伯?dāng)?shù)字會進(jìn)行不同的操作。在用戶做出選擇后,根據(jù)用戶輸入的阿拉伯?dāng)?shù)字,程序?qū)⒄{(diào)用相應(yīng)的功能模塊,實現(xiàn)用戶要進(jìn)行的操作。完成一次用戶的操作后,再回到歡迎界面,等待用戶再

17、做出選擇,再調(diào)用相應(yīng)的功能模塊……,知道用戶在歡迎界面選擇了退出,該系統(tǒng)結(jié)束,終止執(zhí)行,如圖3-7所示:</p><p>  圖3-7 函數(shù)流程圖</p><p><b>  編碼與調(diào)試</b></p><p><b>  4.1 軟件與測試</b></p><p>  打開軟件后,界面會出現(xiàn)你所

18、需要的功能,根據(jù)你要進(jìn)行的操作來選擇。</p><p>  4.2 運行結(jié)果及截圖</p><p>  1.此圖為程序運行成功后,出現(xiàn)的界面,此為主菜單界面,可依據(jù)界面執(zhí) </p><p>  行。如圖4-1所示:</p><p>  2.首先錄入學(xué)生成績記錄,輸入學(xué)生的班級、學(xué)號、姓名、課程名、成績,如圖4-2所示:</p>

19、<p>  圖4-2 錄入學(xué)生成績記錄</p><p>  3返回主菜單,選擇相應(yīng)的操作,對學(xué)生成績進(jìn)行排序和相應(yīng)的查詢,如圖4-3所示:</p><p>  圖4-3 學(xué)生成績排序</p><p>  4.返回主菜單,進(jìn)行查詢學(xué)生成績記錄操作,如圖4-4所示:</p><p>  圖4-4 學(xué)生成績排序</p>&l

20、t;p>  5.返回主菜單,進(jìn)行對學(xué)生成員進(jìn)行增加。如圖4-5所示:</p><p>  圖4-5 查詢學(xué)生成績</p><p>  6.返回主菜單,進(jìn)行刪除學(xué)生成績記錄操作,按照學(xué)號來刪除學(xué)生信息,如圖4-6所示:</p><p>  圖4-6 刪除學(xué)生成績記錄</p><p><b>  課程設(shè)計心得與體會</b&g

21、t;</p><p>  本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力量是有限的,要想把課程設(shè)計做的更好,就要學(xué)會參考一定的資料,吸取別人的經(jīng)驗,讓自己和別人的思想有機的結(jié)合起來,得出屬于你自己的靈感。</p><p>  在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要

22、性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。程序的編寫需要有耐心,有些事情看起來很復(fù)雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。</p><p>  在這段時間里,一直修改著相應(yīng)的程序,并且嘗試著調(diào)試 各種運

23、行結(jié)果。終于,在自己的努力下,課程設(shè)計還算是有點起色。經(jīng)過這次的編程,我學(xué)會了很多東西。比如說,如何在網(wǎng)上查找一些有用的東西,如何設(shè)計自己的目標(biāo),如何規(guī)劃好自己的學(xué)習(xí)時間,如何讓自己的思想應(yīng)用到程序的編程過程中去,如何合理運用各種資源來提高自己的編程甚至是學(xué)習(xí)的能力。另外,還有幾點,我深有感觸,就是我還問了別人怎樣在Word文檔中截圖、怎樣擴大或縮小圖片等等。總之,收獲真的是挺大的。</p><p>  通過這段

24、時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。</p><p>  這次的課程設(shè)計我對于專業(yè)課的學(xué)習(xí)有了更加深刻的認(rèn)識,以為現(xiàn)在學(xué)的知識用不上就加以怠慢,等到想用的時候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來是那么的不扎實。以后努力學(xué)好每門專業(yè)課,讓自己擁有更多的知識,才能解決更多的問題!

25、 </p><p>  總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進(jìn)一步的理解和認(rèn)識。</p><p>  不管怎么說,這次C++課程設(shè)計不僅給了我提高編程的能力的機會,而且讓我的綜合素質(zhì)得到了一個全面的發(fā)展。我相信,這樣的日子一定能成為我以后生活中一段美好的回憶。</p><p><b>  附錄一 參考文獻(xiàn)</b></p&g

26、t;<p>  [1]譚浩強著《C++程序設(shè)計》,清華大學(xué)出版社 </p><p>  [2]嚴(yán)蔚敏、吳偉民編著 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,清華大學(xué)出版社 </p><p>  [3]王杰《數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法實現(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é)號*/</p><p>  char name[20]; /*姓名*/</p&g

29、t;<p>  char sex[2]; /*性別*/</p><p>  int score[4]; /*成績*/</p><p>  int sum; /*總成績*/</p><p>  struct student *next;</p><p><b>  }Student;</b></p>

30、;<p>  int n; /*聲明一個全局變量*/</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é)號排序函數(shù)*/</p><p>  void sort_2(Student *head); /*聲明按總分排序函數(shù)*/</p><p>  void print(Student *head); /*聲明顯示函數(shù)*/</p><p>  void find(Student *head); /*聲明查詢函數(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請輸入第%

34、d名學(xué)生的學(xué)號,學(xué)號為0表示結(jié)束輸入:",n+1);</p><p>  scanf("%d",&flag);</p><p>  while(getchar()!='\n');</p><p>  for(;flag;) /*輸入每個學(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("請輸入第%d名學(xué)生的姓名:&quo

36、t;,n); /*輸入姓名*/</p><p>  scanf("%s",p1->name);</p><p>  printf("請輸入第%d學(xué)生的性別:",n); /*輸入性別*/</p><p>  scanf("%s",p1->sex);</p><p>  pr

37、intf("請輸入第%d名學(xué)生的語文成績:",n); /*輸入語文成績*/</p><p>  scanf("%d",&p1->score[0]);</p><p>  printf("請輸入第%d名學(xué)生的數(shù)學(xué)成績:",n); /*輸入數(shù)學(xué)成績*/</p><p>  scanf("

38、%d",&p1->score[1]);</p><p>  printf("請輸入第%d名學(xué)生的英語成績:",n); /*輸入英語成績*/</p><p>  scanf("%d",&p1->score[2]);</p><p>  printf("請輸入第%d名學(xué)生的C語言成績

39、:",n); /*輸入C語言成績*/</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;/*將后一個節(jié)點指向當(dāng)前節(jié)點*/</p><p>  p2=p1;/*讓p2成為當(dāng)前節(jié)點*/</p><p>  printf("\n請輸入第%d名學(xué)生的學(xué)號,沒有此學(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é)生成績統(tǒng)計排序 & & & & &\n");</p><p>  printf("\t\t&\t1.按學(xué)生學(xué)號排序\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é)生成績\t &\n");</p><p>  printf(

45、"\t\t&\t0.返回上一級菜單\t &\n");</p><p>  printf("請輸入你要執(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您的輸入錯誤!請重新輸入:\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é)號排序函數(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排序后的成績表為:\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) /*定義查詢函

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)沒有任何學(xué)生數(shù)據(jù)!\n

70、");return;}</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  printf("\n請輸入您要查詢學(xué)生的方式:\n\n");</p><p>  printf("1、按學(xué)號查詢;2、按姓名

71、查詢;0、我不查詢了。\n\n");</p><p>  printf("請選擇:");</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請輸入你要查詢的學(xué)生的學(xué)號,輸入0退出學(xué)號查詢:");</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找不到你要查詢的學(xué)號,請重新輸入,輸入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é)號為%d學(xué)生的數(shù)據(jù)為:\n",p->num);</p><p>  printf("學(xué)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績 總分\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請輸入你還要查詢的學(xué)生的學(xué)號,輸入0表示不按學(xué)號查詢了:");</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請輸入你要查詢的學(xué)生的姓名,輸入0退出姓名查詢:");</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找不到你要查詢的姓名,請重新輸入,輸入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é)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績 總分\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請輸入你還要查詢的學(xué)生的姓名,輸入0表示不按姓名查詢了:");</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你選擇了不查詢!\n");break;}</p><p>  else {printf

85、("\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請輸入你要新加入學(xué)生的學(xué)號,學(xué)號為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("請輸入新加入學(xué)生的姓名:",n); /*輸入姓名*/</p><p>  scanf("%s",p->name);</p><p>  printf("請輸入新加入學(xué)生的性別:"); /*輸入性別*/</p><p>  scanf(

89、"%s",p->sex);</p><p>  printf("請輸入新加入學(xué)生的語文成績:",n); /*輸入語文成績*/</p><p>  scanf("%d",&p->score[0]);</p><p>  printf("請輸入新加入學(xué)生的數(shù)學(xué)成績:",n

90、); /*輸入數(shù)學(xué)成績*/</p><p>  scanf("%d",&p->score[1]);</p><p>  printf("請輸入新加入學(xué)生的英語成績:",n); /*輸入英語成績*/</p><p>  scanf("%d",&p->score[2]);</p

91、><p>  printf("請輸入新加入學(xué)生的C語言成績:",n); /*輸入英語成績*/</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請輸入還要加入學(xué)生的學(xué)號,沒有此學(xué)生則輸入0表示結(jié)束:");</p>

93、<p>  scanf("%d",&flag);</p><p><b>  }</b></p><p>  head=sort_1(head,1);</p><p>  printf("加入后的成績表為:\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)目前沒有任何學(xué)生數(shù)據(jù)!\n\n\n");return;}</p><p>  printf("此系統(tǒng)目前共計學(xué)生%d名:\n",n);</p><p>  printf("&&&&&&&&

96、&&&&&&&&&&&&&&&&&&學(xué)生成績統(tǒng)計一覽&&&&&&&&&&&&&&&&&&&&&&&&&a

97、mp;&&&\</p><p>  &&&&&\n");</p><p>  printf("學(xué)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績總分\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ù)即用戶的操作界面*/</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é)生成績管理系統(tǒng) * * * * * *\n"); /*學(xué)生成績管理系統(tǒng)*/</p><p>  printf("\t\t*\t1.學(xué)生數(shù)據(jù)鍵盤錄入\t *\n"); /*.學(xué)生數(shù)據(jù)鍵盤錄入*/</p><p>  printf("\t\t*\t2.學(xué)生數(shù)據(jù)統(tǒng)計排序和計算\

106、t*\n"); /*學(xué)生數(shù)據(jù)統(tǒng)計排序*/</p><p>  printf("\t\t*\t3.查詢學(xué)生數(shù)據(jù)\t\t *\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)前成績表\t *\n"); /*顯示當(dāng)前成績表*/</p><p>  printf("\t\t*\t6.刪除學(xué)生數(shù)據(jù)\t\t *\n"); /*刪除學(xué)生數(shù)據(jù)*/</p><p>  printf("\t\t*\t0.退出成績管理系統(tǒng)\t *\n");

108、 /*退出成績管理系統(tǒng)*/</p><p>  printf("\n請輸入你要執(zhí)行的操作:"); /*請輸入你要執(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 此選項將會建立新的學(xué)生數(shù)據(jù)系統(tǒng) ,原來的數(shù)據(jù)將\</p><p>  不再存在,你確信要刪除原來的數(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("請選擇:");</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請做出別的選擇,當(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)用查詢函數(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("請輸入要刪除的學(xué)生學(xué)號:");</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您的輸入有誤!請重新輸入:\n\n");break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&

溫馨提示

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

評論

0/150

提交評論