c語(yǔ)言實(shí)習(xí)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、…………………………………………………………………… 3</p><p>  三、學(xué)生成績(jī)管理系統(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ù)的功能和實(shí)現(xiàn)………………………………………… 6</p><p>  3.3.3各部分流程圖…………………………………………………………… 6</p><p>  3.3.4性能要求

5、………………………………………………………………… 8</p><p>  四、詳細(xì)設(shè)計(jì)……………………………………………………………8</p><p>  4.1關(guān)鍵部分的代碼、說(shuō)明及運(yù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>  五、實(shí)習(xí)心得體會(huì)………………………………………………………24</p><p>  六、附錄:參考文獻(xiàn)………………………………………………

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31、t()來(lái)實(shí)現(xiàn),首先將信息保存到文件中,釋放動(dòng)態(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.對(duì)信息的排序流程圖</p><p><b>  3.3.4性能要求</b></p><p>  1、功能分別用函數(shù)實(shí)現(xiàn);</p><p>  2、信息讓用戶通過(guò)鍵盤(pán)輸入;</p><p><b>  3、通過(guò)計(jì)算獲得;</b></p>&l

33、t;p>  4、簡(jiǎn)單的操作界面;</p><p>  5、可能考慮程序的容錯(cuò)</p><p><b>  四、詳細(xì)設(shè)計(jì)</b></p><p>  4.1關(guān)鍵部分的代碼、說(shuō)明及運(yù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ù)的長(zhǎng)度,sizeof是“求字節(jié)數(shù)運(yùn)算符”*/</p><p>  struct student

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

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

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

39、/</p><p>  struct student *next;</p><p><b>  };</b></p><p>  int n; /*n為全局變量,定義為節(jié)點(diǎn)個(gè)數(shù)*/</p><p>  /*創(chuàng)建鏈表,帶回一個(gè)指向鏈表頭的指針*/&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); /*開(kāi)辟一個(gè)新單元*/</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) /*驗(yàn)證成績(jī)是否在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"); /*驗(yàn)證成績(jī)是否在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"); /*驗(yàn)證成績(jī)是否在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>  /*輸出各項(xiàng)值*/</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原來(lái)指向的節(jié)點(diǎn)中n

85、ext的值賦給p,使p指向第下一個(gè)節(jié)點(diǎn)*/</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é)號(hào)排序,界面如下:</p><p><b>  6、插入信息部分</b></p><p>  /*插入結(jié)點(diǎn)函數(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é)點(diǎn)*/</b></p><p>  struct student *del(struct

99、student *head,long num)/*參數(shù)為起始地址head和學(xué)號(hào)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é)點(diǎn),并且后面還有節(jié)點(diǎn)*/</p><p><b>  {</b></p><

101、;p>  p2=p1;p1=p1->next; /**p1后移一個(gè)節(jié)點(diǎn)*/</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é)點(diǎn),把第二個(gè)節(jié)點(diǎn)地址賦予head*/</p><p>  else p2->next=p1->next; /*否則將下一節(jié)點(diǎn)地址賦給前一節(jié)點(diǎn)地址*/</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é)點(diǎn)*/</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ù)的長(zhǎng)度,sizeof是“求字節(jié)數(shù)運(yùn)算符”*/</p><p>  struct student

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

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

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

110、gt;  struct student *next;</p><p><b>  };</b></p><p>  int n; /*n為全局變量,定義為節(jié)點(diǎn)個(gè)數(shù)*/</p><p>  /*創(chuàng)建鏈表,帶回一個(gè)指向鏈表頭的指針*/</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); /*開(kāi)辟一個(gè)新單元*/</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) /*驗(yàn)證成績(jī)是否在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、 /*驗(yàn)證成績(jī)是否在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"); /*驗(yàn)證成績(jī)是否在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>  /*輸出各項(xiàng)值*/</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原來(lái)指向的節(jié)點(diǎn)中next的值賦給p,使p指向第下一個(gè)節(jié)點(diǎn)*/</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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論