課程設(shè)計(jì)C語言可視化程序?qū)W生成績管理系統(tǒng)_第1頁
課程設(shè)計(jì)C語言可視化程序?qū)W生成績管理系統(tǒng)_第2頁
課程設(shè)計(jì)C語言可視化程序?qū)W生成績管理系統(tǒng)_第3頁
課程設(shè)計(jì)C語言可視化程序?qū)W生成績管理系統(tǒng)_第4頁
課程設(shè)計(jì)C語言可視化程序?qū)W生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言可視化程序設(shè)計(jì)報(bào)告行政班級 機(jī)械0805 姓名 魏永濤 學(xué)號 0806080524 指導(dǎo)老師 夏建芳課題名稱 學(xué)生成績管理系統(tǒng)C可視化程序設(shè)計(jì)報(bào)告一.設(shè)計(jì)題目學(xué)生成績管理系統(tǒng)二、課題的任務(wù):1、 所有記錄保存在一個(gè)數(shù)據(jù)文件中;2、 具備記錄添加功能;3、 查詢功能(如按學(xué)號查詢成績等);4、 計(jì)算統(tǒng)計(jì)功能(如統(tǒng)計(jì)某門課程的平均程序);5、 排序功能(如按成績排序);6、 統(tǒng)計(jì)并顯示信息功能;三課程設(shè)計(jì)目的了解軟件工程中的一些系統(tǒng)分析,模塊分析,代碼設(shè)計(jì)的概念,利用visual c+實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)的錄入、查詢、刪除、統(tǒng)計(jì)等基本操作,掌握C語言中的結(jié)構(gòu)體、指針、函數(shù)(系統(tǒng)函數(shù)、自定義函

2、數(shù))、文件操作等知識(shí)。通過對系統(tǒng)的分析和設(shè)計(jì),進(jìn)一步鞏固C語言的學(xué)習(xí),以提高對開發(fā)環(huán)境。四、成員承擔(dān)的任務(wù):(組長)魏永濤:完成下面子程序的編寫:a:主函數(shù)的編譯b:定位指針的Locate()函數(shù)的編譯,與調(diào)試。c:主菜單函數(shù)的編譯,及其它外部函數(shù)的編譯,與調(diào)試。d: 任務(wù)分配,規(guī)定變量符號,及變量的初始化。e:程序的組裝及調(diào)試。王棟 :完成下面子程序的編寫: a:統(tǒng)計(jì)數(shù)據(jù)函數(shù)的編譯。 b::查找學(xué)生記錄函數(shù)的編譯。 c:增加學(xué)生記錄的函數(shù)的編譯。 王義: 完成下面子程序的編寫:a:刪除函數(shù)的編譯b:修改函數(shù)的編譯c:排序函數(shù)的編譯巫培宇 :完成下面子程序的編寫:a:顯示函數(shù)的編譯。b:歡迎界

