數據結構課程設計(含代碼)_第1頁
數據結構課程設計(含代碼)_第2頁
數據結構課程設計(含代碼)_第3頁
數據結構課程設計(含代碼)_第4頁
數據結構課程設計(含代碼)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

成績管理系統(tǒng)課程設計第1頁數據結構課程設計說明書題目:學生成績管理系統(tǒng)學生姓名系別班級指導老師成績指導教師(簽字)廣西大學數信學院2012年01月03日一、引言隨著現代科技的發(fā)展,計算機技術得到廣泛的推廣,伴隨的人們生活水平的提高,計算機已經走入了尋常百姓家。計算機的發(fā)展得益于C語言等計算機語言的發(fā)展,運用計算機語言,我們可以實現各種各樣的功能。就我們現在所學的知識而言,我們也可以運用C語言實現一些簡單的管理系統(tǒng),如:學生成績管理系統(tǒng)、圖書管理系統(tǒng)、通訊錄等。此次課程設計,是運用數據結構說學的知識制作一個成績管理系統(tǒng),主要包括信息的維護,信息的查找以及成績統(tǒng)計,實現創(chuàng)建成績表、顯示成績表、修改成績表、添加、查找、刪除、排序、增加等功能。主要實現方式用的是鏈表[1],下面對鏈表進行一下簡單的介紹:鏈表是一種動態(tài)的進行存儲分配的數據結構,它既不需要事先確定最大長度,在插入或者刪除一個元素時也不會引起數據的大量移動。鏈表有一個“頭”,一個“尾”。中間有若干元素,每個元素稱為一個結點。每個結點包括兩部分:一部分是用戶關心的實際數據,稱為數據域;另一部分是下一個結點的地址,稱為指針域。一般用head作為頭指針,它指向鏈表的第一個結點;最后一個結點稱為“表尾”,該結點的指針域值為0,指向內存中編號為0的地址(常用符號常量NULL表示,稱為空地址),表尾不再有后繼結點,鏈表到此結束。[1]相比較順序結構,鏈表比較方便插入和刪除操作。線性表的鏈式存儲表示的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)。因此,為了表示每個數據元素與其直接后繼數據元素之間的邏輯關系,對數據元素來說,除了存儲其本身的信息之外,還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置)。由這兩部分信息組成一個"結點",表示線性表中一個數據元素。其中保存結點中的數據信息的域稱作數據域(設域名為data),保存地址信息的域稱為指針域(設域名為next)。指針域中存儲的信息又稱作指針或鏈。[1]在實現成績管理的功能上使用的是線性表的方式,使得程序易懂,條理比較清晰,模塊化顯著。二、問題描述及基本要求1、問題描述現有學生成績信息,內容如下姓名學號語文數學英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847…......…請編寫一個系統(tǒng),實現學生信息管理。2、基本要求功能要求:(1) 信息維護:要求:學生信息數據要以文件的形式保存,能實現學生信息數據的維護。此模塊包括子模塊有:增加學生信息、刪除學生信息、修改學生信息(2) 信息查詢:要求:查詢時可實現按姓名查詢、按學號查詢(3) 成績統(tǒng)計:要求:輸入任意的一個課程名(如數學)和一個分數段(如60--70),統(tǒng)計出在此分數段的學生情況。排序:能對用戶指定的任意課程名,按成績升序或降序排列學生數據并顯示排序結果(使用表格的形式顯示排序后的輸出結果)。三、系統(tǒng)設計流程圖1、設計的總體框圖圖1總體設計框圖成績管理系統(tǒng)學生成績錄入圖1總體設計框圖成績管理系統(tǒng)學生成績錄入學生成績排序刪除學生成績增加學生成績學生成績查詢學生成績統(tǒng)計學生成績修改學生成績顯示退出建立新的成績系統(tǒng)放棄建立按學號排序按總分排序按語文成績排序按數學成績排序按英語成績排序按學號查詢按姓名查詢學生學號學生姓名學生語文成績學生數學成績學生英語成績學生總成績學生成績表單科高分及均分輸入姓名—刪除語文英語數學總分輸入分數段輸出成績表輸入姓名修改姓名全部修改修改英語成績修改語文成績修改學號修改數學成績2、主函數流程圖實現對一級菜單:學生成績錄入、學生成績排序、刪除學生成績、增加學生成績、學生成績查詢、學生成績統(tǒng)計、學生成績修改、學生成績顯示、退出功能的控制,分別調用各個子函數;完成整個學生成績管理系統(tǒng)。程序流程圖如下圖所示:開始開始讀取頭函數讀取頭函數for(;;)for(;;)輸出成績管理系統(tǒng)的選擇菜單輸出成績管理系統(tǒng)的選擇菜單N輸入要執(zhí)行的操作(choose)為0—N輸入要執(zhí)行的操作(choose)為0—8的整數?YYNN(getchar()!='\n')?(getchar()!='\n')?YYNchoose==1?Nchoose==1?NYNY建立數據系統(tǒng)?調用其他函數建立數據系統(tǒng)?調用其他函數YY調用輸入信息函數cin()調用輸入信息函數cin()及輸出函數print_1()跳出 跳出結束結束圖2主函數流程圖圖2主函數流程圖3、建立學生成績信息的流程圖通過定義兩個指針數組,利用鏈表對函數進行調用,實現對學生成績函數的建立,然后通過調用顯示成績一覽表的函數輸出成績表,該建立學生成績程序執(zhí)行結束。其流程圖如下圖所示:開始開始創(chuàng)建函數,進入函數創(chuàng)建函數,進入函數輸入學號是不等于0?N輸入學號是不等于0?NYY輸入學生成績信息輸入學生成績信息完成創(chuàng)建完成創(chuàng)建輸出成績表輸出成績表結束結束圖3輸入函數流程圖圖3輸入函數流程圖4、刪除學生信息的流程圖首先判斷成績表是否為空,為空則輸出“成績表為空,無法刪除”;不為空則輸入要刪除的姓名,查找到該姓名的位置,程序直接將其刪除,在運行期間,程序會判斷該內容是否在成績表中,若存在則將其直接刪除,然后輸出刪除后的成績表;若不存在則輸出“xx不存在本成績表中!”然后輸出學生成績表;該刪除信息程序執(zhí)行結束。其流程圖如下圖所示:開始開始N原鏈表不為空?N原鏈表不為空?YY輸出輸出”請輸入要刪除的名字”開辟新結點開辟新結點查找到該名字的位置p1開辟新結點查找到該名字的位置p1開辟新結點輸出“成績表為空,無法刪除”NNYYfree(p1)free(p1)輸出“輸出“xx不存在本成績表中”完成刪除完成刪除輸出成績表輸出成績表結束結束圖4刪除函數流程圖圖4刪除函數流程圖5、修改學生信息的流程圖首先判斷成績表是否為空,為空則輸出“成績表為空,無法修改”;不為空則輸入要修改的姓名,查找到該姓名的位置,然后通過鍵盤輸入的選項,程序自動進行查找并提示用戶輸入修改的內容,然后輸出修改后的成績表;超找不到該姓名的位置,則輸出“xx不存在本成績表中”,輸出成績表;該修改信息程序執(zhí)行結束。函數流程圖如下圖所示:開始開始原鏈表不為空?N原鏈表不為空?NYY輸出輸出“請輸入要修改的名字”開辟新結點開辟新結點查找到該名字的位置p1N輸出查找到該名字的位置p1N輸出“成績表為空,無法修改”YY輸出供選擇的修改菜單輸出供選擇的修改菜單輸出“輸出“xx不存在本成績表中”N選擇修改的內容,N選擇修改的內容,為0—6的整數?開辟新結點YYYY0?0?NN重新輸入成績信息重新輸入成績信息完成修改完成修改輸出成績表輸出成績表結束結束圖5修改函數流程圖圖5修改函數流程圖6、排序學生成績信息流程圖按成績降序排序,學號升序排序,首先通過鍵盤輸入選擇要排序的內容,然后通過開辟新結點,運用選擇排序的方法對所要排序的內容進行排序,最后輸出學生成績表;如還需進行排序的操作,繼續(xù)選擇要排序的內容,重復以上步驟;如需返回上一層菜單,則輸入0結束執(zhí)行該排序操作。主要流程圖如下圖所示:開始開始開始開始NN輸出供選擇的排序菜單開辟新結點輸出供選擇的排序菜單開辟新結點選擇排序內容為0—選擇排序內容為0—5的整數?Yp1->next==NULL?NNpm指向鏈表中p1所指向的位置pm指向鏈表中p1所指向的位置0?0?Yp2==NULL?Yp2==NULL?YYNN調用排序函數sort-1()與后面p2所指向的數據比較調用排序函數sort-1()與后面p2所指向的數據比較p2=p2->nextp2=p2->nextpm所指向的數據<p2所指向的數據?pm所指向的數據<p2所指向的數據?輸出成績表N輸出成績表NYY數據交換位置數據交換位置結束結束pm->next=p1Npm->next==NULL?pm->next=p1Npm->next==NULL?圖6-1排序函數流程圖(1)Y圖6-1排序函數流程圖(1)Y完成排序完成排序結束結束圖6-2排序函數流程圖(2)圖6-2排序函數流程圖(2)8、查找學生成績信息流程圖完成此項操作,首先通過鍵盤輸入選擇要查詢的方式,如輸入1表示按學號查詢,輸入2表示按姓名查詢,輸入0或其他字符表示結束此項操作。流程圖如下圖所示:開始開始開辟新結點p開辟新結點pYY原鏈表為空?原鏈表為空?NN輸出供查詢學生信息的方式輸出供查詢學生信息的方式輸出“輸出“沒有任何學生數據,別費勁了”輸入要查詢方式(choose)輸入要查詢方式(choose)Ychoose==0?Ychoose==0?NNN輸入為1-2的整數?N輸入為1-2的整數?YY輸入要查詢的學生信息輸入要查詢的學生信息Y輸入的信息為0?Y輸入的信息為0?NN與鏈表中的數據信息逐個對比與鏈表中的數據信息逐個對比與鏈表中的數據相同N重新輸入與鏈表中的數據相同N重新輸入YY輸出該學號學生信息輸出該學號學生信息圖8分類查找函數流程圖結束圖8分類查找函數流程圖結束9、插入學生成績信息流程圖為完善成績表的功能,在不改變已存的成績表內容的前提下,程序從內存中另外開辟空間進行對成績表的補充,實現增加功能,最后輸出添加后的成績表;該插入程序執(zhí)行結束。函數流程圖如下圖所示:開始開始開辟新結點開辟新結點N輸入要加入學生的學號,學號不為0?N輸入要加入學生的學號,學號不為0?YY在開辟的空間進行增加學生信息在開辟的空間進行增加學生信息完成添加完成添加輸出學生成績表輸出學生成績表結束結束圖9插入函數流程圖圖9插入函數流程圖10、統(tǒng)計學生成績信息流程圖完成此項操作,首先通過鍵盤輸入選擇要統(tǒng)計的內容,若輸入的不是程序提供的選項則輸出“做出了錯誤的選擇”,作為放棄執(zhí)行統(tǒng)計學生成績的程序操作;若輸入的是程序提供的選項,則進行查找篩選后,輸出篩選結果,然后統(tǒng)計學生程序的操作執(zhí)行結束。流程圖如下圖所示:開始開始Y原鏈表為空?Y原鏈表為空?NN輸出供選擇可進行統(tǒng)計的內容輸出供選擇可進行統(tǒng)計的內容輸出輸出“無資料可統(tǒng)計”N輸入的為1-4的整數?N輸入的為1-4的整數?YY輸入要統(tǒng)計的分數范圍輸入要統(tǒng)計的分數范圍輸出輸出“做出了錯誤的選擇”進行查找篩選進行查找篩選輸出篩選結果輸出篩選結果結束結束圖10統(tǒng)計函數流程圖圖10統(tǒng)計函數流程圖11、顯示學生成績信息流程圖完成此項操作,首先通過鍵盤輸入選擇要顯示的方式,輸入1則輸出學生成績一覽表,可直觀地看到學生的具體成績情況,然后返回可供選擇的顯示方式;輸入2則輸出各科的最高分、最低分及平均分,可深入地了解各科的考試情況,然后返回可供選擇的顯示方式;輸入其他字符,返回可供選擇的顯示方式;輸入0表示結束執(zhí)行顯示學生成績程序的操作。流程圖如下圖所示:開始開始輸出可選擇的顯示方式輸出可選擇的顯示方式Y輸入要顯示的方式,輸入的為0?Y輸入要顯示的方式,輸入的為0?NNNN為1-2的整數?為1-2的整數?YYN為2?N為2?Y1Y1輸出單科最高分、最低分及平均分輸出單科最高分、最低分及平均分輸出成績一覽表輸出成績一覽表結束結束圖11顯示函數流程圖圖11顯示函數流程圖四、總結本程序主要是運用鏈表、及指針數組的綜合應用來實現的,能夠實現對學生成績的鍵盤輸入、排序、刪除、增加、查詢、統(tǒng)計、修改、顯示、退出等功能。經過一段時間的課程設計,通過對程序的不斷調整、修改,發(fā)現了平時很多沒有注意到的問題,鞏固了數據結構的知識,提高了運用課本所學知識的運用能力,培養(yǎng)了獨立思考,解決問題的能力。在編寫和修改程序的過程中,遇到了很多困難,由于本程序很長,修改起來很困難,我運用了老師教的各個函數分開運行,及時發(fā)現該函數運行時存在的問題,通過問老師、同學、查閱有關資料,最終成功地完成了此次課程設計。通過這次的課程設計,我也總結出了一點小經驗,如:1、做課程設計,首先得對整個系統(tǒng)的功能要求做出分析,得出各個功能應運用的方法是什么;2、針對各個功能,獨立地分解出各個模塊,然后逐個解決;3、在設計各個功能模塊之前,可構想出總界面的顯示情況,再針對自己列出的界面進行程序的編寫。雖然該程序還是存在著一些不足的地方,但基本達到了我預想的效果。五、參考文獻[1]唐國民,王國鈞.數據結構(C語言版)[M].北京:清華大學出版社[2]顧治華,陳天煌.C語言程序設計[M].北京:機械工業(yè)出版社[3]譚浩強.C程序設計教程[M].北京:清華大學出版社附錄1、程序代碼:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#defineLENsizeof(Student)typedefstructstudent{intnum;charname[20];intyuwen;intshuxue;intyingyu;intsum;structstudent*next;}Student;intn;Student*cin(void);Student*sort_1(Student*head,int);voidprint_1(Student*head);voidprint_2(Student*head);Student*print_all(Student*head);Student*sort_all(Student*head);voidfind(Student*head);Student*add_new(Student*head);Student*del(Student*head);Student*xiugai(Student*head);Student*tongji(Student*head);//輸入學生信息Student*cin(){intflag;Student*head,*p1,*p2;n=0;head=(Student*)malloc(LEN);p2=head;printf("\n請輸入第%d名學生的學號,學號為0表示結束輸入:",n+1);scanf("%d",&flag);while(getchar()!='\n');for(;flag;){n++;p1=(Student*)malloc(LEN);p1->num=flag;printf("請輸入第%d名學生的姓名:",n);scanf("%s",p1->name);printf("請輸入第%d名學生的語文成績:",n);scanf("%d",&p1->yuwen);printf("請輸入第%d名學生的數學成績:",n);scanf("%d",&p1->shuxue);printf("請輸入第%d名學生的英語成績:",n);scanf("%d",&p1->yingyu);p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;p2->next=p1;p2=p1;printf("\n請輸入第%d名學生的學號,沒有此學生則輸入0表示結束:",n+1);scanf("%d",&flag);}p2->next=NULL;printf("\n\n");returnhead;}//學生成績排序Student*sort_all(Student*head){intchoose;for(;;){printf("\n\t\t#####學生成績統(tǒng)計排序####\n");printf("\t\t#\t1.按學生學號排序\t#\n");printf("\t\t#\t2.按學生總分排序\t#\n");printf("\t\t#\t3.按學生語文成績排序\t#\n");printf("\t\t#\t4.按學生數學成績排序\t#\n");printf("\t\t#\t5.按學生英語成績排序\t#\n");printf("\t\t#\t0.返回上一級菜單\t#\n");printf("\t\t##################\n\n");printf("請輸入您要執(zhí)行的操作:");scanf("%d",&choose);while(getchar()!='\n');switch(choose){case1:case2:case3:case4:case5:head=sort_1(head,choose);break;case0:returnhead;default:printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;}}}//按各科成績排序Student*sort_1(Student*head,intchoose){Student*p1,*p2=head->next,*pm,*px;Studentmid;if(!p2)returnhead;for(p1=p2;p1->next!=NULL;p1=p1->next){pm=p1;for(p2=p1->next;p2!=NULL;p2=p2->next)switch(choose){case1:if(pm->num>p2->num)pm=p2;break;case2:if(pm->sum<p2->sum)pm=p2;break;case3:if(pm->yuwen<p2->yuwen)pm=p2;break;case4:if(pm->shuxue<p2->shuxue)pm=p2;break;case5:if(pm->yingyu<p2->yingyu)pm=p2;break;}if(pm!=p1){mid=*pm;*pm=*p1;*p1=mid;px=pm->next;pm->next=p1->next;p1->next=px;}}printf("\n排序后的成績表為:\n");print_1(head);returnhead;}//查找學生信息voidfind(Student*head){Student*p;intchoose,fnum;chartem[20];if(n==0){printf("\n當前系統(tǒng)沒有任何學生數據,您就別費勁了!\n");return;}for(;;){printf("\n請輸入您要查詢學生的方式:\n\n");printf("1、按學號查詢;2、按姓名查詢;0、我不查詢了。\n\n");printf("請選擇:");scanf("%d",&choose);while(getchar()!='\n');if(choose==1){printf("\n請輸入你要查詢的學生的學號,輸入0退出學號查詢:");scanf("%d",&fnum);for(;fnum;){for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);if(!p){printf("\n\n找不到你要查詢的學號,請重新輸入,輸入0表示結束:");scanf("%d",&fnum);}elseif(p->num==fnum){printf("\n學號為%d學生的數據為:\n",p->num);printf("學號\t姓名\t語文成績數學成績英語成績總分\n");printf("%d\t%s\t%d%d%d%d\n",p->num,p->name,p->yuwen,p->shuxue,p->yingyu,p->sum);printf("\n\n請輸入你還要查詢的學生的學號,輸入0表示不按學號查詢了:");scanf("%d",&fnum);}}}elseif(choose==2){printf("\n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢");scanf("%s",tem);for(;strcmp(tem,"0");){for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);if(!p){printf("\n\n找不到你要查詢的姓名,請重新輸入,輸入0表示結束:");scanf("%s",tem);}elseif(!strcmp(p->name,tem)){printf("\n姓名為%s學生的數據為:\n",p->name);printf("學號\t姓名\t語文成績數學成績英語成績總分\n");printf("%d\t%s\t%d%d%d%d\n",p->num,p->name,p->yuwen,p->shuxue,p->yingyu,p->sum);printf("\n\n請輸入你還要查詢的學生的姓名,輸入0表示不按姓名查詢了:");scanf("%s",tem);}}}elseif(choose==0){printf("\n你選擇了不查詢!\n");break;}else{printf("\n你以其他方式選擇了不查詢!\n");break;}}}//插入學生成績信息Student*add_new(Student*head){Student*p;intflag;printf("\n\n請輸入你要新加入學生的學號,學號為0表示結束輸入:");scanf("%d",&flag);while(getchar()!='\n');for(;flag;){p=(Student*)malloc(LEN);p->num=flag;printf("請輸入新加入學生的姓名:",n);scanf("%s",&p->name);printf("請輸入新加入學生的語文成績:",n);scanf("%d",&p->yuwen);printf("請輸入新加入學生的數學成績:",n);scanf("%d",&p->shuxue);printf("請輸入新加入學生的英語成績:",n);scanf("%d",&p->yingyu);p->sum=p->yuwen+p->shuxue+p->yingyu;p->next=head->next;head->next=p;n++;printf("\n請輸入還要加入學生的學號,沒有此學生則輸入0表示結束:");scanf("%d",&flag);}printf("加入后的成績表為:\n");print_1(head);returnhead;}//顯示學生成績Student*print_all(Student*head){intchoose;for(;;){printf("\n\t\t#####學生成績統(tǒng)計顯示####\n");printf("\t\t#\t1.學生成績表\t#\n");printf("\t\t#\t2.單科高分及均分\t#\n");printf("\t\t#\t0.返回上一級菜單\t#\n");printf("\t\t###################\n\n");printf("請輸入你要執(zhí)行的操作:");scanf("%d",&choose);while(getchar()!='\n');switch(choose){case1:print_1(head);break;case2:print_2(head);break;case0:returnhead;default:printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;}}}//輸出成績表voidprint_1(Student*head){Student*p=head->next;if(!p){printf("\n\n此系統(tǒng)目前沒有任何學生數據!\n\n\n");return;}printf("此系統(tǒng)目前共計學生%d名:\n",n);printf("**************************學生成績統(tǒng)計一覽表***************************\n");printf("學號\t姓名\t語文成績數學成績英語成績總分\n");for(;p;p=p->next)printf("%d\t%s\t%d%d%d%d\n",p->num,p->name,p->yuwen,p->shuxue,p->yingyu,p->sum=p->yuwen+p->shuxue+p->yingyu);printf("***********************************************************************\n\n");}//輸出單科最高分、最低分及平均分voidprint_2(Student*head){Student*p=head->next;intmax_1,max_2,max_3,min_1,min_2,min_3;intmax_sum,min_sum;intsum_1=0,sum_2=0,sum_3=0;floataver_1,aver_2,aver_3,aver_sum;if(!p)return;max_1=min_1=p->yuwen;max_2=min_2=p->shuxue;max_3=min_3=p->yingyu;max_sum=min_sum=p->sum;for(;p;p=p->next){if(max_1<p->yuwen)max_1=p->yuwen;elseif(min_1>p->yuwen)min_1=p->yuwen;if(max_2<p->shuxue)max_2=p->shuxue;elseif(min_2>p->shuxue)min_2=p->shuxue;if(max_3<p->yingyu)max_3=p->yingyu;elseif(min_3>p->yingyu)min_3=p->yingyu;if(max_sum<p->sum)max_sum=p->sum;elseif(min_sum>p->sum)min_sum=p->sum;sum_1+=p->yuwen;sum_2+=p->shuxue;sum_3+=p->yingyu;}aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_sum=aver_1+aver_2+aver_3;printf("總共%d名學生,具體數據為:\n",n);printf("語文最高分為%d,最低分為%d,平均分為%.2f\n",max_1,min_1,aver_1);printf("數學最高分為%d,最低分為%d,平均分為%.2f\n",max_2,min_2,aver_2);printf("英語最高分為%d,最低分為%d,平均分為%.2f\n",max_3,min_3,aver_3);printf("總分最高分為%d,最低分位%d,平均分為%.2f\n",max_sum,min_sum,aver_sum);}//刪除學生信息Student*del(Student*head){Student*p1,*p2;charname[20];if(head==NULL){printf("成績表為空,無法刪除!\n");return(head);}printf("請輸入要刪除的名字:");gets(name);p1=head;while((strcmp(p1->name,name))!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){if(p1==head){head=p1->next;}else{p2->next=p1->next;}printf("已成功刪除:%s\n",name);free(p1);n=n-1;}else{printf("%s不存在本成績表中!\n",name);}returnhead;}//修改成績表Student*xiugai(Student*head){Student*p1,*p2;charname[20];intchoose; if(head==NULL){printf("成績表為空,無法修改!\n");returnhead;}printf("請輸入需要修改的姓名:");gets(name);p1=head;while((strcmp(p1->name,name))!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){printf("\t\t******請選擇修改的內容******\n");printf("\t\t**1姓名**\n");printf("\t\t**2學號**\n");printf("\t\t**3語文成績**\n");printf("\t\t**4數學成績**\n"); printf("\t\t**5英語成績**\n");printf("\t\t**6全部修改**\n");printf("\t\t**0返回**\n");printf("\t\t**********************\n");printf("請輸入您的選擇:");scanf("%d",&choose);while(getchar()!='\n');switch(choose){case1:printf("請重新輸入姓名:");scanf("%s",&p1->name);break;case2:printf("請重新輸入學號:");scanf("%d",&p1->num);break;case3:printf("請重新輸入語文成績:");scanf("%d",&p1->yuwen);p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;break;case4:printf("請重新輸入數學成績:");scanf("%d",&p1->shuxue);p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;break;case5:printf("請重新輸入英語成績:");scanf("%d",&p1->yingyu);p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;break;case6:printf("請重新輸入姓名:");scanf("%s",&p1->name);printf("請重新輸入學號:");scanf("%d",&p1->num);printf("請重新輸入語文成績:");scanf("%d",&p1->yuwen);printf("請重新輸入數學成績:");scanf("%d",&p1->shuxue);printf("請重新輸入英語成績:");scanf("%d",&p1->yingyu);p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;break;case0:returnhead;default:printf("操作錯誤,此項不存在!\n");break;}}else{printf("此人未在本成績表中!\n");}returnhead;}//統(tǒng)計學生信息Student*tongji(Student*head){intchoose,j,k;Student*p1;p1=head->next;if(!p1){printf("\n\t\t***提示:沒有資料可以篩選!***\n");}printf("\t\t請選擇統(tǒng)計的內容\n");printf("\t\t=1.語文=\n");printf("\t\t=2.數學=\n");printf("\t\t=3.英語=\n");printf("\t\t=4.總分=\n");printf("\t\t\n");printf("**請選擇課程名:");scanf("%d",&choose);if(choose==1){printf("請輸入篩選分數的范圍:");scanf("%d,%d",&k,&j);printf("\t\t篩選結果\n");printf("\t\t學號\t姓名\t語文成績數學成績英語成績總分\n");printf("\t\t\n");while(p1!=NULL){if(k<=(p1->yuwen)&&(p1->yuwen)<j)printf("\t\t%d\t%s\t%d%d%d%d\n",p1->num,p1->name,p1->yuwen,p1->shuxue,p1->yingyu,p1->sum=p1->yuwen+p1->shuxue+p1->yingyu);p1=p1->next;}printf("\t\t\n");}elseif(choose==2){printf("請輸入篩選分數的范圍:");scanf("%d,%d",&k,&j);printf("\t\t篩選結果\n");printf("\t\t學號\t姓名\t語文成績數學成績英語成績總分\n");printf("\t\t\n");while(p1!=NULL){if(k<=(p1->shuxue)&&(p1->shuxue)<j)printf("\t\t%d\t%s\t%d%d%d%d\n",p1->num,p1->name,p1->yuwen,p1->shuxue,p1->yingyu,p1->sum=p1->yuwen+p1->shuxue+p1->yingyu);p1=p1->next;}printf("\t\t\n");}elseif(choose==3){printf("請輸入篩選分數的范圍:");scanf("%d,%d",&k,&j);printf("\t\t篩選結果\n");printf("\t\t學號\t姓名\t語文成績數學成績英語成績總分\n");printf("\t\t\n");while(p1!=NULL){if(k<=(p1->yingyu)&&(p1->yingyu)<j)printf("\t\t%d\t%s\t%d%d%d%d\n",p1->num,p1->name,p1->yuwen,p1->shuxue,p1->yingyu,p1->sum=p1->yuwen+p1->shuxue+p1->yingyu);p1=p1->next;}printf("\t\t\n");}elseif(choose==4){ printf("請輸入篩選分數的范圍:");scanf("%d,%d",&k,&j);printf("\t\t篩選結果\n");printf("\t\t學號\t姓名\t語文成績數學成績英語成績總分\n");

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論