c語言課程設計———學生成績管理系統_第1頁
c語言課程設計———學生成績管理系統_第2頁
c語言課程設計———學生成績管理系統_第3頁
c語言課程設計———學生成績管理系統_第4頁
c語言課程設計———學生成績管理系統_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南理工大學計算機(軟件)學院 信管1002班C語言學生成績管理系統程序 學院 計算機(軟件)學院 班級 信管1002班 成員 陳昊311009030212陳梁311009030213陳俊311009030214 日期 2011-9-6 C可視化程序設計報告一.設計題目學生成績管理系統二、課題的任務:1、 所有記錄保存在一個數據文件中;2、 具備記錄添加功能;3、 查詢功能(如按學號查詢成績等);4、 計算統計功能(如統計某門課程的平均程序);5、 排序功能(如按成績排序);6、 統計并顯示信息功能;三課程設計目的了解軟件工程中的一些系統分析,模塊分析,代碼設計的概念,利用visual c+實

2、現學生成績管理系統的錄入、查詢、刪除、統計等基本操作,掌握C語言中的結構體、指針、函數(系統函數、自定義函數)、文件操作等知識。通過對系統的分析和設計,進一步鞏固C語言的學習,以提高對開發(fā)環(huán)境。四、成員承擔的任務:陳梁:完成下面子程序的編寫:a:主函數的編譯b:定位指針的Locate()函數的編譯,與調試。c:主菜單函數的編譯,及其它外部函數的編譯,與調試。 d: 任務分配,規(guī)定變量符號,及變量的初始化。 e:程序的組裝及調試。:完成下面子程序的編寫: a:統計數據函數的編譯。 b::查找學生記錄函數的編譯。 c:增加學生記錄的函數的編譯。 陳?。?完成下面子程序的編寫:a:刪除函數的編譯b:

3、修改函數的編譯c:排序函數的編譯陳昊:完成下面子程序的編寫:a:顯示函數的編譯。b:歡迎界面的制作。c:保存函數的編譯五、程序流程圖1.系統總體結構圖保存學生資料排序學生資料統計學生資料件顯示學生資料錄修改學生資料錄查詢學生資料錄刪除學生資料錄創(chuàng)建文件輸入學生資料主程序獲取幫組信息退出管理系統六.系統源代碼#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /定義一個全局變量 struct student char num11;/學號

4、char name20;/姓名 char sex4; /性別 int cgrade; /c語言成績 int mgrade; /數學成績 int egrade; /英語成績 int totle; /總分 int ave; /平均分 char neartime10;/最近更新時間 ; typedef struct node /聲明新的結構體類型Node struct student data; struct node *next; Node,*Link; void welcome()/歡迎界面 printf(" *n"); printf(" *歡 迎 使 用*n&qu

5、ot;); printf(" *河南理工大學大學學生成績管理系統 *n"); printf(" *n"); printf(" 本系統由計算機學院 信管1002班nttt傾情奉獻n"); printf("n"); printf(" 愿我們的努力n"); printf(" 能為您的學習工作帶來方便n"); printf(" 您的支持將是我們不斷創(chuàng)新的動力n"); printf(" 祝您使用愉快!ntt如有任何疑問聯系我們ntt QQ:45327564

6、2nttTel"); void menu() /主菜單 printf("t*n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 1<輸入學生資料> 2<刪除學生資料> MMM *n&

7、quot;); printf("t* MMM 3<查詢學生資料> 4<修改學生資料> MMM *n"); printf("t* MMM 5<顯示學生資料> 6<統計學生成績> MMM *n"); printf("t* MMM 7<排序學生成績> 8<保存學生資料> MMM *n"); printf("t* MMM 9<菜單導航> 0<退出系統> MMM *n"); printf("t* MMM MMM *n&q

8、uot;); printf("t* MMM MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMM i 歡迎使用河南理工大學大學學生成績管理系統i MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 出品人:夢幻小組 | 輔導老師:于金霞

9、MMM *n"); printf("t* MMM 組長:陳梁 | 夢幻組合 MMM *n"); printf("t* MMM 組員:陳梁 陳昊 陳俊 成就夢幻品質 MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t*n"); void printstart() printf("-n"); void Wrong() printf("n對不起!

10、你輸入的信息有誤!請重新輸入!n"); void Nofind() printf(" _n"); printf("nt!提示:沒有找到該學生!n"); printf(" _n"); printf("n"); void printc() / 本函數用于輸出中文 printf(" 學號t 姓名 性別 英語 數學 C語言 總分 平均分n"); void printe(Node *p)/本函數用于輸出英文 printf("%-12s%st%st%dt %dt %dt %dt %dn&

11、quot;,p->data.num,p->,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);/輸出成績 Node* Locate(Link l,char findmess,char nameornum) /該函數用于定位鏈表中符合要求的接點,并返回該指針 Node *r; if(strcmp(nameornum,"num")=0) /按學號查詢 r=l->next; while(r!=

12、NULL) if(strcmp(r->data.num,findmess)=0)/將輸入學號與已有學號對比 return r; /返回地址 r=r->next; else if(strcmp(nameornum,"name")=0) /按姓名查詢將輸入姓名與已有姓名對比 r=l->next; while(r!=NULL) if(strcmp(r->,findmess)=0) return r; /返回地址 r=r->next; return 0; void Add(Link l) /增加學生 Node *p,*r,*s; /定

