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

下載本文檔

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

文檔簡介

1、內蒙古科技大學本科生課程設計說明書題 目: C 語言課程設計 學生成績管理系統 學生姓名: 學 號: 專 業(yè): 班 級: 指導教師:內蒙古科技大學課程設計任務書課程名稱C語言課程設計設計題目學生成績管理系統指導教師時間2012.12.31 2013.1.4一、教學要求1. 鞏固和加深學生對 C語言課程的基本知識的理解和掌握2. 掌握C語言編程和程序調試的基本技能3. 利用C語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能w力5. 提高運用C語言解決實際問題的能力二、設計資料及參數每個學生在教師提供的課程設計題目中任意選擇一題,獨立完成,題目選定后不可更換。某班學生成績管理,包括以下功能

2、:? 從鍵盤輸入包括學號、姓名、各門課程成績(不少于5門),并將其保存在磁盤文件里? 打開文件后,計算每個人的總分和平均分,排序并保存? 具有單項查詢或多項查詢的功能(即按照給定的關鍵字,如姓名找出滿足條件的紀錄)? 具有插入、刪除和修改功能? 具有輸出文件數據信息的功能三、設計要求及成果1. 分析課程設計題目的功能需求(可選用數組或鏈表實現,可多人(最多3人)協作完成一個題目)2. 寫出詳細設計說明(至少包括功能實現分析和模塊流程圖)3. 編寫程序代碼,調試程序使其能正確運行(代碼書寫要規(guī)范,標示符要見名知意,要有必要的注 釋,每人至少3個函數,每人至少 200行代碼,不包括注釋和花括號)4

3、. 設計完成的軟件要便于操作和使用5. 設計完成后提交課程設計報告(請嚴格按照模板進行排版)四、進度安排第一天選擇課程設計題目,分析課題的要求第二天編程第三天編程及調試第四天 寫課程設計報告第五天提交課程設計報告(打印稿及電子稿)五、評分標準1. 根據平時上機考勤、表現和進度,教師將每天點名和檢查2. 根據課程設計完成情況,必須有可運行的軟件。3. 根據課程設計報告的質量,如有雷同,則所有雷同的所有人均判為不及格。六、建議參考資料1. C語言程序設計,譚浩強,清華大學出版社2. C語言程序設計課程設計,劉振安,機械工業(yè)出版社目 錄內蒙古科技大學課程設計任務書第一章需求分析1.1 引言-31.2

4、 任務概述 31.3 數據描述 31.4 功能需求 31.5 性能需求 4第二章概要設計 42.1 總體設計2.2 數據類型設計(或數據結構設計) 42.3 接口設計/函數聲明2.4 運行界面設計 6第三章詳細設計3.1 輸入模塊設計83.2 輸出模塊設計93.3 查找模塊設計93.4 排序模塊設計103.5 保存及讀取模塊設計 12第四章測試分析 144.1測試程序執(zhí)行情況 14第五章課程設計總結15附錄:程序代碼15參考文獻錯誤!未定義書簽。第一章需求分析1.1引言為方便對學生成績進行高效的管理,編寫該程序以提高學生成績管理 效率。使用該程序之后,學校管理者可以查詢某位學生、某個科目的成績

5、 情況,還可以對學生成績進行排名,對學生的數據進行修改和刪除。通過 本系統可以很好的掌握學生成績的分布,減輕管理人員的負擔,也使學生 的成績和信息長時期的保留1.2 任務概述本課程設計主要解決學生成績管理問題。使用計算機進行信息管理,不僅提高了工作效率,而且大大的提高了其安全性 尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的 優(yōu)越性學生成績管理系統是一個教育單位不可缺少的部分,它的內容對于學校的決策者和管理者來說都至關重要。在課程設計中,系統開發(fā)平臺為 Windows XP,程序設計設計語言采用 Visual C+,程序運行平臺為 Windows 2000/XP。在程序設計中,采用了面向對象解

