數(shù)據(jù)結(jié)構(gòu)運動會分數(shù)統(tǒng)計課程設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計 目錄</p><p>  需求分析------------------------------------------------------2 </p><p>  1.1問題描述-----------------------------------------------------------2

2、</p><p>  1.2基本任務(wù)-----------------------------------------------------------2</p><p>  概要設(shè)計------------------------------------------------------2</p><p>  2.1主界面設(shè)計-----------------

3、----------------------------------------2</p><p>  2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計-------------------------------------------------------3</p><p>  2.3系統(tǒng)功能設(shè)計-------------------------------------------------------3<

4、;/p><p>  模塊設(shè)計------------------------------------------------------3</p><p>  3.1模塊設(shè)計-----------------------------------------------------------3</p><p>  3.2系統(tǒng)子模塊及功能設(shè)計---------------

5、--------------------------------4</p><p>  3.3系統(tǒng)模塊之間的調(diào)用關(guān)系---------------------------------------------4</p><p>  詳要設(shè)計------------------------------------------------------5</p><p> 

6、 4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計-------------------------------------------------------5</p><p>  4.2系統(tǒng)主要模塊設(shè)計---------------------------------------------------6</p><p>  調(diào)試分析-----------------------------------------

7、-------------8</p><p>  5.1創(chuàng)建學(xué)校鏈表-------------------------------------------------------8</p><p>  5.2添加獲獎學(xué)生-------------------------------------------------------8</p><p>  5.3按項目查

8、學(xué)校成績---------------------------------------------------11</p><p>  5.4按學(xué)校編號查參加項目-----------------------------------------------14</p><p>  用戶使用說明-------------------------------------------------

9、-15</p><p>  參考文獻------------------------------------------------------15</p><p>  對軟件自我評價------------------------------------------------15</p><p>  程序設(shè)計源代碼------------------------

10、------------------------16</p><p>  心得體會-----------------------------------------------------22</p><p><b>  一.需求分析</b></p><p><b>  1.1 問題描述</b></p>&l

11、t;p>  課程設(shè)計題目:運動會分數(shù)統(tǒng)計。</p><p><b>  任務(wù):</b></p><p>  加運動會有n個學(xué)校,學(xué)校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生

12、自己設(shè)定。(m<=20,n<=20)</p><p><b>  問題分析:</b></p><p>  1)、每個學(xué)校有運動員要參加運動項目,故存儲結(jié)構(gòu)要有三個,項目結(jié)構(gòu)體,學(xué)生信息結(jié)構(gòu)體和學(xué)校鏈表。每個結(jié)點存儲一個學(xué)校,每個學(xué)??梢杂卸嗝\動員參加運動項目。由此,存儲結(jié)構(gòu)就建立了。</p><p>  2)、要求不同的項目根據(jù)具

13、體情況取去前五名或前三名積分,則可以設(shè)定標準,即當參加某項目的運動員數(shù)等于或多于五人時,就取該項目的前五名進行積分,取前五名的積分分別為:7,5,3,2,1。當參加某一項目的人數(shù)少于五人時,則去該項目的前三名進行積分,去取前三名的積分分別為:5,3,2。</p><p>  3)、要求能統(tǒng)計學(xué)校的總分,并可以按學(xué)校編號輸出每個學(xué)校的參賽信息及每個學(xué)校每個運動員的信息和所有運動項目清單。以上這些功能可以通過遍歷學(xué)校

14、鏈表來實現(xiàn)。</p><p>  4)、要求可以學(xué)校編號查詢學(xué)校某個項目的情況,用戶輸入學(xué)校編號和項目編號,通過遍歷學(xué)校鏈表即可實現(xiàn)。</p><p>  5)、要求可以按編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校,用戶輸入要查詢的項目的編號,通過遍歷學(xué)校鏈表即可實現(xiàn)。</p><p>  6)、設(shè)置菜單函數(shù)menu(),產(chǎn)生用戶界面。</p><p>

15、<b>  規(guī)定:</b></p><p>  輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運動項目的名稱  </p><p>  輸出形式:有中文提示,各學(xué)校分數(shù)為整形  界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。</p><p>  存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求運動會的相關(guān)數(shù)據(jù)要存