3、面的制作。c:保存函數(shù)的編譯五、程序流程圖1.系統(tǒng)總體結(jié)構(gòu)圖保存學(xué)生資料排序?qū)W生資料統(tǒng)計(jì)學(xué)生資料件顯示學(xué)生資料錄修改學(xué)生資料錄查詢學(xué)生資料錄刪除學(xué)生資料錄創(chuàng)建文件輸入學(xué)生資料主程序獲取幫組信息退出管理系統(tǒng)2.main()函數(shù)流程圖100I=(Node*)malloc(sizeof(Node)I-next=NULL;r=I;fp=fopen(“C:student”,”rb”)fp=NULL無文件,創(chuàng)建?fp=fopen(“C:student”,”rb”)Exitmain()開始導(dǎo)入文件!feof(fp)p=(Node*)malloc(sizef(Node)fread(p,sizeof(Node)

4、,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相關(guān)輸出指針后移到表尾申請空間Anum=0NOYESNONOYESYESYESYESNOYESNOYESNOYESNO輸出提示語輸入對應(yīng)信息計(jì)算總分和平均分指針移到表尾結(jié)束Strcpy(p-data.num,num)A4.Del函數(shù)流程圖NoYes2入口輸入要?jiǎng)h除的學(xué)號有此學(xué)號?結(jié)束學(xué)生不存在輸出找到的學(xué)生信息刪除該學(xué)生信息5.Q

5、ur函數(shù)流程圖3入口!l-next輸出提示語輸入selsel=11輸出提示語輸入學(xué)號定為結(jié)點(diǎn)指針為空輸出成績sel=22輸出提示語輸入姓名定為結(jié)點(diǎn)指針為空輸出成績輸出提示語BB結(jié)束NOYESYESNOYESNONOYESYESNO6.Modify函數(shù)流程圖NoYes4入口輸入要修改的學(xué)號有此學(xué)號?結(jié)束輸出學(xué)生不存在輸出找到的學(xué)生信息輸入新的學(xué)生相關(guān)信息7.Disp函數(shù)流程圖結(jié)束!p沒有可供現(xiàn)實(shí)的數(shù)據(jù)顯示已有信息P調(diào)用printc函數(shù)p=p-next打出星號假真0非058.Tongji函數(shù)流程圖6入口!l pm=pe=pc=pt=pa=rr!=NULL找到各量最大值指針后移到表尾?“輸出各統(tǒng)計(jì)結(jié)

6、果結(jié)束輸出提示語YESNONOYES9.Sort函數(shù)流程圖7入 口分?jǐn)?shù)比較排序點(diǎn)值小排序點(diǎn)值大后移排在首位插入中間位置到表尾?記錄名次結(jié) 束NoYesNoYes10.Save函數(shù)流程圖8fp=fopen(“c:student”,”rb”)fp=NULL文件打開錯(cuò)誤退出p=I-nextpFwrite(p,sizeof(Node),1,fp)=1p=p-nextcount+flog=0flog保存成功shoudsave=0fclose(fp)假真0非0真假0非0返回menu11.locate函數(shù)流程圖10Strcmp(nameornum,num)=0r=Inextr!=NULL Strcmp(r-

7、data.num,findmess)=0return rr=rnextStrcmp(nameornum,name)=0r=Inextr!=NULL Strcmp(r-data.num,findmess)=0return rr=rnext返回一個(gè)地址或0假真0非0假真假真0非0假真六.系統(tǒng)實(shí)際運(yùn)行效果1. 歡迎界面2. 主菜單3. 輸入學(xué)生資料4.刪除學(xué)生資料8.保存4. 查詢5.修改6.顯示7.統(tǒng)計(jì)8.排序9.排序結(jié)果10.幫助11.退出七.系統(tǒng)源代碼#include stdio.h #include stdlib.h #include string.h int shoudsave=0; /定

8、義一個(gè)全局變量 struct student char num11;/學(xué)號 char name20;/姓名 char sex4; /性別 int cgrade; /c語言成績 int mgrade; /數(shù)學(xué)成績 int egrade; /英語成績 int totle; /總分 int ave; /平均分 char neartime10;/最近更新時(shí)間 ; typedef struct node /聲明新的結(jié)構(gòu)體類型Node struct student data; struct node *next; Node,*Link; void welcome()/歡迎界面 printf( *n); p

9、rintf( *歡 迎 使 用*n); printf( *中南大學(xué)學(xué)生成績管理系統(tǒng) *n); printf( *n); printf( 本系統(tǒng)由中南大學(xué)機(jī)械0805班夢幻小組nttt傾情奉獻(xiàn)n); printf(n); printf( 愿我們的努力n); printf( 能為您的學(xué)習(xí)工作帶來方便n); printf( 您的支持將是我們不斷創(chuàng)新的動(dòng)力n); void menu() /主菜單 printf(t*n); printf(t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n); printf(t* MMMMMMMM

10、MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n); printf(t* MMM 1 2 MMM *n); 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); printf(t* MMM MMM *n); printf(t* MMM * MMM *n); printf(t* MMM i 歡迎使用中南大學(xué)學(xué)生成績管理系統(tǒng)i MMM *

11、n); printf(t* MMM * MMM *n); printf(t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n); printf(t* MMM 出品人:夢幻小組 | 輔導(dǎo)老師:夏建芳 MMM *n); printf(t* MMM 組長:魏永濤 | 夢幻組合 MMM *n); printf(t* MMM 組員:王棟 王義 巫培宇| 成就夢幻品質(zhì) MMM *n); printf(t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n); p

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

13、a.num,,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) /該函數(shù)用于定位鏈表中符合要求的接點(diǎn),并返回該指針 Node *r; if(strcmp(nameornum,num)=0) /按學(xué)號查詢 r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0)/將輸入學(xué)號與已有學(xué)號對比 return

14、 r; /返回地址 r=r-next; else if(strcmp(nameornum,name)=0) /按姓名查詢將輸入姓名與已有姓名對比 r=l-next; while(r!=NULL) if(strcmp(,findmess)=0) return r; /返回地址 r=r-next; return 0; void Add(Link l) /增加學(xué)生 Node *p,*r,*s; /定義Node型指針 char num11; r=l; s=l-next; while(r-next!=NULL) r=r-next; /將指針置于最末尾 while(1) printf

