學(xué)生信息管理系統(tǒng)講解_第1頁
學(xué)生信息管理系統(tǒng)講解_第2頁
學(xué)生信息管理系統(tǒng)講解_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、合肥學(xué)院程序設(shè)計與算法語言課程設(shè)計報告書題目學(xué)生信息管理系統(tǒng)院 系名稱合肥學(xué)院數(shù)學(xué)與物理系專業(yè)(班級)14信息與計算科學(xué)姓 名(學(xué)號)王玉(1407011011)指導(dǎo)教師 錢澤強完成時間2016 年12月28日、問題描述學(xué)生信息管理工作是每個學(xué)校必須面對的,它是一項傳統(tǒng)且繁瑣的教育基礎(chǔ)管理工作。本次課程設(shè)計的任務(wù)是分別采用順序表和鏈表兩種存儲形式設(shè)計學(xué)生信息管理系統(tǒng)軟件,基本功能要求包括增刪改查等操作,并采用菜單調(diào)用各項功能。二、基本要求學(xué)生信息管理系統(tǒng)要求由兩人合作完成,分別采用“順序表”和“鏈表”兩種形式實現(xiàn)。具體要求如下:1、編寫增加數(shù)據(jù)模塊,完成信息管理系統(tǒng)中學(xué)生信息數(shù)據(jù)的輸入;2、編

2、寫刪除數(shù)據(jù)模塊,完成信息管理系統(tǒng)中學(xué)生信息數(shù)據(jù)的刪除;3、編寫數(shù)據(jù)查詢模塊,完成信息管理系統(tǒng)中學(xué)生信息數(shù)據(jù)的查詢;4、編寫數(shù)據(jù)修改模塊,完成信息管理系統(tǒng)中學(xué)生信息數(shù)據(jù)的修改;5、編寫數(shù)據(jù)排序模塊,完成信息管理系統(tǒng)中學(xué)生信息數(shù)據(jù)的排序;6、編寫菜單模塊,完成對各功能子模塊的調(diào)用。三、功能結(jié)構(gòu)圖和模塊劃分1、功能結(jié)構(gòu)圖2、存儲結(jié)構(gòu)人員基本信息結(jié)構(gòu)體(鏈表存儲結(jié)構(gòu))typedef struct node struct stude nt char num10; /*學(xué)號*/char name18; /*姓名*/char sex3; /*性別*/int age; /*年齡 */ data; struct

3、 node *n ext; Node,*Li nk;3、模塊劃分:(1) 主菜單模塊void menu():通過利用輸出函數(shù)顯示輸出主菜單信息。(2) 提示錯誤信息模塊void Wron g():通過利用輸出函數(shù)輸出提示錯誤信息。(3) 提示沒有找到模塊void Nofin d():通過利用輸出函數(shù)輸出提示沒有找到該學(xué)生(4 )輸出中文、英文模塊void prin tchi nese()void prin te nglish(Node *p):通過利用輸出函數(shù)輸出中文提示及學(xué)生數(shù)據(jù)。(5 )定位模塊 Node* Locate(L ink l,char fin dmess,char n ameo

4、r nu m):定位連表中符要求合的接點,并返回該指針。(6) 增加學(xué)生信息模塊void Add(L ink l):通過指針的不斷后移逐個接受學(xué)生信息并將學(xué) 生信息付給相應(yīng)變量。(7) 刪除信息模塊void Del(L ink l):根據(jù)用戶選擇按學(xué)號或按姓名刪除,分別比對輸入 數(shù)據(jù)和結(jié)構(gòu)體中的數(shù)據(jù),有匹配的則刪除,沒有則提示無信息可刪。(8) 修改信息模塊void Modify(L ink l):通過用戶輸入的學(xué)號找到相應(yīng)學(xué)生,然后逐項修改學(xué)生信息,否則提示無此學(xué)生。(9) 查詢學(xué)生信息模塊void Seek(L ink l):根據(jù)用戶選擇按學(xué)號或按姓名查詢,分別按學(xué)號或姓名逐個比較輸入的數(shù)

5、據(jù)與結(jié)構(gòu)體中的數(shù)據(jù),有匹配的則輸出,沒有則提示沒有找至嘰(10) 保存信息模塊void Save(L ink l):將接受的結(jié)構(gòu)體信息利用指針存入文件中。(11 )排序模塊void Scoretow(Link l):按照學(xué)生的學(xué)號大小排序,輸出。(12)主函數(shù)void main():通過調(diào)用各模塊來實現(xiàn)學(xué)生信息的管理。四、源程序#i nclude "stdio.h"#i nclude "con io.h"#in clude "stdlib.h"#i nclude "stri ng.h"int havesave=0;