6、決 問題的方法。程序通過調試運行,初步實現了設計目標。1.3功能需求1)錄入數據:將學生姓名、語文、數學、英語成績寫入文件。2)增加人員:增加學生,并將學生姓名和成績寫入文件。3)刪除人員:刪除學生信息和成績。4)修改數據:修改學生成績。5)按總成績查詢:根據總分查詢學生成績,包括平均分。6)按姓名查詢:根據學生姓名查詢學生成績,包括總分和平均分7)輸出所有學生成績:輸出文件中所有學生數據。8)按平均分排名:按照平均分從高到低排序。1.4性能需求1)硬件環(huán)境處理器:Inter CR300 或是更高。內存:128MB(建議 196ME)。硬盤空間:20MB2)軟件環(huán)境操作系統:Windows 2

7、000/ XP 或是 Windows 2000/Windows NT Server4.0。1.5任務計劃1)選擇課程設計題目,分析課題的要求2)編程3)編程及調試4)寫課程設計報告5)提交課程設計報告(打印稿及電子稿)第二章概要設計2.1 總體設計利用計算機來處理這些流程無疑會極大程度地提高效率和處理能力。 我們很清晰的看到自己的各個科目成績和每個科目的排名和總分排名以 及所有學生的成績分布,而且還是零失誤,所有的都是一目了然。極大的 方便了學生和老師。為提高成績管理效率,管理人員的工作負擔。2.2 數據類型設計(或數據結構設計)對學生成績進行管理的系統,主要劃分為以下三個模塊:1)操作:包括

8、增加學生記錄、修改學生記錄、刪減學生記錄。2)查詢:包括按總成績查詢、按姓名查詢、輸出所有學生成績。3)排名:按按平均成績排名。學生成績管理系統排名查詢操作按平均分排名輸出全部數據按姓名查詢刪減學生記錄修改學生記錄增加學生記錄2.3 接口設計函數名函數格式函數功能structStruct結構體名成員列表;用于結構體的定義Ifelself(表達式)語句2Else 語句2執(zhí)行真假值判斷,根據邏輯計算的真假值,返回不同結果scanfInt sca nf(char *format,args;);從標準輸入設備按format指向的格式字符串所規(guī)定的格式,輸入數據給 args所指向單元2.4運行界面設計/

9、*主菜單*/printf(n學生成績管理系統n);printf(1.增加學生記錄n);printf(2.修改學生記錄n);printf(3.刪除學生記錄n);printf(4.按姓名查詢學生記錄n);printf(5.按平均成績排序n);printf(6.退出 n);printf(請選擇(1-6):);sea nf(%d,&choice);getchar();switch(choice)case 1:Stude nt_ln sert();break;case 2:Stude nt_Modify();break;case 3:Stude nt_Delete(); break;case 4:Stu

10、de nt_Select();break;case 5:Stude nt_SortByAverage();Stude nt_Display();break;case 6:exit();break;IO_Writel nfo();第三章詳細設計3.1 輸入模塊設計void Stude nt_ln sert()whileprintf(請輸入學號:);sca nf(%s,&stude nts nu m.ID);getchar();printf(請輸入姓名:);sca nf(%s,&stude nts num.Name);getchar();printf(請輸入成績:);sca nf(%f,&stud

11、e nts num.Mark1);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark2);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark3);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark4);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark5);getchar();stude nts nu m.Average=Avg(stude nts nu m);nu

