C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第1頁(yè)
C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第2頁(yè)
C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第3頁(yè)
C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第4頁(yè)
C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 沈陽(yáng)航空航天大學(xué)課 程 設(shè) 計(jì) 報(bào) 告大作業(yè)名稱:C語(yǔ)言課程設(shè)計(jì)大作業(yè)題目:學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)院(系):計(jì)算機(jī)學(xué)院專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):學(xué) 號(hào):姓 名:指導(dǎo)教師:完成日期:2016年12月24日目 錄第1章 概要設(shè)計(jì)11.1題目的內(nèi)容與要求11.2總體結(jié)構(gòu)1第2章 詳細(xì)設(shè)計(jì)22.1主模塊22.2輸入模塊32.3顯示模塊32.4修改模塊4 2.5刪除模塊42.6查詢模塊52.7統(tǒng)計(jì)模塊6第3章 調(diào)試分析7第4章 使用說(shuō)明8參考文獻(xiàn)12附 錄(程序清單)10第1章 概要設(shè)計(jì)1.1題目的內(nèi)容與要求內(nèi)容: 學(xué)生成績(jī)信息包括:姓名、學(xué)號(hào)、語(yǔ)文、數(shù)學(xué)、英語(yǔ)。 實(shí)現(xiàn)的主要功能有: 1)信息維護(hù)

2、。包括學(xué)生成績(jī)的輸入、按學(xué)號(hào)刪除、按學(xué)號(hào)修改等。 2) 信息查詢。輸入學(xué)號(hào)或姓名,顯示出該生三個(gè)科目的成績(jī),計(jì)算出三科總分 并顯示,按總分將所有學(xué)生成績(jī)排序,顯示出該生的名次。 3)成績(jī)統(tǒng)計(jì)。先輸入任意一個(gè)科目,接著選擇a或b來(lái)分別顯示平均分或統(tǒng)計(jì) 分?jǐn)?shù)段學(xué)生,若選擇a,則直接顯示出該科目的平均分;若選擇b,則提示 用戶輸入一個(gè)分?jǐn)?shù)段,顯示所有該科目屬于該分?jǐn)?shù)段內(nèi)的學(xué)生信息,并給出 學(xué)生總數(shù)。要求: 1)系統(tǒng)以菜單方式工作。在不同的界面為用戶給出具體提示。 2)系統(tǒng)利用C語(yǔ)言實(shí)現(xiàn),源程序要有適當(dāng)?shù)淖⑨尅?3)采用VC環(huán)境進(jìn)行運(yùn)行調(diào)試。1.2總體結(jié)構(gòu)本程序主要分為七個(gè)模塊(功能模塊圖見(jiàn)圖1.1)

3、:結(jié)構(gòu)體模塊,輸入模塊,顯示模塊,修改模塊,刪除模塊,查詢模塊,統(tǒng)計(jì)模塊。結(jié)構(gòu)體模塊:建立一個(gè)結(jié)構(gòu)體模塊,為鏈表存信息用。輸入模塊:鍵盤(pán)輸入每個(gè)學(xué)生的信息,并保存在文件中。顯示模塊:顯示全部學(xué)生的具體信息。修改模塊:修改某個(gè)學(xué)生的成績(jī)信息。刪除模塊:刪除某個(gè)學(xué)生的全部信息。查詢模塊:查詢某個(gè)學(xué)生的具體信息。統(tǒng)計(jì)模塊:通過(guò)功能選擇,統(tǒng)計(jì)并顯示某一科目的平均分或某分?jǐn)?shù)段學(xué)生的具體信息。 學(xué)生成績(jī)管理系統(tǒng)輸入模塊修改模塊統(tǒng)計(jì)模塊查詢模塊刪除模塊顯示模塊主模塊 圖1.1 功能模塊圖第2章 詳細(xì)設(shè)計(jì)2.1主模塊 開(kāi)始控制整個(gè)程序的運(yùn)行,控制菜單操作,通過(guò)主函數(shù)模塊分別調(diào)用各個(gè)模塊,實(shí)現(xiàn)各項(xiàng)功能,流程如圖

