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

下載本文檔

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

文檔簡介

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

、maverage()

、eaverage()

和comaverage()

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

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

溫馨提示

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

評論

0/150

提交評論