12、 m+;printf(是否繼續(xù)?(y/n);if (getchar()= n)break;3.2 輸出模塊設計void Stude nt_Display()int i;printf(%10s%10s%8s%8s%8s%8s%8s%10sn,學號,姓名,成績,成績,成績,成績,成績,平均成績);printf(n);for (i=0;i nu m;i+)prin tf(%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn,stude ntsi.ID,stude nt si.Name,stude ntsi.Mark1,stude ntsi.Mark2,stude ntsi

13、.Mark3,stude ntsi.Mark4,stude nts i.Mark5,stude ntsi.Average);3.3 查找模塊設計void Stude nt_Select()while(1)char n ame20;int in dex;printf(請輸入要查詢的學生的姓名:);sea nf(%s,&n ame);getchar();in dex=Stude nt_SearchByName( name);if (in dex=-1)printf(學生不存在!n);elseprintf(你要查詢的學生信息為:n); Stude nt_DisplayS in gle(i ndex)

14、;printf(是否繼續(xù)?(y/n);if (getchar()= n)break;3.4排序模塊設計void Stude nt_SortByAverage()int i,j;struct Stude nt tmp;for (i=0;i nu m;i+)for (j=1;j nu m-i;j+)if (stude ntsj-1.Averagevstude ntsj.Average)tmp=stude ntsj-1;stude ntsj-1=stude ntsj;stude ntsj=tmp;/*顯示學生信息*/void Stude nt_Display()int i;printf(%10s%1

15、0s%8s%8s%8s%8s%8s%10sn,學號,姓名,成績,成 績,成績,成績,成績,平均成績);printf(n);for (i=0;i nu m;i+)prin tf(%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn,stude ntsi.ID,stude ntsi.Name,stude ntsi.Mark1,stude ntsi.Mark2,stude ntsi.Mark3,stude ntsi.Mark4,stude ntsi.Mark5,stude ntsi.Average);3.5保存及讀取模塊設計/*將學生信息從文件讀出*/ void IO_R

16、eadl nfo() _FILE *fp;int i;if (fp=fope n( Database.txt,rb)=NULL) printf(不能打開文件!n);return;if (fread(&nu m,sizeof(i nt),1,fp)!=1)num=-1;elsefor(i=0;i nu m;i+)fread(&stude ntsi,sizeof(struct Stude nt),1,fp);fclose(fp);/*將學生信息寫入文件*/void IO_Writel nfo()FILE *fp;int i;if (fp=fope n( Database.txt,wb)=NULL)

17、 printf(不能打開文件!n);return;if (fwrite(&nu m,sizeof(i nt),1,fp)!=1)printf(寫入文件錯誤!n);for (i=0;i nu m;i+)if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1)printf(寫入文件錯誤!n);fclose(fp);第四章測試分析4.1測試程序執(zhí)行情況12 3 4 5 G 請績錄錄委子排 碩記記記誼績:- 蚩主生杳成21- 一加改-一增修系TH 理管錄 _d 掃序錄己 績錄錄委于排 成記記記詢績 生生生生杳議 -加改除姓花f號 站學成績成績 成績成

18、績13c78. B011d80.0087.酗69.00 86-60 79.00 9B-S0 7召目回 76.6688.6087.S079.00SB .0S ?9-00平均成績87-6084.2B82.2S爾點蚩髒管理系統毎*杳詢學牛說尋 平均成媳排序 璋岀 請選律了-6胡 你夢査誨的軍生信息淌:學號 姓名 成績成績成績成績成績平均成績11是否繼續(xù)?3巾)80.Q9 78.0076.0079,0098.0082.20第五章課程設計總結此次C語言課程設計,在指導教師的精心教導下,我們學會了如何用C編寫 一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識, 然后系 統分析與系統設計,最后

19、是代碼設計與調試。程序實現上,設計了簡單的菜單界 面,將各個功能集中出現在主菜單中,便于調用。根據C語言課程所學的概念、理論和方法,按照 C語言程序設計的基本步 驟,設計出一個適當規(guī)模的程序;進一步加深對C語言的理解和掌握。理論聯系 實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程, 就必須不斷改進,才能更好提高編程能力。附錄:程序代碼#include/*定義學生結構體*/struct Stude ntchar ID20;char Name20;float Mark1;float Mark2;float

20、Mark3;float Mark4;float Mark5;float Average;/*聲明學生數組及學生數量*/struct Stude nt stude nts1000;int num=O;/*求平均值*/float Avg(struct Stude nt stu)return (stu.Mark1+stu.Mark2+stu.Mark3+stu.Mark4+stu.Mark5)/5;/*通過學號返回數組下標*/int Student_SearchBylndex(char id)int i;for (i=0;i nu m;i+)if (strcmp(stude ntsi.ID,id)=

21、0)return i;return -1;/*通過姓名返回數組下標*/int Stude nt_SearchByName(char n ame) int i;for (i=0;i nu m;i+)if (strcmp(stude ntsi.Name, name)=0)return i;return -1;/*顯示單條學生記錄*/void Stude nt_DisplayS in gle(i nt in dex)printf(%10s%10s%8s%8s%8s%8s%8s%10sn,學號,姓名,成績,成 績,成績,成績,成績,平均成績);printf(n);prin tf(%10s%10s%8.

22、2f%8.2f%8.2f%8.2f%8.2f%10.2fn,stude ntsi ndex D,stude ntsi ndex.Name,stude nts in dex.Mark1,stude ntsi ndex.Mark2,stude nts in dex.Mark3,stude nt si ndex.Mark4,stude ntsi ndex.Mark5,stude ntsi ndex.Average);/*插入學生信息*/void Stude nt_ln sert()while(1)printf(請輸入學號:);sca nf(%s,&stude nts nu m.ID); getcha

