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

下載本文檔

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

文檔簡介

1、課程設計報告書學生成績管理系統(tǒng) 單 位: 分院班 級: 學 號: 姓 名: 指導老師: 完成日期:2010年7月14日內(nèi)容摘要摘要:本次課程設計的課題是學生成績管理系統(tǒng),本文介紹課程設計課題的選題意義,說明了本系統(tǒng)提供的主要功能,對設計思路、功能模塊、流程圖、功能模塊、中心算法進行了詳細的說明,并畫出流程框圖。本文提供了完整的源程序代碼,并展示了系統(tǒng)使用和運行效果。最后給出了在小學期高級語言程序設計過程中的總結,其中包含本程序獨特設計,作者的設計收獲、設計中遇到的困難和問題,以及作者對設計題目及功能的改進意見,查閱的參考文獻等方面的內(nèi)容。索引關鍵字關鍵詞:源程序代碼,學生成績管理,流程框圖內(nèi)容

2、目錄1 題目要求-41.1 內(nèi)容要求-41.2 設計要求-42 設計思想-53 功能模塊及流程圖-54 數(shù)據(jù)結構-75 中心算法代碼說明-76 系統(tǒng)實現(xiàn)-86.1 程序代碼-86.2 系統(tǒng)使用-216.3 運行效果說明-217 總結-248 致謝詞-259 參考文獻-25.正文1題目要求1.1內(nèi)容要求要求能夠實現(xiàn)輸入記錄、查詢記錄、更新記錄、統(tǒng)計記錄、輸出記錄等功能。1. 輸入記錄。對每個學生的學號、姓名、班級、數(shù)學、英語、計算機成績進行輸入并存儲,在程序的運行過程中,數(shù)據(jù)的存儲可以采用結構體數(shù)組或者鏈表,但是最終應該存儲在文件中。2. 維護記錄。能夠實現(xiàn)添加、刪除、修改學生記錄,但是一定要將

3、最終數(shù)據(jù)存儲到文件中。3. 查詢記錄。根據(jù)班級、學號、科目等查詢學生的成績。如果查詢時學生數(shù)據(jù)并沒有讀入到結構體數(shù)組或者鏈表中,則應該先從文件中讀出數(shù)據(jù)并存儲在結構體數(shù)組或者鏈表中,然后在結構體數(shù)組或者鏈表中查詢滿足條件的數(shù)據(jù)。4. 統(tǒng)計記錄。完成對各門功課最高分和不及格人數(shù)的統(tǒng)計。1.2設計要求各級菜單及功能間必須建立必要的聯(lián)系,要定義參照完整性規(guī)則。使用二進制文件方式存儲數(shù)據(jù)。要求有菜單界面,結果顯示時應達到界面友好。將完成的全部內(nèi)容連編成一個.exe文件。 2設計思想1.在設計時考慮以下幾個方面:操作簡單。因為使用者多為非計算機專業(yè)人員,所以該系統(tǒng)要求設計的界面美觀,操作方便。要充分考軟

4、件界面友好和操作方便,便愈使用人員快速上手。易于維護。一個軟件的好壞,關鍵在于產(chǎn)品的可靠,穩(wěn)定,便于維護。2開發(fā)語言的選擇針對世界上流行的大量軟件和開發(fā)工具,經(jīng)過認真分析其優(yōu)缺點,結合目前的軟硬件開發(fā)環(huán)境,選用微軟WINDOWS平臺下的Visual C+作為軟件開發(fā)工具。選用工具有幾下幾方面優(yōu)點: C語言簡潔、緊湊、使用方便、靈活。有32個關鍵字。C語言程序比其他許多高級語言簡練,源程序短,因此輸入程序時工作量小。 運算符豐富。 數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結構。 C語言是完全模塊化和結構化的語言。用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。 語法限制不太嚴格,程序設計自由度大。

