版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告
- c語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告----學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告(學(xué)生成績(jī)管理系統(tǒng)c語(yǔ)言)
- [c語(yǔ)言畢設(shè)]c語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言程序設(shè)計(jì)報(bào)告-班級(jí)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言程序設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論