學(xué)生信息管理系統(tǒng)C語言課設(shè)_第1頁
學(xué)生信息管理系統(tǒng)C語言課設(shè)_第2頁
學(xué)生信息管理系統(tǒng)C語言課設(shè)_第3頁
學(xué)生信息管理系統(tǒng)C語言課設(shè)_第4頁
學(xué)生信息管理系統(tǒng)C語言課設(shè)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄一、需求分析2二、概要設(shè)計(jì)2三、詳細(xì)設(shè)計(jì)4四、調(diào)試分析9五、用戶手冊(cè)9六、測(cè)試數(shù)據(jù)9七、附錄10一、需求分析1.課設(shè)內(nèi)容:學(xué)生學(xué)籍管理系統(tǒng):用數(shù)據(jù)文件存放學(xué)生的學(xué)籍,可對(duì)學(xué)生學(xué)籍進(jìn)行注冊(cè),登錄,修改,刪除,查找,統(tǒng)計(jì),學(xué)籍變化等操作。功能要求:(1) 系統(tǒng)以菜單方式工作。(2) 登記學(xué)生的學(xué)號(hào),姓名,性別,年齡,籍貫,系別,專業(yè),班級(jí);修改已知學(xué)號(hào)的學(xué)生信息。(3) 刪除已知學(xué)號(hào)的學(xué)生信息。(4) 查找已知學(xué)號(hào)的學(xué)生信息。(5) 按學(xué)號(hào),專業(yè)輸出學(xué)生籍貫表。(6) 查詢學(xué)生學(xué)籍變化,比如入學(xué),轉(zhuǎn)專業(yè),退學(xué),降級(jí),休學(xué),畢業(yè)。 2.用一個(gè)結(jié)構(gòu)體來表示學(xué)生學(xué)籍的各種信息,結(jié)構(gòu)體如下:struc

2、t student char namen; /姓名char sexS; /性別char addressA; /籍貫 int age; /年齡char numX; /學(xué)號(hào)char ClassC; /班級(jí) char apartmentH; /院系char majorM; /專業(yè)int state; /當(dāng)前該生的學(xué)習(xí)狀態(tài)如降級(jí)等。; 3.學(xué)籍變化用1表示入學(xué),2表示退學(xué),3表示降級(jí),4表示休學(xué),5表示畢業(yè)。4.用數(shù)據(jù)文件存儲(chǔ)信息,用函數(shù)fwrite()和fread()作為寫入和讀出文件信息。5.利用以上的結(jié)構(gòu)體構(gòu)造一個(gè)鏈表,用于查找學(xué)生信息這一功能。6.信息的輸入都從鍵盤輸入,以菜單形式展開以實(shí)現(xiàn)其

3、功能。7.程序執(zhí)行命令: (1)寫入學(xué)生信息。 (2)保存學(xué)生信息。 (3)實(shí)現(xiàn)其他功能。二、概要設(shè)計(jì) 1.程序功能模塊主要由以下六大模塊組成:void Register(); /學(xué)生信息寫入功能void Update(); /學(xué)生信息修改功能void Research(); /學(xué)生信息查找功能void deletenum(); /學(xué)生信息刪除功能(按學(xué)號(hào)刪除)void Findstate(); /學(xué)生狀態(tài)查找功能void Show(); /學(xué)生信息顯示功能其中void Research();函數(shù)還包括子函數(shù)int findnum(char *key); int findname(char *

4、key);前一個(gè)是按學(xué)號(hào)查找,后一個(gè)是按姓名查找。而void Show()函數(shù)包括子函數(shù)int showmajor();int displaystu();int shownum();void Update()函數(shù)包括子函數(shù)int Add ()和intOther()以上的六大功能是獨(dú)立工作的,互不影響,只有void Research();和void Show()和void Update()函數(shù)與它們的子函數(shù)有影響。2.學(xué)生學(xué)籍信息管理的數(shù)據(jù)類型聲明如下:用結(jié)構(gòu)體表示:#define n 8 /姓名字長(zhǎng)#define S 6 /性別字長(zhǎng)#define A 12 /籍貫字長(zhǎng)#define H 10