16、儲在數(shù)據(jù)文件中。</p><p>  測試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進行程序測試,以保證程序的穩(wěn)定。</p><p><b>  1.2 基本任務(wù)</b></p><p>  通過用戶調(diào)查分析及實際需求,系統(tǒng)需要實現(xiàn)如下基本任務(wù):</p><p>  .輸入各個項目的前三名或前五

17、名的成績;</p><p>  .統(tǒng)計各學(xué)??偡?  3).按學(xué)校編號或名稱、男女團體總分排序輸出;  4).按學(xué)校編號查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。數(shù)據(jù)存入文件并能隨時查詢。</p><p><b>  二.概要設(shè)計</b></p><p>  為了完成需求分析的基本任務(wù),主要從以下3個方面進行設(shè)計:&

18、lt;/p><p><b>  2.1 主界面設(shè)計</b></p><p>  為了實現(xiàn)運動會分數(shù)統(tǒng)計的各項功能,設(shè)計了一個含有多個菜單項的主控菜單模塊以鏈接系統(tǒng)的各項功能,以方便用戶使用系統(tǒng)。系統(tǒng)主控菜單運行界面如圖1所示:</p><p>  圖1 運動會分數(shù)統(tǒng)計主菜單</p><p>  2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計</

19、p><p>  系統(tǒng)采用數(shù)據(jù)的存儲結(jié)構(gòu)定義:運動項目結(jié)構(gòu)體、 運動員信息結(jié)構(gòu)體、學(xué)校鏈表</p><p>  此外,還定義了一些全局變量:學(xué)??倲?shù)SchoolCount、男生項目總數(shù)BoyProject、女生項目總數(shù)GirlProject、項目總數(shù)TotalProject、項目表Project_T[41]。</p><p>  2.3 系統(tǒng)功能設(shè)計</p>

20、<p> ?、牛畡?chuàng)建學(xué)校的鏈表:</p><p>  void CreatSchoolLink(School &head);</p><p><b>  ⑵.添加獲獎學(xué)生:</b></p><p>  void AddStudentLink(School &head);</p><p>  ⑶

21、.按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p>  void Find_Project_ID(School &head,int Project_ID);</p><p>  ⑷.按學(xué)校編號查詢學(xué)校某個項目。</p><p>  void Find_School_Project(School &head,int School_ID,int P

22、roject_ID);</p><p><b> ?、桑煽兘y(tǒng)計:</b></p><p>  void ScoreCount(School &head);</p><p><b> ?、剩敵鰠①惤Y(jié)果:</b></p><p>  void OutPut_Link(School head)

23、;</p><p><b>  .添加學(xué)生數(shù)據(jù):</b></p><p>  void AddStudent(School &head);</p><p><b>  (8).菜單函數(shù):</b></p><p>  int menu();</p><p><b&

24、gt;  (9).主函數(shù):</b></p><p>  int main();</p><p><b>  三.模塊設(shè)計</b></p><p><b>  3.1 模塊設(shè)計</b></p><p>  系統(tǒng)主要包含主程序模塊和其它鏈表操作模塊。其調(diào)用關(guān)系如圖2所示。</p>

25、<p>  圖2 模塊調(diào)用示意圖</p><p>  3.2 系統(tǒng)子模塊及其功能設(shè)計</p><p>  系統(tǒng)設(shè)計了8個子功能模塊,8個子功能模塊的描述如下:</p><p> ?、牛畡?chuàng)建學(xué)校的鏈表:</p><p>  void CreatSchoolLink(School &head);</p><

26、;p><b>  ⑵.添加獲獎學(xué)生:</b></p><p>  void AddStudentLink(School &head);</p><p> ?、牵错椖烤幪柌樵?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p>  void Find_Project_ID(School &head,int Project_ID);&l

27、t;/p><p> ?、龋磳W(xué)校編號查詢學(xué)校某個項目。</p><p>  void Find_School_Project(School &head,int School_ID,int Project_ID);</p><p><b>  ⑸.成績統(tǒng)計:</b></p><p>  void ScoreCount(

28、School &head);</p><p><b> ?、剩敵鰠①惤Y(jié)果:</b></p><p>  void OutPut_Link(School head);</p><p><b>  .添加學(xué)生數(shù)據(jù):</b></p><p>  void AddStudent(School &a

29、mp;head);</p><p><b>  (8).菜單函數(shù):</b></p><p>  int menu();</p><p>  3.3 系統(tǒng)模塊之間的調(diào)用關(guān)系</p><p>  系統(tǒng)的10個子模塊之間的主要調(diào)用關(guān)系如圖3所示:</p><p>  圖3 系統(tǒng)函數(shù)調(diào)用關(guān)系圖</p

