數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)(20頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書 信息科學(xué)與技術(shù)學(xué)院 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書 題 目: 學(xué)生成績管理系統(tǒng) 專 業(yè): 信息管理與信息系統(tǒng) 班 級: ----- 姓 名: ----- 學(xué) 號: -- ____ 指導(dǎo)老師: -- -- 設(shè)計(jì)時(shí)
2、間:2011年3月14日~ 2011年3月18日 目 錄 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書 1 1. 課程設(shè)計(jì)(實(shí)訓(xùn))計(jì)劃 1 2. 系統(tǒng)需求分析與功能設(shè)計(jì) 1 3. 總體設(shè)計(jì) 1 4、算法說明 2 5、系統(tǒng)難點(diǎn)分析 3 6、系統(tǒng)測試 3 7、心得體會(huì) 8 8、參考文獻(xiàn) 9 附錄源代碼 9 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)(實(shí)訓(xùn))報(bào)告書 1. 課程設(shè)計(jì)(實(shí)訓(xùn))計(jì)劃 (1)編寫算法; (2)算法測試; (3)設(shè)計(jì)實(shí)驗(yàn)報(bào)告: 1)設(shè)計(jì)任務(wù)書 2)目錄 3)總體設(shè)計(jì)方案(流程圖) 4)使用說明書及運(yùn)行實(shí)例(界面
3、) 5)源代碼及注釋 6)課程設(shè)計(jì)心得 2. 系統(tǒng)需求分析與功能設(shè)計(jì) (1)成績管理系統(tǒng)主要功能: 1)初始化鏈表 2)輸入數(shù)據(jù) 3)顯示全部記錄 4)查詢記錄(分按姓名和學(xué)號查詢兩種) 5)刪除記錄 6)添加記錄 6)學(xué)生成績排名并顯示排名 (2)界面設(shè)計(jì) 系統(tǒng)界面采用圖形和數(shù)字化菜單設(shè)計(jì) (3)課程設(shè)計(jì)的要求和數(shù)據(jù) 1)C語言實(shí)現(xiàn) 2)對學(xué)生信息進(jìn)行管理(包括成績的輸入、輸出、查詢、刪除、排序、退出) 3)學(xué)生信息: 基本信息:學(xué)號、姓名、性別、成績等 學(xué)生成績輸入(一次性輸入一條記錄并計(jì)算總分及平均分) 顯示信息:完成全
4、部學(xué)生記錄的顯示 查詢信息:完成按學(xué)號和按姓名查詢記錄,并顯示 刪除信息:按學(xué)號刪除信息 排序:按學(xué)生總分排序,顯示排名 4)應(yīng)提供一個(gè)主界面調(diào)用各項(xiàng)功能,使得操作界面清晰美觀 5)退出系統(tǒng),記錄無保存 3. 總體設(shè)計(jì) 1、功能模塊: (1)成績輸入功能 (2)成績輸出功能 (3)成績查詢功能 (4)刪除功能 (5)排序功能 (6)退出系統(tǒng) 2、詳細(xì)設(shè)計(jì): (1)初始化學(xué)生信息表:申請頭結(jié)點(diǎn)STU *head,head->next=NULL;實(shí)現(xiàn)此操作 (2)成績輸出模塊:void xianshi(L) void paixu(L) void chaxun(L)通
5、過此輸出信息 (3)查詢模塊:void chanzhao(L)實(shí)現(xiàn)個(gè)種查找功能 (4)刪除功能:void shanchu(L) (5)排序功能:void paixu(L) 3、總體設(shè)計(jì)方案 程序流程圖: 結(jié)束 開始 輸出菜單 根據(jù)菜單輸入n的值選擇程序 輸入 退出 輸出 查找 排序 添加 刪除 4、算法說明 Void main()主函數(shù)(內(nèi)含初始化鏈表head=(STU *) malloc (sizeof(STU)); head->next=NU
6、LL、主界面、函數(shù)調(diào)用模塊應(yīng)用switch()語句); Void shuru(L)創(chuàng)建輸入數(shù)據(jù):r=(STU*)malloc(sizeof(STU))申請結(jié)點(diǎn) 輸入數(shù)據(jù),插入到鏈表,r->next=NULL;s->next=r;s=r; 保存; 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; Void chaxun(L)查找學(xué)生信息并顯示結(jié)果:分按學(xué)號和姓名查詢并輸出查找的信息,switch做判斷按何種方式查詢,while()循環(huán)語句進(jìn)行匹配查詢,知道找到為止,引用strcmp(
7、)函數(shù)進(jìn)行匹配; Void chazhao( L,no)按要求查找記錄:while()語句循環(huán)按學(xué)號進(jìn)行查找; Void tianjia(L)尾插法插入數(shù)據(jù),p2=(STU*)malloc(sizeof(STU))申請結(jié)點(diǎn),輸入數(shù)據(jù),找到尾結(jié)點(diǎn)for(p3=L;p3->next!=NULL;p3=p3->next),插入鏈表p3->next=p2; Void gengxin(L)修改學(xué)生信息:查找函數(shù)chazhao()找到要修改的節(jié)點(diǎn),再進(jìn)行修改 Void shanchu(L)刪除學(xué)生記錄:while((strcmp(p->sname,name)!=0)&&p->next!=NULL)
8、找到要?jiǎng)h除的節(jié)點(diǎn),進(jìn)行刪除; Void mingci(L)為學(xué)生成績排名并顯示排名;冒泡排序法給鏈表安總成績排名,然后for()循環(huán)輸出排序完的鏈表數(shù)據(jù)。 5、系統(tǒng)難點(diǎn)分析 1、鏈表的排序,只能做到初步的排序,不能實(shí)現(xiàn)對成績相同的學(xué)生排名相同功能; 2、查找功能不夠強(qiáng)大,對字符串的查詢比如不區(qū)分大小寫功能不能實(shí)現(xiàn); 3、對各種輸入值不加于區(qū)分,比如姓名寫成數(shù)字,年齡的限制(1-100) 4、程序重復(fù)的語句多、繁瑣,不善應(yīng)用函數(shù)的調(diào)用。 6、系統(tǒng)測試 源代碼(見附錄) 調(diào)試運(yùn)行如下:(如圖1、圖2) 圖1 圖2 圖3 輸入測試:10 輸入目的:查看輸入除主
9、界面外的序號可否進(jìn)行操作。 正確輸出:輸入錯(cuò)誤!請慎重選擇。 實(shí)際輸出:如下圖所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:輸入一個(gè)主界面不包含的選項(xiàng)。得到數(shù)據(jù)顯示輸入錯(cuò)誤。(如圖3) 圖4 輸入測試:a 輸入目的:查看輸入字符可否進(jìn)行操作。 正確輸出:輸入錯(cuò)誤!請慎重選擇。 實(shí)際輸出:(圖4) 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:輸入一個(gè)主界面不包含的選項(xiàng)。得到數(shù)據(jù)顯示輸入錯(cuò)誤。 圖5已刪 測試輸入:輸入姓名:邱為民;輸入學(xué)號:1;輸入性別:1為男;輸入年齡:21;輸入語文成績88;數(shù)學(xué)成績82;英語成績
10、89;一個(gè)學(xué)生信息登記完畢。再輸入另一個(gè)學(xué)生數(shù)據(jù):輸入姓名:陳婷婷;輸入學(xué)號:1;輸入性別: 測試目的:設(shè)計(jì)該輸入的目的在于測試程序在登記學(xué)生信息方面是否存在無法登記學(xué)生信息、在選擇登記學(xué)生信息時(shí)是否沒有出現(xiàn)相應(yīng)界面等情況以及能否正確輸入等功能。 正確輸出:輸入姓名:邱為民;輸入學(xué)號:1;輸入性別:1為男;輸入年齡:21;輸入語文成績88;輸入數(shù)學(xué)成績82;輸入英語成績89選擇是否輸入信息請按(1、0):1;輸入姓名:陳婷婷;輸入學(xué)號:1;輸入性別:0;輸入年齡: 實(shí)際輸出:如上(圖5)輸出界面。 當(dāng)前狀態(tài):已改正(實(shí)際輸出與正確輸出不符,但現(xiàn)在已修改正確) 測試結(jié)果分析:測試策略在
11、于輸入一組數(shù)據(jù)后以便后面的操作完成學(xué)生信息的登記。得到的數(shù)據(jù)由上面的截圖(圖5)證明。 測試輸入:2選擇顯示 測試目的:測試顯示功能是否能夠?qū)崿F(xiàn) 正確輸出:按姓名、學(xué)號、性別、年齡、語文、數(shù)學(xué)、英語、平均分及總分顯示學(xué)生信息。 實(shí)際輸出:如下圖(圖6)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:選擇查找看其是否正確找到所查找數(shù)據(jù)。得到數(shù)據(jù)結(jié)果顯示查找無誤。 圖6已刪 測試輸入:3選擇查找 測試目的:測試查找功能是否能夠?qū)崿F(xiàn) 正確輸出:1按學(xué)號查詢 2按姓名查詢 0返回主菜單 選擇1 請輸入要查找的學(xué)號:1查找結(jié)果:既要查找的數(shù)據(jù)。查詢完畢或沒
12、有要查詢的記錄! 實(shí)際輸出:如下圖(圖7)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:按學(xué)號查找,首先要輸入對應(yīng)的數(shù)據(jù),接著成功查找。顯示的數(shù)據(jù)是按學(xué)號查找的結(jié)果,無差錯(cuò)。 圖7已刪 測試輸入:4選擇添加學(xué)生數(shù)據(jù)。 測試目的:查看添加功能是否能夠運(yùn)行。 正確輸出:;輸入要添加的姓名:小丘;輸入添加的學(xué)號:7;輸入性別(1為男,0為女):0;輸入年齡:19;請你輸入語文成績:88;輸入數(shù)學(xué)成績:85;輸入英語成績:90;此信息已添加。并且再次查詢。 實(shí)際輸出:如下圖(圖8)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:
13、分別輸入提示信息查看添加功能是否能夠運(yùn)用。通過再次查詢顯示添加無誤。 圖8已刪 圖9已刪 測試輸入:5選擇修改學(xué)生數(shù)據(jù)。 測試目的:測試是否能夠?qū)崿F(xiàn)修改功能。 正確輸出:輸入要修改的人名:小丘;輸入新姓名:小球球;輸入新學(xué)號(原來是學(xué)號5):5;輸入新性別:(1是男0是女)0;輸入年齡(原來年齡是19)19;輸入語文成績(原來是88.000000分):88;輸入數(shù)學(xué)成績(原來是88.000000分):85;請你輸入英語成績(原來是88.000000分):90;提示:修改完成或沒找到要修改的項(xiàng)!。再次查詢并顯示查詢結(jié)果。 實(shí)際輸出:如上圖(圖9)所示。 當(dāng)前狀態(tài):通
14、過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:根據(jù)提示輸入修改的數(shù)據(jù)分別觀察是否正確。得到的數(shù)據(jù)是提示我輸入信的數(shù)據(jù)并告訴我原來的數(shù)據(jù),我根據(jù)提示輸入新的數(shù)據(jù),結(jié)果無誤。 測試輸入:6選擇刪除操作。 測試目的:測試其是否能夠正確刪除想要?jiǎng)h除的數(shù)據(jù)。 正確輸出:請輸入要?jiǎng)h除的姓名:3; 已刪除!并顯示新的數(shù)據(jù)。 實(shí)際輸出:如圖(圖10)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:根據(jù)提示進(jìn)行刪除;系統(tǒng)提示刪除成功。得到的數(shù)據(jù)顯示顯示刪除成功,證明這一部分無差錯(cuò)。 圖10已刪 測試輸入:7選擇排序 測試目的:看排序功能是
15、否能夠?qū)崿F(xiàn) 正確輸出:按照名次、姓名、學(xué)號、性別、年齡、語文、數(shù)學(xué)、英語、平均分、總分顯示學(xué)生數(shù)據(jù)。 實(shí)際輸出:如下圖(圖11)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:選擇排序,系統(tǒng)自動(dòng)根據(jù)總分和平均分對數(shù)據(jù)進(jìn)行排序并輸出。得到的數(shù)據(jù)顯示并未出錯(cuò)。 圖11已刪 測試輸入:0選擇退出。 測試目的:成功退出系統(tǒng)。 正確輸出:press any key to continue. 實(shí)際輸出:如下圖(圖12)所示。 當(dāng)前狀態(tài):通過(實(shí)際輸出與正確相符)。 測試結(jié)果分析:測試策略:選擇退出以便成功退出系統(tǒng)。得到數(shù)據(jù):無誤 圖12已刪 7、心
16、得體會(huì) 這次的實(shí)訓(xùn)結(jié)束了,現(xiàn)在的我正在做著最后的工作——填寫實(shí)訓(xùn)報(bào)告。 感觸還真是很多,那幾天的堅(jiān)持,每天八節(jié)課就坐在電腦前敲著代碼,有的時(shí)候晚上回了寢室還要繼續(xù)敲??梢哉f我們男生還是對程序這塊比較感興趣的。但是面對這么大的一個(gè)課題寫這樣的一個(gè)程序我還是第一次,所以對于我來說難道還是挺大的。很多時(shí)候焦頭爛額心煩意亂也寫不好,寫出來后反復(fù)調(diào)試反復(fù)出錯(cuò),簡直是在考驗(yàn)我們的耐心??粗總€(gè)同學(xué)焦急的樣子,真的有點(diǎn)擔(dān)心在規(guī)定的期限內(nèi)是不是能夠完成任務(wù)。所以期間自己會(huì)想,如果將來從事了這個(gè)行業(yè),面對更加復(fù)雜的程序更加有難度的題目要求,心理壓力不是更大么? 不管怎么樣,還是要把程序?qū)懲?。其中也遇到了?/p>
17、多困難:因?yàn)檫@個(gè)題目要求要有9個(gè)小題目,而且有的小題目還要求里面還要有選擇,這樣難度更加提高而且更加復(fù)雜。剛開始會(huì)理不出頭緒,不知道該先弄哪一塊。從頭開始往后寫整個(gè)程序是不可能的,那樣會(huì)錯(cuò)的更加離譜,所以只好先分快些再綜合起來。而且整個(gè)星期天天對著電腦敲這樣一個(gè)程序確實(shí)很煩躁。但是告訴自己要堅(jiān)持下去,到了最后把程序調(diào)試出來后,心里真的是激動(dòng)萬分,感慨也頗深: 面對復(fù)雜的事情而且要長期堅(jiān)持時(shí),千萬不可浮躁了事,那樣欠下的債會(huì)越來越多,一定要定下心來踏踏實(shí)實(shí)的去做,我發(fā)現(xiàn)有了好的開始,后面再亂的思緒也會(huì)慢慢捋清楚。 心態(tài)很重要,第一天還好,第二天的時(shí)候,心虛特別浮躁,顯然那天的效率十分低下,回
18、去后和朋友聊天,被開導(dǎo)后慢慢整理思緒平靜下心來開始做,發(fā)現(xiàn)一切并沒有原本想象的那么棘手。
面對問題要自己主動(dòng)去解決,程序過程中難免有很多難題,別人無法幫助自己,要靠自己去努力克服才能接著做下一步。
所以在完成后,除了自己完成任務(wù)的喜悅感意外,還有一些感慨,我覺得這一次我不僅僅收獲了如何去寫一個(gè)程序,而是如何做好一件看似棘手困難的復(fù)雜的事情。
8、參考文獻(xiàn)
[1]楊路明,c語言程序設(shè)計(jì)教程.北京:郵電大學(xué)出版社,2005年12月第2版
[2]耿國華,數(shù)據(jù)結(jié)構(gòu)—C語言描述.北京:高等教育出版社,2005年7月第1版
附錄源代碼
如下:
#include
19、clude
20、 void xianshi(L); void chaxun(L); void tianjia(L); void gengxin(L); void shanchu(L); void mingci(L); STU* chazhao(Linlist L,int no); /*主函數(shù)*/ void main() { int m; STU *head; head=(STU *) malloc (sizeof(STU)); head->next=NULL; while(m) { printf(" *************
21、******歡迎進(jìn)入學(xué)生成績管理***************\n"); printf(" ||輸入 0 返回 ||\n\n"); printf(" ||輸入 1 輸入學(xué)生信息 ||\n\n"); printf(" ||輸入 2 顯示學(xué)生信息 ||\n\n"); printf(" ||輸入
22、 3 查詢學(xué)生信息 ||\n\n"); printf(" ||輸入 4 添加學(xué)生信息 ||\n\n"); printf(" ||輸入 5 更新學(xué)生信息 ||\n\n"); printf(" ||輸入 6 刪除學(xué)生信息 ||\n\n"); printf("
23、 ||輸入 7 計(jì)算并顯示學(xué)生排名 ||\n"); printf(" ******************************************************\n"); scanf("%d",&m); switch(m) { case 1:shuru(L);break; case 2:xianshi(L);break; case 3:chaxun(L);break; case 4:tianjia(L);break; case 5
24、:gengxin(L);break; case 6:shanchu(L);break; case 7:mingci(L);break; case 0:; break; default: printf("輸入錯(cuò)誤!請慎重選擇\n");break; } } } /*各子函數(shù)*/ STU* chazhao(Linlist L,int no) /* 按學(xué)號查詢 */ { STU *r; r=L->next; while(r!=NULL) { if(r->sno==no) ret
25、urn r; r=r->next; } return 0; } void shuru(Linlist head) { int flag=1, c,sex,sno; STU *r=NULL,*s=NULL,*m=NULL; s=head; while(s->next!=NULL) s=s->next; /* 將指針置于最末尾 */ while(1) { r=(STU*)malloc(sizeof(STU));/*申請結(jié)點(diǎn)*/ printf("輸入姓名:"); /*添加信息*/
26、 scanf("%s",r->sname); printf("輸入學(xué)號:"); scanf("%d",&sno); m=chazhao(head,sno); while(m!=NULL){ m=chazhao(head,sno); if(m!=NULL) { printf("請你輸入不重復(fù)的學(xué)號:\n"); scanf("%d",&sno); } } r->sno=sno; printf("輸入性別(1->boy,0->g
27、irl):"); do{ scanf("%d",&sex); if(sex==1)strcpy(r->sex,"boy"); else if(sex==0) strcpy(r->sex,"girl"); else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n"); }while(sex!=1&&sex!=0); printf("輸入年齡:"); scanf("%d",&r->nianling); printf("輸入語文成績:");
28、 scanf("%f",&r->yuwen); while(r->yuwen<0.0||r->yuwen>100.0) { if(r->yuwen<0.0||r->yuwen>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入語文成績:"); scanf("%f",&r->yuwen); } } printf("輸入數(shù)學(xué)成績:"); scanf("%f",&r->shuxue)
29、; while(r->shuxue<0.0||r->shuxue>100.0) { if(r->shuxue<0.0||r->shuxue>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入數(shù)學(xué)成績:"); scanf("%f",&r->shuxue); } } printf("輸入英語成績:"); scanf("%f",&r->yingyu);
30、 while(r->yingyu<0.0||r->yingyu>100.0) { if(r->yingyu<0.0||r->yingyu>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入英語:"); scanf("%f",&r->yingyu); } } r->sum=r->yuwen+r->shuxue+r->yingyu; r->avg=r->sum/3
31、; r->next=NULL; s->next=r; s=r; printf("選擇是否輸入信息請按(1/0):\n"); scanf("%d",&c); if(c==0) break; } /*保存鏈表*/ printf("信息已輸入!\n"); }void xianshi(Linlist L) { STU *a=NULL; STU *p,*q,*tail,*s; tail=NULL; if(L->next==NUL
32、L) { printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } while(L->next!=tail) { p=L; q=p->next; while(q->next!=tail) { if(p->next->sno>q->next->sno) { s=q->next; p->next=q->next; q->next=q->next->next; p->next->next=q; q=s; }
33、 p=p->next; q=q->next; } tail=q; } a=L->next; printf("姓名\t學(xué)號\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\t平均分\t總分\n"); for(a=L->next;a!=NULL;a=a->next) 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); } voi
34、d chaxun(Linlist L) { STU *p; char name[20]; int sno, n; if(L->next==NULL) { printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } while(n) { printf(" ***請選擇查詢方式***\n"); printf(" 1**********按學(xué)號查詢\n"); printf(" 2**********按姓名查詢\n"); printf(
35、" 0**********返回主菜單\n"); scanf("%d",&n); switch(n) { case 1:{printf("請輸入要查詢的學(xué)號:\n"); scanf("%d",&sno); printf("**********學(xué)生信息***********\n"); printf("姓名\t學(xué)號\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\n"); for(p=L->next;p!=NULL;p=p->next) { if((p->sno)==sno) printf("%-8s%
36、-8d%-8s%-8d%-10.2f%-10.2f%-10.2f\n",p->sname,p->sno,p->sex,p->nianling,p->yuwen,p->shuxue,p->yingyu); } } printf("********查詢完畢或沒有要查詢的記錄!\n");break; case 2:{printf("請輸入要查詢的姓名\n"); scanf("%s",name); printf("**********學(xué)生信息***********\n"); printf("姓名\t學(xué)號\t性別\t年齡\t語文\t數(shù)學(xué)\t英語\n");
37、 for(p=L->next;p!=NULL;p=p->next) { if(strcmp(p->sname,name)==0) printf("%-8s%-8d%-8s%-8d%-10.2f%-10.2f%-10.2f\n",p->sname,p->sno,p->sex,p->nianling,p->yuwen,p->shuxue,p->yingyu); } } printf("********查詢完畢或沒有要查詢的記錄!\n");break; case 0:break; default: printf("輸入錯(cuò)
38、誤!請慎重選擇");break; } } } void gengxin(Linlist L) { STU *p1,*m; char name[20]; int sex,sno; if(L->next==NULL) { printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } printf("輸入要修改的人名:"); scanf("%s",name); p1=L; while(p1!=NULL) { if(strcmp(p1->sname,name)==0) { print
39、f("輸入新姓名:"); /*修改信息*/ scanf("%s",p1->sname); printf("輸入新學(xué)號(原來是學(xué)號%d):",p1->sno); scanf("%d",&sno); m=chazhao(L,sno); while(m!=NULL){ m=chazhao(L,sno); if(m!=NULL) { printf("請你輸入不重復(fù)的學(xué)號(以0返回上一級菜單:)\n"); scanf("%d",&sno); }
40、} p1->sno=sno; printf("輸入新性別(1->boy,0->girl):"); do{ scanf("%d",&sex); if(sex==1)strcpy(p1->sex,"boy"); else if(sex==0) strcpy(p1->sex,"girl"); else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n"); }while(sex!=1&&sex!=0); printf("輸入年齡(原來年齡是%d):",p1->nianlin
41、g); scanf("%d",&p1->nianling); printf("輸入語文成績(原來是%f分):",p1->yuwen); scanf("%f",&p1->yuwen); while(p1->yuwen<0.0||p1->yuwen>100.0) { if(p1->yuwen<0.0||p1->yuwen>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入語文成績:"); s
42、canf("%f",&p1->yuwen); } } printf("輸入數(shù)學(xué)成績(原來是%f分):",p1->shuxue); scanf("%f",&p1->shuxue); while(p1->shuxue<0.0||p1->shuxue>100.0) { if(p1->shuxue<0.0||p1->shuxue>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入數(shù)學(xué)成績:");
43、scanf("%f",&p1->shuxue); } } printf("輸入英語成績(原來是%f分):",p1->yingyu); scanf("%f",&p1->yingyu); while(p1->yingyu<0.0||p1->yingyu>100.0) { if(p1->yingyu<0.0||p1->yingyu>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入英語成績:");
44、 scanf("%f",&p1->yingyu); } } } p1->sum=p1->yuwen+p1->shuxue+p1->yingyu; p1->avg=p1->sum/3; p1=p1->next; } printf("修改完成或沒找到要修改的項(xiàng)!\n"); } void tianjia(Linlist L) { STU *p2=NULL,*p3=NULL,*m; int sex,sno; p2=(STU*)malloc(sizeof(STU)); /*申請結(jié)點(diǎn)*/ if(L->ne
45、xt==NULL) { printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } printf("輸入添加的姓名:"); scanf("%s",p2->sname); printf("輸入添加的學(xué)號:"); scanf("%d",&sno); m=chazhao(L,sno); while(m!=NULL){ m=chazhao(L,sno); if(m!=NULL) { printf("請你輸入不重復(fù)的學(xué)號(以0返回上一級菜單:)\n");
46、 scanf("%d",&sno); } } p2->sno=sno; printf("輸入性別(1->boy,0->girl):"); do{ scanf("%d",&sex); if(sex==1)strcpy(p2->sex,"boy"); else if(sex==0) strcpy(p2->sex,"girl"); else printf("輸入錯(cuò)誤!(1->boy,0->girl):\n"); }while(sex!=1&&sex!=0); printf("輸入年齡:");
47、 scanf("%d",&p2->nianling); printf("輸入語文成績:"); scanf("%f",&p2->yuwen); while(p2->yuwen<0.0||p2->yuwen>100.0) { if(p2->yuwen<0.0||p2->yuwen>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入語文成績:"); scanf("%f",&p2->yuwen); } } printf("
48、輸入數(shù)學(xué)成績:"); scanf("%f",&p2->shuxue); while(p2->shuxue<0.0||p2->shuxue>100.0) { if(p2->shuxue<0.0||p2->shuxue>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入數(shù)學(xué)成績:"); scanf("%f",&p2->shuxue); } } printf("輸入英語成績:"); scanf("%f",&p2->yin
49、gyu); while(p2->yingyu<0.0||p2->yingyu>100.0) { if(p2->yingyu<0.0||p2->yingyu>100.0) { printf("輸入錯(cuò)誤,請重新輸入!\n"); printf("輸入英語成績:"); scanf("%f",&p2->yingyu); } } p2->sum=p2->yuwen+p2->shuxue+p2->yingyu; p2->avg=p2->sum/3; p2->n
50、ext=NULL; /*保存到鏈表*/ if(L==NULL) { L=(STU*)malloc(sizeof(STU)); L->next=p2; } else { for(p3=L;p3->next!=NULL;p3=p3->next);/*找到尾結(jié)點(diǎn)*/ p3->next=p2; } printf("此信息已添加\n"); } void shanchu(Linlist L) { STU *p=L,*pr=L; char name[20]; if(L->next==NULL) {
51、 printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } printf("請輸入要?jiǎng)h除的姓名:\n"); scanf("%s",name); if(L==NULL) { printf("無此結(jié)點(diǎn)\n"); return; } while((strcmp(p->sname,name)!=0)&&p->next!=NULL) { pr=p; p=p->next; } if(strcmp(p->sname,name)==0) {if(p==L) L=p->next; else
52、pr->next=p->next; free(p); printf("已刪除!\n"); }else printf("沒有找到要?jiǎng)h除的對象\n"); } void mingci(Linlist L) { STU *a=NULL; int i; STU *p,*q,*tail,*s; tail=NULL; if(L->next==NULL) { printf("此表中無記錄,請輸入記錄后在使用此功能!\n"); return; } while(L->next!=tail) { p=L;
53、 q=p->next;
while(q->next!=tail)
{
if(p->next->sum
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案