課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第1頁
課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第2頁
課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第3頁
課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第4頁
課程設(shè)計報告-學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計課程 程序設(shè)計基礎(chǔ) 題目 院系名稱 計算機(jī)學(xué)院 班 級 學(xué)生姓名 學(xué)號 組 員 指導(dǎo)教師 時 間 2012-5-25 1 問題要求及任務(wù)描述1.1 題目要求學(xué)生成績管理問題描述:設(shè)學(xué)生信息包括:學(xué)號、姓名、學(xué)期、每門課程的成績(每學(xué)期的課程門數(shù)是不一樣的) ,對學(xué)生的成績信息進(jìn)行管理。實(shí)現(xiàn)要求:實(shí)現(xiàn):學(xué)生信息的錄入;修改;刪除和查詢,按學(xué)期、學(xué)號、成績不及格等查詢。 輸入學(xué)生的成績信息,包含學(xué)號、姓名、性別等基本信息和各課成績 顯示全部學(xué)生各科成績信息; 對各科成績統(tǒng)計分析(總分、平均分、最高分、最低分、及格率等); 統(tǒng)計各科各分?jǐn)?shù)段人數(shù); 按學(xué)號或姓名查找并

2、顯示某個學(xué)生的各科成績; 按課程成績或總分由高到低排序顯示; 更新某個學(xué)生的基本信息或課程成績; 設(shè)計一個菜單,具有上述規(guī)定的操作要求、退出系統(tǒng)等最基本的功能。1. 2 解決問題的主要思路和方法2.1 關(guān)鍵問題關(guān)鍵問題描述2.2 擬采用解決問題的方法在此陳述解決問題的思路,準(zhǔn)備使用的算法和數(shù)據(jù)結(jié)構(gòu)等等2.3 主要算法和處理流程圖關(guān)鍵的數(shù)據(jù)流程圖3 程序?qū)崿F(xiàn)3.2 主要源代碼及說明#include#include#includeint save=0;struct student /*構(gòu)建結(jié)構(gòu)體*/char num12;char name20;char sex4;int CYuYan;int Ma

3、th;int English;int sum;int ave;typedef struct node struct student data;struct node *next;Node,*Link;void Menu() /*界面主菜單*/printf(*); printf(t1輸入學(xué)生資料ttttt2刪除學(xué)生資料n); printf(t3查詢學(xué)生成績ttttt4修改學(xué)生成績n); printf(t5顯示學(xué)生資料ttttt6統(tǒng)計學(xué)生資料n); printf(t7排序?qū)W生成績ttttt8保存學(xué)生成績n); printf(t9退出系統(tǒng)n); printf(*);void Print()print

4、f(-);void Wrong() /*錯誤警告*/printf(n警告:輸入錯誤!n);void Nofind()printf(n警告:沒有找到該學(xué)生!n);void Print1() printf( 學(xué)號t 姓名 性別 C語言成績 英語成績 數(shù)學(xué)成績 總分 平均分n); void Print2(Node *p) /*打印學(xué)生成績*/ printf(%-9s%st%3st%dt%dt%dt %dt %dn,p-data.num,,p-data.sex,p-data.CYuYan,p-data.Math,p-data.English,p-data.sum,p-data.a

5、ve); Node *Locate(Link h,char findmess,char nameornum)/*定位鏈表中符合要求的接點(diǎn)*/ Node *r; if(strcmp(nameornum,num)=0) /*按學(xué)號查詢*/ r=h-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /*按姓名查詢*/ r=h-next;while(r!=NULL) if(strcmp(,findmess)=0)