6、typedef struct node struct stude nt char num10; /*學(xué)號*/char name18; /*姓名*/char sex3; /*性別*/int age;/*年齡*/ data; struct node *n ext; Node,*Li nk; printf(" t1 printf(" t3添加學(xué)生信息t2刪除學(xué)生信息n");查詢學(xué)生信息t4修改學(xué)生信息n");void menu()/*主菜單 */printf(” t5保存學(xué)生信息t6排序?qū)W生信息n");printf(” t0退出系統(tǒng) n")

7、; void print_san() pri ntf(”-n"); void Wrong()/*提示錯誤 */ prin tf("n=提示:輸入錯誤!n"); void Nofi nd() prin tf("n=提示:沒有找到該學(xué)生!n"); void prin tchi nese() /*用于輸出中文*/ printf("t 學(xué)號t 姓名 性別 年齡n"); void prin te nglish(Node *p)/*用于輸出英文 */ prin tf("t%-9s%st%st%dn",p->da

8、ta .nu m,p->data .n ame,p->data.sex,p->data.age該函數(shù)用于定位鏈表中符Node* Locate(L ink l,char fin dmess,char n ameor nu m) /*合要求的結(jié)點,并返回該指針*/ Node *r;if(strcmp(nameornum,"num")=0) /*按學(xué)號查詢 */ r=l->n ext;while(r!=NULL) if(strcmp(r->data .nu m,fi ndmess)=0)return r;r=r->n ext; else if(

9、strcmp(nameornum,"name")=0) /*按姓名查詢 */ r=l->n ext;while(r!=NULL) if(strcmp(r->data .n ame,fi ndmess)=0)return r;r=r->n ext; return 0;增加學(xué)生*/void Add(Li nk l) /* Node *p,*r,*s;char num10;r=l;s=l->n ext;while(r-> next!=NULL)r=r-> next; /*將指針置于最末尾*/while(1) printf(" 請你輸入

10、學(xué)號(以'O'返回上一級菜單:)");scan f("%s", nu m);if(strcmp( num,"0")=0)break;while(s) if(strcmp(s->data .num,num)=0) printf("=> 提示:學(xué)號為'%s'的學(xué)生已經(jīng)存在,若要修改請你選擇'4修改'!n",num);prin t_sa n();prin tch in ese();printen glish(s);prin t_sa n();prin tf("n

11、");return; s=s->n ext; p=(Node *)malloc(sizeof(Node);strcpy(p->data .num,nu m);printf("請你輸入姓名:");sca nf("%s",p->data .n ame);getchar();printf("請你輸入性別:");sca nf("%s",p->data.sex);getchar();printf("請你輸入年齡:");scan f("%d",&

12、p->data.age);getchar(); /*信息輸入已經(jīng)完成*/p-> next=NULL;r->n ext=p;r=p;havesave=1; void Del(Link l) /*刪除學(xué)生 */ int sel;Node *p,*r;char fin dmess20;if(!l-> next) printf("n=>提示:沒有信息可以刪除!n");return; printf("n=>1 按學(xué)號刪除 n=>2 按姓名刪除 n");printf("n請您選擇操作:");scan f(

13、"%d", &sel);if(sel=1) pri ntf("請您輸入要刪除的學(xué)號:”);sca nf("%s",fi ndmess);p=Locate(l,fi ndmess," nu m");if(p) r=l;while(r- >n ext!=p)r=r->n ext;r->n ext=p->n ext;free(p);printf("n=> 提示:該學(xué)生已經(jīng)成功刪除!n"); havesave=1; elseNofin d(); else if(sel=2)

14、pri ntf("請你輸入要刪除的姓名:”);sca nf("%s",fi ndmess);p=Locate(l,fi ndmess," name");if(p) r=l;while(r- >n ext!=p)r=r->n ext;r->n ext=p->n ext;free(p);printf("n=> 提示:該學(xué)生已經(jīng)成功刪除!n"); havesave=1; elseNofin d(); elseWron g(); void Modify(L ink l)/*修改學(xué)生信息 */ Node

15、*p;char fin dmess20;if(!l-> next) printf("n=>提示:沒有信息可以修改!n");return; printf("請您輸入要修改的學(xué)生學(xué)號:”);sca nf("%s",fi ndmess);p=Locate(l,fi ndmess," nu m");if(p) printf("請你輸入新學(xué)號(原來是%s):",p->data.num);sca nf("%s",p->data .nu m);printf(”請你輸入新姓名(

16、原來是s):",p->);sea nf("%s",p->data .n ame);getchar();printf(”請你輸入新性別(原來是%s):",p->data.sex);sca nf("%s",p->data.sex);printf("請你輸入新的年齡(原來是%d):",p->data.age);scan f("%d",&p->data.age);getchar();printf("n=>提示:信息修改成功!n

17、");havesave=1; elseNofin d(); void Seek(Li nk l) /*查詢學(xué)生信息 */ int sel;char fin dmess20;Node *p;if(!l-> next) printf("n=>提示:沒有信息可以查詢!n");return; printf("n1按學(xué)號查找n 2 按姓名查找n”);printf("n請您選擇操作:");scan f("%d", &sel); if(sel=1)/* 學(xué)號 */ pri ntf("請你輸入要查找的

18、學(xué)號:”);sca nf("%s",fi ndmess);p=Locate(l,fi ndmess," nu m");if(p) printf("tttt查找結(jié)果 n");prin t_sa n();prin tf("n");prin tch in ese();printen glish(p);prin tf("n");prin t_sa n();printf(”按任意鍵返回");getch(); elseNofin d(); else if(sel=2) /* 姓名 */ pri n

19、tf("請您輸入要查找的姓名:”);sca nf("%s",fi ndmess);p=Locate(l,fi ndmess," name");if(p) printf("tttt查找結(jié)果 n");prin t_sa n();prin tf("n");prin tch in ese();printen glish(p);prin tf("n");prin t_sa n();printf("按任意鍵返回");getch();elseNofin d(); elseWron

20、 g(); void Save(Li nk l) FILE* fp;Node *p;int flag=1,co un t=0;學(xué)生管理",”wb");if(fp=NULL) printf("n=>提示:重新打開文件時發(fā)生錯誤!n");exit(1); p=l->n ext;while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->n ext;coun t+; else flag=0;break; if(flag).)n" ,cou nt); printf("n=>提示:文件

21、保存成功.(有條記錄已經(jīng)保存havesave=0; fclose(fp); void Scoretow(Link l) /*按學(xué)號排序 */ Li nk II;Node *p,*rr,*s;ll=(Li nk)malloc(sizeof(Node); /*用于做新的連表 */ll-> next=NULL;if(l-> next=NULL) printf("n=>提示:沒有信息可以排序!n");return ; p=l->n ext;while(p) s=(Node*)malloc(sizeof(Node); /*新建接點用于保存信息*/s->d

22、ata=p->data;s-> next=NULL;rr=ll;while(rr- >n ext!=NULL && rr->n ext->data .num >=p->data .num)rr=rr- >n ext;if(rr-> next=NULL)rr->n ext=s;else s->n ext=rr- >n ext;rr->n ext=s; p=p->n ext; free(l);l->n ext=ll->n ext;printf("n=>提示:排序已經(jīng)完成!

23、n"); void mai n() Link l; /*鏈表 */FILE *fp; /* 文件指針*/int sel;char c;char chji;int coun t=0;Node *p,*r;printf("tttt學(xué)生信息管理系統(tǒng) nttttn");l=(Node*)malloc(sizeof(Node);l-> next=NULL;r=l;學(xué)生管理","rb");if(fp=NULL) printf("n=>提示:文件還不存在,是否創(chuàng)建?(y/n)n”);scan f("%c",

24、&chji);if(chji='y'|chji='Y')學(xué)生管理","wb");printf("n=>提示:文件已經(jīng)打開,正在導(dǎo)入記錄 n");fclose(fp); /*關(guān)閉文件 */printf("n=>提示:記錄導(dǎo)入完畢,共導(dǎo)入d條記錄.n",count);elseexit(0);else while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* p-> next

25、=NULL;將文件的內(nèi)容放入接點中*/r->n ext=p; r=p; /* coun t+; 將該接點掛入連中*/fclose(fp); /* 關(guān)閉文件 */printf("n=>提示:記錄導(dǎo)入完畢,共導(dǎo)入d條記錄.n",count); while(1) menu();printf("請你選擇操作:");scan f("%d", &sel);if(sel=0) if(havesave=1) getchar();printf("n=> 提示:信息已經(jīng)改動,是否將改動保存到文件中(y/n)?n&quo

26、t;);scan f("%c",&c);if(c='y'|c='Y')Save(l); printf("n=> 提示:您已經(jīng)退出系統(tǒng),再見!n");break; switch(sel) case 1:Add(l);break;/*case 2:Del(l);break;/*case 3:Seek(l);break; /*case 4:Modify(l);break; /*case 5:Save(l);break; /*增加學(xué)生*/ 刪除學(xué)生*/ 查詢學(xué)生*/ 修改學(xué)生*/ 保存學(xué)生*/case 6:Score

27、tow(l);break; /*按學(xué)號排序 */default: Wron g();getchar();break;五、測試情況1、進入主菜單2、增加學(xué)生信息 I P'UsersXAdminislyt&fMJesktciFADetJU爭學(xué)生宦息管理鼠施exh學(xué)生信息管理系統(tǒng)提示:記錄導(dǎo)入箝華,共導(dǎo)入2條記錄,1添擁學(xué)牛信息3査詢學(xué)主信息5保存學(xué)生信息 。退出系統(tǒng)請你選擇操作門請你輸入學(xué)號以返回上一級菜:)H07ei1G11 請你輸入姓名:王玉請俅輸入性剔:女2刪除學(xué)生信息 期修改學(xué)土佶息 G排序?qū)W生信息謂你輸入作齡:心請你輸入學(xué)號(厲'釦返回上一級菜單J140TOH01

28、? 請你鞫入姓名;邱良媛諸你喻入性別:女請你輸入年齡:舊 請你輪入學(xué)號以'返冋上一級菜單;).in3、刪除學(xué)生信息(按學(xué)號刪除為例)4、查詢學(xué)生信息(按學(xué)號查找為例)扎Admi nisti日taiWsktopXDebu航學(xué)主信思管理索統(tǒng).exh警呆石學(xué)生信息右禪序?qū)W牛信息 。退出系統(tǒng)請你選擇操作:卻1按孝號譽找2按姓名査抿請您選擇操作M請你輸入要査找冊學(xué)號:叫查找結(jié)果學(xué)號 雄名世別年齡 GH王武男 19按任意鍵返回5、修改學(xué)生信息 "CUseriArirninistiatorDesktopDetHjgTte-S-S3Si.exe"按任意鍵返回1禰加學(xué)生信息 2刪除學(xué)

29、生信皚3查詢學(xué)生信息屮隆改學(xué)生信息 5保存學(xué)生信息時非序?qū)W生信息 白退出系軌請你選擇操柞宀請您輸入蔓謹改附學(xué)生學(xué)號;的請稱輸入新學(xué)號(原來是GHF9請你輸入新姓名(原來是王武三弐請你輸入新性別(原來建男):男 請稱輸入新的年齡(原來杲舊):1 9I 1諄加學(xué)主信息 3杳詢學(xué)生信息 寧杲存學(xué)生信息 日退出系統(tǒng)請你選擇操作;信信信 生生生 學(xué)學(xué)學(xué) 除改序 2 4 66、排序?qū)W生信息"C:LI s£fsAdnninistr3tcrDesktipDebug 生信.縣國理索豹 ei(已"請你輪入新姓茗i原來是王武:王武 請你輸入新性別(原來是男);男 請你豁入斷的年齡(原來

30、是:理-= = = >提示:信息修改成功F1添加學(xué)生信息3杏詢學(xué)生信息 >1修改學(xué)生信息5保存學(xué)生信息點排厚學(xué)主信息 0退出系統(tǒng)請你選擇操作上2刪除學(xué)主信息"澀示:排序己經(jīng)完成!1譙加學(xué)生信息3喪詢學(xué)生信息5保存學(xué)主信息。退出系統(tǒng) 請你譴擇操作:-2刪除學(xué)生信息 嗎修改學(xué)生信息 E排序?qū)W生信息,7、退出系統(tǒng)1999,清華大學(xué)出版社,19921999六、參考文獻1 錢能編著.C+程序設(shè)計教程,清華大學(xué)出版社,2 譚浩強編著.c程序設(shè)計題解與上機指導(dǎo)(第四版)3 呂鳳煮著.C+語言基礎(chǔ)教程,清華大學(xué)出版社,4 Robert L.Kruse著.C+數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計,清華大學(xué)出版社,2004 寧正元著數(shù)據(jù)結(jié)構(gòu)一C語言版,中國水利水電出版社,1997小結(jié)經(jīng)過兩個多星期的努力,這份課程設(shè)計論文終于做好了, 看著這份滿含著自己心血論文, 心中百感交集。經(jīng)過一個學(xué)期的學(xué)習(xí), 我對

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論