c語言學(xué)生成績管理系統(tǒng)_第1頁
c語言學(xué)生成績管理系統(tǒng)_第2頁
c語言學(xué)生成績管理系統(tǒng)_第3頁
c語言學(xué)生成績管理系統(tǒng)_第4頁
c語言學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:學(xué)生成績管理系統(tǒng)學(xué)號班級電信姓名完成方式:(單選)自我評分:(單選)○ 獨(dú)立完成○優(yōu)秀○ 參考他人工作的基礎(chǔ)上完成○良好○ 在他人的幫助下完成○中等○ 完整拷貝他人成果○及格○不及格C語言課程設(shè)計(jì)任務(wù)書3題目:學(xué)生成績管理系統(tǒng)功能:學(xué)生成績管理系統(tǒng),每個學(xué)生是一個記錄,包括學(xué)號,姓名,性別,3門課程成績。系統(tǒng)要求實(shí)現(xiàn)以下功能:1、信息錄入:錄入學(xué)生成績信息(包括學(xué)生學(xué)號、姓名、各門課程的成績等);2、信息查詢:輸入學(xué)號,查詢學(xué)生各門課程的成績,并顯示。3、排序:按各門課程的成績平均分進(jìn)行排序,并顯示。4、信息刪除與修改——輸入學(xué)號,刪除該學(xué)生的成績信息。分步實(shí)施:1、初步完成總體設(shè)計(jì),搭好框架,確定人機(jī)對話的界面,確定函數(shù)個數(shù)。2、建立一個文件,將每位學(xué)生的信息寫入文件中并能顯示于屏幕上。3、完成上述信息查詢(學(xué)生學(xué)號、姓名等)、排序、信息刪除與修改功能。要求:1、用C語言實(shí)現(xiàn)程序設(shè)計(jì);2、利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)的各個功能模塊要求用函數(shù)的形式實(shí)現(xiàn);4、界面友好(良好的人機(jī)交互),程序加必要的注釋。課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告要求:1、預(yù)習(xí)報(bào)告:題目、課程設(shè)計(jì)任務(wù)、數(shù)據(jù)結(jié)構(gòu)、程序的總體設(shè)計(jì)(算法)、模塊劃分。2、實(shí)驗(yàn)總結(jié)報(bào)告:流程圖、主要源程序代碼(需打印)、測試情況及調(diào)試中問題與解決方案、小結(jié)等??傮w設(shè)計(jì)1.程序的總體設(shè)計(jì)1、成績錄入功能2、成績輸出功能3、成績查詢功能4、刪除模塊5、排序功能6、統(tǒng)計(jì)功能7、退出系統(tǒng)2.數(shù)據(jù)結(jié)構(gòu)Typedefstructstudent/*這個結(jié)構(gòu)體的成員分別代表了學(xué)生的學(xué)號、姓名、英語、數(shù)學(xué)、c語言、平均分、總分*/{ intno; charname[MAX_NAME]; doubleenglish; doublemath; doubleProgramming; doublemark_ave; doublemark_tot;}STUDENT;Student類型說明表名稱屬性備注no數(shù)據(jù)成員說明學(xué)生學(xué)號name數(shù)據(jù)成員說明學(xué)生姓名english數(shù)據(jù)成員說明學(xué)生英語成績math數(shù)據(jù)成員說明學(xué)生數(shù)學(xué)成績programming數(shù)據(jù)成員說明學(xué)生c語言成績mark_ave數(shù)據(jù)成員說明學(xué)生平均分mark_tot數(shù)據(jù)成員說明學(xué)生總分3.函數(shù)原型聲明的說明(功能,參數(shù),返回值)1、輸入初始的學(xué)生信息:輸入信息包括學(xué)生的姓名、學(xué)號以及學(xué)生的成績等相關(guān)信息;可用函數(shù)voidinput(STUDENT*data,int*len)來實(shí)現(xiàn)此操作。2、成績輸出模塊:輸出學(xué)生的信息以及成績voidoutput(STUDENT*data,intlen):通過學(xué)生的姓名來查看學(xué)生的相關(guān)成績,同時也可以分別通過caverage()

