




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、目錄一、需求分析2二、概要設計2三、詳細設計4四、調(diào)試分析9五、用戶手冊9六、測試數(shù)據(jù)9七、附錄10一、需求分析1.課設內(nèi)容:學生學籍管理系統(tǒng):用數(shù)據(jù)文件存放學生的學籍,可對學生學籍進行注冊,登錄,修改,刪除,查找,統(tǒng)計,學籍變化等操作。功能要求:(1) 系統(tǒng)以菜單方式工作。(2) 登記學生的學號,姓名,性別,年齡,籍貫,系別,專業(yè),班級;修改已知學號的學生信息。(3) 刪除已知學號的學生信息。(4) 查找已知學號的學生信息。(5) 按學號,專業(yè)輸出學生籍貫表。(6) 查詢學生學籍變化,比如入學,轉(zhuǎn)專業(yè),退學,降級,休學,畢業(yè)。 2.用一個結構體來表示學生學籍的各種信息,結構體如下:struc
2、t student char namen; /姓名char sexS; /性別char addressA; /籍貫 int age; /年齡char numX; /學號char ClassC; /班級 char apartmentH; /院系char majorM; /專業(yè)int state; /當前該生的學習狀態(tài)如降級等。; 3.學籍變化用1表示入學,2表示退學,3表示降級,4表示休學,5表示畢業(yè)。4.用數(shù)據(jù)文件存儲信息,用函數(shù)fwrite()和fread()作為寫入和讀出文件信息。5.利用以上的結構體構造一個鏈表,用于查找學生信息這一功能。6.信息的輸入都從鍵盤輸入,以菜單形式展開以實現(xiàn)其
3、功能。7.程序執(zhí)行命令: (1)寫入學生信息。 (2)保存學生信息。 (3)實現(xiàn)其他功能。二、概要設計 1.程序功能模塊主要由以下六大模塊組成:void Register(); /學生信息寫入功能void Update(); /學生信息修改功能void Research(); /學生信息查找功能void deletenum(); /學生信息刪除功能(按學號刪除)void Findstate(); /學生狀態(tài)查找功能void Show(); /學生信息顯示功能其中void Research();函數(shù)還包括子函數(shù)int findnum(char *key); int findname(char *
4、key);前一個是按學號查找,后一個是按姓名查找。而void Show()函數(shù)包括子函數(shù)int showmajor();int displaystu();int shownum();void Update()函數(shù)包括子函數(shù)int Add ()和intOther()以上的六大功能是獨立工作的,互不影響,只有void Research();和void Show()和void Update()函數(shù)與它們的子函數(shù)有影響。2.學生學籍信息管理的數(shù)據(jù)類型聲明如下:用結構體表示:#define n 8 /姓名字長#define S 6 /性別字長#define A 12 /籍貫字長#define H 10
5、/院系字長#define C 8 /班級字長#define X 10 /學號字長#define M 10 /專業(yè)字長#define N 10 /輸入學生個數(shù)struct student /學生信息結構體char namen; /姓名char sexS; /性別char addressA; /籍貫 int age; /年齡char numX; /學號char ClassC; /班級 char apartmentH; /院系char majorM; /專業(yè)int state; /當前該生的學習狀態(tài)stuN; /最多輸入的學生數(shù)3.各個函數(shù)功能模塊的調(diào)用如下: main() Register() U
6、pdate()Show() deletenum() Research()Findstate()退出 ( 三、詳細設計: 1.寫入信息函數(shù)如下: void Register() /學籍注冊函數(shù) int i,x; FILE *fp; /文件保存 printf(文件信息將保存在:message.txtnn); fp=fopen(message.txt,w); printf(請輸入你要寫入該文件的學生數(shù)量:); / 輸入學生數(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( 請輸入要刪除記錄的學號:); 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() /按姓名查詢學生狀態(tài)FILE *fp;char Name8;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗!); printf(請輸入你已經(jīng)寫入文件的學生數(shù)量:);scanf(%d,&m);printf(請輸入你要查找學生的姓名:);scanf(%s,Name);for (i=0;i m;i+) if (strcmp(S,Name) = 0) printf( 姓名:%sn ,S
9、); printf(學生狀態(tài):%dn,Stui.state);fclose(fp);6. 信息查找功能如下: void Research()int i;char j10;printf(1-按學號查詢n);printf(2-按姓名查詢n);printf(請輸入您的選擇:);scanf(%d,&i);switch (i)case 1: printf(請輸入你要查找的學生學號:); scanf(%s,j); findnum(j);break;case 2: printf(請輸入你要查找的學生姓名:); scanf(%s,j); findname(j);break;default: printf(輸入
10、有誤!正在退出!);break;7.主函數(shù)如下: void main()int i;do /* 主菜單 */ printf(=歡迎使用學生學籍管理系統(tǒng)=n); printf( 1-Register-(注冊)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( 注:學生學習狀態(tài)表示方法: 1-入學n);printf( 2-
11、退學n); printf( 3-降級n); printf( 4-休學n); printf( 5-畢業(yè)n); printf( 請輸入您的選擇:);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、請重新輸入:nnn); break;while (i!=7);四、調(diào)試分析: 1.由于文件這塊知識沒有講,所以通過自學的效果并不是很好,在程序設計中文件這塊做起來有點吃力,但最終還是學會了。 2.指針問題,刪除功能中要到的指針刪除有問題。3.多文件結構即工程結構開始還不會。不過通過自學還是能搞定。4.全局變量的問題。什么地方該用有點不懂。不過現(xiàn)在明白了。五、用戶手冊:1.本程序的運行環(huán)境為TC6.0,執(zhí)行文件為Studentmessage.exe。 進入演示程序后,即顯示對話形式的提示操作過程。如:你要輸入學生信息,則輸入1即可。每種操作的代號不同,只需按提示操作即可。3.保存的文檔在mess
13、age.txt文件中,可以查看。六、測試數(shù)據(jù):運行的結果如下:1.菜單界面:2.寫入學生信息3.顯示信息4.修改信息:5.顯示籍貫及學習狀態(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; /學號char ClassC; /班級 char apartmentH
14、; /院系char majorM; /專業(yè)int state; /當前該生的學習狀態(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(); /*按學號顯示*/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(請輸入你已經(jīng)寫入文件的學生數(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( 學號 :%sn,Stui.num); printf( 性別 :%sn,Stui.sex); printf( 年齡 :%dn,Stui.age); printf( 籍貫 :%sn,Stui.address); printf( 班級 :%sn,Stui.Class); printf( 學院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 狀態(tài) :%dn,Stui.state); fclose(fp); if (i = 0)printf
17、(學生:%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(請輸入你已經(jīng)寫入文件的學生數(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( 學號 :%sn,Stui.num); printf( 性別 :%sn,Stui.sex); printf( 年齡 :%dn,Stui.age); printf( 籍貫 :%sn,Stui.address); printf( 班級 :%sn,Stui.Class); printf( 學院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 狀態(tài) :%dn,Stui.state);fclose(fp);if (i = 0)printf(學生:%s不在該文件中!n,key);return 1;void R
19、egister() int i,x;FILE *fp; printf(文件信息將保存在:message.txtnn);fp=fopen(message.txt,w);printf(請輸入你要寫入該文件的學生數(shù)量:); scanf(%d,&i); for (x=0;x i;x+) printf(請輸入學生姓名:); scanf(%s,S);printf(請輸入學生學號:);scanf(%s,Stux.num);printf(請輸入學生性別:);scanf(%s,Stux.sex);printf(請輸入學生年齡:);scanf(%d,&Stux.age);printf(請輸入學生籍
20、貫:);scanf(%s,Stux.address);printf(請輸入學生班級:);scanf(%s,Stux.Class);printf(請輸入學生學院:);scanf(%s,Stux.apartment);printf(請輸入學生專業(yè):);scanf(%s,Stux.major); printf(請輸入學生狀態(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-按學號查詢n);printf(2-按姓名查詢n);printf(請輸入您的選擇:);scanf(%d,&i);switch (i)case 1: printf(請輸入你要查找的學生學號:); scanf(%s,j); findnum(j);break;case 2: printf(請輸入你要查找的學生姓名:); scanf(%s,j); findname(j);break;default: printf(輸入有誤!正在退出!);break;void Update() / *修改*/ int i; doprintf(輸入修改的方式:nn);printf( 1-增加-);prin
22、tf( 2-其他-); printf(請輸入:);scanf(%d,&i);switch(i)case 1:Add();break;case 2:Other();break; case 3: break; default: printf(輸入有誤!請重新輸入:nnn); break;while(i!=3);int Add () /修改函數(shù) int i,j;FILE *fp;printf(請輸入你要增加的學生個數(shù):); scanf(%d,&i);if (fp=fopen(message.txt,w)=NULL)printf(打開文件失敗!);return 0;for (j=0;j i;j+) p
23、rintf(請輸入學生姓名:); scanf(%s,S);printf(請輸入學生學號:);scanf(%s,Stui.num); printf(請輸入學生性別:);scanf(%s,Stui.sex); printf(請輸入學生年齡:);scanf(%d,&Stui.age);printf(請輸入學生籍貫:);scanf(%s,Stui.address);printf(請輸入學生班級:);scanf(%s,Stui.Class);printf(請輸入學生學院:);scanf(%s,Stui.apartment);printf(請輸入學生專業(yè):);scanf(%s,Stui.m
24、ajor); printf(請輸入學生狀態(tài):); scanf(%d,&Stui.state);fwrite (&Stuj, sizeof (struct student), 1, fp);printf(輸入完畢!n);fclose(fp);return 0;int Other() /按學號修改函數(shù)FILE *fp; char num10;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗 :n);return 0; printf(請輸入你已經(jīng)寫入文件的學生數(shù)量:);scanf(%d,&m);printf(nn);printf(請輸入
25、你要修改的學生學號: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( 請輸入要刪除記錄的學號:); 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() /顯示學生信息函數(shù)int c;do printf( n-請選擇輸出學生的方式-n );printf( 1-按學號輸出學生籍貫信息n );printf( 2-按專業(yè)輸出學生籍貫信息n );printf( 3-將顯示所有學生學籍信息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輸入有誤!請重新輸入:nnn);break; while (c != 4);int shownum() /按學號輸出籍貫表FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗!); return 0; printf(請輸入你已經(jīng)寫入文件的學生數(shù)量:);scanf(%d,&m);for (i=0;i m;i+)printf(n學號
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(打開文件失敗!n);return 0; printf(請輸入你已經(jīng)寫入文件的學生數(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() /顯示每個學生信息FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打開文件失敗!n);return 0;printf(請輸入你已經(jīng)寫入文件的學生數(shù)量:); scanf(%d,&m);printf(nn);for (i=0;i m;i+) fread(&Stui,sizeof(struct student),1,fp);printf( 姓名 :%sn,S); printf( 學號 :%sn,Stui.num); printf( 年齡 :%dn,Stui.age); printf( 性別 :%sn,Stui.sex); printf( 籍貫 :%sn,Stui.address); printf( 學院 :%sn,Stui.apartment); printf( 專業(yè) :%sn,Stui.major); printf( 班級
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 28803.1-2025消費品安全風險管理第1部分:導則
- GB/T 18204.5-2025公共場所衛(wèi)生檢驗方法第5部分:集中空調(diào)通風系統(tǒng)
- 郵政快遞智能技術專業(yè)教學標準(高等職業(yè)教育??疲?025修訂
- 2025年中國家用光脫毛器具行業(yè)市場全景分析及前景機遇研判報告
- 中國鞋面橫織機行業(yè)市場競爭格局及投資前景展望報告
- 中醫(yī)培訓課件 哪些
- 2025年中國車床行業(yè)市場深度評估及投資策略咨詢報告
- 中國幕墻裝飾板市場規(guī)模預測及投資戰(zhàn)略咨詢報告
- 2025年 重慶市長壽區(qū)教育事業(yè)單位定向招聘考試筆試試題附答案
- 2025年 新疆鐵道職業(yè)技術學院招聘考試筆試試題附答案
- 溝通與演講2023學習通超星課后章節(jié)答案期末考試題庫2023年
- 高二區(qū)域地理 撒哈拉以南的非洲課件
- 數(shù)字化精密加工車間項目可行性研究報告建議書
- 2022年《內(nèi)蒙古自治區(qū)建設工程費用定額》取費說明
- Q∕GDW 10799.6-2018 國家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 寧波市建設工程資料統(tǒng)一用表(2022版)1 通用分冊
- 危險化學品安全技術說明書MSDS—汽油
- 三甲醫(yī)院必備醫(yī)療設備清單大全
- 暴雨產(chǎn)流計算(推理公式_四川省)
- 中考數(shù)學復習經(jīng)驗交流PPT課件
- 內(nèi)部控制專項審計實施方案
評論
0/150
提交評論