c語言實習(xí)報告--學(xué)生成績管理系統(tǒng)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  一、前言…………………………………………………………………2</p><p>  二、引言…………………………………………………………………2</p><p>  2.1系統(tǒng)開發(fā)工具…………………………………………………… 2</p><p>  

2、2.2實習(xí)目的………………………………………………… 3</p><p>  2.3實習(xí)基本內(nèi)容與要求……………………………………………3</p><p>  2.4實習(xí)時間安排…………………………………………………… 3</p><p>  2.5實習(xí)地點………………………………………………………… 3</p><p>  2.6實習(xí)內(nèi)容…

3、…………………………………………………………………… 3</p><p>  三、學(xué)生成績管理系統(tǒng)分析……………………………………………4</p><p>  3.1系統(tǒng)概況…………………………………………………………4</p><p>  3.2需求分析…………………………………………………………4</p><p>  3.3總體功能要求…

4、…………………………………………………5</p><p>  3.3.1總體功能模塊……………………………………………… 5</p><p>  3.3.2各函數(shù)的功能和實現(xiàn)………………………………………… 6</p><p>  3.3.3各部分流程圖…………………………………………………………… 6</p><p>  3.3.4性能要求

5、………………………………………………………………… 8</p><p>  四、詳細設(shè)計……………………………………………………………8</p><p>  4.1關(guān)鍵部分的代碼、說明及運行結(jié)果圖………………………………………8</p><p>  1、全局定義部分………………………………………………………8</p><p>  2、主程序部

6、分…………………………………………………………8</p><p>  3、輸入信息部分………………………………………………………10</p><p>  4、輸出信息部分………………………………………………………12</p><p>  5、排序部分………………………………………………13</p><p>  6、插入信息部分……………………

7、…………………………14</p><p>  7、刪除部分………………………………………………15</p><p>  4.2總程序………………………………………………………………16</p><p>  五、實習(xí)心得體會………………………………………………………24</p><p>  六、附錄:參考文獻………………………………………………

8、……25</p><p><b>  一、前言</b></p><p>  隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一部分,使用計算機對學(xué)生成績信息進行管理,具有手工管理所無法比擬的優(yōu)點。例如,檢索迅速,查找方便,可靠性高,存儲量大,保密性好,壽命長,成本低等。這些優(yōu)

9、點能極大地提高學(xué)生檔案管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)學(xué)生成績管理系統(tǒng)很有必要。</p><p>  學(xué)生成績管理系統(tǒng)是為了適應(yīng)現(xiàn)代化學(xué)校的管理,加快推進數(shù)字化校園的建設(shè)、充分利用校園網(wǎng),利用網(wǎng)絡(luò)、多媒體等計算機應(yīng)用技術(shù)和手段,提高辦公效率、改善質(zhì)量的高效管理學(xué)校系統(tǒng)。</p><p>  學(xué)生成績管理系統(tǒng)是系科綜合管理系統(tǒng)的重要組成部分,為學(xué)校學(xué)

10、生層面的管理提供了一個有用的數(shù)字化學(xué)生成績管理系統(tǒng)的工具,在學(xué)校學(xué)生管理中起著舉足輕重的作用。</p><p>  為了培養(yǎng)自己正確的程序設(shè)計思想,使平時學(xué)習(xí)的理論聯(lián)系實際,培養(yǎng)自己嚴肅認真,實事求是的科學(xué)態(tài)度和勇于探索的創(chuàng)新精神,培養(yǎng)自己綜合運用所學(xué)知識與實踐經(jīng)驗,分析和解決相應(yīng)領(lǐng)域的工程技術(shù)問題或進行軟件項目開發(fā)的能力。學(xué)院依照課程教學(xué)大綱和課程設(shè)計大綱提出了本次課程設(shè)計的題目及要求。</p>

11、<p>  要求掌握C程序的基本結(jié)構(gòu)和C語言基本的數(shù)據(jù)結(jié)構(gòu),熟悉C程序的編輯、編譯、調(diào)試和運行過程,了解程序設(shè)計的一般方法、結(jié)構(gòu)化程序設(shè)計的思想,熟悉算法的描述工具—N—S流程圖的使用及常用算法,能夠熟練地閱讀用C語言編寫的程序,能夠運用結(jié)構(gòu)化程序設(shè)計編寫C程序。</p><p><b>  二、引言</b></p><p>  2.1系統(tǒng)開發(fā)工具簡介<

