c語言成績管理系統(tǒng)設(shè)計報告【精品】_第1頁
c語言成績管理系統(tǒng)設(shè)計報告【精品】_第2頁
c語言成績管理系統(tǒng)設(shè)計報告【精品】_第3頁
c語言成績管理系統(tǒng)設(shè)計報告【精品】_第4頁
c語言成績管理系統(tǒng)設(shè)計報告【精品】_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一設(shè)計目的:木課程設(shè)計的系統(tǒng)是早己在很多領(lǐng)域均有應(yīng)用,是一個很不錯的教學(xué)管理系統(tǒng), 而且其功能更是相當(dāng)強大、界面更加友好的應(yīng)用型軟件。而現(xiàn)在我的設(shè)計并非是重走舊路,而我的設(shè)計主要目的在于學(xué)習(xí)并深刻地掌握對c語言的基礎(chǔ) 知識以及其實踐經(jīng)驗,更好地在以后的學(xué)習(xí)中能夠更好地運用學(xué)習(xí)。特別是像這種比較多運用 到一些課本上沒有教的知識,比如說,像清屏函數(shù)clrscr、菜單函數(shù)menu等。許多都是一開 始就沒有涉及到的知識,在自己的設(shè)計中得到了提升,更加重要的一點就是增加了自已的實踐 操作能力。二:設(shè)計內(nèi)容:學(xué)生信息管理系統(tǒng)生息理統(tǒng) 學(xué)信管系l看生績排t查學(xué)成及序過號詢績 通學(xué)查成廠計績息 v統(tǒng)成信過號改

2、績 通學(xué)修成511過號除績 ¥通學(xué)刪成h 7 退程.、2主要函數(shù)之間的調(diào)用關(guān)系及各自的功能:主要的函數(shù)原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchvoid(void);void statistic(score);void add(void);void modify(void);void delscore(void);void menu(void);i. 在菜單界面輸入1,調(diào)用函數(shù)inp

3、utscore()實現(xiàn)輸入學(xué)生成績信息功能。ii. 在菜單界面2,調(diào)用函數(shù)lookscore()實現(xiàn)學(xué)生成績由平均分按從高到低排序輸出。同吋 lookscore()調(diào)用avergescore()函數(shù)實現(xiàn)對每個學(xué)生平均分的計算。iii. 在菜單界面輸入3,調(diào)用searchscoref)函數(shù)實現(xiàn)通過學(xué)生學(xué)號查找學(xué)生成績信息功能。iv. 在菜單界面輸入4,調(diào)用statisticf)函數(shù)輸岀班級及格率、優(yōu)秀率以及不及格學(xué)生的名單。v. 在菜單界面輸入5,調(diào)用modifyf)實現(xiàn)通過學(xué)生學(xué)號來修改學(xué)生成績信息功能。vi. 在菜單界面輸入6,調(diào)用add()函數(shù)實現(xiàn)添加學(xué)牛信息。vii. 在菜單界面輸入7,

4、調(diào)用delscore()函數(shù)實現(xiàn)刪除指定學(xué)牛的信息。viii. 在菜單界面輸入8,調(diào)用savescore()函數(shù)將學(xué)牛成績信息保存。ix. 在菜單界面輸入9,退出學(xué)生信息管理系統(tǒng)。開始保存成績刪除成績添加成績修改成績成績統(tǒng)計查詢成績顯示成績輸入成績開始選擇學(xué)生人數(shù)和輸 入學(xué)生學(xué)號及成績3模塊功能說明:i輸入功能:輸入學(xué)生學(xué)號及成績。輸入成功回到主菜單利用inputscore()®數(shù)實現(xiàn)錄入學(xué)生信息 功能ii顯示模塊:輸出學(xué)牛名字學(xué)號、成績、排名、平均分。顯示模塊運jij lookscore()x avergescore()> total()等函數(shù)將第一步輸入的信息進(jìn)行運 算。將