5、生成目標代碼質(zhì)量高,程序執(zhí)行效率高。 用C語言編寫的程序可移植性好。綜上所述,Visual C+可以滿足學生成績管理的要求,所以用來開發(fā)學生成績管理系統(tǒng)是非常合適的。3功能模塊及流程圖學生成績管理系統(tǒng)對學校加強學生基本情況及學生成績管理有著重要的作用。為了能使該系統(tǒng)具有更為廣泛的功能:應該將該系統(tǒng)細分為學生操作系統(tǒng)、教師操作系統(tǒng)、教務處操作系統(tǒng),以滿足不同身份的人的需求??傮w來說,該系統(tǒng)應分為輸入模塊、維護模塊、查詢模塊以及統(tǒng)計模塊。 由于本軟件為學校中多個身份的人的定制開發(fā)的。我們經(jīng)過反復論證,最終確定了學生成績管理系統(tǒng)的設計方案,主要流程圖如下所示:系統(tǒng)主菜單學生操作教師操作教務處操作查詢

6、功能 錄入功能刪除功能修改功能查詢功能查詢功能統(tǒng)計功能統(tǒng)計功能按班級按學號按科目按班級按學號按科目按班級按學號按科目數(shù)學 英語計算機 數(shù)學 英語計算機數(shù)學英語 計算機通過系統(tǒng)主菜單,可以使學校中不同身份的人選擇不同的操作系統(tǒng),從而合理的使用不同的功能。4數(shù)據(jù)結構結構體 : 程序設計中用到的結構體類型: 學生信息結構體類型:struct studentint num;char nam20;char clas20;float math;float english;float computer;stuSIZE;5中心算法代碼說明說明1. void save() FILE *fp;int j;if(f

7、p=fopen(stu_list,wb)=NULL)printf(cannot open filen);return;for(j=0;jSIZE;j+)if(fwrite(&stuj,sizeof(struct student),1,fp)!=1)printf(file write errorn);fclose(fp);以上代碼將數(shù)據(jù)存入文件中,操作起來避免了直接對內(nèi)存進行操作,可對文件進行操作。2. for(i=0;iSIZE;i+)for(j=0;jstui+1.math)t=stui.math;stui.math=stui+1.math;stui+1.math=t;for(j=0,i=0

8、;iSIZE;i+)if(stui.math60)j=j+1;統(tǒng)計函數(shù)中使用起泡法排序再統(tǒng)計的方法6.系統(tǒng)實現(xiàn)6.1 程序代碼代碼如下:#include #include #define SIZE 34struct studentint num;char nam20;char clas20;float math;float english;float computer;stuSIZE;void save() /*將數(shù)據(jù)儲存于文件*/FILE *fp;int j;if(fp=fopen(stu_list,wb)=NULL)printf(cannot open filen);return;for(

9、j=0;jSIZE;j+)if(fwrite(&stuj,sizeof(struct student),1,fp)!=1)printf(file write errorn);fclose(fp);search(int n) /*查詢學號函數(shù)*/ int j; for(j=0;jSIZE) return -1;void function1() /*添加記錄*/void xt2();int i;char k;printf( *添加學生信息*n);for(i=0;iSIZE;i+)printf(請輸入該生學號:n);scanf(%d,&stui.num);printf(請輸入該生姓名:n);scan

10、f(%s,&stui.nam);printf(請輸入該生所在班級:n);scanf(%s,&stui.clas);printf(請輸入該生數(shù)學成績:n);scanf(%f,&stui.math);printf(請輸入該生英語成績:n);scanf(%f,&stui.english);printf(請輸入該生計算機成績:n);scanf(%f,&puter);getchar(); printf(完成本次操作!n);printf(是否返回上一菜單?y/n:n); k=getchar(); if(k=n)continue; /*判斷*/ elsebreak;save();xt2();

11、void function2() /*刪除學生記錄*/void xt2();int i,j;char a,k;printf( *刪除學生信息*n);printf(請輸入要刪除學生的學號:n);scanf(%d,&i); j=search(i);if(j=-1)loop:printf(該學生不存在,請重新輸入!n); printf(輸入0退出n); for(j=0;jSIZE;j+) if(j=-1) goto loop; else break; elsefor(i=0;iSIZE;i+)printf(原數(shù)據(jù)為:n);printf(學號%d,姓名%s,班級%s,數(shù)學成績%4.1f,英語成績%4.

12、1f,計算機成績%4.1fn,stuj.num,stuj.nam,stuj.clas,stuj.math,stuj.english,puter);stuj.num=0;stuj.nam20=0;stuj.clas20=0;stuj.math=0;stuj.english=0;puter=0;printf(刪除結果為n);printf(學號%d,姓名%s,班級%s,數(shù)學成績%4.1f,英語成績%4.1f,計算機成績%4.1fn,stuj.num,stuj.nam,stuj.clas,stuj.math,stuj.english,puter);sav