4、2.1所示。 顯示主菜單選0退出 Y選1-6 N N 執(zhí)行具體功能 Y 顯示結(jié)果 結(jié)束 圖2.1 主模塊流程圖注釋:1. 顯示主菜單;2. 選擇不同序號(hào)執(zhí)行不同功能;2.2輸入模塊 input()輸入所有學(xué)生信息并保存,流程如圖2.2所示。printf("輸入學(xué)號(hào):");printf("輸入姓名:");printf("第%d門(mén)成績(jī)的分?jǐn)?shù):",j+1);計(jì)算總分、平均分 printf("nn信息保存成功!恭喜!nn"); 結(jié)束圖2.2 輸入模塊流程圖注釋:1. 循環(huán)輸入每個(gè)學(xué)生的信息;2. 保存所有信息2.3顯示模塊

5、Print() 顯示所有學(xué)生的具體信息,流程圖如2.3所示。 顯示信息 結(jié)束 圖2.3 顯示模塊流程圖 注釋:1. 選擇號(hào)好功能;2. 顯示全部學(xué)生的具體信息。2.4修改模塊xiugai()修改某個(gè)學(xué)生各個(gè)科目的成績(jī),流程圖如2.4所示。printf("n請(qǐng)輸入要修改的同學(xué)的學(xué)號(hào):");結(jié)束是否繼續(xù)修改?printf("n修改成功!恭喜!n");printf("n請(qǐng)輸入要修改學(xué)生修改后的的信息n"); Y N 圖2.4 修改模塊流程圖注釋:1. 輸入要修改學(xué)生的學(xué)號(hào);2. 輸入要修改的科目信息;3. 修改成功,是否要繼續(xù)修改。是,繼續(xù)

6、;否,回到主菜單。2.5刪除模塊 按學(xué)號(hào)刪除某學(xué)生的全部信息,流程圖如圖2.5所示。printf("n請(qǐng)輸入要?jiǎng)h除的同學(xué)的學(xué)號(hào):");shanchu()是否刪除? printf("n該同學(xué)信息如下:n"); Y是否繼續(xù)刪除?Yprintf("n刪除成功!恭喜!n"); N結(jié)束N 圖2.5 刪除模塊流程圖注釋:1. 輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào);2. 顯示該生信息,是否刪除。是,刪除;否,是否繼續(xù)操作。3. 是否繼續(xù)刪除。是,重復(fù)上述操作;否,退出回到主菜單。2.6查詢模塊chaxun() 輸入要查詢學(xué)生的學(xué)號(hào),顯示該生具體信息,流程圖如圖2

7、.6所示。printf("n請(qǐng)輸入學(xué)生學(xué)號(hào):");顯示該生具體信息是否繼續(xù)查詢?結(jié)束Y N 圖2.6 查詢模塊流程圖注釋:1. 輸入要查詢的學(xué)生的學(xué)號(hào);2. 顯示該生的具體信息;3. 是否繼續(xù)查詢。是,繼續(xù)查詢下一位;否,回到主菜單。2.7統(tǒng)計(jì)模塊tongji() 通過(guò)選擇不同功能,顯示某個(gè)科目的平均分或某分?jǐn)?shù)段學(xué)生的具體信息,流程圖如圖2.7所示。 結(jié)束是否繼續(xù)查詢其他科目?顯示屬于該分?jǐn)?shù)段的學(xué)生;學(xué)生總數(shù) printf("nn該科目的平均成績(jī)?yōu)椋?.2fn",ave);計(jì)算該科目平均分printf("n請(qǐng)輸入分?jǐn)?shù)段:_ 空格_ n"

8、;);printf("n輸入一個(gè)科目:");選擇功能a或bcase a:case b:Y N 圖2.7 統(tǒng)計(jì)模塊流程圖注釋:1. 通過(guò)菜單選擇科目;2. 通過(guò)菜單選擇a或b功能,分別顯示該科目平均分或某分?jǐn)?shù)段學(xué)生信息;3. 是否繼續(xù)查詢?是,繼續(xù);否,回到主菜單。第3章 調(diào)試分析在這次課程設(shè)計(jì)中,程序編寫(xiě)的過(guò)程中遇到了很多問(wèn)題,主要是函數(shù)實(shí)現(xiàn)方面問(wèn)題較多。問(wèn)題1:查詢函數(shù)chaxun( )中,會(huì)造成數(shù)據(jù)混亂,原因是for循環(huán)中某行代碼運(yùn)用錯(cuò)誤,如下: for(i=0;i<n;i+) if(stui.num=x) k=i;/*找到要查詢的同學(xué)學(xué)號(hào),并用k記下其下標(biāo)*/