5、成績的計算結(jié)果利用選擇排序法 進(jìn)行排序,然后利用printf函數(shù)顯示結(jié)果 輸出。iii 查詢模塊:通過學(xué)號查詢學(xué)生的姓名成績和排名oz不存在此學(xué) 牛查詢模塊利用searchscoref)函數(shù)進(jìn)行 學(xué)號查詢,其屮查詢功能運用函數(shù) strcmp將輸入和儲存的數(shù)據(jù)逐個比較 然后輸出相等數(shù)據(jù)所對應(yīng)結(jié)構(gòu)體內(nèi)的 信息。iv統(tǒng)計模塊:輸出班級及格率、優(yōu)秀率以及不及格學(xué)牛的名單。統(tǒng)計模塊主要定義的statistico函數(shù)進(jìn)行統(tǒng)計 函數(shù)中主要利用for循環(huán)以及訐語句將滿足 條件的結(jié)構(gòu)體數(shù)組的內(nèi)容進(jìn)行輸出。v修改模塊:通過學(xué)號來修改學(xué)生的信息。q修改模塊利用modify。函數(shù)進(jìn)行信息 的修改,首先用strcmp函

6、數(shù)將所存儲 信息的結(jié)構(gòu)體數(shù)組的位置找到,然后 將其中的信息進(jìn)行修改。vi.添加模塊:添加學(xué)生信息。vii.刪除模塊:刪除指定學(xué)生的信息。添加模塊利用add()函數(shù)進(jìn)行 學(xué)生信息的添加,使用定義的 結(jié)構(gòu)體數(shù)組實現(xiàn)這一功能。開始輸入增加學(xué)生人數(shù) 通過add()函數(shù)實現(xiàn)刪除模塊利用delscore()函數(shù)刪除 指定學(xué)生的信息,首先使用strcmp 函數(shù)找到儲存所需要刪除學(xué)生信息 內(nèi)容的結(jié)構(gòu)體數(shù)組的位置,然后將此 位置后一個結(jié)構(gòu)體變量整體復(fù)制給 前一個進(jìn)行覆蓋,學(xué)生總數(shù)減一,實現(xiàn) 刪除功能。vii.保存模塊:將學(xué)生的信息進(jìn)行保存。開始利用 savescore()函 數(shù)進(jìn)行信息保存輸入主機printf(

7、);stu50scanf(); =>fwrite(); =>結(jié)構(gòu)數(shù)紐fread();保存模塊利用svescore()函數(shù)進(jìn)行信息 的保存,使用fwrite函數(shù)進(jìn)行數(shù)據(jù)的寫入 然后保存。輸出三.主要代碼:typedef struct student char number8; char name20; float scorem; float aver;float total;stu;stu stun;這是結(jié)構(gòu)體數(shù)組的定義,所定義的變量number、name> score aver> totaloflag=l;switch(getch()case'l': i

8、nputscore();break; /*輸入成績*/case'21: lookscore();break; /*查看成績*/case'3': searchscore();break; /*查找成績*/case'4': statistic();break; /*成績統(tǒng)計*/case'5': modify();break; /*修改成績*/case'6': add();break; /*添加成績*/case'7': delscore();break; /*刪除成績*/case'8': save

9、score();break; /*保存成績*/case'9': exit(o); /*退出程序*/default: printf(“輸入有誤n“);printfc*按任意鍵繼續(xù)n“);getch();menu();此處的代碼是進(jìn)入主菜單界面的選擇功能,利用switch()語句 使得輸入不同的輸入即可進(jìn)入不同的功能模塊。int i,j;printff1請輸入學(xué)生總數(shù):n“);scanf(”d“,&n);for(i=0;i vn ;i+)printf("請輸入學(xué)生d的學(xué)號姓名:n”,i+l); scanf("%s%s",stui.number,

10、); printf("請輸入學(xué)生成績:n”); printf(“高數(shù)t物理tc語言n“);for(j=0;j<m;j+)scanf(” f”,&stui.scorej)這是輸入模塊的主要代碼,此處主要利用for語句將信息寫入 前邊所定義的結(jié)構(gòu)體數(shù)組內(nèi)。int i,j;for(i=0;i<n;i+) stui.total=0;for(j=0;j<m;j+) stui.total+=stui.scorej;廠將成績進(jìn)行求和*/for(i=0;i vn ;i+)stui.aver=o;for(j=0;j<m;j+)stui.aver+=st

11、ui.scorej;stui.aver=stui.aver/m;/*求平均分*/for(i=0;i<n-l;i+)for(k=ij=i+l;j vn ;j+) if(stuj.aver>stuk.aver) k=j;if(k!二j)t=stuk;stuk=stui; stui=t;/*進(jìn)行成績的排序*/此處代碼是顯示模塊的主要代碼,分為三個部分 第一部分是進(jìn)行成績的求和,利用for語句將成績 進(jìn)行累加,第二部分是求平均分,將總分賦值給 stui.aver 然后在執(zhí)行 stui.aver=stui.aver/m0 第三部分是平均分的排序,利用選擇排序法,兩兩 比較,執(zhí)行 t=stuk

12、; stuk=stui; stui=t;進(jìn)彳亍數(shù)值 交換。最后輸岀結(jié)果。char a10;int i,j;systemf'cls");printfc*請輸入需要查詢的學(xué)號n“);scanf("%s",a);for(i=0;i<n;i+)if(strcmp(a,stui.number)=o)/* 査找儲存需要信息的位置 */printf(u名次t學(xué)號tt姓名t高數(shù)t物理tc語言t總分t平均分“);printf("%dt%stt%st",i+l,stui).number,stui).name);for(j=0;j<m;j+)pr

13、intf(“4.2ft“,stui.scorej);printf("%4.2ft",stui).total);printf("%4.2ft"zstui.aver);printf("nh);break;elseprintf(h未找到該學(xué)生的信息n“);此時是查詢模塊的主要代碼,先定義一個數(shù)組a10,然后輸入 要查詢的學(xué)號,利用strcmpf)函數(shù)將所需查詢的學(xué)號與存儲在 結(jié)構(gòu)體內(nèi)的信息進(jìn)行比較if(strcmp(a,stui.number)=o),即如果 二者相等便使用break跳出循環(huán),輸出此結(jié)構(gòu)體內(nèi)的所有信息。stu*p=stu;int i;

14、float count=0.0,sum=0.0;system("cls");for(i=0;i<n;i+)/* 求平均分 */sum+=(p+i)->aver;printf(“該班級的平均分為%4.2fn"zsum/n); for(i=0;i vn ;i+)if(p+i)->aver>=60) cou nt+;/*求及格率printf(n 該班的及格率 %4.2f%"/count/n*100); count=0.0;for(i=0;i <n ;i+)if(p+i)->aver>=90)coun t+;printf