30、><p><b>  四.詳細設(shè)計</b></p><p>  4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計</p><p>  系統(tǒng)采用線性表的鏈式存儲結(jié)構(gòu)存儲學(xué)校信息。結(jié)點定義如下:</p><p>  typedef struct SchoolNode</p><p>  {int number;//學(xué)校編號</

31、p><p>  char name[10];</p><p>  int count;//運動員人數(shù)</p><p>  int boyscore;//男子團體總分</p><p>  int girlscore;//女子團體總分</p><p>  int totalscore;//團體總分</p><

32、;p>  int jifen;//積分</p><p>  Student students[20];//參賽學(xué)生</p><p>  struct SchoolNode *next;</p><p>  }SchoolNode,*School;</p><p>  4.2 系統(tǒng)主要模塊設(shè)計</p><p>  

33、創(chuàng)建學(xué)校鏈表算法思想及程序代碼:</p><p>  void CreatSchoolLink(School &head)</p><p>  {//創(chuàng)建學(xué)校的鏈表</p><p><b>  School p;</b></p><p><b>  int i;</b></p>

34、<p>  head=p=(School)malloc(sizeof(SchoolNode));</p><p>  for(i=1;i<=SchoolCount;i++)</p><p>  { p=p->next=(School)malloc(sizeof(SchoolNode));</p><p>  printf("請輸入編

35、號為%d的學(xué)校的名稱:\n",i);</p><p>  scanf("%s",p->name);</p><p>  p->number=i;</p><p>  p->count=0;</p><p>  p->boyscore=0;</p><p>  p-&

36、gt;girlscore=0;</p><p>  p->totalscore=0;</p><p>  p->jifen=0;</p><p><b>  }</b></p><p>  p->next=NULL;//使指針指向空</p><p>  head=head->

37、;next;//頭指針后移</p><p><b>  }</b></p><p>  添加獲獎學(xué)生函數(shù)程序代碼:</p><p>  void AddStudentLink(School &head)</p><p><b>  {//添加獲獎學(xué)生</b></p><p

38、>  School L,p;</p><p>  int School_ID; //學(xué)校編號</p><p>  char StudentName[20]; //學(xué)生姓名</p><p>  int sex;//性別</p><p>  int Project_ID; //項目編號</p><p>  int

39、 score; //成績</p><p>  int ranking; //名次</p><p>  printf("請輸入學(xué)生的姓名:\n");</p><p>  scanf("%s",StudentName);</p><p>  printf("請輸入該學(xué)生所在學(xué)校的編號:\n&

40、quot;);</p><p>  scanf("%d",&School_ID);</p><p>  printf("請輸入該學(xué)生的性別(0--女,--男):\n");</p><p>  scanf("%d",&sex);</p><p>  printf(&qu

41、ot;請輸入該學(xué)生參加的項目編號:\n");</p><p>  scanf("%d",&Project_ID);</p><p>  if(sex==0) GirlProject=Project_ID;</p><p>  if(sex==1) BoyProject=Project_ID;</p><p&g

42、t;  printf("請輸入該學(xué)生該項目的得分:\n");</p><p>  scanf("%d",&score);</p><p>  printf("請輸入該學(xué)生在該項目中的名次:\n");</p><p>  scanf("%d",&ranking);</

43、p><p><b>  L=head;</b></p><p><b>  while(L)</b></p><p>  { if(L->number==School_ID)</p><p><b>  { p=L;</b></p><p>  p

44、->count=p->count+1; //運動員數(shù)+1</p><p>  strcpy(p->students[p->count].name, StudentName); //學(xué)生姓名</p><p>  p->students[p->count].Project=Project_ID ;//得分項目</p><p>  P

45、roject_T[Project_ID].count=Project_T[Project_ID].count+1; //該項目得分人數(shù)+1</p><p>  p->students[p->count].ranking=ranking;//得分名次</p><p>  p->students[p->count].score=score;//得分</p>

46、<p>  p->students[p->count].sex=sex; //性別</p><p><b>  break;</b></p><p><b>  }</b></p><p>  else L=L->next;</p><p><b>  }

47、</b></p><p><b>  }</b></p><p>  按學(xué)校項目查詢前三名和前五名學(xué)校函數(shù)程序代碼:</p><p>  void Find_Project_ID(School &head,int Project_ID){ //按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p> 

48、 School h,p;</p><p>  p=h=head; //保存鏈表頭指針</p><p><b>  int i;</b></p><p>  printf("查詢結(jié)果如下:\n");</p><p><b>  while(h){</b></p>&

49、lt;p>  for(i=1;i<=h->count;i++)</p><p>  { if(h->students[i].Project==Project_ID)</p><p>  { printf("學(xué)校:%s 姓名:%s 名次:%d\n",h->name,h->students[i].name,h->stu

50、dents[i].ranking);</p><p>  printf("\n--------------------------------------\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  h=h->

51、;next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  按學(xué)校編號查詢學(xué)校的某個項目程序代碼:</p><p>  void Find_School_Project(School &head,int School_ID,int Pro

52、ject_ID){//按學(xué)校編號查詢學(xué)校某個項目</p><p>  School h,p;</p><p>  int Project_i=0;</p><p><b>  int i;</b></p><p>  p=h=head; //保存鏈表頭指針</p><p><b>  

53、while(h){</b></p><p>  if(h->number==School_ID){p=h;break;}</p><p>  h=h->next;</p><p><b>  }</b></p><p>  for(i=1;i<=p->count;i++)</p&

54、gt;<p>  { if(p->students[i].Project==Project_ID){</p><p>  printf("查詢結(jié)果如下:\n");</p><p>  printf("姓名:%s\n",p->students[i].name);</p><p>  Project_

55、i=p->students[i].Project;</p><p>  if(p->students[i].sex==0){</p><p>  printf("性別:女\n");</p><p>  Project_i=Project_i+20;</p><p><b>  }</b>&

56、lt;/p><p><b>  else {</b></p><p>  printf("性別:男\(zhòng)n");</p><p><b>  }</b></p><p>  printf("項目編號:%d 項目名稱%s 該項目得分%d 名次:%d\n

57、",p->students[i].Project,Project_T[Project_i].name,p->students[i].score,p->students[i].ranking);</p><p><b>  }</b></p><p><b>  }</b></p><p><

58、;b>  }</b></p><p><b>  五.調(diào)試分析</b></p><p>  各子功能測試運行結(jié)果如下:</p><p>  5.1創(chuàng)建學(xué)校鏈表運行結(jié)果:</p><p>  創(chuàng)建5個學(xué)校,分別為重慶工商大學(xué)、重慶郵電大學(xué)、重慶交通大學(xué)、重慶師范大學(xué)、重慶大學(xué)</p><

59、;p>  5.2添加獲獎學(xué)生運行結(jié)果:</p><p>  詳細添加學(xué)生人數(shù),我們組徐維維已截圖,總共輸入重慶工商大學(xué)9人,其中項目2有5人,項目1、3、4、5各一人,重慶郵電大學(xué)1人參加項目5,重慶交通大學(xué)2人,,參加項目2、5各一人。</p><p>  5.3按項目查找前三名或前五名學(xué)校運行結(jié)果:</p><p>  由運行結(jié)果可以知道,當每個項目人數(shù)大

60、于等于5時,按第一種積分計算,第一名取7分,當每個項目總數(shù)小于5時,按第二種積分計算,第一名取得是5分。其次還計算了每個學(xué)校女子團體總分、男子團體總分、學(xué)??偡?。</p><p>  5.4按學(xué)校編號查找某個項目參加人數(shù)函數(shù)運行結(jié)果:</p><p><b>  六.用戶使用說明</b></p><p>  該運動會分數(shù)統(tǒng)計程序用C語言編寫,實

61、現(xiàn)了所要求的大部分功能。</p><p> ?。?)按數(shù)字鍵1,使用前首先要進行參數(shù)統(tǒng)計,包括參賽學(xué)校數(shù)(不多余20個),男生項目數(shù)(不多于20個)和女生項目數(shù)(不多于20個)。設(shè)置時同時輸入學(xué)校及項目的名稱,要求輸入英文字符。</p><p> ?。?)按數(shù)字鍵2用戶可以添加獲獎學(xué)習(xí)信息,包括所在學(xué)校編號,性別,參賽項目編號,成績和名次。</p><p>  (3

62、)按數(shù)字鍵3,可以按學(xué)校編號輸出學(xué)校參賽的信息,包括學(xué)校的編號名稱,男子團體總分,女子團體總分,團體總分,積分??梢暂敵雒總€學(xué)校的每個運動員的信息,包括姓名,性別,得分項目名稱,成績,名次??梢暂敵鏊械倪\動項目。</p><p> ?。?)按數(shù)字鍵4,可以查詢某個學(xué)校某個項目的信息。</p><p> ?。?)按數(shù)字鍵5,可以按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p>

63、<p> ?。?)按1—5之外的數(shù)字鍵可以退出程序。</p><p><b>  七.參考文獻</b></p><p>  在編程過程中所參考的文獻:數(shù)據(jù)結(jié)構(gòu)第三版、C語言教程</p><p>  八.對所設(shè)計的軟件進行自我評價</p><p>  此源程序代碼還存在兩點點沒有解決的問題,第一學(xué)??偡殖煽兣判驔]

64、有編寫代碼,第二男女生參加項目人數(shù)沒有統(tǒng)計,其他的相關(guān)要求基本上達到。在實驗過程中出現(xiàn)以下幾點問題:第一,在創(chuàng)建鏈表時,忽略了不帶頭結(jié)點的指針頭指針需要向后移,是由于長期的定式思維,頭指針是不能發(fā)生改變導(dǎo)致;第二,對鏈表的掌握不是足夠的扎實,因此在處理相關(guān)問題的時候,存在很大的障礙,譬如對遍歷鏈表,表頭指針的后移;第三,在處理每個項目的前三名和前五名積分是花費了一段時間去理解。</p><p><b>

65、  九.程序源代碼:</b></p><p>  #include"stdio.h"</p><p>  #include"malloc.h"</p><p>  #include"stdlib.h"</p><p>  #include"string.h&qu

66、ot;</p><p>  typedef struct Project</p><p>  {int number;//項目編號</p><p>  char name[10];//項目名稱</p><p>  int count;//該項目得分人數(shù)</p><p>  }Project_Table;</p&g

67、t;<p>  typedef struct Student</p><p>  {char name[10];</p><p><b>  int sex;</b></p><p>  int Project;//參加的項目</p><p>  int score;//成績</p><

68、p>  int ranking;//名次</p><p><b>  }Student;</b></p><p>  typedef struct SchoolNode</p><p>  {int number;//學(xué)校編號</p><p>  char name[10];</p><p>

69、;  int count;//運動員人數(shù)</p><p>  int boyscore;//男子團體總分</p><p>  int girlscore;//女子團體總分</p><p>  int totalscore;//團體總分</p><p>  int jifen;//積分</p><p>  Student

70、 students[20];//參賽學(xué)生</p><p>  struct SchoolNode *next;</p><p>  }SchoolNode,*School;</p><p>  int SchoolCount=0;//學(xué)??倲?shù)</p><p>  int BoyProject=0;//男生項目總數(shù)</p><

71、;p>  int GirlProject=0;//女生項目總數(shù)</p><p>  int TotalProject=0; //項目總數(shù)</p><p>  Project_Table Project_T[41];//項目表</p><p>  void CreatSchoolLink(School &head)</p><p>

72、;  {//創(chuàng)建學(xué)校的鏈表</p><p><b>  School p;</b></p><p><b>  int i;</b></p><p>  head=p=(School)malloc(sizeof(SchoolNode));</p><p>  for(i=1;i<=School

73、Count;i++)</p><p>  { p=p->next=(School)malloc(sizeof(SchoolNode));</p><p>  printf("請輸入編號為%d的學(xué)校的名稱:\n",i);</p><p>  scanf("%s",p->name);</p><p&

74、gt;  p->number=i;</p><p>  p->count=0;</p><p>  p->boyscore=0;</p><p>  p->girlscore=0;</p><p>  p->totalscore=0;</p><p>  p->jifen=0;<

75、;/p><p><b>  }</b></p><p>  p->next=NULL;//使指針指向空</p><p>  head=head->next;//頭指針后移</p><p><b>  }</b></p><p>  void AddStudentLin

76、k(School &head)</p><p><b>  {//添加獲獎學(xué)生</b></p><p>  School L,p;</p><p>  int School_ID; //學(xué)校編號</p><p>  char StudentName[20]; //學(xué)生姓名</p><p&g

77、t;  int sex;//性別</p><p>  int Project_ID; //項目編號</p><p>  int score; //成績</p><p>  int ranking; //名次</p><p>  printf("請輸入學(xué)生的姓名:\n");</p><p>  

78、scanf("%s",StudentName);</p><p>  printf("請輸入該學(xué)生所在學(xué)校的編號:\n");</p><p>  scanf("%d",&School_ID);</p><p>  printf("請輸入該學(xué)生的性別(0--女,--男):\n");

79、</p><p>  scanf("%d",&sex);</p><p>  printf("請輸入該學(xué)生參加的項目編號:\n");</p><p>  scanf("%d",&Project_ID);</p><p>  if(sex==0) GirlProject

80、=Project_ID;</p><p>  if(sex==1) BoyProject=Project_ID;</p><p>  printf("請輸入該學(xué)生該項目的得分:\n");</p><p>  scanf("%d",&score);</p><p>  printf("請

81、輸入該學(xué)生在該項目中的名次:\n");</p><p>  scanf("%d",&ranking);</p><p><b>  L=head;</b></p><p><b>  while(L)</b></p><p>  { if(L->numbe

82、r==School_ID)</p><p><b>  { p=L;</b></p><p>  p->count=p->count+1; //運動員數(shù)+1</p><p>  strcpy(p->students[p->count].name, StudentName); //學(xué)生姓名</p>&l

83、t;p>  p->students[p->count].Project=Project_ID ;//得分項目</p><p>  Project_T[Project_ID].count=Project_T[Project_ID].count+1; //該項目得分人數(shù)+1</p><p>  p->students[p->count].ranking=rank

84、ing;//得分名次</p><p>  p->students[p->count].score=score;//得分</p><p>  p->students[p->count].sex=sex; //性別</p><p><b>  break;</b></p><p><b>

85、  }</b></p><p>  else L=L->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Find_Project_ID(School &head,int Project_ID){ //

86、按項目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p>  School h,p;</p><p>  p=h=head; //保存鏈表頭指針</p><p><b>  int i;</b></p><p>  printf("查詢結(jié)果如下:\n");</p><p>&l

87、t;b>  while(h){</b></p><p>  for(i=1;i<=h->count;i++)</p><p>  { if(h->students[i].Project==Project_ID)</p><p>  { printf("學(xué)校:%s 姓名:%s 名次:%d\n",h-

88、>name,h->students[i].name,h->students[i].ranking);</p><p>  printf("\n--------------------------------------\n");</p><p><b>  }</b></p><p><b>  

89、}</b></p><p>  h=h->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Find_School_Project(School &head,int School_ID,int Proj

90、ect_ID){//按學(xué)校編號查詢學(xué)校某個項目</p><p>  School h,p;</p><p>  int Project_i=0;</p><p><b>  int i;</b></p><p>  p=h=head; //保存鏈表頭指針</p><p><b>  w

91、hile(h){</b></p><p>  if(h->number==School_ID){p=h;break;}</p><p>  h=h->next;</p><p><b>  }</b></p><p>  for(i=1;i<=p->count;i++)</p&g

92、t;<p>  { if(p->students[i].Project==Project_ID){</p><p>  printf("查詢結(jié)果如下:\n");</p><p>  printf("姓名:%s\n",p->students[i].name);</p><p>  Project_i

93、=p->students[i].Project;</p><p>  if(p->students[i].sex==0){</p><p>  printf("性別:女\n");</p><p>  Project_i=Project_i+20;</p><p><b>  }</b>&l

94、t;/p><p><b>  else {</b></p><p>  printf("性別:男\(zhòng)n");</p><p><b>  }</b></p><p>  printf("項目編號:%d 項目名稱%s 該項目得分%d 名次:%d\n&

95、quot;,p->students[i].Project,Project_T[Project_i].name,p->students[i].score,p->students[i].ranking);</p><p><b>  }</b></p><p><b>  }</b></p><p><

96、b>  }</b></p><p>  void OutPut_Link(School head)</p><p>  { //向屏幕輸出數(shù)據(jù)</p><p><b>  School h;</b></p><p><b>  h=head;</b></p><

97、;p><b>  int i;</b></p><p>  int Project_ID;</p><p>  int Project_count_i;</p><p><b>  while(h)</b></p><p><b>  { //遍歷學(xué)校</b></p

98、><p>  printf("學(xué)校編號:%d\n",h->number);</p><p>  printf("學(xué)校名稱:%s\n",h->name);</p><p>  printf("本次運動會積分%d\n",h->jifen);</p><p>  printf

99、("男子團體總分:%d\n",h->boyscore);</p><p>  printf("女子團體總分:%d\n",h->girlscore);</p><p>  printf("總分:%d\n",h->totalscore);</p><p>  printf("運動員數(shù)

100、:%d\n",h->count);</p><p>  for(i=1;i<=h->count;i++)</p><p>  {//輸出該校學(xué)生運動員情況</p><p>  printf("運動員姓名:%s\n",h->students[i].name);</p><p>  if(h-

101、>students[i].sex==0)printf("性別:女\n");</p><p>  else printf("性別:男\(zhòng)n");</p><p>  Project_ID=h->students[i].Project;</p><p>  if(h->students[i].sex==0)Proj

102、ect_ID=Project_ID+20; //如果是女生則項目表向后移動</p><p>  printf("得分項目:%s\n",Project_T[Project_ID].name);</p><p>  printf("得分:%d\n",h->students[i].score);</p><p>  print

103、f("得分名次:%d\n",h->students[i].ranking);</p><p><b>  }</b></p><p>  printf("\n--------------------------------------\n");</p><p>  h=h->next; //指

104、針向后移動</p><p><b>  }</b></p><p>  printf("\n--------------------------------------\n");</p><p><b>  }</b></p><p>  void ScoreCount(Scho

105、ol &head)</p><p><b>  {//成績統(tǒng)計</b></p><p><b>  School p;</b></p><p>  p=head; //保存鏈表頭指針</p><p>  int boyscore=0; //男子團體總分<

106、/p><p>  int girlscore=0; //女子團體總分</p><p>  int totalscore=0; //團體總分</p><p><b>  int i;</b></p><p>  int Project_i=0;</p><

107、p>  int jifen=0;//積分</p><p><b>  while(p)</b></p><p>  { for(i=1;i<=p->count;i++)</p><p><b>  {//計算分數(shù)</b></p><p>  totalscore=totalsco

108、re+p->students[i].score; //計算總分</p><p>  if(p->students[i].sex==0) girlscore=girlscore+p->students[i].score;////女子團體總分</p><p>  else boyscore=boyscore+p->students[i].score;//男子團體總分

109、</p><p><b>  //計算積分</b></p><p>  Project_i=p->students[i].Project;</p><p>  if(Project_T[Project_i].count>=5)</p><p><b>  {//取前名</b></p

110、><p>  if(p->students[i].ranking==1)jifen=jifen+7;</p><p>  else if(p->students[i].ranking==2)jifen=jifen+5;</p><p>  else if(p->students[i].ranking==3)jifen=jifen+3;</p>

111、;<p>  else if(p->students[i].ranking==4)jifen=jifen+2;</p><p>  else if(p->students[i].ranking==5)jifen=jifen+1;</p><p><b>  }</b></p><p>  if(Project_T[Pr

112、oject_i].count<5)</p><p><b>  {//取前名</b></p><p>  if(p->students[i].ranking==1)jifen=jifen+5;</p><p>  else if(p->students[i].ranking==2)jifen=jifen+3;</p>

113、;<p>  else if(p->students[i].ranking==3)jifen=jifen+2;</p><p><b>  }</b></p><p><b>  }//for</b></p><p>  p->jifen=jifen; //計算積分</p><

114、p>  p->girlscore=girlscore;//保存女子總分</p><p>  p->boyscore=boyscore;//保存男子總分</p><p>  p->totalscore=totalscore;//保存總分</p><p><b>  jifen=0;</b></p><p

115、>  boyscore=0; //男子團體總分</p><p>  girlscore=0; //女子團體總分</p><p>  totalscore=0; //總分</p><p>  p=p->next; //向后移動指針</p><p><b>  }//while</b></p>

116、<p><b>  }</b></p><p>  void AddStudent(School &head)</p><p>  { //添加學(xué)生數(shù)據(jù)</p><p><b>  int i=1;</b></p><p><b>  while(i)</b&g

117、t;</p><p>  { AddStudentLink(head); //添加學(xué)生數(shù)據(jù)</p><p>  printf("\n是否繼續(xù)添加學(xué)生數(shù)據(jù)?[No=0 Yes=1]\n");</p><p>  scanf("%d",&i);</p><p><b>  }</

118、b></p><p><b>  }</b></p><p>  int menu() /*菜單函數(shù)*/</p><p><b>  {int d;</b></p><p>  printf("\n數(shù)據(jù)結(jié)構(gòu)---運動會分數(shù)統(tǒng)計\n");</p><p

119、>  printf("\n1--參數(shù)設(shè)置 2--添加學(xué)生\n");</p><p>  printf("\n3--統(tǒng)計 4--學(xué)校查詢\n");</p><p>  printf("\n5--項目查詢 按其他鍵退出\n");</p><p>  scanf("%d",

120、&d);</p><p>  return(d);</p><p><b>  }</b></p><p>  int main()</p><p>  {School head;</p><p>  int i,flag=1;</p><p>  int a,b,

121、c;</p><p>  while(flag)</p><p>  {switch(menu())</p><p><b>  {case 1:{</b></p><p>  printf("請輸入?yún)①悓W(xué)校數(shù)(n>=2)\nn=");</p><p>  scanf(&

122、quot;%d",&SchoolCount);</p><p>  printf("\n請輸男生項目總數(shù)(0<n<=20)\nm=");</p><p>  scanf("%d",&BoyProject);</p><p>  printf("\n請輸女生項目總數(shù)(0<n&

123、lt;=20)\nw=");</p><p>  scanf("%d",&GirlProject);</p><p>  TotalProject=BoyProject+GirlProject;</p><p>  printf("\n請輸入男生項目信息\n");</p><p>  

124、for(i=1;i<=BoyProject;i++)</p><p><b>  {</b></p><p>  Project_T[i].number=i; //項目編號</p><p>  Project_T[i].count=0;</p><p>  printf("項目編號:%d\n"

125、,i);</p><p>  printf("請輸入項目名稱:\n");</p><p>  scanf("%s",Project_T[i].name); //項目名稱</p><p><b>  }</b></p><p>  printf("\n請輸入女生項目信息\n

126、");</p><p>  for(i=1;i<=GirlProject;i++)</p><p><b>  {</b></p><p>  Project_T[20+i].number=i;</p><p>  printf("項目編號:%d\n",i); //項目編號</p

127、><p>  printf("請輸入項目名稱:\n");</p><p>  scanf("%s",Project_T[20+i].name); //項目名稱</p><p><b>  }</b></p><p>  CreatSchoolLink(head);</p>

128、<p><b>  break;</b></p><p><b>  }</b></p><p>  case 2:AddStudent(head);break;</p><p>  case 3:{ScoreCount(head);</p><p>  OutPut_Link(hea

129、d);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 4:{ printf("\n請輸入學(xué)校編號:");</p><p>  scanf("%d",&a);</p>

130、<p>  printf("\n請輸入項目編號:");</p><p>  scanf("%d",&b);</p><p>  Find_School_Project(head,a,b);</p><p><b>  break;</b></p><p>&l

131、t;b>  }</b></p><p>  case 5:{ printf("\n請輸入項目編號:");</p><p>  scanf("%d",&c);</p><p>  Find_Project_ID(head,c);</p><p><b>  break

132、;</b></p><p><b>  }</b></p><p>  default:flag=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

133、;</p><p><b>  十.心得體會 </b></p><p>  通過這次的課程設(shè)計,感覺自己又學(xué)習(xí)了很多知識,收獲很大,之前上課不懂得相關(guān)內(nèi)容也逐漸的認識和掌握,對這么課的學(xué)習(xí)更有興趣,覺得自己學(xué)習(xí)這門專業(yè)還是很可觀的,當遇到困難時,不能退縮,要迎難而上!要提高自己的編程能力,就必須親自去體驗、去設(shè)計、編輯、編譯、調(diào)試、運行。之前自己感覺c語言學(xué)的還是可以

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論