5、/院系字長(zhǎng)#define C 8 /班級(jí)字長(zhǎng)#define X 10 /學(xué)號(hào)字長(zhǎng)#define M 10 /專業(yè)字長(zhǎng)#define N 10 /輸入學(xué)生個(gè)數(shù)struct student /學(xué)生信息結(jié)構(gòu)體char namen; /姓名char sexS; /性別char addressA; /籍貫 int age; /年齡char numX; /學(xué)號(hào)char ClassC; /班級(jí) char apartmentH; /院系char majorM; /專業(yè)int state; /當(dāng)前該生的學(xué)習(xí)狀態(tài)stuN; /最多輸入的學(xué)生數(shù)3.各個(gè)函數(shù)功能模塊的調(diào)用如下: main() Register() U

6、pdate()Show() deletenum() Research()Findstate()退出 ( 三、詳細(xì)設(shè)計(jì): 1.寫入信息函數(shù)如下: void Register() /學(xué)籍注冊(cè)函數(shù) int i,x; FILE *fp; /文件保存 printf(文件信息將保存在:message.txtnn); fp=fopen(message.txt,w); printf(請(qǐng)輸入你要寫入該文件的學(xué)生數(shù)量:); / 輸入學(xué)生數(shù)量 scanf(%d,&i); for (x=0;x num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p

7、-state); p+; a+; fclose(fp); printf( 請(qǐng)輸入要?jiǎng)h除記錄的學(xué)號(hào):); scanf(%s,num); for(k=Stu;k num)=0) break; if(k Stu+a) for(p=k;pk+a-1;p+) *p=*(p+1); else printf(n 無此人!nn); fp=fopen(message.txt,r); if(fp=NULL) printf(n 打開文件失敗!n); return 0; for(p=Stu;p num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p

8、-state); fclose(fp); return 0; 5. 狀態(tài)查找功能如下: void Findstate() /按姓名查詢學(xué)生狀態(tài)FILE *fp;char Name8;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失??!); printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);printf(請(qǐng)輸入你要查找學(xué)生的姓名:);scanf(%s,Name);for (i=0;i m;i+) if (strcmp(S,Name) = 0) printf( 姓名:%sn ,S

9、); printf(學(xué)生狀態(tài):%dn,Stui.state);fclose(fp);6. 信息查找功能如下: void Research()int i;char j10;printf(1-按學(xué)號(hào)查詢n);printf(2-按姓名查詢n);printf(請(qǐng)輸入您的選擇:);scanf(%d,&i);switch (i)case 1: printf(請(qǐng)輸入你要查找的學(xué)生學(xué)號(hào):); scanf(%s,j); findnum(j);break;case 2: printf(請(qǐng)輸入你要查找的學(xué)生姓名:); scanf(%s,j); findname(j);break;default: printf(輸入

10、有誤!正在退出!);break;7.主函數(shù)如下: void main()int i;do /* 主菜單 */ printf(=歡迎使用學(xué)生學(xué)籍管理系統(tǒng)=n); printf( 1-Register-(注冊(cè))n); printf( 2-Search-(查找)n); printf( 3-Update-(修改)n); printf( 4-Delete-(刪除)n); printf( 5-Show-(顯示)n);printf( 6-State-(狀態(tài))n);printf( 7-Exit-(退出)n); printf(=n);printf( 注:學(xué)生學(xué)習(xí)狀態(tài)表示方法: 1-入學(xué)n);printf( 2-

11、退學(xué)n); printf( 3-降級(jí)n); printf( 4-休學(xué)n); printf( 5-畢業(yè)n); printf( 請(qǐng)輸入您的選擇:);scanf(%d,&i); printf(n); switch (i) case 1: Register(); break; case 2: Research(); break; case 3: Update(); break; case 4: deletenum(); break; case 5: Show(); break;case 6: Findstate();break; case 7: break; default: printf(輸入有誤!

12、請(qǐng)重新輸入:nnn); break;while (i!=7);四、調(diào)試分析: 1.由于文件這塊知識(shí)沒有講,所以通過自學(xué)的效果并不是很好,在程序設(shè)計(jì)中文件這塊做起來有點(diǎn)吃力,但最終還是學(xué)會(huì)了。 2.指針問題,刪除功能中要到的指針刪除有問題。3.多文件結(jié)構(gòu)即工程結(jié)構(gòu)開始還不會(huì)。不過通過自學(xué)還是能搞定。4.全局變量的問題。什么地方該用有點(diǎn)不懂。不過現(xiàn)在明白了。五、用戶手冊(cè):1.本程序的運(yùn)行環(huán)境為TC6.0,執(zhí)行文件為Studentmessage.exe。 進(jìn)入演示程序后,即顯示對(duì)話形式的提示操作過程。如:你要輸入學(xué)生信息,則輸入1即可。每種操作的代號(hào)不同,只需按提示操作即可。3.保存的文檔在mess

