




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計課程設計報告學生成績管理系統word文檔可自由復制編輯設計人:指導教師:xxxxx2011年XX月XX日提交課題選定與任務分解課題名稱:班級:組長:聯系電話:任務分解表:模塊序號模塊名稱承擔人學號(一)設計目的3(二)設計內容3(三)總體設計4(四)詳細設計5-10(五)調試與測試11(六)設計總結12一、課程設計目的通過課程設計,加深對結構化設計思想的理解,能對系統功能進行分析, 并設計合理的模塊化結構。1、通過課程設計,學會設計數據結構。其中包括對結構數組、數據文件等知識的運用。2、通過課程設計,提高程序開發功能,能運用合理的控制流程編寫清晰高效的程序。3、通過課程設計,訓練
2、 C程序調試能力,能將一個中小型各級組織系統聯調通過。4、通過課程設計,開發一個中小型系統,掌握系統研發全過程。5、通話課程設計,培養分析問題、解決實際問題的能力。二、課程設計內容及任務要求:設計一個實用的成績管理系統,能以簡便高效的方式對成績進行管理和檢索,具體要示:錄入:學生的學號、姓名、班級、五門課成績。(1) 更新:(2) 瀏覽:(3) 查詢:能實現指定聯系人信息查詢或指定電話號碼查詢功能。(4) 系統以菜單方式工作,界面友好,易于操作,容錯性好。三總體設計:1程序設計組成框圖:2:模塊功能說明:1輸入功能:輸入學生姓名學號及成績。2查看功能:輸出姓名學號及各科成績。3查詢功能:通過學
3、號查詢學生姓名及各科成績。4排序功能:根據平均分來對學生進行排序。5修改功能:通過輸入學號修改指定學生的錯誤信息。6添加功能:添加學生信息。7刪除功能:通過輸入學號輸入指定學生信息。8保存功能:將學生信息保存。9統計功能:統計班級學生及格率,優秀率,各個學生成績方差等。0退出系統。3:主要函數之間的調用關系及各自功能:主要函數的函數原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void
4、);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);i. 在菜單界面輸入1,調用函數inputscore()實現輸入學生成績信息功能。ii. 在菜單界面2,調用函數lookscore()實現學生成績按平均分高低排序輸出,同時lookscore()函數調用avergescore(1S數實現各個學生平均分的計算。iii. 在菜單界面輸入3,調用searchscore(的數實現通過學號查找學生成績信息功 能。iv. 在菜單界面4,調用函數lookscore()實現學生成
5、績按平均分高低排序輸。出, 同時lookscore()函數調用avergescore(1S數實現各個學生平均分的計算。v. 在菜單界面輸入5,調用modify()函數實現通過學號修改學生成績的功能vi. 在菜單界面輸入6,調用add()函數實現添加學生成績。vii. 在菜單界面輸入7,調用delscore()函數實現刪除指定學生成績。viii. 在菜單界面輸入8,調用savescore(1S數將學生成績信息保存。ix. 在菜單界面輸入9,調用statistic。函數輸出班級及格率,優秀率,學生成績方 差,不及格學生名單。x. 在菜單界面輸入0,退出成績管理系統。3模塊調用圖四、詳細設計(1)定
6、義結構體設計本程序中,定義了多個結構體。首先對于學生的各項詳細信息定義結構體結構體及其成員如下:typedef struct studentchar number10;char name20;float scoreM;float aver;STU;(2)模塊接口設計本程序執行的入口是main函數,然后是菜單函數,在菜單函數中對選項進行選擇以后,接下來在do-while語句中再套用switch語句實現對各個函數的調用。被調用的函數都是沒有形參的,但是通過對數據文件的使用,可以使得每一次的函數調用都能夠講忘記保存到磁盤中,而不需要 返回值。最后,再從main函數中結束整個程序的運行。其中涉及到被調
7、用的函數有:void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);(3)各功能函數代碼及流程圖inputscore 函數:此函數的主要功能是將學生成績添加到成績管理中;首先要要輸入學生的數量n,然后再根據j&
8、lt;n這一條件來循環輸入學生的成績,就完成了整個過程。avergescore 函數:inti,j;N此函數要實現的功能是將選擇的已有的學生成績平均,利用循環將每個學生的平均分計算出來。pruatBt "* D4.2F,rJi,Li X-此函數的功能是在原有學生信息的基礎上對學生的成績進查看和排序。Searchscore 函數:word文檔可自由復制編輯pruirft “我 i 1 ii 1?7break:此函數的功能主要是通過輸入學生學號來查詢學生成績Statistic 函數該函數主要是統計學生成績信息,平均分及格率,優秀率,成績方差word文檔可自由復制編輯Modify函數J+*
9、breik;l-H-該函數主要用來修改學生成績。Add函數print貫1詁輪入學上:市hepriirtfO患加成功3,;該函數用來添加學生成績。delscore 函數word文檔可自由復制編輯pj-Liattp & *4.2P' Sug皿玳"是件陽綠國,pruMClM你儂旭為一l-t該函數用來刪除學生成績。savescore 函數F工E .力口;word文檔可自由復制編輯該函數用來保存學生成績。五、調試與測試(1) 調試過程中的主要問題由于本程序是分模塊設計的,所以運行時選擇完任務并且執行完任務后,又會繼續回到用戶選擇界面,供用戶繼續選擇任務并執行任務,整個程序以文件
10、形式讀寫,所以每次都可對輸入的數據進行保存。對于本程序的調試運行,總體上情況良好。但是,其中也出現了一些小問題:1.一開始用break結束調用函數,發現程序無法返回到主函數。2無法有效清理屏幕顯示3有時候發現一些連接錯誤,程序無法正常運行(2) 調試過程中的問題的解決辦法l.break是只能用來結束它本身所在的本層循環,而return則是結束調用函數,讓程序返回到主函數。2可以用system( Cls”)來清理屏幕顯示3是一些函數名錯誤,有打錯的現象,更改后調試即可六、課程設計總結:我想說課程設計真是一件很累人很傷腦筋的事情,在一周的時間里,我們每天幾乎都要面對 著電腦十個小時以上,上課時去機
11、房寫程序,回到宿舍還要繼續奮斗;要是只是在電腦面前坐著 也沒有什么難過的,但是在電腦面前還要想著怎么去寫代碼,怎么去安排程序結構,怎么去實現 想要的程序功能等等一系列的事情;特別是在調試程序的時候更是讓人頭痛,辛辛苦苦的寫好了 函數,等到調試運行就出現一堆錯誤,真的拿它沒辦法呀;有的時候還真是后悔當初自己選擇了 這樣一個費精力的專業,不過還好有書本的基礎知識、發達的網絡通信、知識淵博的老師以及熱 心的同學的幫助,才使我能將那些問題一一解決!雖然課程設計很苦很累,有時候還很令人抓狂,不過現在回想起來它給我的并不只是痛苦的 回憶,它不僅讓拉近了我和同學間的距離,而且對我們學習計算機語言還是很有意義
12、的。在還沒有進行課程設計實訓之前,我對C語言知識的掌握真的只能說是很膚淺,我只知道分開來使用那些語句和語法,對他們根本沒有整體感念,所以在學習C語言時經常會感覺很盲目,甚至不知道自己學這些東西是為了什么。通過一周的課程設計,我對C語言有了更深入的了解,同時也建立起了一個對C語言的整體架構和編程思想;我還學到了很多課本上沒有學到的東西,也了解了很多以前不了解的計算機語言方面的知識;他擴充了我的知識,也開拓了我的視野,讓 我們了解了我們學習計算機語言的目的和將來發展的方向。通過這次的課程設計,讓我明確了學習C語言的目的和重要性,在以后的時間里,我會更加努力的把C語言學好,為以后學習更高級的計算機語
13、言打下好的基礎,并通過與老師同學的交流來不 斷的提升自己的編程和開發能力!#include<stdio.h>#include<string.h>#include<process.h>#include<conio.h>#define N 30#define M 5 typedef struct student char number10;char name20;float scoreM;float aver;STU;STU stuN; int n;void inputscore(void);void savescore(void);void ave
14、rgescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main()short int flag=0;menu();doflag=1;switch(getch()case '1' : inputscore();break;/*輸入成績*/case '2' : looks
15、core();break;/*查看成績*/case '3' : searchscore();break;/*查找成績*/case '4' : lookscore();break;/*成績排序*/case '5' : modify();break;/*修改成績*/case '6' : add();break;/*添加成績*/case '7' : delscore();break;/*刪除成績*/case '8' : savescore();break;/*保存成績*/case '9'
16、: statistic();break;/*成績統計*/case '0' :exit(0);/*退出程序*/default : printf("輸入有誤 n");printf("按任意鍵繼續n");getch();menu();while (flag=1);void menu(void)system("cls");printf("n");printf("* 歡迎進入學生成績管理系統*坨");printf("菜單 n");printf("輸入成績 1n
17、");printf("查看成績2n");printf("查詢學生成績3n");printf("成績排序 4n");printf("修改成績5n");printf("添加成績6n");printf("刪除成績7n");printf("保存成績8n");printf("成績統計9n");printf("退出系統0n");printf(”*n");printf("請輸入您的選擇n")
18、; void inputscore(void) /*輸入各個同學的學生信息*/int i,j;system("cls");printf("請輸入學生總數:n");scanf("%d",&n);printf("提示:*輸入學號時請輸入位數為8位的數字*n");/*因二維表上下需對正故有此要求*/for(i=0;i<n;i+)printf("請輸入學生 %d的學號姓名:n",i+1);scanf("%s%s",stui.number,);print
19、f("請輸入學生成績:n");printf("數學t化學t計算機t生物t物理n");for(j=0;j<M;j+)scanf("%f",&stui.scorejD;printf("成功輸入 n");/*計算各個同學的平均分*/ void avergescore(void) int i,j;for(i=0;i<n;i+)stui.aver=0;for(j=0;j<M;j+) stui.aver+=stui.scorej; stui.aver=stui.aver/M;/* 查看學生成績及根據平
20、均分對學生進行排序 */void lookscore(void)int i,j,k;STU t;avergescore();system("cls");for(i=0;i<n-1;i+)for(k=i,j=i+1;j<n;j+)if(stuj.aver>stuk.aver)k=j;if(k!=j)t=stuk;stuk=stui;stui=t;printf("名次t學號tt姓名t數學t化學t計算機t生物t物理t平均分n");for(i=0;i<n;i+) printf("%dt%st%st",i+1,stui.
21、number,);for(j=0;j<M;j+)printf("%4.2ft",stui.scorejD;printf("%4.2f",stui.aver);/*printf("n");通過輸入學號查找學生成績*/void searchscore(void) char a10;int i,j;system("cls");printf("請輸入需查詢的學生學號n");scanf("%s",a);for(i=0;i<n;i+)if(strcmp(a,
22、stui.number)=0)printf("名次t學號tt姓名t數學t化學t計算機t生物t物理t平均分n");printf("%dt%st%st",i+1,stui.number,);for(j=0;j<M;j+)printf("%4.2ft",stui.scorejD;printf("%4.2f",stui.aver);printf("n");break;/*找到該學生成績信息后跳出for循 環*/elseprintf("未找到該學生信息n");/
23、* 統計學生成績信息,平均分及格率,優秀率,成績方差 */ void statistic(void)STU *p=stu;int i,j;float count=0.0,sum=0.0;system("cls");for(i=0;i<n;i+)sum+=(p+i)->aver;printf("該班級平均分為 4.2fn",sum/n);/*平均分計算*/for(i=0;i<n;i+) if(p+i)->aver>=60)count+;printf("該班級及格率為 4.2f%n",count/n*100)
24、;/*及格率計算*/count=0.0;for(i=0;i<n;i+)if(p+i)->aver>=90)count+; printf("該班級優秀率為 4.2f%n",count/n*100);/*優秀率計算*/for(i=0;i<n;i+) for(j=0;j<M;j+)sum=(p+i)->scorej-(p+i)->aver)*(p+i)->scorej-(p+i)->aver);sum=sum/n;printf("學生 %s 的成績方差為 %4.2fn",(p+i)->name,sum
25、);/*方差計算*/printf("平均分低于60的學生名單n");for(i=0;i<n;i+)if(stui.aver<60)printf("%sn",);word文檔可自由復制編輯/*統計不及格學生名單*/*修改學生成績*/void modify(void) char a10;int i,j;system("cls");printf("請輸入需要修改成績的學生學號n");scanf("%s",a);for(i=0;i<n;i+)if(strcmp(a,s
26、tui.number)=0)printf("名次t學號tt姓名t數學t化學t計算機t生物t物理t平均分n");printf("%dt%st%st",i+1,stui.number,);for(j=0;j<M;j+)printf("%4.2ft",stui.scorejD;printf("%4.2f",stui.aver);printf("n");printf("請重新輸入該學生的學號姓名:n");scanf("%s%s",stui.
27、number,);printf("請重新輸入學生成績:n");printf("數學t化學t計算機t生物t物理n");for(j=0;j<M;j+) scanf("%f",&stui.scorej);/*找到該學生成績后進行修改,跳出 for循環*/ printf("修改成功 n");break;elseprintf("未找到該學生信息n");word文檔可自由復制編輯/*添加學生成績 */word文檔可自由復制編輯void add(void) int a,i,j;
28、system("cls");printf("請輸入新增加的學生人數:n");scanf("%d",&a);n=n+a;for(i=n-a;i<n;i+)printf("請輸入學生 %d的學號姓名:n",i+1);scanf("%s%s",stui.number,);printf("請輸入學生成績:n");printf("數學t化學t計算機t生物t物理n");for(j=0;j<M;j+)scanf("%f",&stui.scorej);/*printf("添加成功 n");刪除學生成績 */void delscore(void) int i,j,c;char m,a10;system("cls");printf("請輸入學生學號n");scanf("%s",a);for(i=0;i<n;i+)if(strc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學年內蒙古滿洲里市重點中學中考數學考試模擬沖刺卷含解析
- 基于機器學習的井間連通性評價方法及井網調整策略研究
- 2023-2024學年山東省濟南市鋼城區實驗校中考數學模擬試卷含解析
- 2023-2024學年山東省濟南市濟陽區達標名校中考數學四模試卷含解析
- 高含水期砂巖油田水驅優勢滲流通道識別-以X油田A區塊A2層為例
- 調查研究的概念界定
- 護理的研究生
- 游古長城記滿分作文春節14篇
- 衛生城市創建檔案體系
- 2025至2030中國智能坐浴盆行業發展趨勢分析與未來投資戰略咨詢研究報告
- Python數據科學與機器學習結合試題及答案
- 海鮮水產電商商業計劃書
- 托育轉讓合同協議書
- 2025江西中考:政治必背知識點
- 裝飾音在樂理考試中的應用試題及答案
- 購犬協議書范本
- 通信汛期安全生產課件
- 物業工程服務意識培訓
- 提高分級護理的巡視率
- 中國心力衰竭診斷和治療指南(2024)解讀
- 失重致血管細胞衰老和心臟代謝異常及干預策略的研究
評論
0/150
提交評論