15、(”該班的優(yōu)秀率為 %4.2f%n",count/n*100);printf(”平均分低于60分的名單n“);廠求優(yōu)秀率=7for(i=0;i vn ;i+)if (stui.aver<60) printf(,%sn,);這是統(tǒng)計模塊的主要代碼,首先是進(jìn)行賦值stu*p=stu, 然后利用sum+=(p+i)->ave,求的全班的總分然丿石輸出sum/n 即是班級的平均分,定義count=0.0,然后將每個人的總分 與60比較,if語句,如果大于則count自加然后輸出,count/n*100 得到及格率,求優(yōu)秀率同理。最后將平均分與60比較,低于60

16、便輸出名字。char a10;int ij;system("cls");printfc'w輸入需要修改的學(xué)生學(xué)號n“);scanf("%s",a);for(i=0;i vn ;i+)if(strcmp(a,stui. nu mber)=0)printf(”名次t學(xué)號tt姓名t高數(shù)t物理tc語言t總分t平均分n“); printf("%dt%stt%dt",i+l,stui.number,);for(j=0;j<m;j+)printf("%4.2ft",stui.scorej);pri

17、ntf("%4.2ft",stui.total);printf(”4.2ft“,stui.aver);printfo");printfc1請重新輸入該學(xué)牛的學(xué)號姓名:n“);scanf("%s%s",stui.number,);printfc*請重新輸入學(xué)牛的成績:nh);printf高數(shù)t物理tc語言n“);/*修改信息*/for(j=0;j<m;j+)scanf("%f",&stui.scorej);printfc*修改成功屮);break;elseprintfc請確定該學(xué)生為本班學(xué)生!n

18、“);這是修改模塊的主要代碼,此處首先與查詢模塊類似,利用strcmpo 函數(shù)找到需要修改的學(xué)牛信息即儲存此信息的結(jié)構(gòu)體的位置,然后將 此處結(jié)構(gòu)體內(nèi)的變量重新賦值,儲存。即完成修改int a,ij;system("clsn);printf("請輸入新增加的學(xué)生人數(shù):n");scanf(”d",&a);n二n+a;for(i 二 n-a;ivn ;i+)printf(”請輸入學(xué)生(1的學(xué)號姓名:n”,i+l); scanf("%s%s",stui. nu mber,stui). name);printfc*請輸入學(xué)生成績:nh)