13、義Node型指針 char num11; r=l; s=l->next; while(r->next!=NULL) r=r->next; /將指針置于最末尾 while(1) printf("請您輸入學號(以'0'返回上一級菜單:)"); scanf("%s",num); if(strcmp(num,"0")=0) break; while(s) if(strcmp(s->data.num,num)=0)/將新輸入學號與已有學號對比 printf("!提示:學號為'%s'

14、;的學生已經存在,若要修改請你選擇'4 修改'!n",num); printstart(); printc(); printe(s); printstart(); printf("n"); return; s=s->next;/指向下一個地址 p=(Node *)malloc(sizeof(Node);/在內存中分配長度與node相同的連續(xù)空間用于存儲新數據 strcpy(p->data.num,num); printf("請你輸入姓名:"); scanf("%s",p->

15、); getchar(); printf("請你輸入性別:"); scanf("%s",p->data.sex); getchar(); printf("請你輸入c語言成績:"); scanf("%d",&p->data.cgrade); getchar(); printf("請你輸入數學成績:"); scanf("%d",&p->data.mgrade); getchar(); printf("請你輸入英語成績:");

16、scanf("%d",&p->data.egrade); getchar(); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; /求總分 p->data.ave=p->data.totle / 3;/信息輸入已經完成 p->next=NULL; r->next=p; r=p; shoudsave=1; void Qur(Link l) /查詢學生 int sel; char findmess20; Node *p; if(!l->nex

17、t)/當l->next=NULL時成立 printf("n*>提示:沒有資料可以查詢!n"); return; printf("n*>1按學號查找n*>2按姓名查找n"); scanf("%d",&sel); if(sel=1)/學號 printf("請你輸入要查找的學號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) printf("tttt查找結果n"

18、;); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /姓名 printf("請你輸入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) printf("tttt查找結果n"); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wro

19、ng(); void Del(Link l) /刪除函數 int sel; Node *p,*r; char findmess20; if(!l->next) printf("n*>提示:沒有資料可以刪除!n"); return; printf("n*>1按學號刪除n*>2按姓名刪除n"); scanf("%d",&sel); if(sel=1) printf("請你輸入要刪除的學號:"); scanf("%s",findmess); p=Locate(l,fin

20、dmess,"num"); if(p) r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:該學生已經成功刪除!n"); printf("tttt請按任意鍵返回。n"); getchar(); shoudsave=1; else Nofind(); else if(sel=2) printf("請你輸入要刪除的姓名:"); scanf("%s",findmess); p=

21、Locate(l,findmess,"name"); if(p) r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:該學生已經成功刪除!n"); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) /修改函數模塊 Node *p; char findmess20; if(!l->next) printf("n*>提示:沒有資料可以修改!

22、n"); return; printf("請你輸入要修改的學生學號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); void printstart1(); if(p) printf("請你輸入新學號(原來是%s):",p->data.num); scanf("%s",p->data.num); printf("請你輸入新姓名(原來是%s):",p->); scanf(&q

23、uot;%s",p->); getchar(); printf("請你輸入新性別(原來是%s):",p->data.sex); scanf("%s",p->data.sex); printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade); getchar(); printf("請你輸入新的數學成績(原來是%d分):",p->data.m

24、grade); scanf("%d",&p->data.mgrade); getchar(); printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade); scanf("%d",&p->data.egrade); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; p->data.ave=p->data.totle/3; printf("n*>提示:資

25、料修改成功!n"); shoudsave=1; else Nofind(); void Disp(Link l)/顯示函數模塊 int count=0; Node *p; p=l->next; if(!p) printf("n*>提示:沒有資料可以顯示!n"); return; printf("tttt顯示結果n"); printstart(); printc(); printf("n"); while(p) printe(p); p=p->next; printstart(); printf("

26、n"); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /用于指向分數最高的接點 Node *r=l->next; if(!r) printf("n*>提示:沒有資料可以統計!n"); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r->data.cgrade>=pc->data.cgrade) pc=r; if(r->data.mgrade>=pm->data.mgrade) pm=r; if(r->data.egrad

27、e>=pe->data.egrade) pe=r; if(r->data.totle>=pt->data.totle) pt=r; if(r->data.ave>=pa->data.ave) pa=r; r=r->next; printf("-統計結果-n"); printf("*總分最高者:t%s %d分n",pt->,pt->data.totle); printf("*平均分最高者:t%s %d分n",pa->,pa->

28、;data.ave); printf("*英語最高者:t%s %d分n",pe->,pe->data.egrade); printf("*數學最高者:t%s %d分n",pm->,pm->data.mgrade); printf("*c語言最高者:t%s %d分n",pc->,pc->data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)ma