12、;/p><p>  WIN-TC是一個TC2 WINDOWS平臺開發(fā)工具。該軟件使用TC2為內(nèi)核,提供WINDOWS平臺的開發(fā)界面,因此也就支持WINDOWS平臺下的功能,例如剪切、復(fù)制、粘貼和查找替換等。而且在功能上也有它的獨特特色例如語法加亮、C內(nèi)嵌匯編、自定義擴展庫的支持等。并提供一組相關(guān)輔助工具令你在編程過程中更加游刃有余,如虎添翼。本軟件用于編寫C語言程序 。</p><p><

13、;b>  2.2實習(xí)目的</b></p><p>  進一步加深、鞏固所學(xué)專業(yè)課程(《C語言程序設(shè)計》)的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調(diào)試應(yīng)用程序和進行其它相關(guān)設(shè)計的技能。</p><p>  使學(xué)生在掌握C語言的基本語法的基礎(chǔ)上,能夠更好的理解和運用其解決實際問題。在實踐實習(xí)操作中讓學(xué)生對結(jié)構(gòu)化程序設(shè)

14、計有更進一步深刻的認識與了解,提高學(xué)生的實踐操作能力。</p><p>  2.3、實習(xí)基本內(nèi)容與要求: </p><p>  用鏈表實現(xiàn)簡單的學(xué)籍管理 </p><p>  1、總體功能要求 (1)鏈表的建立:每個節(jié)點包括:學(xué)號、姓名、性別、語文、數(shù)學(xué)、英語、總分; (2)節(jié)點的插入:按學(xué)號的順序插入; (3)刪除鏈表中的節(jié)點:按學(xué)號或者姓名; (4)鏈表

15、的輸出:按學(xué)號排序、按總分排序。 </p><p>  2、性能的要求: (1)各個功能分別用函數(shù)實現(xiàn); (2)節(jié)點信息讓用戶通過鍵盤輸入; (3)總分通過計算獲得; (4)有簡單的操作界面; (5)盡可能考慮程序的容錯性、可操作性。</p><p>  3、寫實習(xí)報告以及心得體會</p><p><b>  2.4實習(xí)時間安排</b>

16、;</p><p>  2011年7月12日 在服務(wù)器上下載應(yīng)用程序、實習(xí)報告模板,練習(xí)書本第11章的例題</p><p>  2011年7月13日 在自己的機器上程序設(shè)計 </p><p>  2011年7月14日 程序設(shè)計</p><p>  2011年7月15日 撰寫實習(xí)報告及心得體會</p><p>

17、  2011年7月16日 交實習(xí)報告</p><p>  2.5 實習(xí)地點:c1 2樓機房</p><p><b>  2.6實習(xí)內(nèi)容</b></p><p>  對學(xué)生信息(包括姓名、學(xué)號、語文、數(shù)學(xué)、英語、平均分、總分)進行管理,包括學(xué)生成績的信息輸入、輸出、查詢、刪除、排序、退出、保存.將學(xué)生的成績信息進行記錄,信息內(nèi)容包含:(1)學(xué)生

18、的學(xué)號(2)學(xué)生的姓名(3)學(xué)生的成績。假設(shè),現(xiàn)收集到了一個班學(xué)生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統(tǒng),可進行錄入、查詢、修改、排序和瀏覽等功能。學(xué)習(xí)相關(guān)開發(fā)工具和應(yīng)用軟件,熟悉系統(tǒng)建設(shè)過程。</p><p>  三、學(xué)生成績管理系統(tǒng)分析</p><p><b>  3.1系統(tǒng)概況</b></p><p>  本次實習(xí)是通過建

19、立一個學(xué)生學(xué)籍管理系統(tǒng)來更好的認識和掌握C語言中鏈表這一重要的知識內(nèi)容.本系統(tǒng)實現(xiàn)的功能如下:</p><p>  1.創(chuàng)建學(xué)生學(xué)籍信息,每個學(xué)生學(xué)籍信息包括:學(xué)號、姓名、語文、數(shù)學(xué)、英語、平均分、總分;</p><p>  2.插入信息:按照學(xué)號由小到大的循序插入信息;</p><p>  3.查找信息:通過選擇按照學(xué)號或者姓名來查找到該學(xué)生的信息;</p&

