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

下載本文檔

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

文檔簡介

1、 高級語言程序設(shè)計課程設(shè)計報告書設(shè) 計 題 目:學(xué)生信息管理系統(tǒng)指 導(dǎo) 老 師:張俊峰、陳紅軍學(xué) 生 學(xué) 號:學(xué) 生 姓 名:李磊同 組 人 員:喬心成、陳兆提時 間:2015年06月25日目錄摘要21系統(tǒng)名稱及其說明32實驗?zāi)康?3系統(tǒng)開發(fā)環(huán)境43.1開發(fā)人員43.2開發(fā)時間43.3開發(fā)環(huán)境43.4結(jié)構(gòu)圖43.5程序運行結(jié)果64 系統(tǒng)代碼結(jié)構(gòu)75系統(tǒng)開發(fā)進程186總結(jié)心得體會18摘要隨著信息技術(shù)在管理上越來越深入而廣泛的應(yīng)用,管理信息系統(tǒng)的實施技術(shù)已逐步成熟。管理信息系統(tǒng)是一個不斷發(fā)展的新興學(xué)科,任何一個單位要生存發(fā)展要高效的把內(nèi)部活動有機的組織起來。就必須建立與其自身特點相適應(yīng)的管理系統(tǒng)。

2、本文介紹了在Visul C+6.0環(huán)境下來開發(fā)一個學(xué)生信息管理系統(tǒng)的大致過程。1系統(tǒng)名稱及其說明系統(tǒng)名稱:學(xué)生信息管理系統(tǒng)( student information management system )學(xué)生信息包括:學(xué)號,姓名,年齡,性別,成績等。設(shè)計學(xué)生信息管理系統(tǒng),使之能提供以下幾項功能:1.系統(tǒng)以菜單方式工作。2.學(xué)生信息錄入功能輸入。3.學(xué)生信息瀏覽功能輸出。4.學(xué)生信息查詢功能算法。按學(xué)號查詢。按姓名查詢。5.學(xué)生信息的刪除與修改。2實驗?zāi)康耐ㄟ^此次C語言課程設(shè)計實驗,讓我們更加熟練地掌握C語言這一門計算機編程語言,能夠根據(jù)其語言的基本數(shù)據(jù)結(jié)構(gòu)構(gòu)成來完成與之相關(guān)的語言功能,初步形成

3、并加深自我編程思想,形成能夠獨立編程的能力,對于程序設(shè)計語言的學(xué)習(xí)目的,可以概括為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計方法、提高程序開發(fā)能力。3系統(tǒng)開發(fā)環(huán)境3.1開發(fā)人員組長:李磊。成員:喬心成,陳兆提,李磊。3.2開發(fā)時間第十六周和第十七周(兩周)。3.3開發(fā)環(huán)境Visul c+6.0機型: 方正電腦 處理器名稱:Intel(R)Core(TM)2 Duo CPU E7200 2.53GHz 硬盤驅(qū)動器:WDC WD1600AAJS-22WAAO 系統(tǒng)內(nèi)存:金士頓內(nèi)存2GB 顯示卡:NVIDIA GeFORCE 9400 GT 顯示器:方正科技FG981-W9操作系統(tǒng): Microsoft Windo

4、ws XP Professional3.4結(jié)構(gòu)圖學(xué)生信息管理系統(tǒng)進入系統(tǒng)菜單保存資料查詢資料登記資料刪除資料修改資料方式1學(xué)號2姓名1學(xué)號 2姓名3性別4成績退出系統(tǒng)3.5程序運行結(jié)果4 系統(tǒng)代碼結(jié)構(gòu)#include (頭文件)#include #include int shoudsave=0; /* */struct student (系統(tǒng)結(jié)構(gòu)) char num10;/* 學(xué)號 */ char name20;/*姓名*/ char sex4; /*性別*/int cgrade; /*C語言成績*/int mgrade; /*高數(shù)成績*/int egrade; /*英語成績*/int tot