29、lloc(sizeof(Node); /用于做新的連表 ll->next=NULL; if(l->next=NULL) printf("n*>提示:沒有資料可以排序!n"); return ; p=l->next; while(p) s=(Node*)malloc(sizeof(Node); /新建接點用于保存信息 s->data=p->data; s->next=NULL; rr=ll; while(rr->next!=NULL && rr->next->data.totle>=p->

30、data.totle) rr=rr->next; if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(l); l->next=ll->next; printf("n*>提示:排序已經完成!n"); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:student","wb"); i

31、f(fp=NULL) printf("n*>提示:重新打開文件時發(fā)生錯誤!n"); exit(1); p=l->next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next; count+; else flag=0; break; if(flag) printf("n*>提示:文件保存成功.(有%d條記錄已經保存.)n",count); shoudsave=0; fclose(fp); void help() printf("歡迎進入河南理工大學學生成績管理系統菜單

32、導航ntt我們將竭誠為您服務n"); printf("以下是各菜單功能簡介:"); printf("1.<輸入>:此功能用于錄入新生學號,性別,及各科成績。n"); printf("2.<刪除>:用于注銷離校學生資料。n"); printf("3.<查詢>:此功能下設兩個選項,分別用于學號查詢和姓名查詢。n"); printf("4.<修改>;用來改動已錄入的學生信息。n"); printf("5.<顯示>:用來顯示

33、所有學生信息。n"); printf("6.<統計>:選出總成績第一,及單科第一的學生n"); printf("7.<排序>:用來對學生成績進行排序,但不顯示。n"); printf("8.<保存>:用于存儲新錄入的學生信息,在每次操作最后必須保存。n"); printf("如您人有疑問請聯系我們"); printf("tttt請按任意鍵返回。n"); getchar(); void main() Link l;/鏈表 FILE *fp; /文件指針 int sel; char ch; char jian; int count=0; Node *p,*r; welcome(); printf("nnttttttt請按任意鍵繼續(xù)n"); getchar(); printf("tt*"); printf("tttt 學生成績管理系統n"); printf("tt*"); l=(Node*)malloc(sizeof(N

溫馨提示

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

評論

0/150

提交評論