13、age.txt文件中,可以查看。六、測(cè)試數(shù)據(jù):運(yùn)行的結(jié)果如下:1.菜單界面:2.寫入學(xué)生信息3.顯示信息4.修改信息:5.顯示籍貫及學(xué)習(xí)狀態(tài):七、附錄:1.源程序代碼如下:#define n 8#define S 6#define A 12#define H 10#define C 8#define X 10#define M 10#define N 10struct student char namen; /姓名char sexS; /性別char addressA; /籍貫 int age; /年齡char numX; /學(xué)號(hào)char ClassC; /班級(jí) char apartmentH

14、; /院系char majorM; /專業(yè)int state; /當(dāng)前該生的學(xué)習(xí)狀態(tài); #include #include deletenum.h#include Update.h#include Show.h#include Research.h#include Register.h#include Findstate.h#include #include Struct.h#include Add.hvoid Save(int k);int findnum(char *key); int findname(char *key);int showmajor(); /*按專業(yè)顯示*/int di

15、splaystu(); /*全部顯示*/int shownum(); /*按學(xué)號(hào)顯示*/extern struct student StuN;int findnum(char *key)FILE *fp;int i=0;int m;if (fp=fopen(message.txt,r) = NULL) printf(不能該打開文件n); return 0; printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);printf(nn);for (;i m;i+)if (strcmp(key,Stui.num)=0) fread(&Stui,sizeof(struct stud

16、ent),1,fp); printf(n姓名 :%sn,S); printf( 學(xué)號(hào) :%sn,Stui.num); printf( 性別 :%sn,Stui.sex); printf( 年齡 :%dn,Stui.age); printf( 籍貫 :%sn,Stui.address); printf( 班級(jí) :%sn,Stui.Class); printf( 學(xué)院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 狀態(tài) :%dn,Stui.state); fclose(fp); if (i = 0)printf

17、(學(xué)生:%s不在該文件中n,key); return 1;return 0;int findname(char *key)FILE *fp;int i=0;int m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗!);return 0; printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);printf(nn);for (;i m;i+)if (strcmp(S,key) = 0)fread(&Stui,sizeof(struct student),1,fp); printf(n姓名 :%sn,Stui.

18、name); printf( 學(xué)號(hào) :%sn,Stui.num); printf( 性別 :%sn,Stui.sex); printf( 年齡 :%dn,Stui.age); printf( 籍貫 :%sn,Stui.address); printf( 班級(jí) :%sn,Stui.Class); printf( 學(xué)院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 狀態(tài) :%dn,Stui.state);fclose(fp);if (i = 0)printf(學(xué)生:%s不在該文件中!n,key);return 1;void R

19、egister() int i,x;FILE *fp; printf(文件信息將保存在:message.txtnn);fp=fopen(message.txt,w);printf(請(qǐng)輸入你要寫入該文件的學(xué)生數(shù)量:); scanf(%d,&i); for (x=0;x i;x+) printf(請(qǐng)輸入學(xué)生姓名:); scanf(%s,S);printf(請(qǐng)輸入學(xué)生學(xué)號(hào):);scanf(%s,Stux.num);printf(請(qǐng)輸入學(xué)生性別:);scanf(%s,Stux.sex);printf(請(qǐng)輸入學(xué)生年齡:);scanf(%d,&Stux.age);printf(請(qǐng)輸入學(xué)生籍

20、貫:);scanf(%s,Stux.address);printf(請(qǐng)輸入學(xué)生班級(jí):);scanf(%s,Stux.Class);printf(請(qǐng)輸入學(xué)生學(xué)院:);scanf(%s,Stux.apartment);printf(請(qǐng)輸入學(xué)生專業(yè):);scanf(%s,Stux.major); printf(請(qǐng)輸入學(xué)生狀態(tài):); scanf(%d,&Stux.state);printf(nn);fwrite (&Stux, sizeof (struct student), 1, fp);printf(輸入完畢!n);fclose(fp);void Research()int i;char j10;

21、printf(1-按學(xué)號(hào)查詢n);printf(2-按姓名查詢n);printf(請(qǐng)輸入您的選擇:);scanf(%d,&i);switch (i)case 1: printf(請(qǐng)輸入你要查找的學(xué)生學(xué)號(hào):); scanf(%s,j); findnum(j);break;case 2: printf(請(qǐng)輸入你要查找的學(xué)生姓名:); scanf(%s,j); findname(j);break;default: printf(輸入有誤!正在退出!);break;void Update() / *修改*/ int i; doprintf(輸入修改的方式:nn);printf( 1-增加-);prin