19、;printf(”高數(shù)t物理tc語言n“); for(j=0;j<m;j+)廠添加學(xué)生信息*/scanf(”化&stui.scorej);printff"添加成功n”);此處為添加模塊,首先輸入需要添加的人數(shù),使用for語句 利用程序定義的結(jié)構(gòu)數(shù)組,將信息寫入。int ij,c;char m,a10;system("cls");printff'請輸入學(xué)生學(xué)號n“);scanf("%s",a);for(i=0;i vn ;i+)if(strcmp(azstui. nu mber)=0)printf(”名次t學(xué)號tt姓名t高數(shù)

20、t物理tc語言t總分t平均分n“);printf("%dt%stt%dt"/i+l/stui.number/);for(j=0;j<m;j+)printf("%4.2ft"/stui.scorej);printff ”4.2ft”,stui.total);printf(”4.2ft“,stui.aver);printf(nnh);c=i;break;elseprintf("未找到該學(xué)牛信息n”);printf(“是否刪除該學(xué)生成績(y/n)n“); scanf("%s",&m);if(m=&#

21、39;y')for(i=c;i vn-l;i+)stui=stui+l;/*刪除指定的學(xué)生信息*/n二n-l;printfcwj除成績成功n“);elseprintf(“刪除成績失敗n“)這是刪除模塊的代碼,模塊的前面與查詢模塊是一樣的,利用 strcmp()找到要刪除的學(xué)號所對應(yīng)的結(jié)構(gòu)體所在數(shù)組中的位置 然后將結(jié)構(gòu)體后一個的信息賦值給需要刪除信息的位置,覆蓋信息 實現(xiàn)學(xué)生總數(shù)減少一個stui=stui+l, n二n-1;完成學(xué)生信息的 刪除。file*fp;int i,flag=l;char m;system("cls");puts(”是否保存學(xué)生成績(y/n)&

22、quot;);scanf("%s",&m);if(m"y)ifi(fp=fopen(,score.txt,"wt,)=null)printfc*文件打開失敗n”);return;for(i=0;i vn ;i+)if(fwrite(&stui,sizeof(struct student),2,fp)!=l)/*將信息進(jìn)行寫入*/printf(“ 保存失敗!n“);flag=o;if(flag=l)printfc保存成功n”);fclose(fp);elsereturn;此處為保存模塊的代碼,利用函數(shù)fwrite()函數(shù)將信息寫入fwrit