13、e(); printf(完成本次操作!n); k=getchar(); if(k=y)continue; /*判斷*/ elsebreak;printf(是否返回主菜單y/n:n);scanf(%c,&a);if(a=y)xt2();elsefunction2(); void function3() /*修改*/ char name20,phy10; void xt2();printf(請輸入要修改的學生姓名:);scanf(%s,name);printf(n);int i;float t;for(i=0;iSIZE;i+)change:if(strcmp(stui.nam,name)=0)p

14、rintf(請輸入要修改的科目:);scanf(%s,phy);if(strcmp(math,phy)=0)printf(輸入成績:);scanf(%f,&t);stui.math=t;printf(成績?yōu)?%4.2fn,stui.math); else if(strcmp(english,phy)=0)printf(輸入成績:);scanf(%f,&t);stui.english=t;printf(成績?yōu)?%4.2fn,stui.english); else if(strcmp(computer,phy)=0) printf(輸入成績:);scanf(%f,&t);puter

15、=t;printf(成績?yōu)?%4.2fn,puter); elseprintf(錯誤,請重新輸入:); goto change;save();printf(完成本次操作!n);xt2();void way1() /*按班級查詢*/void function4();int i;char clas20; char a;loop:printf(請輸入要查詢學生的班級:n); scanf(%s,clas);for(i=0;iSIZE;i+)if(strcmp(clas,stui.clas)=0)printf(學號%d,姓名%s,班級%s,數(shù)學成績%f,英語成績%f,計算機成績%fn,s

16、tui.num,stui.nam,stui.clas,stui.math,stui.english,puter);if(i=SIZE)printf(您所查詢的信息不存在,請重新輸入);goto loop;printf(完成本次操作!n);scanf(%c,&a);if(a=y)way1();elsefunction4();void way2() /*按學號查詢*/void function4();int i;int number;char a;loop:printf(請輸入要查詢學生的學號:n); scanf(%d,&number);for(i=0;iSIZE;i+)if(nu

17、mber=stui.num)printf(學號%d,姓名%s,班級%s,數(shù)學成績%f,英語成績%f,計算機成績%fn,stui.num,stui.nam,stui.clas,stui.math,stui.english,puter);if(i=SIZE)printf(您所查詢的信息不存在,請重新輸入n);goto loop;printf(完成本次操作!n);scanf(%c,&a);if(a=y)way2();elsefunction4();void check1() /*按學生數(shù)學成績查詢*/void way3();int i;char a;char name20;loop:

18、printf(請輸入要查詢的學生姓名n);scanf(%s,name); for(i=0;iSIZE;i+)if(strcmp(name,stui.nam)=0) printf(%s的數(shù)學成績是%fn,name,stui.math);printf(完成本次操作!n);scanf(%c,&a);if(a=y) goto loop; else way3();void check2() /*按學生英語成績查詢*/void way3();int i;char a;char name20;loop:printf(請輸入要查詢的學生姓名n);scanf(%s,name); for(i=0;iSIZE;i+

19、)if(strcmp(name,stui.nam)=0) printf(%s的英語成績是%fn,name,stui.english);printf(完成本次操作!n);scanf(%c,&a);if(a=y) goto loop;elseway3();void check3() /*按學生計算機成績查詢*/void way3();int i;char a; char name20; printf(請輸入要查詢的學生姓名n);scanf(%s,name); for(i=0;iSIZE;i+)if(strcmp(name,stui.nam)=0) printf(%s的計算機成績是%fn,name,

20、puter);printf(完成本次操作!n);scanf(%c,&a);if(a=y) check3();elseway3();void way3() /*按科目查詢*/void function4();int check;printf( *請輸入要查詢的科目:*n); printf( 1按學生數(shù)學成績查詢n);printf( 2按學生英語成績查詢n);printf( 3按學生計算機成績查詢n);printf( 4.返回上一菜單n);printf(請選擇:n); scanf(%d,&check);switch(check)case 1:check1();break;case

21、2:check2();break;case 3:check3();break;case 4:function4();break; void function4() /*查詢記錄*/void main();int way;printf( *查詢學生成績*n);printf( 1按班級查詢n);printf( 2按學號查詢n);printf( 3按科目查詢n);printf( 4返回主菜單n);printf( *n); printf(請選擇:n); scanf(%d,&way);switch(way)case 1:way1();break;case 2:way2();break;case 3:wa

