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

下載本文檔

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

文檔簡介

1、中南大學機電工程工程學院 機械0805班1、 所有記錄保存在一個數(shù)據(jù)文件中;2、 具備記錄添加功能;3、 查詢功能(如按學號查詢成績等);4、 計算統(tǒng)計功能(如統(tǒng)計某門課程的平均程序);5、 排序功能(如按成績排序);6、 統(tǒng)計并顯示信息功能;、程序流程圖1.系統(tǒng)總體結構圖保存學生資料排序學生資料統(tǒng)計學生資料件顯示學生資料錄修改學生資料錄查詢學生資料錄刪除學生資料錄創(chuàng)建文件輸入學生資料主程序獲取幫組信息退出管理系統(tǒng)2.main()函數(shù)流程圖100I=(Node*)malloc(sizeof(Node)I->next=NULL;r=I;fp=fopen(“C:student”,”rb”)f

2、p=NULL無文件,創(chuàng)建?fp=fopen(“C:student”,”rb”)Exitmain()開始導入文件!feof(fp)p=(Node*)malloc(sizef(Node)fread(p,sizeof(Node),1,fp)P->next=NULL;r->next=p;R=p;count+fclose(fp)menu()1234576980非0YN假真假真3.Add函數(shù)流程圖1入口r->next不為空指針后移到表尾?1=0?輸出提示輸入numS指針為空?s->data.num=num相關輸出指針后移到表尾申請空間Anum=0NOYESNONOYESYESYES

3、YESNOYESNOYESNOYESNO輸出提示語輸入對應信息計算總分和平均分指針移到表尾結束Strcpy(p->data.num,num)A4.Del函數(shù)流程圖刪除該學生信息輸出找到的學生信息學生不存在結束有此學號?輸入要刪除的學號入口2YesNo5.Qur函數(shù)流程圖3入口!l->next輸出提示語輸入selsel=11輸出提示語輸入學號定為結點指針為空輸出成績sel=22輸出提示語輸入姓名定為結點指針為空輸出成績輸出提示語BB結束NOYESYESNOYESNONOYESYESNO6.Modify函數(shù)流程圖NoYes4入口輸入要修改的學號有此學號?結束輸出學生不存在輸出找到的學生

4、信息輸入新的學生相關信息7.Disp函數(shù)流程圖結束!p沒有可供現(xiàn)實的數(shù)據(jù)顯示已有信息P調用printc函數(shù)p=p->next打出星號假真0非058.Tongji函數(shù)流程圖6入口!l pm=pe=pc=pt=pa=rr!=NULL找到各量最大值指針后移到表尾?“輸出各統(tǒng)計結果結束輸出提示語YESNONOYES9.Sort函數(shù)流程圖7入 口分數(shù)比較排序點值小排序點值大后移排在首位插入中間位置到表尾?記錄名次結 束NoYesNoYes10.Save函數(shù)流程圖8fp=fopen(“c:student”,”rb”)fp=NULL文件打開錯誤退出p=I->nextpFwrite(p,sizeo

5、f(Node),1,fp)=1p=p->nextcount+flog=0flog保存成功shoudsave=0fclose(fp)假真0非0真假0非0返回menu11.locate函數(shù)流程圖10Strcmp(nameornum,num)=0r=I>nextr!=NULL Strcmp(r->data.num,findmess)=0return rr=r>nextStrcmp(nameornum,name)=0r=I>nextr!=NULL Strcmp(r->data.num,findmess)=0return rr=r>next返回一個地址或0假真0

6、非0假真假真0非0假真六.系統(tǒng)實際運行效果1. 歡迎界面2. 主菜單3. 輸入學生資料4.刪除學生資料8.保存4. 查詢5.修改6.顯示7.統(tǒng)計8.排序9.排序結果10.幫助11.退出七.系統(tǒng)源代碼#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /定義一個全局變量 struct student char num11;/學號 char name20;/姓名 char sex4; /性別 int cgrade; /c語言成績 int m

7、grade; /數(shù)學成績 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"); printf(" *中南大學學生成績管理系統(tǒng) *n"); printf(&qu

8、ot; *n"); printf(" 本系統(tǒng)由中南大學機械0805班夢幻小組nttt傾情奉獻n"); printf("n"); printf(" 愿我們的努力n"); printf(" 能為您的學習工作帶來方便n"); printf(" 您的支持將是我們不斷創(chuàng)新的動力n"); printf(" 祝您使用愉快!ntt如有任何疑問聯(lián)系我們ntt QQ:453275642nttTel"); void menu() /主菜單 printf(&quo

9、t;t*n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 1<輸入學生資料> 2<刪除學生資料> MMM *n"); printf("t* MMM 3<查詢學生資料> 4<修改學生資料&g

10、t; MMM *n"); printf("t* MMM 5<顯示學生資料> 6<統(tǒng)計學生成績> MMM *n"); printf("t* MMM 7<排序學生成績> 8<保存學生資料> MMM *n"); printf("t* MMM 9<菜單導航> 0<退出系統(tǒng)> MMM *n"); printf("t* MMM MMM *n"); printf("t* MMM MMM *n"); printf("t*

11、 MMM * MMM *n"); printf("t* MMM i 歡迎使用中南大學學生成績管理系統(tǒng)i MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 出品人:夢幻小組 | 輔導老師:夏建芳 MMM *n"); printf("t* MMM 組長:魏永濤 | 夢幻組合 MMM *n"

12、); printf("t* MMM 組員:王棟 王義 巫培宇| 成就夢幻品質 MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t*n"); void printstart() printf("-n"); void Wrong() printf("n對不起!你輸入的信息有誤!請重新輸入!n"); void Nofind() printf(" _n&qu

13、ot;); printf("nt!提示:沒有找到該學生!n"); printf(" _n"); printf("n"); void printc() / 本函數(shù)用于輸出中文 printf(" 學號t 姓名 性別 英語 數(shù)學 C語言 總分 平均分n"); void printe(Node *p)/本函數(shù)用于輸出英文 printf("%-12s%st%st%dt %dt %dt %dt %dn",p->data.num,p->,p->data.sex,p->

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

15、eturn 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; /定義Node型指針 char num11; r=l; s=l->next; while(r->next!=

16、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'的學生已經(jīng)存在,若要修改請你選擇'4 修改'!n",num); printstart()

17、; printc(); printe(s); printstart(); printf("n"); return; s=s->next;/指向下一個地址 p=(Node *)malloc(sizeof(Node);/在內存中分配長度與node相同的連續(xù)空間用于存儲新數(shù)據(jù) strcpy(p->data.num,num); printf("請你輸入姓名:"); scanf("%s",p->); getchar(); printf("請你輸入性別:"); scanf("%s&

18、quot;,p->data.sex); getchar(); printf("請你輸入c語言成績:"); scanf("%d",&p->data.cgrade); getchar(); printf("請你輸入數(shù)學成績:"); scanf("%d",&p->data.mgrade); getchar(); printf("請你輸入英語成績:"); scanf("%d",&p->data.egrade); getchar(); p

19、->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; /求總分 p->data.ave=p->data.totle / 3;/信息輸入已經(jīng)完成 p->next=NULL; r->next=p; r=p; shoudsave=1; void Qur(Link l) /查詢學生 int sel; char findmess20; Node *p; if(!l->next)/當l->next=NULL時成立 printf("n*>提示:沒有資料可以查詢!n&qu

20、ot;); 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"); printstart(); printc(); printe(p); printstart(); else

21、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 Wrong(); void Del(Link l) /刪除函數(shù) int sel; Node *p,*r; char fin

22、dmess20; 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,findmess,"num"); if(p) r=l; while(r->next!=p) r=

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

24、t;next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:該學生已經(jīng)成功刪除!n"); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) /修改函數(shù)模塊 Node *p; char findmess20; if(!l->next) printf("n*>提示:沒有資料可以修改!n"); return; printf("請你輸入要修改的學生學號:"); scanf

25、("%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("%s",p->); getchar(); printf("請你輸

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

27、har(); 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*>提示:資料修改成功!n"); shoudsave=1; else Nofind(); void Disp(Link

28、 l)/顯示函數(shù)模塊 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("n"); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /用

29、于指向分數(shù)最高的接點 Node *r=l->next; if(!r) printf("n*>提示:沒有資料可以統(tǒng)計!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.egrade>=pe->data.egrade) pe=r; if(r->data.totle>=pt

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

31、.name,pe->data.egrade); printf("*數(shù)學最高者: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)malloc(sizeof(Node); /用于做新的連表 ll->next=NULL; if(l->nex

32、t=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->data.totle) rr=rr->next; if(rr->next=NULL) rr->ne

33、xt=s; else s->next=rr->next; rr->next=s; p=p->next; free(l); l->next=ll->next; printf("n*>提示:排序已經(jīng)完成!n"); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:student","wb"); if(fp=NULL) printf("n*>提示:重新打開文件時發(fā)生錯誤!n"); exi

34、t(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條記錄已經(jīng)保存.)n",count); shoudsave=0; fclose(fp); void help() printf("歡迎進入中南大學學生成績管理系統(tǒng)菜單導航ntt我們將竭誠為您服務n"); printf("以下是各菜單功能簡介:"); pri

35、ntf("1.<輸入>:此功能用于錄入新生學號,性別,及各科成績。n"); printf("2.<刪除>:用于注銷離校學生資料。n"); printf("3.<查詢>:此功能下設兩個選項,分別用于學號查詢和姓名查詢。n"); printf("4.<修改>;用來改動已錄入的學生信息。n"); printf("5.<顯示>:用來顯示所有學生信息。n"); printf("6.<統(tǒng)計>:選出總成績第一,及單科第一的學生n

36、"); printf("7.<排序>:用來對學生成績進行排序,但不顯示。n"); printf("8.<保存>:用于存儲新錄入的學生信息,在每次操作最后必須保存。n"); printf("如您人有疑問請聯(lián)系我們"); 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(&qu

溫馨提示

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

評論

0/150

提交評論