23、e(&stui,sizeof(struct student)丄fp。文件的打開 file*fp四程序運行截圖1程序界面廠 mc:usersluodandesktop§i2tb (學(xué)生信息管理柔統(tǒng))debug2.exe11生單學(xué)菜_序一-排一 一績一 一成績 一及成 績羣 成憊于統(tǒng)成成成蒙窘詢績改加除$¥績績績統(tǒng)2 輸入模塊請輸入學(xué)生總數(shù):2請輸入學(xué)生1的學(xué)號姓名:100001李明 遺籍矢學(xué)生成績:亠 嵩數(shù) 物理c語言99gg77請輸入學(xué)生2的學(xué)號姓名:100002小王遠(yuǎn)掘入學(xué)圭成績:亠 嵩教 物理 c語言5678873 顯示模塊"c:usersluodan

24、desktop®svb (學(xué)生信息苣理親統(tǒng))debug2.exe!,恪次姓名物理c語言總分平均分1100001率明99. 0088. 0077. 00264. 0088. 00n100002不王56. 0078. 0087. 00221.0073. 67乙丄uuu按任意鍵繼續(xù)4.查詢模塊i *c:userslu0d3ndeskt0p課程設(shè)計(學(xué)生信息琶理) debug2.exe"請輸入需要查詢的學(xué)號100001名次學(xué)號姓名高數(shù)物理c語言總分平均分1100001李期99.0088.0077.00264.0088.00按任意鍵繼續(xù)5 統(tǒng)計模塊r ”c:usgrslljodan&

25、#39;desktop、課程設(shè)計(學(xué)生信息管理粟統(tǒng))debug2.exeno%oo為率優(yōu)的i砂 83該.皐 %、耳 8000名 為a的 分10分 均率60續(xù) h 一該聲按6 修改模塊"c:us巳rs'luodon'desktop、課程設(shè)計(學(xué)生信息管理漿統(tǒng))debug2.exem髒。黔。鳥彌鬆。st姓名:96嘔 輸00確次重00重數(shù)8改任 請10佳曇2請10匱咼85®$港耗b dc 本 生的 為01學(xué)生 生號00該哇學(xué)理 辜10入酬入物 該輸1e輸 宀疋 新o新7 添加模塊 "c:us巳rsluodand巳sktop課程設(shè)計(學(xué)生信息管理票統(tǒng))請輸

26、入新增加的學(xué)生人數(shù):2請輸入學(xué)生1的學(xué)號姓名:100004小王遣號矢學(xué)生成績:亠 嵩教 物理 c語言88、7889魯醤燹鞋2的學(xué)號姓名: 100005大王這輒入學(xué)筆成績:亠 fl 物理 c語言875469.8 刪除模塊c:usersluodandesktopisi+ (學(xué)生信息管理漿統(tǒng))debug2.exem請輸入學(xué)生學(xué)號100004名次學(xué)號姓魚高數(shù)物理c語言總分平均分1100004四娃77.0088.0096.000.000.00是否刪除該學(xué)生成績(y/n)按仕&鍵繼續(xù)9 保存模塊gusersluodandesktop課程設(shè)計(學(xué)生信息管理) debug2.exe"是否保存學(xué)生(y/n)按存i繼續(xù)異常數(shù)據(jù)運行.t 選擇c:user5luodandesktop課程設(shè)計(學(xué)生信慝管理票統(tǒng))debug2.exer3次學(xué)號難名咼數(shù)物理c語言目41 丿3刀平均分min木王88. 0077. 0099. 00264. 0088. 00linn小王11. 0088. 000. 0099. 0033. 00f任意鍵繼續(xù)1"c:usersluodandesktop®si± (學(xué)生信息管) debug2.exe"名次學(xué)號姓名咼數(shù)物理c語言忌分平均分1100

溫馨提示

  • 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

提交評論