版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)蒙古科技大學(xué)本科生課程設(shè)計(jì)說(shuō)明書(shū)題 目:C語(yǔ)言課程設(shè)計(jì) 學(xué)生成績(jī)管理系統(tǒng)學(xué)生姓名:*學(xué) 號(hào):*專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):11級(jí)-3班指導(dǎo)教師:*2012年12月26日內(nèi)蒙古科技大學(xué)課程設(shè)計(jì)任務(wù)書(shū)課程名稱C語(yǔ)言課程設(shè)計(jì)設(shè)計(jì)題目學(xué)生成績(jī)管理系統(tǒng)指導(dǎo)教師*時(shí)間2012.12.312013.1.4一、教學(xué)要求1. 鞏固和加深學(xué)生對(duì)C語(yǔ)言課程的基本知識(shí)的理解和掌握2. 掌握C語(yǔ)言編程和程序調(diào)試的基本技能3. 利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)4. 掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力5. 提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力二、設(shè)計(jì)資料及參數(shù)每個(gè)學(xué)生在教師提供的課程設(shè)計(jì)題目中任意選擇一題,獨(dú)立完成,題目選定后不
2、可更換。某班學(xué)生成績(jī)管理,包括以下功能:v 從鍵盤輸入包括學(xué)號(hào)、姓名、各門課程成績(jī)(不少于5門),并將其保存在磁盤文件里v 打開(kāi)文件后,計(jì)算每個(gè)人的總分和平均分,排序并保存v 具有單項(xiàng)查詢或多項(xiàng)查詢的功能(即按照給定的關(guān)鍵字,如姓名找出滿足條件的紀(jì)錄)v 具有插入、刪除和修改功能v 具有輸出文件數(shù)據(jù)信息的功能三、設(shè)計(jì)要求及成果1. 分析課程設(shè)計(jì)題目的功能需求(可選用數(shù)組或鏈表實(shí)現(xiàn),可多人(最多3人)協(xié)作完成一個(gè)題目)2. 寫(xiě)出詳細(xì)設(shè)計(jì)說(shuō)明(至少包括功能實(shí)現(xiàn)分析和模塊流程圖)3. 編寫(xiě)程序代碼,調(diào)試程序使其能正確運(yùn)行(代碼書(shū)寫(xiě)要規(guī)范,標(biāo)示符要見(jiàn)名知意,要有必要的注釋,每人至少3個(gè)函數(shù),每人至少2
3、00行代碼,不包括注釋和花括號(hào))4. 設(shè)計(jì)完成的軟件要便于操作和使用5. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告(請(qǐng)嚴(yán)格按照模板進(jìn)行排版)四、進(jìn)度安排第一天 選擇課程設(shè)計(jì)題目,分析課題的要求第二天 編程第三天 編程及調(diào)試第四天 寫(xiě)課程設(shè)計(jì)報(bào)告第五天 提交課程設(shè)計(jì)報(bào)告(打印稿及電子稿)五、評(píng)分標(biāo)準(zhǔn)1. 根據(jù)平時(shí)上機(jī)考勤、表現(xiàn)和進(jìn)度,教師將每天點(diǎn)名和檢查2. 根據(jù)課程設(shè)計(jì)完成情況,必須有可運(yùn)行的軟件。3. 根據(jù)課程設(shè)計(jì)報(bào)告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。六、建議參考資料1C語(yǔ)言程序設(shè)計(jì),譚浩強(qiáng),清華大學(xué)出版社2C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì),劉振安,機(jī)械工業(yè)出版社目 錄內(nèi)蒙古科技大學(xué)課程設(shè)計(jì)任務(wù)書(shū)
4、III第一章 需求分析41.1引言41.2任務(wù)概述41.3數(shù)據(jù)描述41.4功能需求51.5性能需求51.6運(yùn)行需求51.7任務(wù)計(jì)劃5第二章概要設(shè)計(jì)62.1總體設(shè)計(jì)62.2數(shù)據(jù)類型設(shè)計(jì)(或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì))72.3接口設(shè)計(jì) /函數(shù)聲明72.4運(yùn)行界面設(shè)計(jì)8第三章詳細(xì)設(shè)計(jì)93.1輸入模塊設(shè)計(jì)93.2輸出模塊設(shè)計(jì)103.3查找模塊設(shè)計(jì)133.4排序模塊設(shè)計(jì)16第四章測(cè)試分析194.1測(cè)試程序執(zhí)行情況194.2出現(xiàn)的問(wèn)題和解決的方法24第五章課程設(shè)計(jì)總結(jié)25附錄:程序代碼26參考文獻(xiàn)41致謝42第一章 需求分析1.1 引言建立學(xué)生成績(jī)管理系統(tǒng),通過(guò)使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)進(jìn)行管理,進(jìn)一步提高辦學(xué)效率。此設(shè)計(jì)說(shuō)
5、明書(shū)是對(duì)學(xué)生成績(jī)管理系統(tǒng)開(kāi)發(fā)的一個(gè)初步的分析說(shuō)明性文檔,旨在通過(guò)該文檔清晰的闡述系統(tǒng)的實(shí)際功能,方便系統(tǒng)開(kāi)發(fā)人員對(duì)系統(tǒng)的理解以及與用戶的溝通。文檔相關(guān)說(shuō)明部分在目錄部分已全部涵蓋,閱讀此文檔的相關(guān)人員可以通過(guò)目錄索引找到相應(yīng)部分予以閱讀。1.2 任務(wù)概述某班學(xué)生成績(jī)管理,包括以下功能:v 從鍵盤輸入包括學(xué)號(hào)、姓名、各門課程成績(jī)(不少于5門),并將其保存在磁盤文件里v 打開(kāi)文件后,計(jì)算每個(gè)人的總分和平均分,排序并保存v 具有單項(xiàng)查詢或多項(xiàng)查詢的功能(即按照給定的關(guān)鍵字,如姓名找出滿足條件的紀(jì)錄)v 具有插入、刪除和修改功能v 具有輸出文件數(shù)據(jù)信息的功能1.3 數(shù)據(jù)描述該管理系統(tǒng)程序中數(shù)據(jù)主要有:
6、學(xué)生的學(xué)號(hào)、姓名、各門課程成績(jī)、每個(gè)人的總分和平均分、查詢、輸出、插入、刪除和修改等功能。1.4 功能需求(1) 輸入模塊:有關(guān)學(xué)生的信息,各門課程成績(jī)的輸入;(2) 輸出模塊:學(xué)生成績(jī)的總分和平均分;(3) 查找模塊:根據(jù)學(xué)生的姓名查詢?cè)搶W(xué)生的名次、成績(jī);(4) 排序模塊:對(duì)學(xué)生成績(jī)的排序;(5) 保存及讀取模塊:保存及讀取磁盤文件。1.5 性能需求(1) 要求該管理系統(tǒng)具有一定的可擴(kuò)展性以便適應(yīng)發(fā)展,且便于維護(hù);(2) 要求該管理系統(tǒng)便于使用,使用步驟簡(jiǎn)易明了。1.6 運(yùn)行需求基于windows平臺(tái)下的窗口圖形界面軟件,運(yùn)行主界面為windows的經(jīng)典運(yùn)行界面,采用多文檔界面,從而使程序更
7、加美觀,整齊有序,簡(jiǎn)易操作。軟件運(yùn)行基于windows平臺(tái)上的xp,Vista,win7等1.7 任務(wù)計(jì)劃第一天 選擇課程設(shè)計(jì)題目,分析課題的要求第二天 編程第三天 編程及調(diào)試第四天 寫(xiě)課程設(shè)計(jì)報(bào)告第五天 提交課程設(shè)計(jì)報(bào)告(打印稿及電子稿)第二章 概要設(shè)計(jì)2.1 總體設(shè)計(jì)設(shè)計(jì)目的:1. 鞏固和加深學(xué)生對(duì)C語(yǔ)言課程的基本知識(shí)的理解和掌握2. 掌握C語(yǔ)言編程和程序調(diào)試的基本技能3. 利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)4. 掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力5. 提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力主菜單輸入學(xué)生信息輸出學(xué)生信息查詢學(xué)生信息插入學(xué)生信息圖2.1:程序總體設(shè)計(jì)圖2.2 數(shù)據(jù)類型設(shè)計(jì)(或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì))
8、表2.1:數(shù)據(jù)類型設(shè)計(jì)數(shù)據(jù)數(shù)據(jù)類型學(xué)生各門課程成績(jī)整數(shù)數(shù)據(jù)平均分浮點(diǎn)型數(shù)據(jù)姓名字符型變量Student結(jié)構(gòu)體類型2.3 接口設(shè)計(jì)表2.2:函數(shù)列表函數(shù)名函數(shù)格式 /即函數(shù)首部函數(shù)功能*cinStudent輸入學(xué)生信息*sort_1Student學(xué)生信息按要求排序sort_2void排序函數(shù)printvoid輸出學(xué)生信息*sort_allStudent學(xué)生全部信息排序findvoid查找學(xué)生信息*add_newStudent插入新的學(xué)生信息2.4 運(yùn)行界面設(shè)計(jì)圖2.2:運(yùn)行界面設(shè)計(jì)第三章 詳細(xì)設(shè)計(jì)3.1 輸入模塊設(shè)計(jì)輸入學(xué)生的各項(xiàng)基本信息:Student *cin() int flag; Stu
9、dent *head,*p1,*p2; n=0; head=(Student *)malloc(LEN); p2=head; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:,n+1); scanf(%d,&flag); while(getchar()!=n); for(;flag;) n+; p1=(Student *)malloc(LEN); p1-num=flag; printf(請(qǐng)輸入第%d名學(xué)生的姓名:,n); scanf(%s,p1-name); printf(請(qǐng)輸入第%d名學(xué)生的語(yǔ)文成績(jī):,n); scanf(%d,&p1-score0); printf(請(qǐng)輸入第
10、%d名學(xué)生的數(shù)學(xué)成績(jī):,n); scanf(%d,&p1-score1); printf(請(qǐng)輸入第%d名學(xué)生的英語(yǔ)成績(jī):,n); scanf(%d,&p1-score2); printf(請(qǐng)輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p1-score3); printf(請(qǐng)輸入第%d名學(xué)生的物理成績(jī):,n); scanf(%d,&p1-score4); p1-sum=p1-score0+p1-score1+p1-score2+p1-score3+p1-score4; p2-next=p1; p2=p1; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:,n
11、+1); scanf(%d,&flag); p2-next=NULL;printf(nn);return head;3.2 輸出模塊設(shè)計(jì)輸出學(xué)生成績(jī)信息:void print(Student *head)Student *p=head-next; if (!p) printf(nn此系統(tǒng)目前沒(méi)有任何學(xué)生數(shù)據(jù)!nnn);return;printf(此系統(tǒng)目前共計(jì)學(xué)生%d名:n,n); printf(*學(xué)生成績(jī)統(tǒng)計(jì)一覽*n);printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 物理成績(jī) 總分n);for(;p;p=p-next) printf(%dt%st %d %d %d %d
12、%d %dn, p-num,p-name, p-score0,p-score1,p-score2,p-score3,p-score4, p-sum=p-score0+p-score1+p-score2+p-score3+p-score4); int main() Student *head;int choose,i;head=(Student *)malloc(LEN);head-next=NULL; for(;) printf(ntt* * * * * 學(xué)生成績(jī)管理系統(tǒng) * * * *n); printf(ttt1.學(xué)生數(shù)據(jù)鍵盤錄入tn); printf(ttt2.學(xué)生數(shù)據(jù)統(tǒng)計(jì)排序tn);
13、printf(ttt3.查詢學(xué)生數(shù)據(jù)ttn); printf(ttt4.插入學(xué)生數(shù)據(jù)ttn); printf(ttt5.顯示當(dāng)前成績(jī)表tn); printf(ttt0.退出成績(jī)管理系統(tǒng)tn); printf(n請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1:printf(ntttt*注意*); printf(nn 此選項(xiàng)將會(huì)建立新的學(xué)生數(shù)據(jù)系統(tǒng) ,原來(lái)的數(shù)據(jù)將不再存在,你確定要?jiǎng)h除原來(lái)的數(shù)據(jù)并建立新的數(shù)據(jù)系統(tǒng)嗎?nn); printf(1、建立新的數(shù)據(jù)系統(tǒng);0、放棄建立新的數(shù)據(jù)系統(tǒng)。nn);
14、 printf(請(qǐng)選擇:); scanf(%d,&i); if (i=1) head=cin();print(head);break; else if (i=0) printf(n你選擇了放棄建立新的數(shù)據(jù)系統(tǒng)!n); break; else printf(n你做出別的選擇,當(dāng)作放棄建立!n); break; case 2:head=sort_all(head);break; case 3:find(head);break; case 4:head=add_new(head); case 5:print(head);break; case 0:system(pause);return 0; de
15、fault: printf(nn您的輸入有誤!請(qǐng)重新輸入:nn);break; 3.3 查找模塊設(shè)計(jì)根據(jù)學(xué)生的姓名或?qū)W號(hào)查找學(xué)生的信息:void find(Student *head)Student *p;int choose,fnum;char tem20;if (n=0) printf(n當(dāng)前系統(tǒng)沒(méi)有任何學(xué)生數(shù)據(jù)!n );return;for(;) printf(n請(qǐng)輸入您要查詢學(xué)生的方式:nn); printf(1、按學(xué)號(hào)查詢;2、按姓名查詢;0、放棄查詢nn); printf(請(qǐng)選擇:); scanf(%d,&choose); while(getchar()!=n); if (choo
16、se=1) printf(n請(qǐng)輸入你要查詢的學(xué)生的學(xué)號(hào),輸入0退出學(xué)號(hào)查詢:); scanf(%d,&fnum); for(;fnum;) for(p=head-next;p!=NULL&p-num!=fnum;p=p-next); if (!p) printf(nn查找不到要查詢的學(xué)號(hào),請(qǐng)重新輸入,輸入0表示結(jié)束:); scanf(%d,&fnum); else if (p-num=fnum) printf(n學(xué)號(hào)為%d學(xué)生的數(shù)據(jù)為:n,p-num); printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 物理成績(jī) 總分n); printf(%dt%st %d %d %d %d
17、 %d %dn,p-num, p-name,p-score0,p-score1,p-score2,p-score3, p-sum); printf(nn請(qǐng)輸入你還要查詢的學(xué)生的學(xué)號(hào),輸入0表示不按學(xué)號(hào)查詢:); scanf(%d,&fnum); else if (choose=2) printf(n請(qǐng)輸入你要查詢的學(xué)生的姓名,輸入0退出姓名查詢:); scanf(%s,tem); for(;strcmp(tem,0);) for(p=head-next;p!=NULL&strcmp(p-name,tem);p=p-next); if (!p) printf(nn找不到你要查詢的姓名,請(qǐng)重新輸入
18、,輸入0表示結(jié)束:); scanf(%s,tem); else if (!strcmp(p-name,tem) printf(n姓名為%s學(xué)生的數(shù)據(jù)為:n,p-name); printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 物理成績(jī) 總分n); printf(%dt%st %d %d %d %d %d %dn,p-num, p-name,p-score0,p-score1,p-score2,p-score3, p-sum); printf(nn請(qǐng)輸入你還要查詢的學(xué)生的姓名,輸入0表示不按姓名查詢:); scanf(%s,tem); else if (choose=0) pri
19、ntf(n你選擇了不查詢!n);break; else printf(n你以其他方式選擇了不查詢!n);break;3.4 排序模塊設(shè)計(jì)將學(xué)生信息按要求排序:Student *sort_all(Student *head) int choose; for(;) printf(ntt# # # # # 學(xué)生成績(jī)統(tǒng)計(jì)排序 # # # #n);printf(ttt1.按學(xué)生學(xué)號(hào)排序tn); printf(ttt2.按學(xué)生總分排序tn); printf(ttt3.按學(xué)生語(yǔ)文成績(jī)排序tn); printf(ttt4.按學(xué)生數(shù)學(xué)成績(jī)排序tn); printf(ttt5.按學(xué)生英語(yǔ)成績(jī)排序tn); prin
20、tf(ttt6.按學(xué)生計(jì)算機(jī)成績(jī)排序tn);printf(ttt7.按學(xué)生物理成績(jī)排序tn);printf(ttt8.單科高分及均分tn); printf(ttt9.顯示當(dāng)前學(xué)生成績(jī)tn); printf(ttt0.返回上一級(jí)菜單tn); printf(請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1: case 2: case 3:case 4: case 5:case 6:case 7:head=sort_1(head,choose);break;case 8:print(head);so
21、rt_2(head);break;case 9:print(head);break; case 0:return head; default: printf(nn您的輸入有誤!請(qǐng)重新輸入:nn);break; 第四章 測(cè)試分析4.1 測(cè)試程序執(zhí)行情況圖4.1:選擇建立系統(tǒng)圖4.2:輸入學(xué)生信息及各門課程成績(jī)圖4.3:學(xué)生成績(jī)一覽表圖4.4:學(xué)生成績(jī)排序圖4.5:學(xué)生單科高分及平均分圖4.6:查詢學(xué)生數(shù)據(jù)圖4.7:插入學(xué)生數(shù)據(jù)圖4.8:插入新學(xué)生數(shù)據(jù)后成績(jī)排序圖4.9:插入新學(xué)生數(shù)據(jù)后成績(jī)統(tǒng)計(jì)一覽表4.2 出現(xiàn)的問(wèn)題和解決的方法1、 程序的語(yǔ)句結(jié)束后,忘記打分號(hào):程序運(yùn)行出現(xiàn)錯(cuò)誤后,加上分號(hào);2
22、、 顯示所有成績(jī)排序時(shí),物理成績(jī)誤將%打成&,程序運(yùn)行后,物理成績(jī)出現(xiàn)亂碼:程序運(yùn)行錯(cuò)誤后,將&改為%;第五章 課程設(shè)計(jì)總結(jié)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在是生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握計(jì)算機(jī)開(kāi)發(fā)技術(shù)十分重要的。我的課設(shè)題目是學(xué)生成績(jī)管理系統(tǒng),對(duì)于剛剛接觸C語(yǔ)言的學(xué)生來(lái)說(shuō)也是有一定難度的。如何將課堂所學(xué)和實(shí)踐相結(jié)合是我們此次課設(shè)最為重要的一部分,將所學(xué)的知識(shí)應(yīng)用到實(shí)踐中才是我們真正的將知識(shí)學(xué)到我們自己的腦子里?;仡櫞舜握n
23、設(shè),感受頗多,從開(kāi)始課設(shè)到課設(shè)結(jié)束,確實(shí)學(xué)到了很多東西,不僅鞏固了以前學(xué)到的知識(shí),更是學(xué)到了很多以前未接觸過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到的問(wèn)題,可以說(shuō)是困難重重,第一次做課設(shè),無(wú)法避免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過(guò)這次課程設(shè)計(jì)后,把以前所學(xué)過(guò)的知識(shí)都重新溫故。在課程設(shè)計(jì)過(guò)程中,我學(xué)到了很多人生的哲理,懂得怎么樣去
24、制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過(guò)程中怎么樣去克服心理上的不良情緒,黑夜過(guò)去了,我們收獲的是黎明。一時(shí)的失意不算什么,只要能堅(jiān)持下去,就一定會(huì)成功的。感謝這次課設(shè)讓我明白很多,了解很多,同時(shí)也改變很多。附錄:程序代碼#include #include #include #include #define LEN sizeof(Student)typedef struct student int num;char name20; int score5; int sum; struct student *next;Student;int n;Student *cin(void); St
25、udent *sort_1(Student *head,int); void sort_2(Student *head);void print(Student *head);Student *sort_all(Student *head);void find(Student *head);Student *add_new(Student *head);Student *cin() int flag; Student *head,*p1,*p2; n=0; head=(Student *)malloc(LEN); p2=head; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:
26、,n+1); scanf(%d,&flag); while(getchar()!=n); for(;flag;) n+; p1=(Student *)malloc(LEN); p1-num=flag; printf(請(qǐng)輸入第%d名學(xué)生的姓名:,n); scanf(%s,p1-name); printf(請(qǐng)輸入第%d名學(xué)生的語(yǔ)文成績(jī):,n); scanf(%d,&p1-score0); printf(請(qǐng)輸入第%d名學(xué)生的數(shù)學(xué)成績(jī):,n); scanf(%d,&p1-score1); printf(請(qǐng)輸入第%d名學(xué)生的英語(yǔ)成績(jī):,n); scanf(%d,&p1-score2); printf(請(qǐng)
27、輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p1-score3); printf(請(qǐng)輸入第%d名學(xué)生的物理成績(jī):,n); scanf(%d,&p1-score4); p1-sum=p1-score0+p1-score1+p1-score2+p1-score3+p1-score4; p2-next=p1; p2=p1; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),沒(méi)有此學(xué)生則輸入0表示結(jié)束:,n+1); scanf(%d,&flag); p2-next=NULL;printf(nn);return head;Student *sort_all(Student *head) int
28、choose; for(;) printf(ntt# # # # # 學(xué)生成績(jī)統(tǒng)計(jì)排序 # # # #n);printf(ttt1.按學(xué)生學(xué)號(hào)排序tn); printf(ttt2.按學(xué)生總分排序tn); printf(ttt3.按學(xué)生語(yǔ)文成績(jī)排序tn); printf(ttt4.按學(xué)生數(shù)學(xué)成績(jī)排序tn); printf(ttt5.按學(xué)生英語(yǔ)成績(jī)排序tn); printf(ttt6.按學(xué)生計(jì)算機(jī)成績(jī)排序tn);printf(ttt7.按學(xué)生物理成績(jī)排序tn);printf(ttt8.單科高分及均分tn); printf(ttt9.顯示當(dāng)前學(xué)生成績(jī)tn); printf(ttt0.返回上一級(jí)菜單t
29、n); printf(請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1: case 2: case 3:case 4: case 5:case 6:case 7:head=sort_1(head,choose);break;case 8:print(head);sort_2(head);break;case 9:print(head);break; case 0:return head; default: printf(nn您的輸入有誤!請(qǐng)重新輸入:nn);break; Student *so
30、rt_1(Student *head,int choose) Student *p1,*p2=head-next,*pm,*px;Student mid;if (!p2) return head;for(p1=p2;p1-next!=NULL;p1=p1-next) pm=p1; for(p2=p1-next;p2!=NULL;p2=p2-next) switch(choose) case 1:if (pm-nump2-num) pm=p2;break; case 2:if (pm-sumsum) pm=p2;break; case 3:if (pm-score0score0) pm=p2;b
31、reak; case 4:if (pm-score1score1) pm=p2;break; case 5:if (pm-score2score2) pm=p2;break; case 6:if (pm-score3score3) pm=p2;break;case 7:if (pm-score4score4) pm=p2;break; if (pm!=p1) mid=*pm; *pm=*p1; *p1=mid; px=pm-next; pm-next=p1-next; p1-next=px; printf(n排序后的成績(jī)表為:n);print(head); return head;void s
32、ort_2(Student *headStudent *p=head-next;int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4,max_5,min_5;int max_sum,min_sum;int sum_1=0,sum_2=0,sum_3=0,sum_4=0,sum_5=0;float aver_1,aver_2,aver_3,aver_4,aver_5,aver_sum;if (!p) return;max_1=min_1=p-score0;max_2=min_2=p-score1;max_3=min_3=p-score2;max_
33、4=min_4=p-score3; max_5=min_5=p-score4;max_sum=min_sum=p-sum;for(;p;p=p-next) if (max_1score0) max_1=p-score0; else if (min_1p-score0) min_1=p-score0; if (max_2score1) max_2=p-score1; else if (min_2p-score1) min_2=p-score1; if (max_3score2) max_3=p-score2; else if (min_3p-score2) min_3=p-score2; if
34、(max_4score3) max_4=p-score3; else if (min_4p-score3) min_4=p-score3;if (max_5score4) max_5=p-score4;else if (min_5p-score4) min_5=p-score4;if (max_sumsum) max_sum=p-sum; else if (min_sump-sum) min_sum=p-sum; sum_1+=p-score0;sum_2+=p-score1;sum_3+=p-score2;sum_4+=p-score3;sum_5+=p-score4;aver_1=1.0*
35、sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;aver_5=1.0*sum_5/n;aver_sum=aver_1+aver_2+aver_3+aver_4+aver_5;printf(總共%d名學(xué)生,具體數(shù)據(jù)為:n,n); printf(語(yǔ)文最高分為%d,最低分為%d,平均分為%.2fn,max_1,min_1,aver_1);printf(數(shù)學(xué)最高分為%d,最低分為%d,平均分為%.2fn,max_2,min_2,aver_2);printf(英語(yǔ)最高分為%d,最低分為%d,平均分為%.2fn,max_3,
36、min_3,aver_3); printf(計(jì)算機(jī)最高分為%d,最低分為%d,平均分為%.2fn,max_4,min_4,aver_4);printf(物理最高分為%d,最低分為%d,平均分為%.2fn,max_5,min_5,aver_5);printf(總分最高分為%d,最低分位%d,平均分為%.2fn, max_sum,min_sum,aver_sum); void find(Student *head)Student *p;int choose,fnum;char tem20;if (n=0) printf(n當(dāng)前系統(tǒng)沒(méi)有任何學(xué)生數(shù)據(jù)!n );return;for(;) printf(
37、n請(qǐng)輸入您要查詢學(xué)生的方式:nn); printf(1、按學(xué)號(hào)查詢;2、按姓名查詢;0、放棄查詢nn); printf(請(qǐng)選擇:); scanf(%d,&choose); while(getchar()!=n); if (choose=1) printf(n請(qǐng)輸入你要查詢的學(xué)生的學(xué)號(hào),輸入0退出學(xué)號(hào)查詢:); scanf(%d,&fnum); for(;fnum;) for(p=head-next;p!=NULL&p-num!=fnum;p=p-next); if (!p) printf(nn查找不到要查詢的學(xué)號(hào),請(qǐng)重新輸入,輸入0表示結(jié)束:); scanf(%d,&fnum); else if (p-num=fnum) printf(n學(xué)號(hào)為%d學(xué)生的數(shù)據(jù)為:n,p-num); printf(學(xué)號(hào)t姓名t語(yǔ)文成績(jī) 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 物理成績(jī) 總分n); printf(%dt%st %d %d %d %d %d %dn,p-num, p-name,p-score0,p-score1,p-score2,p-score3, p-sum); printf(nn請(qǐng)輸入你還要查詢的學(xué)生的學(xué)號(hào),輸入0表示不按學(xué)號(hào)查詢:); scanf(%d,&fnum); else if (choose=2) printf(n請(qǐng)輸入你要查詢的學(xué)生的姓名,輸入0退出姓名查詢:);
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工傷患者心理護(hù)理
- 建筑工程項(xiàng)目風(fēng)險(xiǎn)評(píng)估與管控方案
- 民宿酒店客戶滿意度提升方案
- 建筑工地冬季施工安全管理方案
- 企業(yè)團(tuán)隊(duì)建設(shè)方案與實(shí)施記錄
- 人力資源部門員工晉升制度模板
- 人才梯隊(duì)建設(shè)方案及執(zhí)行計(jì)劃
- 師徒制度下的教學(xué)經(jīng)驗(yàn)交流模板
- 特種作業(yè)人員(電工焊工起重機(jī)操作)安全操作技能考核(2024年度)
- XX公司危險(xiǎn)化學(xué)品泄漏應(yīng)急演練考核(2024年9月)
- 肛腸科進(jìn)修匯報(bào)
- 電網(wǎng)技術(shù)改造及檢修工程定額和費(fèi)用計(jì)算規(guī)定2020 年版答疑匯編2022
- 玉米地膜覆蓋栽培技術(shù)
- DB51-T 5046-2014 混凝土結(jié)構(gòu)工程施工工藝規(guī)程
- 廠房矩形控制網(wǎng)測(cè)設(shè)及柱列軸線與柱基施工測(cè)量
- 寫(xiě)作篇 Chapter One Paragragh Writing課件完整版
- 郵輪郵輪產(chǎn)業(yè)與郵輪經(jīng)濟(jì)概述
- WB/T 1019-2002菱鎂制品用輕燒氧化鎂
- 完整word版毛澤東思想和中國(guó)特色社會(huì)主義理論體系概論知識(shí)點(diǎn)歸納
- GB/T 18926-2008包裝容器木構(gòu)件
- DB11T 594.1-2017 地下管線非開(kāi)挖鋪設(shè)工程施工及驗(yàn)收技術(shù)規(guī)程第1部分:水平定向鉆施工
評(píng)論
0/150
提交評(píng)論