9、OutputOneStudent(k); 將OutputOneStudent(k);拿出后,查詢功能正常實(shí)現(xiàn)。正確編寫(xiě)如下: for(i=0;i<n;i+) if(stui.num=x) k=i;/*找到要查詢的同學(xué)學(xué)號(hào),并用k記下其下標(biāo)*/ OutputOneStudent(k); 問(wèn)題2:統(tǒng)計(jì)函數(shù)tongji(),功能實(shí)現(xiàn)完后不能回到主菜單。解決方法是,把功能函數(shù)gongneng()其中的while循環(huán)刪掉。 第4章 使用說(shuō)明運(yùn)行截圖如下:1.輸入成績(jī)2.信息顯示3.修改信息4.刪除信息5.查詢信息6.1統(tǒng)計(jì)信息-科目平均分6.2統(tǒng)計(jì)信息-科目某分?jǐn)?shù)段學(xué)生信息7.退出系統(tǒng)參考文獻(xiàn)1.

10、 王敬華,C語(yǔ)言程序設(shè)計(jì)教程(第二版),清華大學(xué)出版社,2009年8月2. 譚浩強(qiáng),C語(yǔ)言程序設(shè)計(jì)教程(第二版),清華大學(xué)出版社,1999年12月3. 譚浩強(qiáng),C語(yǔ)言程序設(shè)計(jì)題解與上機(jī)指導(dǎo),清華大學(xué)出版社,2000年11月4. 田淑清,C語(yǔ)言程序設(shè)計(jì)輔導(dǎo)與習(xí)題集,中國(guó)鐵道出版社,2000年1月5. 張榮梅、梁曉林,Visual C+實(shí)用教程,冶金工業(yè)出版社,2004年附 錄(程序清單)程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 3struct studentint n

11、um; /學(xué)號(hào)char name20; /姓名float score3; /三門(mén)課成績(jī)float sum; /總分float aver; /平均分stuN;void menu(); /主菜單功能void input(); /輸入信息到結(jié)構(gòu)體中void save(int x); /保存stud.dat文件函數(shù)void print(); /輸出顯示所有學(xué)生信息void SaveAllStudent(int n); /保存全部學(xué)生信息void xiugai(int n); /按學(xué)號(hào)修改成績(jī)int shanchu(int n); /按學(xué)號(hào)刪除void OutputOneStudent(int i);

12、/查詢一個(gè)學(xué)生的信息void chaxun(int n); /按學(xué)號(hào)查詢成績(jī)void tongji(); /統(tǒng)計(jì)科目信息void gongneng(int x); /a或b功能分別顯示科目平均分或分?jǐn)?shù)段學(xué)生信息int main() printf("*n"); printf("* *n"); printf("* Hwadee &學(xué)生成績(jī)管理系統(tǒng)& Hwadee *n"); printf("* *n"); printf("*nnn"); printf("*歡迎使用*n&qu

13、ot;);while(1)menu();return 0;/*主菜單*/void menu()int choice; int n=N; printf("n請(qǐng)選擇功能:n");printf("n1:輸入成績(jī)n2:顯示信息n3:修改成績(jī)n4:刪除信息n5:查詢成績(jī)n6:成績(jī)統(tǒng)計(jì)n0:退出系統(tǒng)nn");printf("n請(qǐng)選擇序號(hào):n");scanf("%d",&choice);switch(choice)case 1:input();save(N);break;case 2:print();break;case

