C語言學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告.doc
C語言課程設(shè)計(jì)報(bào)告一 .問題描述:題目七:學(xué)生成績管理系統(tǒng)設(shè)計(jì)學(xué)生成績信息包括:學(xué)期,學(xué)號(hào),班別,姓名,四門課程成績(語文、數(shù)學(xué)、英語和計(jì)算機(jī))等。主要功能:(1) 能按學(xué)期、按班級(jí)完成對(duì)學(xué)生成績的錄入、修改(2) 能按班級(jí)統(tǒng)計(jì)學(xué)生的成績,求學(xué)生的總分及平均分(3) 能查詢學(xué)生成績,不及格科目及學(xué)生名單(4) 能按班級(jí)輸出學(xué)生的成績單要求:使用二進(jìn)制文件方式存儲(chǔ)數(shù)據(jù),系統(tǒng)以菜單方式工作學(xué)生成績信息包括:學(xué)期,學(xué)號(hào),班別,姓名,四門課程成績(語文、數(shù)學(xué)、英語和計(jì)算機(jī))等。要求使用二進(jìn)制文件方式存儲(chǔ)數(shù)據(jù),系統(tǒng)以菜單方式工作,實(shí)現(xiàn)對(duì)學(xué)生成績的錄入,修改,統(tǒng)計(jì),排序,查詢,輸出等功能。二 .設(shè)計(jì)目的設(shè)計(jì)“學(xué)生成績管理系統(tǒng)”使其具有以下功能:(1) 能完成對(duì)學(xué)生成績的錄入(2) 能按班級(jí)統(tǒng)計(jì)學(xué)生的成績,求學(xué)生的總分及平均分,排序(3) 能按班級(jí),學(xué)期輸出學(xué)生的成績單和不及格科目及學(xué)生名單(4) 能查詢單個(gè)學(xué)生成績(5) 能修改單個(gè)學(xué)生信息三 . 要求系統(tǒng)以菜單方式工作四 . 功能1 輸入功能:可以一次完成無數(shù)條信息的輸入。2 輸出功能:能按班級(jí)輸出學(xué)生的成績單。3 修改功能:完成對(duì)單個(gè)學(xué)生成績的修改。4 查找功能:完成對(duì)單個(gè)學(xué)生信息查找,并顯示。5 排序功能:按學(xué)生成績進(jìn)行排序,并顯示。6 有一個(gè)清晰美觀界面來調(diào)用各個(gè)功能五模塊圖修 改void monify修改單個(gè)學(xué)生信息主流程學(xué)期int term班級(jí)int classes信息錄入void input 成績統(tǒng)計(jì)void sort查詢 void search姓名char name10學(xué)號(hào)int num成績int score4學(xué)號(hào)stui.num、班級(jí)stui.classes,姓名stui.name、四門課成績stui.score能按學(xué)號(hào)查詢單個(gè)學(xué)生成績 按班級(jí)統(tǒng)計(jì)學(xué)生的成績,求學(xué)生的總分及平均分,排序成績輸出void print能按班級(jí),學(xué)期輸出學(xué)生成績單和不及格科目及學(xué)生名單結(jié)構(gòu)數(shù)組struct student六 . 詳細(xì)內(nèi)容整個(gè)系統(tǒng)除了主函數(shù)外,另外還有5個(gè)函數(shù),實(shí)現(xiàn)六大功能:輸入功能、輸出功能、修改功能,查找并顯示功能、排序并顯示功能。各個(gè)函數(shù)的詳細(xì)設(shè)計(jì)說明分別如下:1 . 定義結(jié)構(gòu)體及宏定義 #include <stdlib.h>#include <stdio.h>#include <string.h>#define NUM 100struct student int term; int num; int classes; char name10; int score4; int sum; float average; stuNUM;2主函數(shù) main()利用無限次循環(huán)for(;)和swithch()進(jìn)行菜單選擇來實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來調(diào)用相應(yīng)的函數(shù)。等執(zhí)行完每一個(gè)函數(shù)功能后,按任一鍵回到主界面也要通過這個(gè)函數(shù)來實(shí)現(xiàn)!void main() zcd();/*主函數(shù)界面*/ void zcd()int n=0;char m;system("cls");/*清屏*/ printf("按任一鍵進(jìn)入主菜單n "); /*按任一鍵進(jìn)入主菜單*/ printf("*n"); printf("tt華中科技大學(xué)文華學(xué)院歡迎您n"); printf("nttt- 歡迎使用學(xué)生管理系統(tǒng)nnttttt-n"); printf("*MENU*n"); printf("ttt1. 輸入學(xué)生成績記錄 Input the recordn"); /*輸入學(xué)生成績記錄*/ printf("ttt2. 排序并顯示 Sort to make new a filen"); /*排序*/ printf("ttt3. 按班級(jí)顯示成績單 Print the recordn"); /*顯示*/ printf("ttt4. 查找個(gè)人成績 Search record on namen"); /*查找*/ printf("ttt5. 修改 Modify a recordn"); /*修改*/ printf("ttt6. 退出 Quitn"); /*退出*/ printf("*n"); printf("nttt輸入你的選擇Enter your choice(17):"); fflush(stdin); m=getchar(); doswitch(m) case 1:input();zcd();break; case 2:sort();system("pause");zcd();break; case 3:print();system("pause");break; case 4:search();zcd();break; case 5:modify();system("pause");zcd();break; case 6:exit(0); /*如菜單返回值為7則程序結(jié)束*/ default:printf("錯(cuò)誤命令"); getchar();zcd(); while(1);3輸入信息函數(shù) void input() system("cls"); int i;char a;for(i=0;i<NUM;i+) printf(" n請(qǐng)輸入學(xué)生的學(xué)期:"); scanf("%d",&stui.term); printf(" n請(qǐng)輸入學(xué)生的學(xué)號(hào):"); fflush(stdin); scanf("%d",&stui.num); printf(" n請(qǐng)輸入學(xué)生的班級(jí):"); scanf("%d",&stui.classes); printf("n請(qǐng)輸入學(xué)生的姓名:"); scanf("%s", stui.name) ; printf("n請(qǐng)輸入學(xué)生的語文成績:"); scanf("%d",&stui.score0); printf("n請(qǐng)輸入學(xué)生的數(shù)學(xué)成績:"); scanf("%d", &stui.score1); printf("n請(qǐng)輸入學(xué)生的英語成績:"); scanf("%d", &stui.score2); printf("n請(qǐng)輸入學(xué)生的計(jì)算機(jī)成績:"); scanf("%d", &stui.score3); stui.sum=stui.score0+stui.score1+stui.score2+stui.score3;/算總分和平均 stui.average=(float)stui.sum/4.0; printf("是否要繼續(xù)添加(按N&n退出)"); fflush(stdin); a=getchar(); if(a=n|a=N) break;4、排序并顯示函數(shù) void sort() int i,j=0;float temp; for(i=0;i<NUM;i+) stui.sum=stui.score0+stui.score1+stui.score2+stui.score3; stui.average=(float)stui.sum/4.0; for(i=0;i<NUM-1;i+)for(j=i+1;j<NUM;j+)if(stui.sum<stuj.sum)temp=stui.sum; stui.sum=stuj.sum; stuj.sum=temp; printf("學(xué)號(hào)t姓名t班級(jí) 語文 數(shù)學(xué) 英語 計(jì)算機(jī) 總分 平均分n"); for(i=0;i<NUM;i+) printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2,stui.score3,stui.sum,stui.average); /*輸出學(xué)生信息*/ system("pause");system("cls");print();5查找并顯示一個(gè)記錄 void search() system("cls");/*清屏*/ int number=0,i; printf("ttt 請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):"); scanf("%d",&number); printf("學(xué)號(hào)t姓名t班級(jí) 語文 數(shù)學(xué) 英語 計(jì)算機(jī) 總分 平均分n"); for(i=0;i<NUM;i+) if(number=stui.num) break;/*查找判斷*/ if(i<NUM)printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes,stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*輸出學(xué)生信息*/ elseprintf("沒找到該學(xué)生的信息n");system("pause"); 6按學(xué)期、按班級(jí)輸出成績函數(shù)void print() system("cls");char a; printf("1、按學(xué)期輸出n");printf("2、按班級(jí)輸出n");printf("3、返回n");fflush(stdin);a=getchar();switch(a)case 1:print1();case 2:print2();case 3:zcd();default:print(); void print1()/按學(xué)期int i,m;printf("請(qǐng)輸入學(xué)期:n");scanf("%d",&m);printf("學(xué)號(hào)t姓名t班級(jí) 語文 數(shù)學(xué) 英語 計(jì)算機(jī) 總分 平均分n");for(i=0;i<NUM;i+) if(m=stui.term) printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*輸出學(xué)生信息*/system("pause");system("cls");print();void print2()/按班級(jí)int i,j,k;printf("請(qǐng)輸入班級(jí):n");scanf("%d",&k); printf("學(xué)號(hào)t姓名t班級(jí) 語文 數(shù)學(xué) 英語 計(jì)算機(jī) 總分 平均分n");for(i=0;i<NUM;i+) if(k=stui.classes) stui.sum=stui.score0+stui.score1+stui.score2+stui.score3; stui.average=stui.sum/4.0; printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*輸出學(xué)生信息*/ printf("輸出不及格學(xué)生名單及成績:n");printf("學(xué)號(hào)t姓名t班級(jí) 語文 數(shù)學(xué) 英語 計(jì)算機(jī) n");for(i=0;i<NUM;i+) for(j=0;j<4;j+) if(stui.scorej<60&&k=stui.classes) /*輸出不及格學(xué)生名單及成績*/ printf("%dt%st%d%5d%5d%5d%6dn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3); break; system("pause");system("cls");print();7修改成績函數(shù)void modify() system("cls"); int number,i; printf("ttt請(qǐng)輸入要修改信息的學(xué)生學(xué)號(hào):"); scanf("ttt%d",&number); for(i=0;i<NUM;i+) if(number=stui.num) break;/*查找判斷*/ if(i<NUM)/*查找判斷*/ printf("請(qǐng)輸入修改后的學(xué)生的信息:"); printf(" n請(qǐng)輸入學(xué)生的學(xué)期:"); scanf("%d",&stui.term); printf(" n請(qǐng)輸入學(xué)生的學(xué)號(hào):"); fflush(stdin); scanf("%d",&stui.num); printf(" n請(qǐng)輸入學(xué)生的班級(jí):"); scanf("%d",&stui.classes); printf("n請(qǐng)輸入學(xué)生的姓名:"); scanf("%s", stui.name) ; printf("n請(qǐng)輸入學(xué)生的語文成績:"); scanf("%d",&stui.score0); printf("n請(qǐng)輸入學(xué)生的數(shù)學(xué)成績:"); scanf("%d", &stui.score1); printf("n請(qǐng)輸入學(xué)生的英語成績:"); scanf("%d", &stui.score2); printf("n請(qǐng)輸入學(xué)生的計(jì)算機(jī)成績:"); scanf("%d", &stui.score3); elseprintf("沒找到該學(xué)生的信息n");system("paues");system("cls");zcd(); 七運(yùn)行過程主菜單成績錄入統(tǒng)計(jì)排序按學(xué)期輸出成績按班級(jí)輸出成績查找個(gè)人成績修改單個(gè)學(xué)生信息八.設(shè)計(jì)總結(jié)經(jīng)過幾周的課程設(shè)計(jì),我學(xué)到了很多東西:鞏固和加深了對(duì)編程的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。培養(yǎng)了我選用參考書,查閱手冊(cè)及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。經(jīng)過實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。能夠按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果,正確繪制系統(tǒng)和程序框圖。課程設(shè)計(jì)是把我們所學(xué)的理論知識(shí)進(jìn)行系統(tǒng)的總結(jié)并應(yīng)用于實(shí)踐的良好機(jī)會(huì),有利于加強(qiáng)我們用知識(shí)理論來分析實(shí)際問題的能力,進(jìn)而加強(qiáng)了我們對(duì)知識(shí)認(rèn)識(shí)的實(shí)踐度,鞏固了我們的理論知識(shí),深化了對(duì)知識(shí)的認(rèn)識(shí),并為走向社會(huì)打下一個(gè)良好的基礎(chǔ)。在這次課程設(shè)計(jì)中我遇到許多問題和麻煩,得到了老師的幫助和指導(dǎo),才能夠使得這次課程設(shè)計(jì)順利的進(jìn)行下去,另外,在程序調(diào)試過程中,也得到很多同學(xué)的幫助,給我及時(shí)指出錯(cuò)誤,提出許多寶貴意見。在此對(duì)老師和同學(xué)們表示感謝?。ê蟾酵暾绦颍?