22、y3();break;case 4:main();break;void function5() /*統(tǒng)計*/void main();char phy10;int a; printf(請輸入要統(tǒng)計的科目:); shuru:scanf(%s,phy); if(strcmp(math,phy)=0) int i,j;float t;for(i=0;iSIZE;i+)for(j=0;jstui+1.math)t=stui.math;stui.math=stui+1.math;stui+1.math=t;for(j=0,i=0;iSIZE;i+)if(stui.math60)j=j+1;printf(數(shù)

23、學最高分為%4.1f,不及格人數(shù)為%dn,stuSIZE.math,j);if(strcmp(english,phy)=0) int i,j;float t;for(i=0;iSIZE;i+) for(j=0;jstui+1.english) t=stui.english;stui.english=stui+1.english;stui+1.english=t;for(j=0,i=0;iSIZE;i+)if(stui.english60) j=j+1;printf(英語最高分為%4.1f,不及格人數(shù)為%dn,stuSIZE.english,j);if(strcmp(computer,phy)=

24、0)int i,j;float t;for(i=0;iSIZE;i+)for(j=0;jstui+1.computer)t=puter;puter=stui+1.computer; stui+1.computer=t; for(j=0,i=0;iSIZE;i+)if(puter60) j=j+1;printf(計算機最高分為%4.1f,不及格人數(shù)為%dn,stuSIZE.computer,j);printf(1,繼續(xù)統(tǒng)計n); printf(2,返回主菜單n);printf(請選擇:n); scanf(%d,&a);switch(a)case 1

25、:function5();break;case 2:main();break;void xt1()void main();printf( *學生操作系統(tǒng)*n);printf( 1.查詢記錄n);printf( 2.返回上一菜單n); printf( *n); printf(n);int function;printf(請輸入要選擇的功能:);scanf(%d,&function);switch(function)case 1:function4();break;case 2:main();break;void xt2() void main();printf( *教師操作系統(tǒng)*n); prin

26、tf( 1.添加記錄n);printf( 2.刪除記錄n);printf( 3.修改記錄n);printf( 4.查詢記錄n);printf( 5.統(tǒng)計記錄n);printf( 6.返回上一菜單n);printf( *n); printf(n);int function;printf(請輸入要選擇的功能:);scanf(%d,&function);switch(function)case 1:function1();break;case 2:function2();break;case 3:function3();break;case 4:function4();break;case 5:fu

27、nction5();break;case 6:main();break;void xt3()void main();printf( *教務處操作系統(tǒng)*n);printf( 1.查詢記錄n);printf( 2.統(tǒng)計記錄n);printf( 3.返回上一菜單n);printf( *n); printf(n);int function;printf(請輸入要選擇的功能:);scanf(%d,&function);switch(function)case 1:function4();break;case 2:function5();break;case 3:main();break;void mai

28、n()int a;printf( *學生成績管理系統(tǒng)*n);printf(1.學生 2.教師 3.教務處n);printf( *n);printf(請選擇運行身份:); scanf(%d,&a);if(a=1)xt1();if(a=2)xt2();if(a=3)xt3();6.2系統(tǒng)使用錄入信息時,每一個項目都必須輸入相應的內(nèi)容,輸入錯誤時,系統(tǒng)自動提供輸入錯誤提示,可以根據(jù)提示重新輸入。修改、增加、刪除,查找記錄前必須先打開一個文件修改完后必須記得保存信息。 6.3運行效果說明主菜單:供使用人選擇身份,進入相應的管理系統(tǒng)。添加學生信息:是教師能夠錄入添加學生信息。查詢功能:使使用人可以根據(jù)班級、學號、科目查詢成績。刪除功能:教師能夠刪除學生信息并儲存。修改功能:使教師能夠根據(jù)學生姓名修改學生不同科目的成績。統(tǒng)計功能:用來統(tǒng)計某科目在班級中最高分以及不及格人數(shù)。7.總結通過本次C程序課程設計,我覺得對自己提高很大:克服了懶惰,這在我以后的學習和工作中的心理定位與調(diào)節(jié)有很大的幫助。我感受到了編程是一項非常煩瑣周密的活動,他不但需要一個人周密的思考問題的能力,處理問題的能力

溫馨提示

  • 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

提交評論