22、tf( 2-其他-); printf(請(qǐng)輸入:);scanf(%d,&i);switch(i)case 1:Add();break;case 2:Other();break; case 3: break; default: printf(輸入有誤!請(qǐng)重新輸入:nnn); break;while(i!=3);int Add () /修改函數(shù) int i,j;FILE *fp;printf(請(qǐng)輸入你要增加的學(xué)生個(gè)數(shù):); scanf(%d,&i);if (fp=fopen(message.txt,w)=NULL)printf(打開文件失敗!);return 0;for (j=0;j i;j+) p

23、rintf(請(qǐng)輸入學(xué)生姓名:); scanf(%s,S);printf(請(qǐng)輸入學(xué)生學(xué)號(hào):);scanf(%s,Stui.num); printf(請(qǐng)輸入學(xué)生性別:);scanf(%s,Stui.sex); printf(請(qǐng)輸入學(xué)生年齡:);scanf(%d,&Stui.age);printf(請(qǐng)輸入學(xué)生籍貫:);scanf(%s,Stui.address);printf(請(qǐng)輸入學(xué)生班級(jí):);scanf(%s,Stui.Class);printf(請(qǐng)輸入學(xué)生學(xué)院:);scanf(%s,Stui.apartment);printf(請(qǐng)輸入學(xué)生專業(yè):);scanf(%s,Stui.m

24、ajor); printf(請(qǐng)輸入學(xué)生狀態(tài):); scanf(%d,&Stui.state);fwrite (&Stuj, sizeof (struct student), 1, fp);printf(輸入完畢!n);fclose(fp);return 0;int Other() /按學(xué)號(hào)修改函數(shù)FILE *fp; char num10;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗 :n);return 0; printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);printf(nn);printf(請(qǐng)輸入

25、你要修改的學(xué)生學(xué)號(hào):n);scanf(%s,num);for (i=0;i num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p-state); p+; a+; fclose(fp); printf( 請(qǐng)輸入要?jiǎng)h除記錄的學(xué)號(hào):); scanf(%s,num); for(k=Stu;k num)=0) break; if(k Stu+a) for(p=k;pk+a-1;p+)*p=*(p+1); else printf(n 無此人!nn); fp=fopen(message.txt,r); if(fp=NULL) print

26、f(n 打開文件失敗!n); return 0; for(p=Stu;p num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p-state); fclose(fp); void Show() /顯示學(xué)生信息函數(shù)int c;do printf( n-請(qǐng)選擇輸出學(xué)生的方式-n );printf( 1-按學(xué)號(hào)輸出學(xué)生籍貫信息n );printf( 2-按專業(yè)輸出學(xué)生籍貫信息n );printf( 3-將顯示所有學(xué)生學(xué)籍信息n );printf( 4-退出n );scanf(%d,&c);switch (c)case 1: sho

27、wnum();break;case 2: showmajor();break;case 3: displaystu();break;case 4:break;default: printf(n輸入有誤!請(qǐng)重新輸入:nnn);break; while (c != 4);int shownum() /按學(xué)號(hào)輸出籍貫表FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失?。?; return 0; printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);for (i=0;i m;i+)printf(n學(xué)號(hào)

28、: %sn,Stui.num); printf(n籍貫: %sn,Stui.address);fclose(fp);return 0;int showmajor() /按專業(yè)輸出籍貫表FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失?。);return 0; printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:);scanf(%d,&m);for (i=0;i m;i+)printf(n專業(yè) :%sn,Stui.major); printf(n籍貫 :%sn,Stui.address); fclose(fp); ret

29、urn 0;int displaystu() /顯示每個(gè)學(xué)生信息FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失?。);return 0;printf(請(qǐng)輸入你已經(jīng)寫入文件的學(xué)生數(shù)量:); scanf(%d,&m);printf(nn);for (i=0;i m;i+) fread(&Stui,sizeof(struct student),1,fp);printf( 姓名 :%sn,S); printf( 學(xué)號(hào) :%sn,Stui.num); printf( 年齡 :%dn,Stui.age); printf( 性別 :%sn,Stui.sex); printf( 籍貫 :%sn,Stui.address); printf( 學(xué)院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 班級(jí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論