、maverage()

、eaverage()

和comaverage()

來輸出成績的平均分?jǐn)?shù)、最高和最低分?jǐn)?shù)。3、成績查詢模塊:可用voidfind(STUDENT*data,intlen)

來實(shí)現(xiàn)。找到就輸出此學(xué)生全部信息。4、刪除模塊:用函數(shù)voiddelete_item(STUDENT*data,int*len)來實(shí)現(xiàn)5、排序模塊:用函數(shù)voidsort(STUDENT*data,intlen)來實(shí)現(xiàn)6、統(tǒng)計(jì)功能能:用函數(shù)voidstat(STUDENT*data,intlen)來實(shí)現(xiàn)7、退出系統(tǒng):可用一個函數(shù)exit()來實(shí)現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。二、詳細(xì)設(shè)計(jì)1.主程序結(jié)束結(jié)束輸出菜單根據(jù)菜單輸入n的值選擇程序輸入退出輸出保存查找排序統(tǒng)計(jì)插入刪除開始2.排序3.查找4.刪除回主菜單輸入學(xué)號no回主菜單輸入學(xué)號noYno==0Yno==0NN未找到需要刪除的學(xué)生(未找到需要刪除的學(xué)生(data[pos].no!=no)&&(pos<*len)NYNYpospos++Ypos>=*lenYpos>=*lenNN沒有任何記錄,請按回車鍵返回刪除相應(yīng)信息沒有任何記錄,請按回車鍵返回刪除相應(yīng)信息Y*len==0Y*len==0NN5.統(tǒng)計(jì)ii=0Ydata[i].mark_ave<=59Ydata[i].mark_ave<=59no_59++no_59++NNYdata[i].mark_ave<=Ydata[i].mark_ave<=69no_69++no_69++NNYno_7Yno_79++data[i].mark_ave<=79NNdata[i].mark_ave<=8data[i].mark_ave<=89Yno_89++Yno_89++NNi++no_59++i++no_59++Yi<lenYi<lenNN輸出統(tǒng)計(jì)數(shù)據(jù)輸出統(tǒng)計(jì)數(shù)據(jù)三、測試及調(diào)試(程序運(yùn)行截圖,測試方案、存在的問題及解決方法)(寫明測試軟件的時候采用的測試方法、測試數(shù)據(jù),并說明在你軟件設(shè)計(jì)、調(diào)試過程中的遇到的問題和解決方案)1.部分測試中出現(xiàn)的問題及解決方法(1)Configuration:4-Win32DebugCompiling...4.cppf:\學(xué)習(xí)\c語言\ex1\4.cpp(288):errorC2065:'MAXN':undeclaredidentifierf:\學(xué)習(xí)\c語言\ex1\4.cpp(288):errorC2057:expectedconstantexpressionf:\學(xué)習(xí)\c語言\ex1\4.cpp(288):errorC2466:cannotallocateanarrayofconstantsize0f:\學(xué)習(xí)\c語言\ex1\1.cpp(288):errorC2133:'data':unknownsize執(zhí)行cl.exe時出錯.1.obj-1error(s),0warning(s)解決方法:對MAXN進(jìn)行定義,在第三行加入#defineMAXN35(2)Configuration:Cpp1-Win32DebugCompiling...Cpp1.cppC:\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9):errorC2065:'MAX_MAME':undeclaredidentifierC:\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9):errorC2057:expectedconstantexpressionC:\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(10):errorC2229:struct'student'hasanillegalzero-sizedarray執(zhí)行cl.exe時出錯.Cpp1.obj-1error(s),0warning(s)解決方法:把“MANE”改成“NAME”拼寫錯誤。(3)測試有選擇不合理的輸入數(shù)據(jù),如按學(xué)號查找或刪除時,輸入不存在的學(xué)號,經(jīng)過改進(jìn)輸出“未查詢到相關(guān)信息”或“未找到需要刪除的學(xué)生”。程序調(diào)試過程中出現(xiàn)過各種大大小小的問題。除以上的錯誤,還有些如三科成績、平均分、總分不能用float定義應(yīng)改為int;定義沒有在函數(shù)的最前端;文件未定義;還有就是經(jīng)常遇到程序執(zhí)行到某部分就不運(yùn)行,而編譯和鏈接都成功,說明程序設(shè)計(jì)上有些問題,語法等并未出錯,這時就要去再行考慮設(shè)計(jì)的程序哪部分考慮不周全。所以要通過編譯時出現(xiàn)的出錯提示信息,進(jìn)行初步的糾錯。從這次編程序的過程中,我學(xué)到了編程所必須具備的專業(yè)技能,更領(lǐng)會編譯程序所需要的細(xì)心和耐心。錯誤與蝴蝶效應(yīng)相類似,一個小小的問題也能導(dǎo)致程序無法運(yùn)行,要從細(xì)節(jié)做起。2.主要程序運(yùn)行結(jié)果運(yùn)行開始輸入信息輸出信息按學(xué)號查找按分?jǐn)?shù)段輸出平均分保存到文件四、小結(jié)(收獲和建議)對自己設(shè)計(jì)進(jìn)行評價(jià),指出合理和不足之處,提出改進(jìn)的方案。程序一開始運(yùn)行的結(jié)果也沒有預(yù)想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而且各模塊也出現(xiàn)了一些小問題,在同學(xué)們的幫助下,我很有耐心的一次又一次的進(jìn)行修改,最后運(yùn)行的結(jié)果基本上達(dá)到了預(yù)期的目的??芍吘故堑谝淮为?dú)立完成這樣的大程序,結(jié)果還不是太理想。由于現(xiàn)實(shí)與理想的差距,設(shè)想到的好多功能都沒有實(shí)現(xiàn)。已有的那些功能雖已能基本上滿足用戶的需要,但如果還有更多的功能程序就會更加完美。如:再錄入數(shù)據(jù)時,沒有設(shè)計(jì)數(shù)據(jù)輸入出錯的提示,如果成績輸?shù)氖秦?fù)值程序也繼續(xù)執(zhí)行,這就給運(yùn)用上帶來一些不便;沒有設(shè)計(jì)按各科成績排序的功能。在學(xué)習(xí)C語言的過程中也學(xué)到和鞏固了許多計(jì)算機(jī)應(yīng)用基礎(chǔ)知識,對計(jì)算機(jī)的機(jī)體也有了一個較為詳細(xì)的了解。在具體操作中對這學(xué)期所學(xué)的C語言的理論知識得到鞏固加強(qiáng),達(dá)到實(shí)訓(xùn)的目的,也發(fā)現(xiàn)自己的不足之處,為我問以后的c語言學(xué)習(xí)奠定了基礎(chǔ),同時體會到C語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點(diǎn)。發(fā)現(xiàn)上機(jī)操作的重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。通過實(shí)際操作,學(xué)會C語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題、解決問題的能力。2、在設(shè)計(jì)過程中的感受。本次C語言作業(yè)讓我對C語言的學(xué)習(xí)又有了更深入的了解,在上機(jī)實(shí)踐過程中學(xué)到的知識遠(yuǎn)遠(yuǎn)超過了在課堂上十幾周學(xué)到的,這次作業(yè)讓我們這些實(shí)踐知識匱乏的大學(xué)生增添了許多社會經(jīng)驗(yàn),為我們將來走上工作崗位其了不小的鋪墊作用。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。本次作業(yè)中遇到了很多以前沒有遇到過的問題,也曾想過要放棄,但看到那些同學(xué)都在那認(rèn)真的寫程序,給了我繼續(xù)的信心。經(jīng)過虛心向同學(xué)請教和自學(xué),我順利地結(jié)束了本次作業(yè),讓我知道原來憑借自己努力取得的成功會讓自己這么欣慰。附件:主要源程序代碼#include<stdlib.h>#include<stdio.h>#include<string.h>#defineMAXN35#defineMAX_NAME256typedefstructstudent/*結(jié)構(gòu)體student包含學(xué)號、姓名、三科成績、平均分、總分*/{ intno; charname[MAX_NAME]; doubleenglish; doublemath; doubleProgramming; doublemark_ave; doublemark_tot;}STUDENT;/*輸入信息子程序*/voidinput(STUDENT*data,int*len){ intno; putchar('\n'); printf("%s\n","請輸入新的記錄,如果需要退出當(dāng)前菜單請輸入0."); printf("%s\n","格式:\n學(xué)號\n"); printf("%s\n","姓名英語數(shù)學(xué)C語言"); putchar('\n'); printf("如:\n"); printf("33\n"); printf("呂嘉敏8710073\n"); scanf("%d",&no); while(no!=0) { data[*len].no=no; scanf("%s%lf%lf%lf",data[*len].name,&data[*len].english,&data[*len].math,&data[*len].Programming); data[*len].mark_ave=(data[*len].english+data[*len].math+data[*len].Programming)/3.0; data[*len].mark_tot=data[*len].english+data[*len].math+data[*len].Programming; (*len)++; scanf("%d",&no); } }/*輸出信息子程序*/voidoutput(STUDENT*data,intlen){inti; system("cls");printf("%8s","學(xué)號");printf("%8s","姓名");printf("%8s","英語");printf("%8s","數(shù)學(xué)");printf("%10s","C語言");printf("%12s","平均分");printf("%10s","總分");putchar('\n');for(i=0;i<80;i++)putchar('=');putchar('\n');for(i=0;i<len;i++){printf("%8d",data[i].no);printf("%8s",data[i].name);printf("%8.1lf",data[i].english);printf("%8.1lf",data[i].math);printf("%10.1lf",data[i].Programming);printf("%12.1lf",data[i].mark_ave);printf("%10.1lf",data[i].mark_tot);putchar('\n');}for(i=0;i<80;i++)putchar('=');putchar('\n');printf("按回車鍵繼續(xù).");getchar();getchar();}/*排序子程序*/voidsort(STUDENT*data,intlen){inti,j,k;STUDENTtemp;for(i=0;i<len-1;i++){for(k=i,j=i+1;j<len;j++)if(data[k].mark_ave>data[j].mark_ave) k=j; if(k!=i) { temp=data[i]; data[i]=data[k]; data[k]=temp; }}output(data,len);}/*搜索子程序*/voidfind(STUDENT*data,intlen){intfind_no,result;inti;lab:result=0; printf("%s\n","請輸入需要查找的學(xué)生的學(xué)號,退出當(dāng)前菜單請輸入0."); scanf("%d",&find_no); if(find_no==0) return;/*exitthefinesubprogram*/ while(data[result].no!=find_no&&result<len) result++; if(result>=len) { printf("%s\n","未查詢到相關(guān)信息"); gotolab; } else{ system("cls"); printf("%s\n","查詢信息如下:"); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("%8s","學(xué)號"); printf("%8s","姓名"); printf("%8s","英語"); printf("%8s","數(shù)學(xué)"); printf("%10s","C語言"); printf("%12s","平均分"); printf("%10s","總分"); putchar('\n'); printf("%8d",data[result].no); printf("%8s",data[result].name); printf("%8.1lf",data[result].english); printf("%8.1lf",data[result].math); printf("%10.1lf",data[result].Programming); printf("%12.1lf",data[result].mark_ave); printf("%10.1lf",data[result].mark_tot); putchar('\n'); for(i=0;i<80;i++) putchar('='); putchar('\n'); gotolab; }}/*插入子程序*/voidinsert(STUDENT*data,int*len){intno,pos; doubleenglish,math,Programming,mark_ave,mark_tot; inti;charname[MAX_NAME];lab:printf("%s\n","輸入新的記錄,退出當(dāng)前菜單請輸入0."); printf("%s\n","格式:學(xué)號"); printf("%s\n","姓名英語數(shù)學(xué)C語言"); scanf("%d",&no); if(no==0) return; data[*len].no=no; scanf("%s%lf%lf%lf",name,&english,&math,&Programming); mark_ave=(english+math+Programming)/3.0; mark_tot=english+math+Programming; pos=0; while((data[pos].mark_ave<mark_ave)&&(pos<*len)) pos++; for(i=*len-1;i>=pos;i--) data[i+1]=data[i]; data[pos].no=no; strcpy(data[pos].name,name); data[pos].english=english; data[pos].math=math; data[pos].Programming=Programming; data[pos].mark_ave=mark_ave; data[pos].mark_tot=mark_tot; (*len)++; gotolab;}/*刪除子程序*/voiddelete_item(STUDENT*data,int*len){intno,i,pos;lab:pos=0; printf("%s\n","輸入需要刪除的學(xué)生的學(xué)號,退出當(dāng)前菜單請輸入0."); scanf("%d",&no); if(no==0) return; while((data[pos].no!=no)&&(pos<*len)) pos=pos+1; if(pos>=*len) { printf("%s\n","未找到需要刪除的學(xué)生"); gotolab; } else { for(i=pos+1;i<*len;i++) data[i-1]=data[i]; *len=*len-1; if(*len==0) { printf("%s\n","沒有任何記錄,請按回車鍵返回."); getchar(); getchar(); return; } gotolab; }}/*統(tǒng)計(jì)子程序*/voidstat(STUDENT*data,intlen){intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0;inti;for(i=0;i<len;i++){if(data[i].mark_ave<=59) no_59++;elseif(data[i].mark_ave<=69) no_69++; elseif(data[i].mark_ave<=79) no_79++; elseif(data[i].mark_ave<=89) no_89++; elseno_100++;} system("cls");for(i=0;i<80;i++)putchar('='); putchar('\n');printf("%10s","分?jǐn)?shù)");printf("%10s","0--59");printf("%10s","60--69");printf("%10s","70--79");printf("%10s","80--89");printf("%10s","90--100");putchar('\n');putchar('\n');printf("%10s","學(xué)生");printf("%10d",no_59);printf("%10d",no_69);printf("%10d",no_79);printf("%10d",no_89);printf("%10d",no_100);putchar('\n');for(i=0;i<80;i++)putchar('=');putchar('\n');printf("按回車鍵返回");getchar();getchar();}/*顯示信息子程序*/voidpaint(){inti; system("cls");printf("%55s\n","========歡迎使用華南理工大學(xué)電信學(xué)院學(xué)生管理系統(tǒng)========\n");printf("======制作者:華南理工大學(xué)電信學(xué)院10級電信(1)班區(qū)則君======\n");for(i=0;i<80;i++)putchar('-');putchar('\n');printf("********************************************************\n");printf("********************************************************\n");printf("*****************1、輸入學(xué)生信息****************\n");printf("*****************2、輸出學(xué)生信息****************\n");printf("*****************3、按平均分排序****************\n");printf("*****************4、按學(xué)號查找****************\n");printf("*****************5、插入學(xué)生信息****************\n");printf("*****************6、按學(xué)號刪除****************\n");printf("*****************7、分段輸出平均分****************\n");printf("*****************8、保存到txt****************\n");printf("*****************9、退出系統(tǒng)****************\n");printf("********************************************************\n");printf("********************************************************\n"); for(i=0;i<=79;i++)putchar('-');putchar('\n');printf("%s\n","請輸入各操作對應(yīng)的序號:");}voidsave(STUDENT*data,intlen)//將數(shù)據(jù)保存到文件{ inti; FILE*fp; fp=fopen("成績統(tǒng)計(jì)表.txt","w"); fprintf(fp,"%8s","學(xué)號");fprintf(fp,"%8s","姓名");fprintf(fp,"%8s","英語");fprintf(fp,"%8s","數(shù)學(xué)");fprintf(fp,"%10s","C語言");fprintf(fp,"%12s","平均分

溫馨提示

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

最新文檔

評論

0/150

提交評論