6、return r; r=r-next; return 0; void Add(Link h) /*功能1:輸入學(xué)生資料*/Node *p,*r,*s;char num12;r=h;s=h-next;while(r-next!=NULL)r=r-next;while(1)printf(請輸入學(xué)號(按0返回上菜單):);scanf(%s,num);if(strcmp(num,0)=0) break;p=(Node *)malloc(sizeof(Node); /*申請一個結(jié)構(gòu)體內(nèi)存*/strcpy(p-data.num,num);printf(請輸入姓名:); scanf(%s,p-data.na

7、me); getchar(); printf(請輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請你輸入c語言成績:); scanf(%d,&p-data.CYuYan); getchar(); printf(請輸入數(shù)學(xué)成績:); scanf(%d,&p-data.Math); getchar(); printf(請輸入英語成績:); scanf(%d,&p-data.English); getchar(); p-data.sum=p-data.English+p-data.CYuYan+p-data.Math; p-data.ave=p-dat

8、a.sum / 3; p-next=NULL; r-next=p; r=p; save=1;void Del(Link h) /*功能2:刪除學(xué)生資料*/ Node *p,*r; char findmess20; printf(請輸入要刪除的學(xué)號:); scanf(%s,findmess); p=Locate(h,findmess,num); if(p) r=h; while(r-next!=p) r=r-next; r-next=p-next; free(p); /*釋放內(nèi)存空間*/printf(n提示:該學(xué)生已經(jīng)成功刪除!n); save=1; else Nofind(); void Ch

9、a(Link h) /*功能3:查詢學(xué)生資料*/int sel; char findmess20; Node *p; printf(n1按學(xué)號查找n2按姓名查找n); scanf(%d,&sel); if(sel=1) /*按學(xué)號查找*/printf(請輸入要查找的學(xué)號:); scanf(%s,findmess); p=Locate(h,findmess,num); if(p) printf(tttt查找結(jié)果n); Print(); Print1(); Print2(p); Print(); else Nofind(); else if(sel=2) /*按姓名查找*/printf(請輸入要查

10、找的姓名:); scanf(%s,findmess); p=Locate(h,findmess,name); if(p) printf(tttt查找結(jié)果n); Print(); Print1(); Print2(p); Print(); else Nofind(); else Wrong(); void Change(Link h) /*功能4:修改學(xué)生資料*/ Node *p; char findmess20; if(!h-next) printf(n提示:沒有資料可以修改!n); return; printf(請輸入要修改的學(xué)生學(xué)號:); scanf(%s,findmess); p=Loc

11、ate(h,findmess,num); if(p) printf(請輸入新學(xué)號(原來是%s):,p-data.num); scanf(%s,p-data.num); printf(請輸入新姓名(原來是%s):,); scanf(%s,); getchar(); printf(請輸入新性別(原來是%s):,p-data.sex); scanf(%s,p-data.sex); printf(請輸入新的c語言成績(原來是%d分):,p-data.CYuYan); scanf(%d,&p-data.CYuYan); getchar(); printf(請輸

12、入新的數(shù)學(xué)成績(原來是%d分):,p-data.Math); scanf(%d,&p-data.Math); getchar(); printf(請輸入新的英語成績(原來是%d分):,p-data.English); scanf(%d,&p-data.English); p-data.sum=p-data.English+p-data.CYuYan+p-data.Math;p-data.ave=p-data.sum/3; printf(n提示:資料修改成功!n); save=1; else Nofind(); void Disp(Link h) /*功能5:顯示學(xué)生資料*/ int count

13、=0; Node *p; p=h-next; printf(tttt顯示結(jié)果n); Print(); Print1(); printf(n); while(p) Print2(p); p=p-next; Print(); printf(n); void Tongji(Link h) /*功能6:統(tǒng)計學(xué)生成績*/ float jige1,jige2,jige3,i=0;int A1=0,A2=0,A3=0,B1=0,B2=0,B3=0,C1=0,C2=0,C3=0,D1=0,D2=0,D3=0,E1=0,E2=0,E3=0;Node *pm,*pe,*pc,*ps,*pa; /*用于指向分?jǐn)?shù)最高

14、的接點(diǎn)*/ Node *r=h-next;pm=pe=pc=ps=pa=r; while(r!=NULL) if(r-data.CYuYan=pc-data.CYuYan) pc=r; if(r-data.Math=pm-data.Math) pm=r; if(r-data.English=pe-data.English) pe=r; if(r-data.sum=ps-data.sum) ps=r; if(r-data.ave=pa-data.ave) pa=r; r=r-next; r=h;while(r!=NULL)switch(r-data.CYuYan/10) case 10: cas

15、e 9: A1+; break; case 8: B1+; break; case 7: C1+; break; case 6: D1+; break; case 5: case 4: case 3: case 2: case 1: case 0: E1+; break;i+;r=r-next;jige1=(A1+B1+C1+D1)/(i-1); r=h,i=0;while(r!=NULL)switch(r-data.Math/10) case 10: case 9: A2+; break; case 8: B2+; break; case 7: C2+; break; case 6: D2+

16、; break; case 5: case 4: case 3: case 2: case 1: case 0: E2+; break;i+;r=r-next;jige2=(A2+B2+C2+D2)/(i-1);r=h,i=0;while(r!=NULL)switch(r-data.English/10) case 10: case 9: A3+; break; case 8: B3+; break; case 7: C3+; break; case 6: D3+; break; case 5: case 4: case 3: case 2: case 1: case 0: E3+; brea

17、k;i+;r=r-next;jige3=(A3+B3+C3+D3)/(i-1);printf(-統(tǒng)計結(jié)果-n); printf(總分最高者:t%s %d分n,,ps-data.sum); printf(平均分最高者:t%s %d分n,,pa-data.ave); printf(C語言最高者:t%s %d分n,,pc-data.CYuYan);printf(英語最高者:t%s %d分n,,pe-data.English); printf(數(shù)學(xué)最高者:t%s %d分n,,pm-d

18、ata.Math); printf(C語言分?jǐn)?shù)段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n,A1,B1,C1,D1,E1); printf(數(shù)學(xué)分?jǐn)?shù)段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n,A2,B2,C2,D2,E2);printf(英語分?jǐn)?shù)段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n,A3,B3,C3,D3,E3);printf(C語言及格率:%3.2f%n,jige1*100);printf(數(shù)學(xué)及格率:%3.2f%n,jige2*100);printf(英語及格率:%3.2f%n,jige3*100);printf(

19、備注:A:90100;B:8089;C:7079;D:6069;E:059n);Print(); void Sort(Link h) /*功能7:排序?qū)W生成績*/ Link hh; Node *p,*rr,*s; hh=(Link)malloc(sizeof(Node); /*用于做新的鏈表*/ hh-next=NULL; if(h-next=NULL) printf(n提示:沒有資料可以排序!n); return ; p=h-next; while(p) s=(Node*)malloc(sizeof(Node); /*新建接點(diǎn)用于保存信息*/ s-data=p-data; s-next=NU

20、LL; rr=hh; while(rr-next!=NULL & rr-next-data.sum=p-data.sum) rr=rr-next; if(rr-next=NULL) rr-next=s; else s-next=rr-next; rr-next=s; p=p-next; free(h); /*釋放內(nèi)存*/h-next=hh-next; printf(n提示:排序已經(jīng)完成!n); void Save(Link h) /*功能8:保存學(xué)生資料*/ FILE* fp; /*文件指針*/Node *p; int flag=1,count=0; fp=fopen(c:student,wb

21、); /*以只讀方式打開文件*/if(fp=NULL) printf(n提示:重新打開文件時發(fā)生錯誤!n); exit(1); p=h-next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p-next; count+; else flag=0; break; if(flag) printf(n提示:文件保存成功(有%d條記錄已經(jīng)保存)n,count); save=0; fclose(fp); /*關(guān)閉文件*/ void main()Link h;FILE *fp; /*文件指針*/ int sel; char ch; char chuangjian; int count=0; Node *r; printf(tttt學(xué)生成績管理系統(tǒng)n); h=(Node*)malloc(sizeof(Node); /*

溫馨提示

  • 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

提交評論