5、le; /*總成績*/int ave; /*平均成績*/char neartime10;/* 最近更新時間 */ ; 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é)生資料ttttt0退出系統(tǒng)n); printf(*n); void printstart() printf(-n); /*

6、打印星號*/ void Wrong() printf(n=提示:輸入錯誤!n); void Nofind() printf(n=提示:沒有找到該學(xué)生!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-data.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade

7、,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 該函數(shù)用于定位連表中符合要求的接點,并返回該指針 */ Node *r; if(strcmp(nameornum,num)=0) /* 按學(xué)號查詢 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查詢 */ r=l-next; while(r!

8、=NULL) if(strcmp(,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加學(xué)生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 將指針置于最末尾 */ while(1) /*while語句的原型是while(表達式)語句,當(dāng)表達式為非0值時,執(zhí)行while語句中的嵌套語句。那么while(1)其中1代表一個常量表達式,他永遠不會等于0。所以,循環(huán)會一直執(zhí)行下去。除非你設(shè)置br

9、eak等類似的跳出循環(huán)語句循環(huán)才會中止*/ printf(請你輸入學(xué)號(以0返回上一級菜單:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:學(xué)號為%s的學(xué)生已經(jīng)存在,若要修改請你選擇4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num

10、,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-data.totle=p-data.egr

11、ade+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) printf(n=提示:沒有資料可以查詢!n); return; printf(n=1按學(xué)號查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 學(xué)號 */ printf(請你

12、輸入要查找的學(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(); printc(); printe(p); p

13、rintstart(); else Nofind(); else Wrong(); void Del(Link l) /* 刪除 */ (刪除) 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(請你輸入要刪除的學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!

14、=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該學(xué)生已經(jīng)成功刪除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(請你輸入要刪除的姓名:); 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)成功刪除!n); shoudsave=1; else Nofind(); else Wron

15、g(); void Modify(Link l)(修改) Node *p; char findmess20; if(!l-next) printf(n=提示:沒有資料可以修改!n); return; printf(請你輸入要修改的學(xué)生學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(請你輸入新學(xué)號(原來是%s):,p-data.num); scanf(%s,p-data.num); printf(請你輸入新姓名(原來是%s):,); scanf(%s,); getchar

16、(); 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(請你輸入新的英語成績(原來是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.t

17、otle=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) (顯示) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:沒有資料可以顯示!n); return; printf(tttt顯示結(jié)果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-n

18、ext; printstart(); printf(n); void Tongji(Link l)(統(tǒng)計) Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分數(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) p

19、e=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)計結(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.egrade); printf(數(shù)學(xué)最高者:t%s %d分n,,pm-data.mg

20、rade); 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; while(p) s=(Node*)malloc(sizeof(Node); /* 新建接點用于保存信息 */ s-dat

21、a=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 *p; int flag=1,count=0; fp=fopen(c:student,wb);

22、 if(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條記錄已經(jīng)保存.)n,count); shoudsave=0; fclose(fp); void main() (主函數(shù) ) Link l;/* 連表 */ FILE *fp; /* 文件指針 */ int sel; char ch; char jian

23、; int count=0; Node *p,*r; printf(tttt學(xué)生成績管理系統(tǒng)ntttt-河南城建學(xué)院-信息管理與信息專業(yè)-李磊-陳兆提-喬心成制作n); l=(Node*)malloc(sizeof(Node); (文件)l-next=NULL; r=l; fp=fopen(C:student,rb); if(fp=NULL) printf(n=提示:文件還不存在,是否創(chuàng)建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=Y) fp=fopen(C:student,wb); else exit(0); printf(n=提示:文件已經(jīng)打開,正在

24、導(dǎo)入記錄.n); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* 將文件的內(nèi)容放入接點中 */ p-next=NULL; r-next=p; r=p; /* 將該接點掛入連中 */ count+; fclose(fp); /* 關(guān)閉文件 */ printf(n=提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄.n,count); while(1) menu(); printf(請你選擇操作:); scanf(%d,&sel); if(sel=0) if(shoudsave=1) getchar()

25、; printf(n=提示:資料已經(jīng)改動,是否將改動保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) Save(l); printf(n=提示:你已經(jīng)退出系統(tǒng),再見!n); break; switch(sel) case 1:Add(l);break; /* 增加學(xué)生 */ case 2:Del(l);break;/* 刪除學(xué)生 */ case 3:Qur(l);break;/* 查詢學(xué)生 */ case 4:Modify(l);break;/* 修改學(xué)生 */ case 5:Save(l);break;/* 保存學(xué)生 */ case 9:printf(

26、ttt=幫助信息=n);break; default: Wrong();getchar();break; 5系統(tǒng)開發(fā)進程1.進行初步系統(tǒng)分析,討論分析開發(fā)所需的C語言知識,并整理相關(guān)高級技術(shù)的相關(guān)知識。2.詳細分析系統(tǒng),劃分系統(tǒng)模塊,分配開發(fā)任務(wù)。3.開始函數(shù)編寫,初步完界面及其菜單的編寫及其用戶功能模塊,并實現(xiàn)創(chuàng)建用戶成功。4.基本完成系統(tǒng)所需的所有函數(shù)的編寫,代碼的最后整合和測試修改。5.程序運行結(jié)果。6.開始撰寫設(shè)計報告。6總結(jié)心得體會在科技高度發(fā)達的今天,計算機在人們之中的作用越來越突出。c語言作為一種計算機的語言,我們學(xué)習(xí)它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學(xué)習(xí)對我們尤其重要。 在這兩個星期里,我們在專業(yè)老師的帶領(lǐng)下進行了c語言程序課程設(shè)計學(xué)習(xí)。在這之前,我們已經(jīng)對c語言這門課程學(xué)習(xí)了一個學(xué)期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,的在運用起來的時候還是感到很力不從心。 上機實驗是學(xué)習(xí)程序設(shè)計語言必不可少的實踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。,這些都必須通過充分的實際上機操作才能完成。課程上機實驗的目的,不僅僅是驗證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為方面:1

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論