20、gt;<p>  4.刪除信息:通過選擇按照學(xué)號或者按照姓名刪除某個學(xué)生學(xué)籍信息;</p><p>  5.輸出信息:通過選擇按學(xué)號(由小到大)或者總分(由小到大)或者平均分(由小到大)來輸出信息;</p><p>  6.保存信息:對學(xué)生學(xué)籍系統(tǒng)中的信息以記事本的學(xué)生進行保存。</p><p>  本系統(tǒng)的亮點是在運用模塊來組建該學(xué)生學(xué)籍管理系統(tǒng),也

21、就是說各個功能以模塊的實現(xiàn),通過主函數(shù)來調(diào)用模塊,實現(xiàn)管理功能,這樣程序結(jié)構(gòu)清晰,容易檢查到錯誤所在模塊,減少了調(diào)試的壓力。其次,是運用結(jié)構(gòu)體來組織數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)規(guī)范,通過指針的操作很容易實現(xiàn)簡單的查找、刪除、輸出等操作。最后,容錯性較好,比如輸入成績輸入時按照我們百分制輸入,必須輸入1-100之間的數(shù)字,如果輸入的不是1-100中的數(shù)據(jù),在系統(tǒng)將顯示信息錯誤信息,要求重新輸入。</p><p>  軟件配備:T

22、urboC2.0,Windows 2000/20003/xp等;</p><p>  硬件配備:內(nèi)存:512MB及以上;</p><p>  外存:60GB及以上;</p><p>  CPU: 奔4及以上;</p><p><b>  3.2需求分析</b></p><p>  1、用C語言實現(xiàn)

23、系統(tǒng);</p><p>  2、對學(xué)生信息(包括學(xué)號、姓名、語文、數(shù)學(xué)、英語、平均分)進行管理,包括學(xué)生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計、退出.</p><p>  3、學(xué)生信息包括:其內(nèi)容較多,為了簡化討論,要求設(shè)計的管理系統(tǒng)能夠完成以下功能:</p><p>  (1)、每一條記錄包括一個學(xué)生的學(xué)號、姓名、3門課成績</p><p

24、>  (2)、成績信息錄入功能:(成績信息用文件保存,可以一次完成若干條記錄的輸入。)</p><p>  (3)、成績信息顯示瀏覽功能:完成全部學(xué)生記錄的顯示。</p><p>  (4)、查詢功能:完成按姓名查找學(xué)生記錄,并顯示。</p><p>  (5)、成績信息的刪除:按學(xué)號進行刪除某學(xué)生的成績.</p><p>  (6)、

25、排序功能:按學(xué)生平均成績進行排序。</p><p>  (7)、應(yīng)提供一個界面來調(diào)用各個功能,調(diào)用界面和各個功能的操作界面應(yīng)盡可能清晰美觀!</p><p><b>  3.3總體功能要求</b></p><p>  3.3.1總體功能模塊</p><p>  學(xué)生成績管理信息系統(tǒng)的主界面,包括六個內(nèi)容:信息輸入,信息輸

26、出,信息刪除,信息的排序,信息的查找和信息的保存。</p><p>  信息輸入包括創(chuàng)建信息和信息添加:其中創(chuàng)建的學(xué)生信息包括學(xué)生的學(xué)號,姓名,性別以及語文,數(shù)學(xué),英語三門課程的成績。信息添加的內(nèi)容也是創(chuàng)建的所有學(xué)籍信息。</p><p>  信息刪除是按照學(xué)生的學(xué)號進行刪除。</p><p>  信息的排序也可以分為三種方法進行:一是按照學(xué)號進行排序,二是根據(jù)學(xué)生

27、語文、數(shù)學(xué)、英語三門課程的總分進行排序,三是根據(jù)學(xué)生語文、數(shù)學(xué)、英語三門課程的平均分進行排序。</p><p>  信息的查找時按照學(xué)生的學(xué)號進行查找。</p><p>  信息的保存是通過程序與文件的鏈接進行的,可以直接將學(xué)生成績以記事本的形式保存到指定文件夾中。</p><p>  總 體 功 能 模 塊 圖</p><p>  3.3.