23、r();printf(請輸入姓名:);sca nf(%s,&stude nts num.Name);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark1);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark2);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark3);getchar();printf(請輸入成績:);sca nf(%f,&stude nts num.Mark4);getchar();printf(請輸入成績

24、:);sca nf(%f,&stude nts num.Mark5);getchar();stude nts nu m.Average=Avg(stude nts nu m); nu m+;printf(是否繼續(xù)?(y/n);if (getchar()= n)break;/*修改學生信息*/void Stude nt_Modify()float mark1,mark2,mark3,mark4,mark5; while(1)char id20;int in dex;printf(請輸入要修改的學生的學號:); sea nf(%s,&id);getchar();in dex=Stude nt_Se

25、archByl ndex(id);if (in dex=-1)printf(學生不存在!n);elseprintf(你要修改的學生信息為:n);Stude nt_DisplayS in gle(i ndex); printf(-請輸入新值-n); printf(請輸入學號:);sea nf(%s,&stude ntsi ndex.ID); getchar();printf(請輸入姓名:);sca nf(%s,&stude ntsi ndex.Name); getchar();printf(請輸入成績:);sca nf(%f,&stude ntsi ndex.Mark1); getchar();

26、printf(請輸入成績:);sea nf(%f,&stude ntsi ndex.Mark2);getchar();printf(請輸入成績:);sca nf(%f,&stude ntsi ndex.Mark3);getchar();printf(請輸入成績:);sca nf(%f,&stude ntsi ndex.Mark4);getchar();printf(請輸入成績:);sca nf(%f,&stude ntsi ndex.Mark5);getchar();stude ntsi ndex.Average=Avg(stude ntsi ndex);printf(是否繼續(xù)?(y/n);i

27、f (getchar()= n)break;/*刪除學生信息*/void Stude nt_Delete() int i;while(1)char id20;int in dex; printf(請輸入要刪除的學生的學號:); sea nf(%s,&id);getchar();in dex=Stude nt_SearchByl ndex(id);if (in dex=-1)printf(學生不存在!n);elseprintf(你要刪除的學生信息為:n);Stude nt_DisplayS in gle(i ndex);printf(是否真的要刪除?(y/n);if (getchar()=y)f

28、or (i=in dex;i nu m-1;i+)stude ntsi=stude ntsi+1;num-;getchar();printf(是否繼續(xù)?(y/n);if (getchar()= n)break;/*按姓名查詢*/void Stude nt_Select()while(1)char n ame20;int in dex;printf(請輸入要查詢的學生的姓名:);sca nf(%s,&n ame);getchar();in dex=Stude nt_SearchByName( name);if (in dex=-1)printf(學生不存在!n);elseprintf(你要查詢的

29、學生信息為:n); Stude nt_DisplayS in gle(i ndex);printf(是否繼續(xù)?(y/n);if (getchar()= n)break;/*按平均值排序*/void Stude nt_SortByAverage()int i,j;struct Stude nt tmp;for (i=0;i nu m;i+)for (j=1;j nu m-i;j+)if (stude ntsj-1.Averagevstude ntsj.Average)tmp=stude ntsj-1;stude ntsj-1=stude ntsj;stude ntsj=tmp;/*顯示學生信息*/void Stude nt_Display()int i;printf(%10s%10s%8s%8s%8s%8s%8s%10sn,學號,姓名,成績,成 績,成績,成績,成績,平均成績);printf(n);for (i=0;i nu m;i+)prin tf(%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2fn,stude ntsi.ID,stude nt si.Name,stude ntsi.Mark1,stude ntsi.Mark2,stude ntsi.Mark3,stude ntsi.Mar

溫馨提示

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

評論

0/150

提交評論