版權(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ō)明書題 目:C語(yǔ)言課程設(shè)計(jì) 學(xué)生成績(jī)管理系統(tǒng)學(xué)生姓名:*學(xué) 號(hào):*專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):11級(jí)-3班指導(dǎo)教師:*2021年12月26日內(nèi)蒙古科技大學(xué)課程設(shè)計(jì)任務(wù)書課程名稱C語(yǔ)言課程設(shè)計(jì)設(shè)計(jì)題目學(xué)生成績(jī)管理系統(tǒng)指導(dǎo)教師*時(shí)間一、教學(xué)要求1. 穩(wěn)固和加深學(xué)生對(duì)C語(yǔ)言課程的根本知識(shí)的理解和掌握2. 掌握C語(yǔ)言編程和程序調(diào)試的根本技能3. 利用C語(yǔ)言進(jìn)展根本的軟件設(shè)計(jì)4. 掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力5. 提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力二、設(shè)計(jì)資料及參數(shù)每個(gè)學(xué)生在教師提供的課程設(shè)計(jì)題目中任意選擇一題,獨(dú)立完成,題目選定后不可更換。某班學(xué)生成績(jī)管理,包括以下功
2、能:從鍵盤輸入包括學(xué)號(hào)、姓名、各門課程成績(jī)(不少于5門),并將其保存在磁盤文件里翻開文件后,計(jì)算每個(gè)人的總分和平均分,排序并保存具有單項(xiàng)查詢或多項(xiàng)查詢的功能即按照給定的關(guān)鍵字,如姓名找出滿足條件的紀(jì)錄具有插入、刪除和修改功能具有輸出文件數(shù)據(jù)信息的功能三、設(shè)計(jì)要求及成果1. 分析課程設(shè)計(jì)題目的功能需求可選用數(shù)組或鏈表實(shí)現(xiàn),可多人最多3人協(xié)作完成一個(gè)題目2. 寫出詳細(xì)設(shè)計(jì)說(shuō)明至少包括功能實(shí)現(xiàn)分析和模塊流程圖3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行代碼書寫要標(biāo)準(zhǔn),標(biāo)示符要見名知意,要有必要的注釋,每人至少3個(gè)函數(shù),每人至少200行代碼,不包括注釋和花括號(hào)4. 設(shè)計(jì)完成的軟件要便于操作和使用5. 設(shè)
3、計(jì)完成后提交課程設(shè)計(jì)報(bào)告請(qǐng)嚴(yán)格按照模板進(jìn)展排版四、進(jìn)度安排第一天 選擇課程設(shè)計(jì)題目,分析課題的要求第二天 編程第三天 編程及調(diào)試第四天 寫課程設(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ì)量,如有雷同,那么所有雷同的所有人均判為不及格。六、建議參考資料1?C語(yǔ)言程序設(shè)計(jì)?,譚浩強(qiáng),清華大學(xué)出版社2?C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)?,劉振安,機(jī)械工業(yè)出版社目 錄 TOC o 1-3 h z u HYPERLINK l _Toc281850649 內(nèi)蒙古科技大學(xué)課程
4、設(shè)計(jì)任務(wù)書 III HYPERLINK l _Toc281850651 第一章 需求分析4 HYPERLINK l _Toc281850652 引言4 HYPERLINK l _Toc281850653 任務(wù)概述4 HYPERLINK l _Toc281850654 數(shù)據(jù)描述4 HYPERLINK l _Toc281850655 功能需求5 HYPERLINK l _Toc281850656 性能需求5 HYPERLINK l _Toc281850657 運(yùn)行需求5 HYPERLINK l _Toc281850658 任務(wù)方案5 HYPERLINK l _Toc281850659 第二章概要設(shè)
5、計(jì)6 HYPERLINK l _Toc281850660 總體設(shè)計(jì)6 HYPERLINK l _Toc281850661 數(shù)據(jù)類型設(shè)計(jì)或數(shù)據(jù)構(gòu)造設(shè)計(jì)7 HYPERLINK l _Toc281850662 接口設(shè)計(jì) /函數(shù)聲明7 HYPERLINK l _Toc281850663 運(yùn)行界面設(shè)計(jì)8 HYPERLINK l _Toc281850664 第三章詳細(xì)設(shè)計(jì)9 HYPERLINK l _Toc281850665 輸入模塊設(shè)計(jì)9 HYPERLINK l _Toc281850666 輸出模塊設(shè)計(jì)10 HYPERLINK l _Toc281850667 查找模塊設(shè)計(jì) PAGEREF _Toc281
6、850667 h 13 HYPERLINK l _Toc281850668 排序模塊設(shè)計(jì) PAGEREF _Toc281850668 h 16 HYPERLINK l _Toc281850670 第四章測(cè)試分析19 HYPERLINK l _Toc281850671 測(cè)試程序執(zhí)行情況19 HYPERLINK l _Toc281850672 出現(xiàn)的問(wèn)題和解決的方法24 HYPERLINK l _Toc281850676 第五章課程設(shè)計(jì)總結(jié)25 HYPERLINK l _Toc281850677 附錄:程序代碼26 HYPERLINK l _Toc281850678 參考文獻(xiàn)41 HYPERLIN
7、K l _Toc281850679 致謝42需求分析引言建立學(xué)生成績(jī)管理系統(tǒng),通過(guò)使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)進(jìn)展管理,進(jìn)一步提高辦學(xué)效率。此設(shè)計(jì)說(shuō)明書是對(duì)學(xué)生成績(jī)管理系統(tǒng)開發(fā)的一個(gè)初步的分析說(shuō)明性文檔,旨在通過(guò)該文檔清晰的闡述系統(tǒng)的實(shí)際功能,方便系統(tǒng)開發(fā)人員對(duì)系統(tǒng)的理解以及與用戶的溝通。文檔相關(guān)說(shuō)明局部在目錄局部已全部涵蓋,閱讀此文檔的相關(guān)人員可以通過(guò)目錄索引找到相應(yīng)局部予以閱讀。任務(wù)概述某班學(xué)生成績(jī)管理,包括以下功能:從鍵盤輸入包括學(xué)號(hào)、姓名、各門課程成績(jī)(不少于5門),并將其保存在磁盤文件里翻開文件后,計(jì)算每個(gè)人的總分和平均分,排序并保存具有單項(xiàng)查詢或多項(xiàng)查詢的功能即按照給定的關(guān)鍵字,如姓名找出
8、滿足條件的紀(jì)錄具有插入、刪除和修改功能具有輸出文件數(shù)據(jù)信息的功能數(shù)據(jù)描述該管理系統(tǒng)程序中數(shù)據(jù)主要有:學(xué)生的學(xué)號(hào)、姓名、各門課程成績(jī)、每個(gè)人的總分和平均分、查詢、輸出、插入、刪除和修改等功能。功能需求輸入模塊:有關(guān)學(xué)生的信息,各門課程成績(jī)的輸入;輸出模塊:學(xué)生成績(jī)的總分和平均分;查找模塊:根據(jù)學(xué)生的姓名查詢?cè)搶W(xué)生的名次、成績(jī);排序模塊:對(duì)學(xué)生成績(jī)的排序;保存及讀取模塊:保存及讀取磁盤文件。性能需求要求該管理系統(tǒng)具有一定的可擴(kuò)展性以便適應(yīng)開展,且便于維護(hù);要求該管理系統(tǒng)便于使用,使用步驟簡(jiǎn)易明了。運(yùn)行需求基于windows平臺(tái)下的窗口圖形界面軟件,運(yùn)行主界面為windows的經(jīng)典運(yùn)行界面,采用多文
9、檔界面,從而使程序更加美觀,整齊有序,簡(jiǎn)易操作。軟件運(yùn)行基于windows平臺(tái)上的xp,Vista,win7等任務(wù)方案第一天 選擇課程設(shè)計(jì)題目,分析課題的要求第二天 編程第三天 編程及調(diào)試第四天 寫課程設(shè)計(jì)報(bào)告第五天 提交課程設(shè)計(jì)報(bào)告打印稿及電子稿概要設(shè)計(jì)總體設(shè)計(jì)設(shè)計(jì)目的:1. 穩(wěn)固和加深學(xué)生對(duì)C語(yǔ)言課程的根本知識(shí)的理解和掌握2. 掌握C語(yǔ)言編程和程序調(diào)試的根本技能3. 利用C語(yǔ)言進(jìn)展根本的軟件設(shè)計(jì)4. 掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力5. 提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力主菜單輸入學(xué)生信息輸出學(xué)生信息查詢學(xué)生信息插入學(xué)生信息圖2.1:程序總體設(shè)計(jì)圖數(shù)據(jù)類型設(shè)計(jì)或數(shù)據(jù)構(gòu)造設(shè)計(jì)表2.1:數(shù)據(jù)類型設(shè)
10、計(jì)數(shù)據(jù)數(shù)據(jù)類型學(xué)生各門課程成績(jī)整數(shù)數(shù)據(jù)平均分浮點(diǎn)型數(shù)據(jù)姓名字符型變量Student構(gòu)造體類型接口設(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é)生信息運(yùn)行界面設(shè)計(jì)圖2.2:運(yùn)行界面設(shè)計(jì)詳細(xì)設(shè)計(jì)輸入模塊設(shè)計(jì)輸入學(xué)生的各項(xiàng)根本信息:Student *cin() int flag; Student *head,*p1,*p2; n=0; h
11、ead=(Student *)malloc(LEN); p2=head; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示完畢輸入:,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,&
12、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表示完畢:,n+1); scanf(%d,&flag); p2-
13、next=NULL;printf(nn);return head;輸出模塊設(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 %d %dn, p-num,p-name, p-score
14、0,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); printf(ttt3.查詢學(xué)生數(shù)據(jù)ttn); print
15、f(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); printf(請(qǐng)選擇:); scanf(%d,&i);
16、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; default: printf(nn您的輸入有誤!請(qǐng)重新輸入:
17、nn);break; 查找模塊設(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 (choose=1) printf(n請(qǐng)輸入你要查詢的學(xué)生的學(xué)號(hào),輸入0退出
18、學(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表示完畢:); 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-
19、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)重新輸入,輸入0表示完畢:); scanf(%s,tem); else i
20、f (!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) printf(n你選擇了不查詢!n);break; else print
21、f(n你以其他方式選擇了不查詢!n);break;排序模塊設(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); printf(ttt6.按學(xué)生計(jì)算機(jī)成績(jī)排序tn);printf(ttt7.按學(xué)生
22、物理成績(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);sort_2(head);break;case 9:print(head);b
23、reak; case 0:return head; default: printf(nn您的輸入有誤!請(qǐng)重新輸入:nn);break; 測(cè)試分析測(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ì)一覽表出現(xiàn)的問(wèn)題和解決的方法程序的語(yǔ)句完畢后,忘記打分號(hào):程序運(yùn)行出現(xiàn)錯(cuò)誤后,加上分號(hào);顯示所有成績(jī)排序時(shí),物理成績(jī)誤將%打成&,程序運(yùn)行后,物理成績(jī)出現(xiàn)亂碼:程序運(yùn)行錯(cuò)誤后,將&改為%;課程設(shè)
24、計(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ù)開展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在是生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握計(jì)算機(jī)開發(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設(shè),感受頗多,從開場(chǎng)課設(shè)到課設(shè)完畢,確實(shí)學(xué)到了很多東西,不僅穩(wěn)固了以前學(xué)到的知識(shí),更是學(xué)到了很多以前未接觸過(guò)的知識(shí)。通
25、過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)效勞,從而提高自己的實(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í)理解得不夠深刻,掌握得不夠結(jié)實(shí),通過(guò)這次課程設(shè)計(jì)后,把以前所學(xué)過(guò)的知識(shí)都重新溫故。在課程設(shè)計(jì)過(guò)程中,我學(xué)到了很多人生的哲理,懂得怎么樣去制定方案,怎么樣去實(shí)現(xiàn)這個(gè)方案,并掌握了在執(zhí)行過(guò)程中怎么樣去克制心理上的不良情緒,黑夜過(guò)去了,我們收獲的是黎明。一時(shí)的
26、失意不算什么,只要能堅(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); Student *sort_1(Student *head,int); void sort_2(Student *head
27、);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表示完畢輸入:,n+1); scanf(%d,&flag); while(getchar()!=n); for(;flag;) n+
28、; 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)輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p1-score3); printf(請(qǐng)輸入第%d名學(xué)生的
29、物理成績(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表示完畢:,n+1); scanf(%d,&flag); p2-next=NULL;printf(nn);return head;Student *sort_all(Student *head) int choose; for(;) printf(ntt# # # # # 學(xué)生成績(jī)統(tǒng)計(jì)排序 # # # #n);prin
30、tf(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í)菜單tn); printf(請(qǐng)輸入你要執(zhí)行的操作:); scanf(%d,&choose); while(getchar(
31、)!=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 *sort_1(Student *head,int choose) Student *p1,*p2=head-next,*
32、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;break; case 4:if (pm-score1score1) pm=p2;break; case 5:if (
33、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 sort_2(Student *headStudent *p=head-next;int max_1,max_2,ma
34、x_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_4=min_4=p-score3; max_5=min_5=p-score4;max_sum=min_sum=p-s
35、um;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 (max_4score3) max_4=p-score3; else if (min_4p-score3) min_
36、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*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*s
37、um_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,min_3,aver_3); printf(計(jì)算機(jī)最高分為%d,最低分為%d,平均分為%.2fn,max_4,min
38、_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(n請(qǐng)輸入您要查詢學(xué)生的方式:nn); printf(1、按學(xué)號(hào)查詢;2、按姓名查詢;0、放棄查詢nn); print
39、f(請(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表示完畢:); 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
40、語(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退出姓名查詢:); scanf(%s,tem); for(;strcmp(tem,0);) for(p=head-next;p!=NULL&strcmp
41、(p-name,tem);p=p-next); if (!p) printf(nn找不到你要查詢的姓名,請(qǐng)重新輸入,輸入0表示完畢:); 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é)
42、生的姓名,輸入0表示不按姓名查詢:); scanf(%s,tem); else if (choose=0) printf(n你選擇了不查詢!n);break; else printf(n你以其他方式選擇了不查詢!n);break;Student *add_new(Student *head)Student *p;int flag; printf(nn請(qǐng)輸入你要新參加學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示完畢輸入:); scanf(%d,&flag);while(getchar()!=n);for(;flag;) p=(Student *)malloc(LEN); p-num=flag; printf(請(qǐng)輸入新參加學(xué)生的姓名:,n); scanf(%s,p-name); printf(請(qǐng)輸入新參加學(xué)生的語(yǔ)文成績(jī):,n); scanf(%d,&p-score0); printf(請(qǐng)輸入新參加學(xué)生的數(shù)學(xué)成績(jī):,n); scanf(%d,&p-score1); printf(請(qǐng)輸入新參加學(xué)生的英語(yǔ)成績(jī):,n); scanf(%d,&p-score2); printf(請(qǐng)輸入第%d名學(xué)生的計(jì)算機(jī)成績(jī):,n); scanf(%d,&p-score3);printf(請(qǐng)輸入第%d名學(xué)生的物理成績(jī):,n); scanf(%d,&p-score4);p-sum=p-score0+p-score1+
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版無(wú)息投資借款合同書示例3篇
- 2025版房地產(chǎn)項(xiàng)目土方挖填施工合同范本2篇
- 2025年度個(gè)人帶車庫(kù)帶私人泳池房產(chǎn)交易合同
- 2025年全球及中國(guó)橈動(dòng)脈止血器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)多功能推車行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)液槽密封式高效送風(fēng)口行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球流程行業(yè)無(wú)線自動(dòng)化行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球并網(wǎng)型微型逆變器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2024年煤礦企業(yè)安全生產(chǎn)知識(shí)競(jìng)賽試題庫(kù)及答案(共200題)
- 2025版智慧醫(yī)療項(xiàng)目共同墊資合作協(xié)議書3篇
- 通信工程單位勞動(dòng)合同
- 國(guó)土空間生態(tài)修復(fù)規(guī)劃
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- DB11T 1136-2023 城鎮(zhèn)燃?xì)夤艿婪D(zhuǎn)內(nèi)襯修復(fù)工程施工及驗(yàn)收規(guī)程
- 零部件測(cè)繪與 CAD成圖技術(shù)(中職組)沖壓機(jī)任務(wù)書
- 2024年騎電動(dòng)車撞傷人私了協(xié)議書范文
- 繪本教學(xué)課件
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- 高低壓配電柜產(chǎn)品營(yíng)銷計(jì)劃書
- 2024-2030年色素病變激光治療行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 結(jié)構(gòu)力學(xué)仿真軟件:STAAD.Pro:橋梁結(jié)構(gòu)建模與分析教程
評(píng)論
0/150
提交評(píng)論