28、2各函數(shù)的功能和實現(xiàn)</p><p>  1、輸入初始的學(xué)生信息:輸入信息包括學(xué)生的姓名、學(xué)號以及學(xué)生的成績等相關(guān)信息;可用函數(shù)void input(STUDENT *data, int *len)來實現(xiàn)此操作。 </p><p>  2、成績輸出模塊:輸出學(xué)生的信息以及成績void output(STUDENT *data, int len):通過學(xué)生的姓名來查看學(xué)生的相關(guān)成績,同時也

29、可以分別通過caverage() 、maverage() 、eaverage() 和comaverage() 來輸出成績的平均分數(shù)、最高和最低分數(shù)。</p><p>  3、成績查詢模塊:可用void find(STUDENT *data, int len) 來實現(xiàn)。找到就輸出此學(xué)生全部信息。</p><p>  4、刪除模塊:用函數(shù)voi

30、d delete_item(STUDENT *data, int *len)來實現(xiàn)</p><p>  5、排序模塊:用函數(shù)void sort(STUDENT *data, int len)來實現(xiàn)</p><p>  6、統(tǒng)計功能能:用函數(shù)void stat(STUDENT *data, int len) 來實現(xiàn)</p><p>  7、退出系統(tǒng):可用一個函數(shù)exi

31、t()來實現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。</p><p>  3.3.3各部分流程圖</p><p>  1.學(xué)生信息輸入流程圖 2.學(xué)生信息輸出流程圖</p><p><b>  3.刪除的流程圖</b></p><p>  4.插入信息的流程圖&l

32、t;/p><p>  5.對信息的排序流程圖</p><p><b>  3.3.4性能要求</b></p><p>  1、功能分別用函數(shù)實現(xiàn);</p><p>  2、信息讓用戶通過鍵盤輸入;</p><p><b>  3、通過計算獲得;</b></p>&l

33、t;p>  4、簡單的操作界面;</p><p>  5、可能考慮程序的容錯</p><p><b>  四、詳細設(shè)計</b></p><p>  4.1關(guān)鍵部分的代碼、說明及運行結(jié)果圖</p><p><b>  1、全局定義部分</b></p><p>  #inc

34、lude<stdio.h></p><p>  #include <string.h></p><p>  #include<ctype.h></p><p>  #include <malloc.h></p><p>  #define NULL 0

35、 /*令NULL為0,表示空地址*/</p><p>  #define LEN sizeof(struct student) /*令LEN代表struct student類型數(shù)據(jù)的長度,sizeof是“求字節(jié)數(shù)運算符”*/</p><p>  struct student