14、 3:xiugai(n);break;case 4:shanchu(n);break;case 5:chaxun(n);break;case 6:tongji();break;case 0:printf ("n謝謝使用,再見(jiàn)!nn");exit (-1);break;default:printf("輸入錯(cuò)誤!n");break;/*寫(xiě)入函數(shù)*/void input()int i,j;printf("n輸入信息n");for(i=0;i<N;i+)printf("輸入學(xué)號(hào):");scanf("%d&q

15、uot;,&stui.num);printf("輸入姓名:");scanf("%s",&);for(j=0;j<N;j+)printf("第%d門(mén)成績(jī)的分?jǐn)?shù):",j+1);scanf("%f",&stui.scorej);stui.sum=stui.score0+stui.score1+stui.score2;stui.aver=stui.sum/3;printf("n");/*寫(xiě)入文件*/void save(int x) FILE *fp;/*定

16、義文件指針用于向文件讀入數(shù)據(jù)*/ int i; if(fp=fopen("student.dat","rb+")=NULL)/*以二進(jìn)制讀,寫(xiě)方式打開(kāi)文件*/ printf("cannot open filen"); exit(1); for(i=0;i<N;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf("file write errorn"); fclose(fp); printf("nn信息保存成功!恭喜!nn&q

17、uot;);/*顯示全部學(xué)生信息*/void print()int i;printf("學(xué)號(hào) 姓名 語(yǔ)文 數(shù)學(xué) 英語(yǔ) 總分 平均分n");for(i=0;i<N;i+)printf("%d %s %.2f %.2f %.2f %.2f %.2fn",stui.num,,stui.score0,stui.score1,stui.score2,stui.sum,stui.aver);/*保存全部學(xué)生信息*8*/void SaveAllStudent(int n) FILE *fp; if(fp=fopen("student.

18、dat","wb")=NULL) printf("文件打開(kāi)失敗!n"); exit(1); fwrite(stu,sizeof(struct student),n,fp); fclose(fp);/*修改學(xué)生信息*/void xiugai(int n) struct student temp;int k=-1,x,i; char c1='y' while(c1='y') printf("n請(qǐng)輸入要修改的同學(xué)的學(xué)號(hào):"); scanf("%d",&x); for(i=

19、0;i<n;i+) if(x=stui.num) k=i;/*找到要修改的同學(xué)學(xué)號(hào),并用k記下其下標(biāo)*/ break; if(k<0) printf("n輸入學(xué)號(hào)有誤,請(qǐng)重新輸入!"); else printf("n請(qǐng)輸入要修改學(xué)生修改后的的信息n"); printf("語(yǔ)文(空格)數(shù)學(xué)(空格)英語(yǔ)tn"); scanf("%f %f %f",&temp.score0,&temp.score1,&temp.score2); temp.sum=(temp.score0+temp.s

20、core1+temp.score2); temp.aver=(temp.score0+temp.score1+temp.score2)/3;stuk.score0=temp.score0;/*修改該學(xué)生信息*/ stuk.score1=temp.score1; stuk.score2=temp.score2;stuk.sum=temp.sum;stuk.aver=temp.aver;printf("n修改成功!恭喜!n"); break; SaveAllStudent(k); printf("n繼續(xù)修改操作嗎?"); printf("n繼續(xù)修改

21、請(qǐng)按y;不進(jìn)行修改請(qǐng)按nn");getchar(); c1=getchar(); printf("n按任意鍵繼續(xù)!n"); getchar();/*刪除學(xué)生信息*/int shanchu(int n) int i,k=-1,x; char c1='y',c2; while(c1='y') c2='n' printf("n請(qǐng)輸入要?jiǎng)h除的同學(xué)的學(xué)號(hào):"); scanf("%d",&x); for(i=0;i<n;i+) if(x=stui.num) k=i;/*找到要

22、刪除的同學(xué)學(xué)號(hào),并用k記下其下標(biāo)*/ break; if(k<0) printf("n輸入學(xué)號(hào)有誤,請(qǐng)重新輸入!"); else printf("n該同學(xué)信息如下:n"); OutputOneStudent(k); printf("nn確定刪除?n"); printf("確定進(jìn)行刪除請(qǐng)按y;不進(jìn)行刪除請(qǐng)按nn");getchar();c2=getchar(); if(c2='y') for(i=k;i<n;i+) stui=stui+1; n-;/*學(xué)生人數(shù)減1*/ printf(&qu

23、ot;n刪除成功!恭喜!n"); else printf("n取消刪除!n"); printf("n繼續(xù)刪除操作嗎?"); printf("n繼續(xù)刪除請(qǐng)按y;不進(jìn)行刪除請(qǐng)按nn"); getchar(); c1=getchar(); save(n); printf("n按任意鍵繼續(xù)!n"); getchar(); return (n);/*查詢一個(gè)學(xué)生信息*/void OutputOneStudent(int i) printf("學(xué)號(hào):%d 姓名:%s n",stui.num,stu

24、); printf("語(yǔ)文:%.1f 數(shù)學(xué):%.1f 英語(yǔ):%.1f 總分:%.1f 平均分:%.2fn",stui.score0,stui.score1,stui.score2,stui.sum,stui.aver);/*按學(xué)號(hào)查詢學(xué)生信息*/void chaxun(int n) int i,j,k,x; char c='y' while(c='y') k=-1; printf("n請(qǐng)輸入學(xué)生學(xué)號(hào):"); scanf("%d",&x); if(x>3|x<1) brea

25、k; for(i=0;i<n;i+) if(stui.num=x) k=i;/*找到要查詢的同學(xué)學(xué)號(hào),并用k記下其下標(biāo)*/ OutputOneStudent(k); stux-1.num=1; /該生排名 for(j=0;j<3;j+) if(stuj.sum>stux-1.sum)stux-1.num+; printf("n該生排名為第%d名。n",stux-1.num); printf("nn繼續(xù)查詢其他學(xué)生信息嗎?"); printf("n繼續(xù)查詢請(qǐng)按y;不進(jìn)行查詢請(qǐng)按nn");getchar(); c=get

26、char(); printf("n按任意鍵繼續(xù)!n"); getchar();/*學(xué)生信息統(tǒng)計(jì)操作*/void tongji()char c='y' while(c='y') int x; printf("n輸入一個(gè)科目:"); printf("nn1:語(yǔ)文n2:數(shù)學(xué)n3:英語(yǔ)n0:退出"); printf("nn請(qǐng)選擇序號(hào):"); scanf("%d",&x); if(x>0&&x<6) switch(x) case 1: g

27、ongneng(x);break; case 2: gongneng(x);break; case 3:gongneng(x);break; case 0: exit (-1); break; default: printf("輸入錯(cuò)誤!n"); printf("nn繼續(xù)查詢其他科目信息嗎?"); printf("n繼續(xù)查詢請(qǐng)按y;不進(jìn)行查詢請(qǐng)按nn");getchar(); c=getchar();/*選擇a或b來(lái)分別顯示該科平均分或統(tǒng)計(jì)分?jǐn)?shù)段學(xué)生*/void gongneng(int x) printf("nn請(qǐng)選擇功能:n"); printf("na:顯示該科目平均分nb:統(tǒng)計(jì)分?jǐn)?shù)段學(xué)生n"); printf("n請(qǐng)選擇a或b:");char c; scanf("%s",&c);s

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論