15、(請您輸入學(xué)號(以0返回上一級菜單:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0)/將新輸入學(xué)號與已有學(xué)號對比 printf(!提示:學(xué)號為%s的學(xué)生已經(jīng)存在,若要修改請你選擇4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next;/指向下一個(gè)地址 p=(Node *)malloc(sizeof(Node);/在內(nèi)存中分配長度與node相同的連續(xù)空間用于存

16、儲(chǔ)新數(shù)據(jù) strcpy(p-data.num,num); printf(請你輸入姓名:); scanf(%s,); getchar(); printf(請你輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請你輸入c語言成績:); scanf(%d,&p-data.cgrade); getchar(); printf(請你輸入數(shù)學(xué)成績:); scanf(%d,&p-data.mgrade); getchar(); printf(請你輸入英語成績:); scanf(%d,&p-data.egrade); getchar(); p

17、-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) /查詢學(xué)生 int sel; char findmess20; Node *p; if(!l-next)/當(dāng)l-next=NULL時(shí)成立 printf(n*提示:沒有資料可以查詢!n); return; printf(n*1按學(xué)號查找n*2按姓名查找n); scanf(%d,&sel);

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

19、tc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /刪除函數(shù) int sel; Node *p,*r; char findmess20; if(!l-next) printf(n*提示:沒有資料可以刪除!n); return; printf(n*1按學(xué)號刪除n*2按姓名刪除n); scanf(%d,&sel); if(sel=1) printf(請你輸入要?jiǎng)h除的學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; whi

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

21、刪除!n); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) /修改函數(shù)模塊 Node *p; char findmess20; if(!l-next) printf(n*提示:沒有資料可以修改!n); return; printf(請你輸入要修改的學(xué)生學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); void printstart1(); if(p) printf(請你輸入新學(xué)號(原來是%s):,p-data.num); scanf(%s,p-data.num);

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

23、輸入新的英語成績(原來是%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 l)/顯示函數(shù)模塊 int count=0; Node *p; p=l-next; if(!p) printf(n*提示:沒有資料可以顯示!n); return; printf(tt

24、tt顯示結(jié)果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; /用于指向分?jǐn)?shù)最高的接點(diǎn) Node *r=l-next; if(!r) printf(n*提示:沒有資料可以統(tǒng)計(jì)!n); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r-data.cgrade=pc-data.cgrade) pc=r; if(r-data.mg

25、rade=pm-data.mgrade) pm=r; if(r-data.egrade=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(-統(tǒng)計(jì)結(jié)果-n); printf(*總分最高者:t%s %d分n,,pt-data.totle); printf(*平均分最高者:t%s %d分n,,pa-data.ave); printf(*英語最高者:t%s %d分n,pe-data.nam

26、e,pe-data.egrade); printf(*數(shù)學(xué)最高者:t%s %d分n,,pm-data.mgrade); printf(*c語言最高者:t%s %d分n,,pc-data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node); /用于做新的連表 ll-next=NULL; if(l-next=NULL) printf(n*提示:沒有資料可以排序!n); return ; p=l-next; whil

27、e(p) s=(Node*)malloc(sizeof(Node); /新建接點(diǎn)用于保存信息 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-next=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

28、*p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL) printf(n*提示:重新打開文件時(shí)發(fā)生錯(cuò)誤!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條記錄已經(jīng)保存.)n,count); shoudsave=0; fclose(fp); void help() printf(歡迎進(jìn)入中南大學(xué)學(xué)生成績管理系統(tǒng)菜

29、單導(dǎo)航ntt我們將竭誠為您服務(wù)n); printf(以下是各菜單功能簡介:); printf(1.:此功能用于錄入新生學(xué)號,性別,及各科成績。n); printf(2.:用于注銷離校學(xué)生資料。n); printf(3.:此功能下設(shè)兩個(gè)選項(xiàng),分別用于學(xué)號查詢和姓名查詢。n); printf(4.;用來改動(dòng)已錄入的學(xué)生信息。n); printf(5.:用來顯示所有學(xué)生信息。n); printf(6.:選出總成績第一,及單科第一的學(xué)生n); printf(7.:用來對學(xué)生成績進(jìn)行排序,但不顯示。n); printf(8.:用于存儲(chǔ)新錄入的學(xué)生信息,在每次操作最后必須保存。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(); p

溫馨提示

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

評論

0/150

提交評論