36、 /*定義結(jié)構(gòu)體*/</p><p><b>  {</b></p><p>  long num; /*定義學(xué)生學(xué)號*/</p><p>  char name[20];

37、 /*定義姓名*/</p><p>  char sex[10]; /*定義性別*/</p><p>  int chinese; /*語文分數(shù),假設(shè)為整數(shù)*/</p><p>  i

38、nt math; /*數(shù)學(xué)分數(shù)*/</p><p>  int english; /*英語分數(shù)*/</p><p>  int sum; /*三門總分*

39、/</p><p>  struct student *next;</p><p><b>  };</b></p><p>  int n; /*n為全局變量,定義為節(jié)點個數(shù)*/</p><p>  /*創(chuàng)建鏈表,帶回一個指向鏈表頭的指針*/&l

40、t;/p><p>  struct student *creat(vonum)</p><p>  { struct student *head;</p><p>  struct student *p1,*p2;</p><p><b>  n=0;</b></p><p>  p1=p2=(str

41、uct student*)malloc(LEN); /*開辟一個新單元*/</p><p>  printf("\nInput student's number: (press 0 to exit) ");</p><p><b>  2、主程序部分</b></p><p>  m

42、ain() /*主函數(shù)*/</p><p>  {struct student *head,*stu;</p><p>  long del_num;</p><p><b>  int N;</b></p><p><b>  a:</b></p>

43、<p>  printf("The student information management system \n");</p><p>  printf("\n ( LIST) \n");</p><p>  printf(" 1.Create a new namelist

44、\n");</p><p>  printf(" 2.Print the namelist\n");</p><p>  printf(" 3.Delete a record from the namelist\n");</p><p>  printf(" 4.insert a record\n"

45、;);</p><p>  printf(" 5.sort the programme\n");</p><p>  printf(" 0.exit the programme\n");</p><p>  printf("please enter the number:");</p><

46、;p>  scanf("%d",&N);</p><p><b>  switch(N)</b></p><p>  {case 0:exit(0);goto end;</p><p><b>  case 1:</b></p><p>  printf("

47、;input records:\n");</p><p>  head=creat();</p><p>  print(head);break;</p><p><b>  case 2:</b></p><p>  print(head);break;</p><p><b&g

48、t;  case 3:</b></p><p>  printf("\ninput the delete number :");</p><p>  scanf("%1d",&del_num);</p><p>  while(del_num!=0)</p><p>  {head=

49、del(head,del_num);</p><p>  print(head);</p><p>  printf("\ninput the deleted number:");</p><p>  scanf("%1d",&del_num);</p><p><b>  }brea

50、k;</b></p><p><b>  case 4:</b></p><p>  printf("\ninput the insert record:");</p><p>  stu=(struct student *)malloc(LEN);</p><p>  printf(&q

51、uot;\nplease input number :");</p><p>  scanf("%ld",&stu->num);</p><p>  printf("please input name");</p><p>  scanf ("%s",&stu->nam

52、e);</p><p>  printf("please choose sex(f or m):");</p><p>  scanf("%s",&stu->sex);</p><p>  printf("please input chinese score:");</p>&l

53、t;p>  scanf("%d",&stu->chinese);</p><p>  printf("please input maths score:");</p><p>  scanf("%d",&stu->maths);</p><p>  printf("

54、;please input english score:");</p><p>  scanf("%d",&stu->english);</p><p>  while(stu->num!=0)</p><p>  {head=insert(head,stu);</p><p>  print

55、(head);</p><p>  printf("\ninput theinsert record:");</p><p>  stu=(struct student*)malloc(LEN);</p><p>  printf("\nplease input number:");</p><p> 

56、 scanf("%ld",&stu->num);</p><p>  printf ("please input name:");</p><p>  scanf("%s",&stu->name);</p><p>  printf("please choose sex

57、(f or m):");</p><p>  scanf("%s",&stu->sex);</p><p>  printf("please input chinese score:");</p><p>  scanf("%d",&stu->chinese);<

58、/p><p>  printf("please input maths score:");</p><p>  scanf ("%d",&stu->maths);</p><p>  printf("please input english score:");</p><p&g

59、t;  scanf("%d",&stu->english);break;</p><p><b>  case 5:</b></p><p>  head=sort(head);</p><p>  print(head);break;</p><p><b>  }goto

60、a;</b></p><p><b>  end:;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3、輸入信息部分</b></p><p><

61、b>  /*輸入數(shù)據(jù)*/</b></p><p>  scanf("%ld",&p1->num);</p><p>  if (p1->num!=0)</p><p><b>  {</b></p><p><b>  a:</b></

62、p><p>  printf("Input student's name: ");</p><p>  scanf("%s",&p1->name);</p><p><b>  b:</b></p><p>  printf("Input studen

63、t's sex(f or m): ");</p><p>  scanf("%s",&p1->sex);</p><p><b>  c:</b></p><p>  printf("Input chinese score: ");</p><p&g

64、t;  scanf("%d",&p1->chinese);</p><p>  if(p1->chinese>100||p1->chinese<0) /*驗證成績是否在0——100之間*/</p><p>  {printf("Please enter a number between 0 to 100!\n&q

65、uot;);</p><p><b>  goto c;</b></p><p><b>  }</b></p><p><b>  d:</b></p><p>  printf("Input math score: ");</p><

66、;p>  scanf("%d",&p1->math);</p><p>  if(p1->math>100||p1->math<0)</p><p>  {printf("Please enter a number between 0 to 100!\n");</p><p><

67、;b>  goto d;</b></p><p><b>  }</b></p><p><b>  e:</b></p><p>  printf("Input english score: ");</p><p>  scanf("%d"

68、;,&p1->english);</p><p>  if(p1->english>100||p1->english<0)</p><p>  {printf("Please enter a number between 0 to 100!\n");</p><p><b>  goto e;<

69、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  head=NULL;</p><p>  while(p1->num!=0)</p><p><b>  {</b></p&g

70、t;<p><b>  n=n+1;</b></p><p>  if(n==1)head=p1;</p><p>  else p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  p1=(struct student *) mallo

71、c(LEN);</p><p>  printf("\nInput student's number (press 0 to exit): ");</p><p>  scanf("%ld",&p1->num);</p><p>  if (p1->num!=0)</p><p

72、>  {printf("Input student's name: ");</p><p>  scanf("%s",&p1->name);</p><p>  printf("Input student's sex(f or m): ");</p><p>  sca

73、nf("%s",&p1->sex);</p><p>  printf("Input Chinese score: ");</p><p>  scanf("%d",&p1->chinese);</p><p>  if(p1->chinese>100||p1-&g

74、t;chinese<0)</p><p>  {printf("Please enter a number between 0 to 100\n"); /*驗證成績是否在0——100之間*/</p><p><b>  goto c;</b></p><p><b>  }</b>&

75、lt;/p><p>  printf("Input math score: ");</p><p>  scanf("%d",&p1->math);</p><p>  if(p1->math>100||p1->math<0)</p><p>  {printf(&qu

76、ot;Please enter a number between 0 to 100\n"); /*驗證成績是否在0——100之間*/</p><p><b>  goto d;</b></p><p><b>  }</b></p><p>  printf("Input english sc

77、ore: ");</p><p>  scanf("%d",&p1->english);</p><p>  if(p1->english>100||p1->english<0)</p><p>  {printf("Please enter a number between 0 to 1

78、00\n");</p><p><b>  goto e;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  p2->

79、next=NULL;</p><p>  return(head);</p><p><b>  }</b></p><p><b>  輸入界面如下:</b></p><p><b>  4、輸出信息部分</b></p><p><b>  

80、/*輸出鏈表*/</b></p><p>  void print(struct student *head)</p><p><b>  {</b></p><p>  struct student *p;</p><p>  printf("\n=============Student info

81、rmation=============\n");</p><p>  printf("\nthe %d recrods are:\n",n);</p><p>  printf("| NO. | Name | Sex |Chi |math|Eng | sum|\n");</p><p>  print

82、f("|----------|--------|-----|----|----|----|------|\n");</p><p><b>  p=head;</b></p><p>  if(p!=NULL)</p><p><b>  do</b></p><p><b

83、>  {</b></p><p>  p->sum=p->chinese+p->math+p->english;</p><p>  /*求總分賦給totalscorescore*/</p><p><b>  /*輸出各項值*/</b></p><p>  printf(&qu

84、ot;|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|\n",</p><p>  p->num, p->name,p->sex,p->chinese,p->math,</p><p>  p->english,p->sum);</p><p>  p=p->next;/*將p原來指向的節(jié)點中n

85、ext的值賦給p,使p指向第下一個節(jié)點*/</p><p>  p->sum=NULL; /*將總分totalscorescore賦空地址*/</p><p>  }while(p!=NULL);</p><p>  else printf("\nNo records\n");</p><p&g

86、t;  printf("===============END====================\n") ;</p><p><b>  }</b></p><p><b>  5、排序部分</b></p><p>  struct student *sort(struct student *hea

87、d) /*排序函數(shù)*/</p><p><b>  {int i=0;</b></p><p>  struct student *p,*q,*t,*h1;</p><p>  h1=head->next;</p><p>  head->next=NULL;</p><p>  

88、while(h1!=NULL)</p><p><b>  {t=h1;</b></p><p>  h1=h1->next;</p><p><b>  p=head;</b></p><p><b>  q=head;</b></p><p>

89、  while(t->total>p->total&&p!=NULL)</p><p><b>  {q=p;</b></p><p>  p=p->next;}</p><p><b>  if(p==q)</b></p><p>  {t->next

90、=p;</p><p><b>  head=t;}</b></p><p><b>  else</b></p><p>  {t->next=p;</p><p>  q->next=t;}</p><p><b>  }</b><

91、/p><p><b>  p=head;</b></p><p>  while(p!=NULL)</p><p><b>  {i++;</b></p><p>  p->order=i;</p><p>  p=p->next;</p><p&

92、gt;<b>  }</b></p><p>  printf("sort sucess!\n");</p><p>  return(head);</p><p><b>  }</b></p><p>  如按總分排序,界面如下:</p><p>  

93、按學(xué)號排序,界面如下:</p><p><b>  6、插入信息部分</b></p><p>  /*插入結(jié)點函數(shù)*/</p><p>  struct student *insert(struct student *head,struct student *stud) {struct student *p0,*p1,*p2;</p>

94、;<p><b>  p1=head;</b></p><p><b>  p0=stud;</b></p><p>  if(head==NULL)</p><p><b>  {head=p0;</b></p><p>  p0->next=NULL;}

95、</p><p><b>  else</b></p><p>  {while((p0->num>p1->num)&&(p1->next!=NULL))</p><p>  {p2=p1;p1=p1->next;}</p><p>  if(p0->num<=p

96、1->num)</p><p>  {if(head==p1)</p><p><b>  head=0;</b></p><p>  else p2->next=p0;</p><p>  p0->next=p1;}</p><p><b>  else</b

97、></p><p>  {p1->next=p0;</p><p>  p0->next=NULL;}</p><p><b>  }</b></p><p><b>  n=n+1;</b></p><p>  p1->order=n;</p&

98、gt;<p>  return(head);</p><p><b>  }</b></p><p><b>  7、刪除部分</b></p><p><b>  /*刪除節(jié)點*/</b></p><p>  struct student *del(struct

99、student *head,long num)/*參數(shù)為起始地址head和學(xué)號number*/</p><p><b>  {</b></p><p>  struct student *p1,*p2;</p><p>  if(head==NULL){printf("\nlist null! \n");}</p&g

100、t;<p><b>  p1=head;</b></p><p>  while (num!=p1->num&&p1->next!= NULL) /**p1指向的不是所要找的節(jié)點,并且后面還有節(jié)點*/</p><p><b>  {</b></p><

101、;p>  p2=p1;p1=p1->next; /**p1后移一個節(jié)點*/</p><p><b>  }</b></p><p>  if(num==p1->num)</p><p><b>  {</b></p><p&g

102、t;  if(p1==head)head=p1->next;/*若p1指向的是頭節(jié)點,把第二個節(jié)點地址賦予head*/</p><p>  else p2->next=p1->next; /*否則將下一節(jié)點地址賦給前一節(jié)點地址*/</p><p>  printf("delete:%ld\n",num);</p><

103、p><b>  n=n-1;</b></p><p><b>  }</b></p><p>  else printf("%ld not been found!\n",num); /*找不到該節(jié)點*/</p><p>  return(head);</p>

104、<p><b>  }</b></p><p><b>  界面如下:</b></p><p><b>  刪除后</b></p><p><b>  4.2、總程序</b></p><p>  #include<stdio.h>

105、</p><p>  #include <string.h></p><p>  #include<ctype.h></p><p>  #include <malloc.h></p><p>  #define NULL 0 /*

106、令NULL為0,表示空地址*/</p><p>  #define LEN sizeof(struct student) /*令LEN代表struct student類型數(shù)據(jù)的長度,sizeof是“求字節(jié)數(shù)運算符”*/</p><p>  struct student

107、 /*定義結(jié)構(gòu)體*/</p><p><b>  {</b></p><p>  long num; /*定義學(xué)生學(xué)號*/</p><p>  char name[20]; /*定義

108、姓名*/</p><p>  char sex[10]; /*定義性別*/</p><p>  int chinese; /*語文分數(shù),假設(shè)為整數(shù)*/</p><p>  int math;

109、 /*數(shù)學(xué)分數(shù)*/</p><p>  int english; /*英語分數(shù)*/</p><p>  int sum; /*三門總分*/</p><p&

110、gt;  struct student *next;</p><p><b>  };</b></p><p>  int n; /*n為全局變量,定義為節(jié)點個數(shù)*/</p><p>  /*創(chuàng)建鏈表,帶回一個指向鏈表頭的指針*/</p><p> 

111、 struct student *creat(vonum)</p><p>  { struct student *head;</p><p>  struct student *p1,*p2;</p><p><b>  n=0;</b></p><p>  p1=p2=(struct student*)malloc(

112、LEN); /*開辟一個新單元*/</p><p>  printf("\nInput student's number: (press 0 to exit) "); /*輸入數(shù)據(jù)*/</p><p>  scanf("%ld",&p1->num);</p><

113、;p>  if (p1->num!=0)</p><p><b>  {</b></p><p><b>  a:</b></p><p>  printf("Input student's name: ");</p><p>  scanf("%

114、s",&p1->name);</p><p><b>  b:</b></p><p>  printf("Input student's sex(f or m): ");</p><p>  scanf("%s",&p1->sex);</p>

115、<p><b>  c:</b></p><p>  printf("Input chinese score: ");</p><p>  scanf("%d",&p1->chinese);</p><p>  if(p1->chinese>100||p1->

116、chinese<0) /*驗證成績是否在0——100之間*/</p><p>  {printf("Please enter a number between 0 to 100!\n");</p><p><b>  goto c;</b></p><p><b>  }</b></

117、p><p><b>  d:</b></p><p>  printf("Input math score: ");</p><p>  scanf("%d",&p1->math);</p><p>  if(p1->math>100||p1->mat

118、h<0)</p><p>  {printf("Please enter a number between 0 to 100!\n");</p><p><b>  goto d;</b></p><p><b>  }</b></p><p><b>  e:&

119、lt;/b></p><p>  printf("Input english score: ");</p><p>  scanf("%d",&p1->english);</p><p>  if(p1->english>100||p1->english<0)</p>

120、<p>  {printf("Please enter a number between 0 to 100!\n");</p><p><b>  goto e;</b></p><p><b>  }</b></p><p><b>  }</b></p>

121、<p>  head=NULL;</p><p>  while(p1->num!=0)</p><p><b>  {</b></p><p><b>  n=n+1;</b></p><p>  if(n==1)head=p1;</p><p>  e

122、lse p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  p1=(struct student *) malloc(LEN);</p><p>  printf("\nInput student's number (press 0 to exit): ");<

123、;/p><p>  scanf("%ld",&p1->num);</p><p>  if (p1->num!=0)</p><p>  {printf("Input student's name: ");</p><p>  scanf("%s",&

124、;p1->name);</p><p>  printf("Input student's sex(f or m): ");</p><p>  scanf("%s",&p1->sex);</p><p>  printf("Input Chinese score: ");&l

125、t;/p><p>  scanf("%d",&p1->chinese);</p><p>  if(p1->chinese>100||p1->chinese<0)</p><p>  {printf("Please enter a number between 0 to 100\n");

126、 /*驗證成績是否在0——100之間*/</p><p><b>  goto c;</b></p><p><b>  }</b></p><p>  printf("Input math score: ");</p><p>  scanf("%d"

127、;,&p1->math);</p><p>  if(p1->math>100||p1->math<0)</p><p>  {printf("Please enter a number between 0 to 100\n"); /*驗證成績是否在0——100之間*/</p><p><b&

128、gt;  goto d;</b></p><p><b>  }</b></p><p>  printf("Input english score: ");</p><p>  scanf("%d",&p1->english);</p><p>  if

129、(p1->english>100||p1->english<0)</p><p>  {printf("Please enter a number between 0 to 100\n");</p><p><b>  goto e;</b></p><p><b>  }</b>

130、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  p2->next=NULL;</p><p>  return(head);</p><p><b>  }</b></p>&l

131、t;p><b>  /*輸出鏈表*/</b></p><p>  void print(struct student *head)</p><p><b>  {</b></p><p>  struct student *p;</p><p>  printf("\n=======

132、======Student information=============\n");</p><p>  printf("\nthe %d recrods are:\n",n);</p><p>  printf("| NO. | Name | Sex |Chi |math|Eng | sum|\n");</p>

133、<p>  printf("|----------|--------|-----|----|----|----|------|\n");</p><p><b>  p=head;</b></p><p>  if(p!=NULL)</p><p><b>  do</b></p&g

134、t;<p><b>  {</b></p><p>  p->sum=p->chinese+p->math+p->english;</p><p>  /*求總分賦給totalscorescore*/</p><p><b>  /*輸出各項值*/</b></p><

135、;p>  printf("|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|\n",</p><p>  p->num, p->name,p->sex,p->chinese,p->math,</p><p>  p->english,p->sum);</p><p>  p=p->

136、next; /*將p原來指向的節(jié)點中next的值賦給p,使p指向第下一個節(jié)點*/</p><p>  p->sum=NULL; /*將總分totalscorescore賦空地址*/</p><p>  }while(p!=NULL);</p&g

137、t;<p>  else printf("\nNo records\n");</p><p>  printf("===============END====================\n") ;</p><p><b>  }</b></p><p><b>  /*刪除節(jié)

溫馨提示

  • 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

提交評論