版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書</p><p> 題 目: 學(xué)生成績(jī)管理系統(tǒng) </p><p> 專 業(yè): 信息管理與信息系統(tǒng) </p><p> 班 級(jí):
2、 ----- </p><p> 姓 名: ----- </p><p> 學(xué) 號(hào): -- ____</p><p> 指導(dǎo)老師: -- -- </p><p
3、> 設(shè)計(jì)時(shí)間:2011年3月14日~ 2011年3月18日</p><p><b> 目 錄</b></p><p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書1</p><p> 1. 課程設(shè)計(jì)(實(shí)訓(xùn))計(jì)劃1</p><p> 2. 系統(tǒng)需求分析與功能設(shè)計(jì)1</p><p>&
4、lt;b> 3. 總體設(shè)計(jì)1</b></p><p><b> 4、算法說明2</b></p><p> 5、系統(tǒng)難點(diǎn)分析3</p><p><b> 6、系統(tǒng)測(cè)試3</b></p><p><b> 7、心得體會(huì)8</b></p&g
5、t;<p><b> 8、參考文獻(xiàn)9</b></p><p><b> 附錄源代碼9</b></p><p> 1. 課程設(shè)計(jì)(實(shí)訓(xùn))計(jì)劃</p><p><b> (1)編寫算法;</b></p><p><b> (2)算法測(cè)試;<
6、;/b></p><p> ?。?)設(shè)計(jì)實(shí)驗(yàn)報(bào)告:</p><p><b> 1)設(shè)計(jì)任務(wù)書</b></p><p><b> 2)目錄</b></p><p> 3)總體設(shè)計(jì)方案(流程圖)</p><p> 4)使用說明書及運(yùn)行實(shí)例(界面)</p>
7、<p><b> 5)源代碼及注釋</b></p><p><b> 6)課程設(shè)計(jì)心得</b></p><p> 2. 系統(tǒng)需求分析與功能設(shè)計(jì)</p><p> ?。?)成績(jī)管理系統(tǒng)主要功能:</p><p><b> 1)初始化鏈表</b></p&
8、gt;<p><b> 2)輸入數(shù)據(jù)</b></p><p><b> 3)顯示全部記錄</b></p><p> 4)查詢記錄(分按姓名和學(xué)號(hào)查詢兩種)</p><p><b> 5)刪除記錄</b></p><p><b> 6)添加記錄&
9、lt;/b></p><p> 6)學(xué)生成績(jī)排名并顯示排名</p><p><b> ?。?)界面設(shè)計(jì)</b></p><p> 系統(tǒng)界面采用圖形和數(shù)字化菜單設(shè)計(jì)</p><p> ?。?)課程設(shè)計(jì)的要求和數(shù)據(jù)</p><p><b> 1)C語言實(shí)現(xiàn)</b>&l
10、t;/p><p> 2)對(duì)學(xué)生信息進(jìn)行管理(包括成績(jī)的輸入、輸出、查詢、刪除、排序、退出)</p><p><b> 3)學(xué)生信息:</b></p><p> 基本信息:學(xué)號(hào)、姓名、性別、成績(jī)等</p><p> 學(xué)生成績(jī)輸入(一次性輸入一條記錄并計(jì)算總分及平均分)</p><p> 顯示信
11、息:完成全部學(xué)生記錄的顯示</p><p> 查詢信息:完成按學(xué)號(hào)和按姓名查詢記錄,并顯示</p><p> 刪除信息:按學(xué)號(hào)刪除信息</p><p> 排序:按學(xué)生總分排序,顯示排名</p><p> 4)應(yīng)提供一個(gè)主界面調(diào)用各項(xiàng)功能,使得操作界面清晰美觀</p><p> 5)退出系統(tǒng),記錄無保存<
12、/p><p><b> 3. 總體設(shè)計(jì)</b></p><p><b> 1、功能模塊:</b></p><p><b> ?。?)成績(jī)輸入功能</b></p><p><b> ?。?)成績(jī)輸出功能</b></p><p><
13、;b> (3)成績(jī)查詢功能</b></p><p><b> ?。?)刪除功能</b></p><p><b> ?。?)排序功能</b></p><p><b> ?。?)退出系統(tǒng)</b></p><p><b> 2、詳細(xì)設(shè)計(jì):</b&
14、gt;</p><p> (1)初始化學(xué)生信息表:申請(qǐng)頭結(jié)點(diǎn)STU *head,head->next=NULL;實(shí)現(xiàn)此操作</p><p> (2)成績(jī)輸出模塊:void xianshi(L) void paixu(L) void chaxun(L)通過此輸出信息</p><p> ?。?)查詢模塊:void chanzhao(L)實(shí)現(xiàn)個(gè)種查找功能<
15、/p><p> ?。?)刪除功能:void shanchu(L)</p><p> ?。?)排序功能:void paixu(L)</p><p><b> 3、總體設(shè)計(jì)方案</b></p><p><b> 程序流程圖:</b></p><p><b> 4、算法
16、說明</b></p><p> Void main()主函數(shù)(內(nèi)含初始化鏈表head=(STU *) malloc (sizeof(STU));</p><p> head->next=NULL、主界面、函數(shù)調(diào)用模塊應(yīng)用switch()語句);</p><p> Void shuru(L)創(chuàng)建輸入數(shù)據(jù):r=(STU*)malloc(sizeo
17、f(STU))申請(qǐng)結(jié)點(diǎn)</p><p> 輸入數(shù)據(jù),插入到鏈表,r->next=NULL;s->next=r;s=r;保存;</p><p> Void xianshi(L)顯示學(xué)生信息:應(yīng)用循環(huán)語句while(q->next!=tail)輸出每一節(jié)點(diǎn)數(shù)據(jù),直至q指向?yàn)楣?jié)點(diǎn)tail=NULL;</p><p> Void chaxun(
18、L)查找學(xué)生信息并顯示結(jié)果:分按學(xué)號(hào)和姓名查詢并輸出查找的信息,switch做判斷按何種方式查詢,while()循環(huán)語句進(jìn)行匹配查詢,知道找到為止,引用strcmp()函數(shù)進(jìn)行匹配;</p><p> Void chazhao( L,no)按要求查找記錄:while()語句循環(huán)按學(xué)號(hào)進(jìn)行查找;</p><p> Void tianjia(L)尾插法插入數(shù)據(jù),p2=(STU*)mallo
19、c(sizeof(STU))申請(qǐng)結(jié)點(diǎn),輸入數(shù)據(jù),找到尾結(jié)點(diǎn)for(p3=L;p3->next!=NULL;p3=p3->next),插入鏈表p3->next=p2;</p><p> Void gengxin(L)修改學(xué)生信息:查找函數(shù)chazhao()找到要修改的節(jié)點(diǎn),再進(jìn)行修改</p><p> Void shanchu(L)刪除學(xué)生記錄:while((strcm
20、p(p->sname,name)!=0)&&p->next!=NULL)找到要?jiǎng)h除的節(jié)點(diǎn),進(jìn)行刪除;</p><p> Void mingci(L)為學(xué)生成績(jī)排名并顯示排名;冒泡排序法給鏈表安總成績(jī)排名,然后for()循環(huán)輸出排序完的鏈表數(shù)據(jù)。</p><p><b> 5、系統(tǒng)難點(diǎn)分析</b></p><p>
21、 1、鏈表的排序,只能做到初步的排序,不能實(shí)現(xiàn)對(duì)成績(jī)相同的學(xué)生排名相同功能;</p><p> 2、查找功能不夠強(qiáng)大,對(duì)字符串的查詢比如不區(qū)分大小寫功能不能實(shí)現(xiàn);</p><p> 3、對(duì)各種輸入值不加于區(qū)分,比如姓名寫成數(shù)字,年齡的限制(1-100)</p><p> 4、程序重復(fù)的語句多、繁瑣,不善應(yīng)用函數(shù)的調(diào)用。</p><p>
22、;<b> 6、系統(tǒng)測(cè)試</b></p><p><b> 源代碼(見附錄)</b></p><p> 調(diào)試運(yùn)行如下:(如圖1、圖2)</p><p><b> 圖1</b></p><p><b> 圖2</b></p><
23、p><b> 圖3</b></p><p><b> 輸入測(cè)試:10</b></p><p> 輸入目的:查看輸入除主界面外的序號(hào)可否進(jìn)行操作。</p><p> 正確輸出:輸入錯(cuò)誤!請(qǐng)慎重選擇。</p><p> 實(shí)際輸出:如下圖所示。</p><p>
24、當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:輸入一個(gè)主界面不包含的選項(xiàng)。得到數(shù)據(jù)顯示輸入錯(cuò)誤。(如圖3)</p><p><b> 圖4</b></p><p><b> 輸入測(cè)試:a</b></p><p> 輸入目的:查看輸入字符可否進(jìn)行操作。<
25、;/p><p> 正確輸出:輸入錯(cuò)誤!請(qǐng)慎重選擇。</p><p><b> 實(shí)際輸出:(圖4)</b></p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:輸入一個(gè)主界面不包含的選項(xiàng)。得到數(shù)據(jù)顯示輸入錯(cuò)誤。</p><p><b>
26、 圖5已刪</b></p><p> 測(cè)試輸入:輸入姓名:邱為民;輸入學(xué)號(hào):1;輸入性別:1為男;輸入年齡:21;輸入語文成績(jī)88;數(shù)學(xué)成績(jī)82;英語成績(jī)89;一個(gè)學(xué)生信息登記完畢。再輸入另一個(gè)學(xué)生數(shù)據(jù):輸入姓名:陳婷婷;輸入學(xué)號(hào):1;輸入性別:</p><p> 測(cè)試目的:設(shè)計(jì)該輸入的目的在于測(cè)試程序在登記學(xué)生信息方面是否存在無法登記學(xué)生信息、在選擇登記學(xué)生信息時(shí)是否沒有
27、出現(xiàn)相應(yīng)界面等情況以及能否正確輸入等功能。</p><p> 正確輸出:輸入姓名:邱為民;輸入學(xué)號(hào):1;輸入性別:1為男;輸入年齡:21;輸入語文成績(jī)88;輸入數(shù)學(xué)成績(jī)82;輸入英語成績(jī)89選擇是否輸入信息請(qǐng)按(1、0):1;輸入姓名:陳婷婷;輸入學(xué)號(hào):1;輸入性別:0;輸入年齡:</p><p> 實(shí)際輸出:如上(圖5)輸出界面。</p><p> 當(dāng)前狀態(tài)
28、:已改正(實(shí)際輸出與正確輸出不符,但現(xiàn)在已修改正確)</p><p> 測(cè)試結(jié)果分析:測(cè)試策略在于輸入一組數(shù)據(jù)后以便后面的操作完成學(xué)生信息的登記。得到的數(shù)據(jù)由上面的截圖(圖5)證明。</p><p> 測(cè)試輸入:2選擇顯示</p><p> 測(cè)試目的:測(cè)試顯示功能是否能夠?qū)崿F(xiàn)</p><p> 正確輸出:按姓名、學(xué)號(hào)、性別、年齡、語文
29、、數(shù)學(xué)、英語、平均分及總分顯示學(xué)生信息。</p><p> 實(shí)際輸出:如下圖(圖6)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:選擇查找看其是否正確找到所查找數(shù)據(jù)。得到數(shù)據(jù)結(jié)果顯示查找無誤。</p><p><b> 圖6已刪</b></p&g
30、t;<p> 測(cè)試輸入:3選擇查找</p><p> 測(cè)試目的:測(cè)試查找功能是否能夠?qū)崿F(xiàn)</p><p> 正確輸出:1按學(xué)號(hào)查詢 2按姓名查詢 0返回主菜單 選擇1 請(qǐng)輸入要查找的學(xué)號(hào):1查找結(jié)果:既要查找的數(shù)據(jù)。查詢完畢或沒有要查詢的記錄!</p><p> 實(shí)際輸出:如下圖(圖7)所示。</p><p> 當(dāng)前狀
31、態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:按學(xué)號(hào)查找,首先要輸入對(duì)應(yīng)的數(shù)據(jù),接著成功查找。顯示的數(shù)據(jù)是按學(xué)號(hào)查找的結(jié)果,無差錯(cuò)。</p><p><b> 圖7已刪</b></p><p> 測(cè)試輸入:4選擇添加學(xué)生數(shù)據(jù)。</p><p> 測(cè)試目的:查看添加功能是否能夠運(yùn)行。&
32、lt;/p><p> 正確輸出:;輸入要添加的姓名:小丘;輸入添加的學(xué)號(hào):7;輸入性別(1為男,0為女):0;輸入年齡:19;請(qǐng)你輸入語文成績(jī):88;輸入數(shù)學(xué)成績(jī):85;輸入英語成績(jī):90;此信息已添加。并且再次查詢。</p><p> 實(shí)際輸出:如下圖(圖8)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p>
33、; 測(cè)試結(jié)果分析:測(cè)試策略:分別輸入提示信息查看添加功能是否能夠運(yùn)用。通過再次查詢顯示添加無誤。</p><p><b> 圖8已刪</b></p><p><b> 圖9已刪</b></p><p> 測(cè)試輸入:5選擇修改學(xué)生數(shù)據(jù)。</p><p> 測(cè)試目的:測(cè)試是否能夠?qū)崿F(xiàn)修改功能。
34、</p><p> 正確輸出:輸入要修改的人名:小丘;輸入新姓名:小球球;輸入新學(xué)號(hào)(原來是學(xué)號(hào)5):5;輸入新性別:(1是男0是女)0;輸入年齡(原來年齡是19)19;輸入語文成績(jī)(原來是88.000000分):88;輸入數(shù)學(xué)成績(jī)(原來是88.000000分):85;請(qǐng)你輸入英語成績(jī)(原來是88.000000分):90;提示:修改完成或沒找到要修改的項(xiàng)!。再次查詢并顯示查詢結(jié)果。</p><
35、;p> 實(shí)際輸出:如上圖(圖9)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:根據(jù)提示輸入修改的數(shù)據(jù)分別觀察是否正確。得到的數(shù)據(jù)是提示我輸入信的數(shù)據(jù)并告訴我原來的數(shù)據(jù),我根據(jù)提示輸入新的數(shù)據(jù),結(jié)果無誤。</p><p> 測(cè)試輸入:6選擇刪除操作。</p><p>
36、 測(cè)試目的:測(cè)試其是否能夠正確刪除想要?jiǎng)h除的數(shù)據(jù)。</p><p> 正確輸出:請(qǐng)輸入要?jiǎng)h除的姓名:3;</p><p> 已刪除!并顯示新的數(shù)據(jù)。</p><p> 實(shí)際輸出:如圖(圖10)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:根據(jù)提示進(jìn)
37、行刪除;系統(tǒng)提示刪除成功。得到的數(shù)據(jù)顯示顯示刪除成功,證明這一部分無差錯(cuò)。</p><p><b> 圖10已刪</b></p><p> 測(cè)試輸入:7選擇排序</p><p> 測(cè)試目的:看排序功能是否能夠?qū)崿F(xiàn)</p><p> 正確輸出:按照名次、姓名、學(xué)號(hào)、性別、年齡、語文、數(shù)學(xué)、英語、平均分、總分顯示學(xué)生
38、數(shù)據(jù)。</p><p> 實(shí)際輸出:如下圖(圖11)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:測(cè)試策略:選擇排序,系統(tǒng)自動(dòng)根據(jù)總分和平均分對(duì)數(shù)據(jù)進(jìn)行排序并輸出。得到的數(shù)據(jù)顯示并未出錯(cuò)。</p><p><b> 圖11已刪</b></p>&l
39、t;p> 測(cè)試輸入:0選擇退出。</p><p> 測(cè)試目的:成功退出系統(tǒng)。</p><p> 正確輸出:press any key to continue.</p><p> 實(shí)際輸出:如下圖(圖12)所示。</p><p> 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。</p><p> 測(cè)試結(jié)果分析:
40、測(cè)試策略:選擇退出以便成功退出系統(tǒng)。得到數(shù)據(jù):無誤</p><p><b> 圖12已刪</b></p><p><b> 7、心得體會(huì)</b></p><p> 這次的實(shí)訓(xùn)結(jié)束了,現(xiàn)在的我正在做著最后的工作——填寫實(shí)訓(xùn)報(bào)告。</p><p> 感觸還真是很多,那幾天的堅(jiān)持,每天八節(jié)課就坐在
41、電腦前敲著代碼,有的時(shí)候晚上回了寢室還要繼續(xù)敲??梢哉f我們男生還是對(duì)程序這塊比較感興趣的。但是面對(duì)這么大的一個(gè)課題寫這樣的一個(gè)程序我還是第一次,所以對(duì)于我來說難道還是挺大的。很多時(shí)候焦頭爛額心煩意亂也寫不好,寫出來后反復(fù)調(diào)試反復(fù)出錯(cuò),簡(jiǎn)直是在考驗(yàn)我們的耐心??粗總€(gè)同學(xué)焦急的樣子,真的有點(diǎn)擔(dān)心在規(guī)定的期限內(nèi)是不是能夠完成任務(wù)。所以期間自己會(huì)想,如果將來從事了這個(gè)行業(yè),面對(duì)更加復(fù)雜的程序更加有難度的題目要求,心理壓力不是更大么?</
42、p><p> 不管怎么樣,還是要把程序?qū)懲辍F渲幸灿龅搅撕芏嗬щy:因?yàn)檫@個(gè)題目要求要有9個(gè)小題目,而且有的小題目還要求里面還要有選擇,這樣難度更加提高而且更加復(fù)雜。剛開始會(huì)理不出頭緒,不知道該先弄哪一塊。從頭開始往后寫整個(gè)程序是不可能的,那樣會(huì)錯(cuò)的更加離譜,所以只好先分快些再綜合起來。而且整個(gè)星期天天對(duì)著電腦敲這樣一個(gè)程序確實(shí)很煩躁。但是告訴自己要堅(jiān)持下去,到了最后把程序調(diào)試出來后,心里真的是激動(dòng)萬分,感慨也頗深:
43、</p><p> 面對(duì)復(fù)雜的事情而且要長(zhǎng)期堅(jiān)持時(shí),千萬不可浮躁了事,那樣欠下的債會(huì)越來越多,一定要定下心來踏踏實(shí)實(shí)的去做,我發(fā)現(xiàn)有了好的開始,后面再亂的思緒也會(huì)慢慢捋清楚。</p><p> 心態(tài)很重要,第一天還好,第二天的時(shí)候,心虛特別浮躁,顯然那天的效率十分低下,回去后和朋友聊天,被開導(dǎo)后慢慢整理思緒平靜下心來開始做,發(fā)現(xiàn)一切并沒有原本想象的那么棘手。</p>&l
44、t;p> 面對(duì)問題要自己主動(dòng)去解決,程序過程中難免有很多難題,別人無法幫助自己,要靠自己去努力克服才能接著做下一步。</p><p> 所以在完成后,除了自己完成任務(wù)的喜悅感意外,還有一些感慨,我覺得這一次我不僅僅收獲了如何去寫一個(gè)程序,而是如何做好一件看似棘手困難的復(fù)雜的事情。</p><p><b> 8、參考文獻(xiàn)</b></p><
45、;p> [1]楊路明,c語言程序設(shè)計(jì)教程.北京:郵電大學(xué)出版社,2005年12月第2版</p><p> [2]耿國(guó)華,數(shù)據(jù)結(jié)構(gòu)—C語言描述.北京:高等教育出版社,2005年7月第1版</p><p><b> 附錄源代碼</b></p><p><b> 如下:</b></p><p&g
46、t; #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <malloc.h></p><p> #include <string.h></p><p> #include "linlist.h&
47、quot;</p><p><b> /*定義結(jié)構(gòu)體類型</b></p><p> typedef struct Stu</p><p><b> {</b></p><p> char sname[20];</p><p><b> int sno;&l
48、t;/b></p><p> char sex[10];</p><p> int nianling;</p><p> float yuwen;</p><p> float shuxue;</p><p> float yingyu;</p><p> float avg;
49、</p><p> float sum;</p><p> struct Stu *next;</p><p> }STU,*Linlist;</p><p> void shuru(L);</p><p> void xianshi(L);</p><p> void chaxun
50、(L);</p><p> void tianjia(L);</p><p> void gengxin(L);</p><p> void shanchu(L);</p><p> void mingci(L);</p><p> STU* chazhao(Linlist L,int no);</p&
51、gt;<p><b> /*主函數(shù)*/</b></p><p> void main()</p><p><b> {</b></p><p><b> int m;</b></p><p> STU *head;</p><p&g
52、t; head=(STU *) malloc (sizeof(STU));</p><p> head->next=NULL;</p><p><b> while(m)</b></p><p><b> {</b></p><p> printf("
53、*******************歡迎進(jìn)入學(xué)生成績(jī)管理***************\n");</p><p> printf(" ||輸入 0 返回 ||\n\n");</p><p> printf(" ||輸入
54、 1 輸入學(xué)生信息 ||\n\n");</p><p> printf(" ||輸入 2 顯示學(xué)生信息 ||\n\n");</p><p> printf(" ||輸入
55、3 查詢學(xué)生信息 ||\n\n");</p><p> printf(" ||輸入 4 添加學(xué)生信息 ||\n\n");</p><p> printf(" ||輸入 5 更新學(xué)生信息
56、 ||\n\n");</p><p> printf(" ||輸入 6 刪除學(xué)生信息 ||\n\n");</p><p> printf(" ||輸入 7 計(jì)算并顯示學(xué)生排名
57、 ||\n");</p><p> printf(" ******************************************************\n");</p><p> scanf("%d",&m);</p><p><b> swit
58、ch(m)</b></p><p><b> {</b></p><p> case 1:shuru(L);break;</p><p> case 2:xianshi(L);break;</p><p> case 3:chaxun(L);break;</p><p> c
59、ase 4:tianjia(L);break;</p><p> case 5:gengxin(L);break;</p><p> case 6:shanchu(L);break;</p><p> case 7:mingci(L);break;</p><p> case 0:; break;</p><p&
60、gt;<b> default:</b></p><p> printf("輸入錯(cuò)誤!請(qǐng)慎重選擇\n");break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&
61、gt;</p><p><b> /*各子函數(shù)*/</b></p><p> STU* chazhao(Linlist L,int no) /* 按學(xué)號(hào)查詢 */ </p><p><b> { </b></p><p> STU *r; </p><p> r
62、=L->next; </p><p> while(r!=NULL) </p><p><b> { </b></p><p> if(r->sno==no) </p><p> return r; </p><p> r=r->next; </p>&l
63、t;p><b> } </b></p><p> return 0; </p><p><b> } </b></p><p> void shuru(Linlist head)</p><p><b> {</b></p><p>
64、 int flag=1, c,sex,sno;</p><p> STU *r=NULL,*s=NULL,*m=NULL;</p><p><b> s=head;</b></p><p> while(s->next!=NULL) </p><p> s=s->next; /* 將指針置于最末尾 *
65、/</p><p><b> while(1)</b></p><p><b> { </b></p><p> r=(STU*)malloc(sizeof(STU));/*申請(qǐng)結(jié)點(diǎn)*/</p><p> printf("輸入姓名:"); /*添加信息*/&
66、lt;/p><p> scanf("%s",r->sname);</p><p> printf("輸入學(xué)號(hào):");</p><p> scanf("%d",&sno);</p><p> m=chazhao(head,sno);</p><p&
67、gt; while(m!=NULL){</p><p> m=chazhao(head,sno);</p><p> if(m!=NULL)</p><p><b> {</b></p><p> printf("請(qǐng)你輸入不重復(fù)的學(xué)號(hào):\n"); </p><p>
68、 scanf("%d",&sno);</p><p><b> }</b></p><p><b> }</b></p><p> r->sno=sno;</p><p> printf("輸入性別(1->boy,0->girl):&q
69、uot;);</p><p><b> do{</b></p><p> scanf("%d",&sex); </p><p> if(sex==1)strcpy(r->sex,"boy");</p><p> else if(sex==0) strcpy(r
70、->sex,"girl");</p><p> else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n");</p><p> }while(sex!=1&&sex!=0);</p><p> printf("輸入年齡:");</p>
71、<p> scanf("%d",&r->nianling);</p><p> printf("輸入語文成績(jī):");</p><p> scanf("%f",&r->yuwen);</p><p> while(r->yuwen<0.0||r-&g
72、t;yuwen>100.0)</p><p><b> {</b></p><p> if(r->yuwen<0.0||r->yuwen>100.0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n&
73、quot;);</p><p> printf("輸入語文成績(jī):");</p><p> scanf("%f",&r->yuwen);</p><p><b> }</b></p><p><b> }</b></p>&l
74、t;p> printf("輸入數(shù)學(xué)成績(jī):");</p><p> scanf("%f",&r->shuxue);</p><p> while(r->shuxue<0.0||r->shuxue>100.0)</p><p><b> {</b></
75、p><p> if(r->shuxue<0.0||r->shuxue>100.0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入數(shù)學(xué)成績(jī):");</
76、p><p> scanf("%f",&r->shuxue);</p><p><b> }</b></p><p><b> }</b></p><p> printf("輸入英語成績(jī):");</p><p> sc
77、anf("%f",&r->yingyu);</p><p> while(r->yingyu<0.0||r->yingyu>100.0)</p><p><b> {</b></p><p> if(r->yingyu<0.0||r->yingyu>100.
78、0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入英語:");</p><p> scanf("%f",&r->yingyu);</p
79、><p><b> }</b></p><p><b> }</b></p><p> r->sum=r->yuwen+r->shuxue+r->yingyu;</p><p> r->avg=r->sum/3;</p><p> r
80、->next=NULL;</p><p> s->next=r;</p><p> s=r; </p><p> printf("選擇是否輸入信息請(qǐng)按(1/0):\n");</p><p> scanf("%d",&c);</p><
81、;p> if(c==0) break;</p><p> } /*保存鏈表*/</p><p> printf("信息已輸入!\n");</p><p> }void xianshi(Linlist L)</p><p><b> {</b></p>
82、<p> STU *a=NULL;</p><p> STU *p,*q,*tail,*s;</p><p> tail=NULL;</p><p> if(L->next==NULL)</p><p><b> {</b></p><p> printf("
83、;此表中無記錄,請(qǐng)輸入記錄后在使用此功能!\n");</p><p><b> return;</b></p><p><b> }</b></p><p> while(L->next!=tail)</p><p><b> {</b></p&g
84、t;<p><b> p=L;</b></p><p> q=p->next;</p><p> while(q->next!=tail)</p><p><b> {</b></p><p> if(p->next->sno>q->nex
85、t->sno)</p><p> { s=q->next;</p><p> p->next=q->next;</p><p> q->next=q->next->next;</p><p> p->next->next=q;</p><p><b
86、> q=s;</b></p><p><b> }</b></p><p> p=p->next;</p><p> q=q->next;</p><p><b> }</b></p><p><b> tail=q;<
87、;/b></p><p><b> }</b></p><p> a=L->next;</p><p> printf("姓名\t學(xué)號(hào)\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\t平均分\t總分\n");</p><p> for(a=L->next;a!=NULL;a=a-&
88、gt;next)</p><p> printf("%-8s%-8d%-8s%-8d%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",a->sname,a->sno,a->sex,a->nianling,a->yuwen,a->shuxue,a->yingyu,a->avg,a->sum);</p><
89、;p><b> }</b></p><p> void chaxun(Linlist L)</p><p><b> {</b></p><p><b> STU *p;</b></p><p> char name[20];</p><p&
90、gt; int sno, n;</p><p> if(L->next==NULL)</p><p><b> {</b></p><p> printf("此表中無記錄,請(qǐng)輸入記錄后在使用此功能!\n");</p><p><b> return;</b><
91、;/p><p><b> }</b></p><p><b> while(n)</b></p><p><b> {</b></p><p> printf(" ***請(qǐng)選擇查詢方式***\n");</p><
92、;p> printf(" 1**********按學(xué)號(hào)查詢\n");</p><p> printf(" 2**********按姓名查詢\n");</p><p> printf(" 0**********返回主菜單\n");</p>
93、<p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1:{printf("請(qǐng)輸入要查詢的學(xué)號(hào):\n");</p><p>
94、; scanf("%d",&sno);</p><p> printf("**********學(xué)生信息***********\n");</p><p> printf("姓名\t學(xué)號(hào)\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\n");</p><p> for(p=L->next;p!=
95、NULL;p=p->next)</p><p><b> {</b></p><p> if((p->sno)==sno)printf("%-8s%-8d%-8s%-8d%-10.2f%-10.2f%-10.2f\n",p->sname,p->sno,p->sex,p->nianling,p->
96、;yuwen,p->shuxue,p->yingyu);</p><p><b> } }</b></p><p> printf("********查詢完畢或沒有要查詢的記錄!\n");break;</p><p> case 2:{printf("請(qǐng)輸入要查詢的姓名\n");<
97、/p><p> scanf("%s",name);</p><p> printf("**********學(xué)生信息***********\n");</p><p> printf("姓名\t學(xué)號(hào)\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\n");</p><p> for(p=L-
98、>next;p!=NULL;p=p->next)</p><p><b> {</b></p><p> if(strcmp(p->sname,name)==0)</p><p> printf("%-8s%-8d%-8s%-8d%-10.2f%-10.2f%-10.2f\n",p->sname
99、,p->sno,p->sex,p->nianling,p->yuwen,p->shuxue,p->yingyu);</p><p><b> } }</b></p><p> printf("********查詢完畢或沒有要查詢的記錄!\n");break;</p><p> c
100、ase 0:break;</p><p><b> default:</b></p><p> printf("輸入錯(cuò)誤!請(qǐng)慎重選擇");break;</p><p><b> }</b></p><p><b> }</b></p>
101、<p><b> }</b></p><p> void gengxin(Linlist L)</p><p><b> {</b></p><p> STU *p1,*m;</p><p> char name[20];</p><p> int se
102、x,sno;</p><p> if(L->next==NULL)</p><p><b> {</b></p><p> printf("此表中無記錄,請(qǐng)輸入記錄后在使用此功能!\n");</p><p><b> return;</b></p>&
103、lt;p><b> }</b></p><p> printf("輸入要修改的人名:");</p><p> scanf("%s",name);</p><p><b> p1=L;</b></p><p> while(p1!=NULL)&l
104、t;/p><p><b> {</b></p><p> if(strcmp(p1->sname,name)==0)</p><p><b> {</b></p><p> printf("輸入新姓名:"); /*修改信息*/</p><p>
105、 scanf("%s",p1->sname);</p><p> printf("輸入新學(xué)號(hào)(原來是學(xué)號(hào)%d):",p1->sno);</p><p> scanf("%d",&sno);</p><p> m=chazhao(L,sno);</p><p&g
106、t; while(m!=NULL){</p><p> m=chazhao(L,sno);</p><p> if(m!=NULL)</p><p><b> {</b></p><p> printf("請(qǐng)你輸入不重復(fù)的學(xué)號(hào)(以'0'返回上一級(jí)菜單:)\n"); </
107、p><p> scanf("%d",&sno);</p><p><b> }</b></p><p><b> }</b></p><p> p1->sno=sno;</p><p> printf("輸入新性別(1->
108、;boy,0->girl):");</p><p><b> do{</b></p><p> scanf("%d",&sex); </p><p> if(sex==1)strcpy(p1->sex,"boy");</p><p> else
109、 if(sex==0) strcpy(p1->sex,"girl");</p><p> else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n");</p><p> }while(sex!=1&&sex!=0);</p><p> printf("輸入年
110、齡(原來年齡是%d):",p1->nianling);</p><p> scanf("%d",&p1->nianling);</p><p> printf("輸入語文成績(jī)(原來是%f分):",p1->yuwen);</p><p> scanf("%f",&am
111、p;p1->yuwen);</p><p> while(p1->yuwen<0.0||p1->yuwen>100.0)</p><p><b> {</b></p><p> if(p1->yuwen<0.0||p1->yuwen>100.0)</p><p>
112、;<b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入語文成績(jī):");</p><p> scanf("%f",&p1->yuwen);</p><p><b
113、> }</b></p><p><b> }</b></p><p> printf("輸入數(shù)學(xué)成績(jī)(原來是%f分):",p1->shuxue);</p><p> scanf("%f",&p1->shuxue);</p><p>
114、while(p1->shuxue<0.0||p1->shuxue>100.0)</p><p><b> {</b></p><p> if(p1->shuxue<0.0||p1->shuxue>100.0)</p><p><b> {</b></p>
115、<p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入數(shù)學(xué)成績(jī):");</p><p> scanf("%f",&p1->shuxue);</p><p><b> }</b></p><p
116、><b> }</b></p><p> printf("輸入英語成績(jī)(原來是%f分):",p1->yingyu);</p><p> scanf("%f",&p1->yingyu);</p><p> while(p1->yingyu<0.0||p1->
117、;yingyu>100.0)</p><p><b> {</b></p><p> if(p1->yingyu<0.0||p1->yingyu>100.0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入
118、!\n");</p><p> printf("輸入英語成績(jī):");</p><p> scanf("%f",&p1->yingyu);</p><p><b> }</b></p><p><b> }</b></p&g
119、t;<p><b> }</b></p><p> p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;</p><p> p1->avg=p1->sum/3;</p><p> p1=p1->next;</p><p><
120、b> }</b></p><p> printf("修改完成或沒找到要修改的項(xiàng)!\n");</p><p><b> }</b></p><p> void tianjia(Linlist L)</p><p><b> {</b></p>
121、<p> STU *p2=NULL,*p3=NULL,*m;</p><p> int sex,sno;</p><p> p2=(STU*)malloc(sizeof(STU)); /*申請(qǐng)結(jié)點(diǎn)*/</p><p> if(L->next==NULL)</p><p><b> {</b
122、></p><p> printf("此表中無記錄,請(qǐng)輸入記錄后在使用此功能!\n");</p><p><b> return;</b></p><p><b> }</b></p><p> printf("輸入添加的姓名:"); <
123、/p><p> scanf("%s",p2->sname);</p><p> printf("輸入添加的學(xué)號(hào):"); </p><p> scanf("%d",&sno);</p><p> m=chazhao(L,sno);</p><p&g
124、t; while(m!=NULL){</p><p> m=chazhao(L,sno);</p><p> if(m!=NULL)</p><p><b> {</b></p><p> printf("請(qǐng)你輸入不重復(fù)的學(xué)號(hào)(以'0'返回上一級(jí)菜單:)\n"); </
125、p><p> scanf("%d",&sno);</p><p><b> }}</b></p><p> p2->sno=sno;</p><p> printf("輸入性別(1->boy,0->girl):");</p><
126、p><b> do{</b></p><p> scanf("%d",&sex); </p><p> if(sex==1)strcpy(p2->sex,"boy");</p><p> else if(sex==0) strcpy(p2->sex,"girl&
127、quot;);</p><p> else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n");</p><p> }while(sex!=1&&sex!=0);</p><p> printf("輸入年齡:");</p><p> scanf(&q
128、uot;%d",&p2->nianling);</p><p> printf("輸入語文成績(jī):");</p><p> scanf("%f",&p2->yuwen);</p><p> while(p2->yuwen<0.0||p2->yuwen>100.0
129、)</p><p><b> {</b></p><p> if(p2->yuwen<0.0||p2->yuwen>100.0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p&
130、gt;<p> printf("輸入語文成績(jī):");</p><p> scanf("%f",&p2->yuwen);</p><p><b> }</b></p><p><b> }</b></p><p> prin
131、tf("輸入數(shù)學(xué)成績(jī):");</p><p> scanf("%f",&p2->shuxue);</p><p> while(p2->shuxue<0.0||p2->shuxue>100.0)</p><p><b> {</b></p><
132、;p> if(p2->shuxue<0.0||p2->shuxue>100.0)</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入數(shù)學(xué)成績(jī):");</p>&
133、lt;p> scanf("%f",&p2->shuxue);</p><p><b> }</b></p><p><b> }</b></p><p> printf("輸入英語成績(jī):");</p><p> scanf(&qu
134、ot;%f",&p2->yingyu);</p><p> while(p2->yingyu<0.0||p2->yingyu>100.0)</p><p><b> {</b></p><p> if(p2->yingyu<0.0||p2->yingyu>100.0)
135、</p><p><b> {</b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");</p><p> printf("輸入英語成績(jī):");</p><p> scanf("%f",&p2->yingyu);</
136、p><p><b> }</b></p><p><b> }</b></p><p> p2->sum=p2->yuwen+p2->shuxue+p2->yingyu;</p><p> p2->avg=p2->sum/3;</p><p
137、> p2->next=NULL; </p><p><b> /*保存到鏈表*/</b></p><p> if(L==NULL)</p><p><b> {</b></p><p> L=(STU*)malloc(sizeof(STU));</p>&l
138、t;p> L->next=p2;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(p3=L;p3->next!=NULL;p3=p3->next)
139、;/*找到尾結(jié)點(diǎn)*/</p><p> p3->next=p2;</p><p><b> }</b></p><p> printf("此信息已添加\n");</p><p><b> }</b></p><p> void shanch
140、u(Linlist L)</p><p><b> {</b></p><p> STU *p=L,*pr=L;</p><p> char name[20];</p><p> if(L->next==NULL)</p><p><b> {</b><
141、/p><p> printf("此表中無記錄,請(qǐng)輸入記錄后在使用此功能!\n");</p><p><b> return;</b></p><p><b> }</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除的姓名:\n");</p>
142、<p> scanf("%s",name);</p><p> if(L==NULL)</p><p><b> {</b></p><p> printf("無此結(jié)點(diǎn)\n");</p><p><b> return;</b><
143、/p><p><b> }</b></p><p> while((strcmp(p->sname,name)!=0)&&p->next!=NULL)</p><p><b> {</b></p><p><b> pr=p;</b></p
144、><p> p=p->next;</p><p><b> }</b></p><p> if(strcmp(p->sname,name)==0)</p><p><b> {if(p==L)</b></p><p> L=p->next;</p
145、><p><b> else</b></p><p> pr->next=p->next;</p><p><b> free(p);</b></p><p> printf("已刪除!\n");</p><p><b> }e
146、lse</b></p><p> printf("沒有找到要?jiǎng)h除的對(duì)象\n");</p><p><b> }</b></p><p> void mingci(Linlist L)</p><p><b> {</b></p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)(部分)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)查詢系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理問題
- 數(shù)據(jù)結(jié)構(gòu)學(xué)生成績(jī)管理課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理
- 數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理程序的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論