




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 目 錄一、實驗目的3二、實驗內(nèi)容3三、實驗環(huán)境3四、需求分析3五、概要設計41、方案設計42、數(shù)據(jù)結構說明43、模塊功能說明5六、詳細設計及運行結果61、登陸界面62、主界面63、錄入模塊74、錄入界面85、打印學生信息界面86、更新學生信息界面97、查詢宿舍信息界面98、統(tǒng)計宿舍信息界面109、學生宿舍排序10七、源程序11八、心得體會29學生宿舍管理系統(tǒng)一、實驗目的1 熟練掌握線性表的基本操作在順序存儲和鏈式存儲上的實現(xiàn)。、;2 以線性表的各種操作(建立、插入、刪除、遍歷等)的實現(xiàn)為重點;3 掌握線性表的動態(tài)分配順序存儲結構的定義和基本操作的實現(xiàn);4 通過實驗幫助學生加深對C語言的使用(
2、特別是函數(shù)的參數(shù)調(diào)用、指針類型的應用和鏈表的建立等各種基本操作)。二、實驗內(nèi)容我組設計的是“學生宿舍管理系統(tǒng)”,主要是針對住宿學生個人信息的管理,適用對象主要是學校,以方便學校對住宿學生的管理。包括學生的姓名、學號、性別、專業(yè)、班級等等。在編寫過程中主要運用C語言的基本知識有:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結構等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結構、判斷選擇結構、循環(huán)結構);大程序的功能分解方法(即函數(shù)的調(diào)用與使用)等。 三、實驗環(huán)境臺式計算機每人一臺;軟件:Visual C+6.0;四、需求分析該程序是由C語言編寫的一個宿舍管理查詢軟件
3、,本程序在Microsoft Visual C+ 6.0下運行,其主要功能是實現(xiàn)對學生信息的錄入、添加、刪除、修改、查詢、統(tǒng)計。其中查詢可以分別以姓名、學號、宿舍號為關鍵字查詢學生信息。統(tǒng)計可以分別以學號、宿舍號、性別、班級、專業(yè)為關鍵字進行統(tǒng)計,并且輸出信息按學號大小從小到大輸出。五、概要設計1、方案設計主函數(shù)密碼模塊錄入模塊添加模塊修改模塊刪除模塊查詢模塊統(tǒng)計模塊退出系統(tǒng)學 號姓名宿舍性 別年齡專 業(yè)返 回班 級按姓名按學號按宿舍返 回按性別按學號按宿舍返 回按班級按專業(yè)2、數(shù)據(jù)結構說明程序中數(shù)據(jù)主要是學生信息和宿舍信息,具體屬于類型如下: struct stu char name20;
4、int num; char sex; int age; int grade; int nclass; char zhuanye30;struct dom int bui_num; int floor_num; int room_num; int bed_num; struct stu st;sMAX,p;3、模塊功能說明第一密碼模塊:調(diào)用cipher(),進行管理者的注冊與登錄操作。第二錄入模塊:調(diào)用input_message(),對住宿學生信息進行錄入。第三添加模塊:調(diào)用append_message(),對新來學生信息進行添加錄入。第四修改模塊:調(diào)用revise_message(),對需修改
5、學生的信息進行修改。第五刪除模塊:調(diào)用delete_message(),對某一學生信息進行刪除操作。第六查詢模塊:調(diào)用find_message(),分別以姓名、學號、宿舍號對學生信息進行查詢。第七統(tǒng)計模塊:調(diào)用census_message(),分別以學號、宿舍號、性別、班級、專業(yè)方式對學生信息進行統(tǒng)計,并按學號由小到大輸出。六、詳細設計及運行結果1、登陸界面2、主界面3、錄入模塊輸入學號輸入姓名輸入性別輸入年齡輸入年級輸入班級輸入專業(yè)是否繼續(xù)錄入結 束NY宿舍樓號宿舍樓層號宿舍房間號宿舍床號4、錄入界面5、打印學生信息界面6、更新學生信息界面7、查詢宿舍信息界面8、統(tǒng)計宿舍信息界面9、學生宿舍
6、排序七、源程序#include <stdio.h>#include "string.h"#define MAX 10#define PRINT1 printf("-n")#define PRINT2 printf("學號-學生姓名-性別-年齡-年級-班級-專業(yè)-樓號-樓層號-房間號-床號nn")int sum;struct stu char name20; int num; char sex; int age; int grade; int nclass; char zhuanye30;struct dom int bui
7、_num; int floor_num; int room_num; int bed_num; struct stu st;sMAX,p; /*保存信息*/ save_message() FILE *fp; int i; if(fp=fopen("dom.txt","wt")=NULL) printf("讀文件錯誤!n"); return 0; for(i=0;i<sum;i+) if(fwrite(&si,sizeof(struct dom),1,fp)!=1) printf("寫文件錯誤!n");
8、 fclose(fp); /*輸入模塊*/ input_message() int i=0; /clrscr(); printf("nn 錄入學生信息(最多%d個)n",MAX); printf(" -n"); do printf("n 第%d個學生nn",i+1); printf("n 學號: "); scanf("%d",&si.st.num); if(si.st.num=0) break; printf("n 學生姓名: "); scanf("%s&q
9、uot;,); printf("n 學生性別(男生用M表示,女生用F表示):"); getchar(); scanf("%c",&si.st.sex); printf("n 學生年齡: "); scanf("%d",&si.st.age); printf("n 學生年級: "); scanf("%d",&si.st.grade); printf("n 學生班級: "); scanf("%d",
10、&si.st.nclass); printf("n 學生專業(yè): "); scanf("%s",&si.st.zhuanye); printf("n 宿舍樓號: "); scanf("%d",&si.bui_num); printf("n 宿舍樓層號: "); scanf("%d",&si.floor_num); printf("n 宿舍房間號: "); scanf("%d",&si.room_nu
11、m); printf("n 宿舍床號: "); scanf("%d",&si.bed_num); i+; while(i<MAX); printf("n -%d個學生的信息輸入完畢!-n",i); sum=i; printf("n 按任意鍵返回主菜單!"); getchar(); / bioskey(0); return 0; /*讀取信息*/ int read_message() FILE *fp; int i=0; if(fp=fopen("dom.txt","rt&
12、quot;)=NULL) printf("nn*暫時還沒有任何信息,按任意鍵進入主菜單選擇基本信息的錄入!*n"); return 0; while(!feof(fp) fread(&si,sizeof(struct dom),1,fp); i+; fclose(fp); return(i); /*輸出模塊*/ output_message() int i=0;/ clrscr();printf("nn -學生信息表- nn");PRINT2;PRINT1;for(i=0;i<sum;i+)if(si.st.num!=0) printf(&
13、quot;%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9dnn",si.st.num,,si.st.sex,si.st.age, si.st.grade,si.st.nclass,si.st.zhuanye,si.bui_num,si.floor_num,si.room_num,si.bed_num); printf("n");/ bioskey(0);return 0; / /*添加學生信息*/ insert_message() int i=sum,flag=0; char choice; printf("nn
14、添加一個新同學n"); printf(" -n"); do printf("n 新學號: "); scanf("%d",&si.st.num); printf("n 學生姓名: "); scanf("%s",); printf("n 學生性別(男生用M表示,女生用F表示):"); getchar(); scanf("%c",&si.st.sex); printf("n 學生年齡: "); s
15、canf("%d",&si.st.age); printf("n 學生年級: "); scanf("%d",&si.st.grade); printf("n 學生班級: "); scanf("%d",&si.st.nclass); printf("n 學生專業(yè): "); scanf("%s",si.st.zhuanye); printf("n 宿舍樓號: "); scanf("%d",&
16、;si.bui_num); printf("n 宿舍樓層號: "); scanf("%d",&si.floor_num); printf("n 宿舍房間號: "); scanf("%d",&si.room_num); printf("n 宿舍床號: "); scanf("%d",&si.bed_num); sum+; printf("n 要繼續(xù)嗎?(Y/N)"); getchar(); scanf("%c",&a
17、mp;choice); if(choice='y' | choice='Y') flag=1; i+; printf("n 繼續(xù)!n"); else flag=0; while(flag=1); printf("n 按任意鍵返回主菜單!"); return 0; /*刪除模塊*/ del_message() int flag,del_num,i,k; char choice; do printf("n 輸入要刪除的學生學號: "); scanf("%d",&del_num);
18、 for(i=0;i<sum;i+) if(del_num=si.st.num) for(k=i;k<sum-1;k+) sk=sk+1; sum-; printf("nn 繼續(xù)嗎?(Y/N)"); getchar(); scanf("%c",&choice); if(choice='y' | choice='Y') flag=1; printf("n 繼續(xù)!n"); else flag=0; while(flag=1); printf("nn 按任意鍵返回主菜單!&quo
19、t;); getchar(); return 0; /*修改模塊*/ revise_message()int i=0,choices,revise_num,flag=0; char choice; do printf("n 輸入要修改的學生號: "); scanf("%d",&revise_num); for(i=0;i<sum;i+) if(si.st.num=revise_num) printf("n -學生信息-n"); PRINT1; PRINT2; printf("%2d%10s%6c%7d%6d%5
20、d%8s%5d%6d%8d%9dnn",si.st.num,,si.st.sex,si.st.age,si.st.grade,si.st.nclass,si.st.zhuanye,si.bui_num,si.floor_num,si.room_num,si.bed_num); printf("n 您要修改哪一項?n"); printf("n 1.學號n"); printf("n 2.性別n"); printf("n 3.姓名n"); printf("n 4.年齡n"
21、); printf("n 5.年級n"); printf("n 6.班級n"); printf("n 7.專業(yè)n"); printf("n 8.樓號n"); printf("n 9.樓層號n"); printf("n 10.房間號n"); printf("n 11.床號n"); printf("n 請選擇(1-11): "); scanf("%d",&choices); switch(choices) cas
22、e 1:printf("n 輸入修改后的學號"); scanf("%d",&si.st.num);break; case 2:printf("n 輸入修改后的姓名"); scanf("%s",);break; case 3:printf("n 輸入修改后的性別"); scanf("%s",si.st.sex);break; case 4:printf("n 輸入修改后的年齡"); scanf("%d",&am
23、p;si.st.age);break; case 5:printf("n 輸入修改后的年級"); scanf("%d",&si.st.grade);break; case 6:printf("n 輸入修改后的班級"); scanf("%d",&si.st.nclass);break; case 7:printf("n 輸入修改后的專業(yè)"); scanf("%s",&si.st.zhuanye);break; case 8:printf("n
24、輸入修改后的樓號"); scanf("%d",&si.bui_num);break; case 9:printf("n 輸入修改后的樓層號"); scanf("%d",&si.floor_num);break; case 10:printf("n 輸入修改后的房間號"); scanf("%d",&si.room_num);break; case 11:printf("n 輸入修改后的床號"); scanf("%d",&am
25、p;si.bed_num);break; PRINT1; PRINT2; printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9dnn",si.st.num,,si.st.sex,si.st.age,si.st.grade,si.st.nclass,si.st.zhuanye,si.bui_num,si.floor_num,si.room_num,si.bed_num); break; if(i=sum) printf("n 該學生不存在!");/ bioskey(0); return 0;/* print
26、f("nn 繼續(xù)修改嗎?(Y/N)"); getchar(); scanf("%c",&choice); if(choice='y'| choice='Y') flag=1; printf("n 繼續(xù)!n"); else flag=0; */ while(flag=1); getchar(); printf("n 按任意鍵返回主菜單! "); return 0; /*更新模塊*/ renew_message() int choice; do printf("nnn
27、*更新學生信息*nn"); printf(" 1.添加學生信息nn"); printf(" 2.刪除學生信息nn"); printf(" 3.修改學生信息nn"); printf(" 0.返回主菜單nn"); printf(" 請選擇(0-3): "); scanf("%d",&choice); switch(choice) case 1:insert_message();break; case 2:del_message();break; case 3:r
28、evise_message();break; case 0:break; while(choice!=0); return 0; inquire_name() /*按姓名查詢*/ int i,j=0; char inquire_name10; printf("n 輸入要查詢的學生姓名: "); scanf("%s",inquire_name); for(i=0;i<sum;i+) if(strcmp(,inquire_name)=0&&si.st.num!=0) printf("n -學生信息- n&q
29、uot;); PRINT1; PRINT2; printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9dnn",si.st.num,,si.st.sex,si.st.age, si.st.grade,si.st.nclass,si.st.zhuanye,si.bui_num,si.floor_num,si.room_num,si.bed_num); else j+; if(j=sum) printf("n 該學生不存在!"); return 0; int inquire_num() /*按學號查詢*/ int
30、 i,j=0,inquire_num; printf("n 輸入要查詢的學生學號: "); scanf("%d",&inquire_num); for(i=0;i<sum;i+) if(inquire_num=si.st.num) printf("n -學生信息-n"); PRINT1; PRINT2; printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9dnn",si.st.num,,si.st.sex,si.st.age, si.st.grade,
31、si.st.nclass,si.st.zhuanye,si.bui_num,si.floor_num,si.room_num,si.bed_num); else j+; if(j=sum) printf("n 該學生不存在!"); return 0; /*查詢模塊*/ inquire_message() int choice; do printf("nn *查詢學生信息*nn"); printf(" 1.按學生姓名查詢n"); printf(" 2.按學生學號查詢n"); printf(" 0.回主菜單n
32、"); printf(" 請選擇(0-2): "); scanf("%d",&choice); switch(choice) case 1:inquire_name();break; case 2:inquire_num();break; case 0:break; while(choice!=0); return 0; count_person() /*學生住宿情況統(tǒng)計*/ int i,j=0,count_grade,count_nclass; char count_zhuanye20; printf("n 輸入要統(tǒng)計的學生
33、專業(yè),年級,班級: "); scanf("%10s %8d %8d",&count_zhuanye,&count_grade,&count_nclass); printf("n 住宿情況"); printf("n -n"); printf("n 姓名 學號 樓號 樓層號 房間號 床號 n"); for(i=0;i<sum;i+) if(si.st.grade=count_grade&&si.st.nclass=count_nclass&&str
34、cmp(si.st.zhuanye,count_zhuanye)=0) printf("n%10s%8d%8d%8d%8d%8dn",,si.st.num,si.bui_num,si.floor_num, si.room_num,si.bed_num); else j+; if(j=sum) printf("n 該學生不存在!"); return 0; /*統(tǒng)計模塊*/ count_message() int choice; do printf("nn *統(tǒng)計住宿信息*n"); printf(" 1.學生
35、住宿情況統(tǒng)計n"); printf(" 0.返回主菜單n"); printf(" 請選擇(0-1): "); scanf("%d",&choice); switch(choice) case 1:count_person();break; case 0:break; while(choice!=0); return 0;sort_domitry() /*學生宿舍情況排序*/ int i,j ; printf("n 宿舍排序n"); printf(" -n"); printf(&
36、quot;n 排序 姓名 學號 性別 樓號 樓層號 房間號 床號n"); for(i=0;i<sum-1;i+) for(j=i+1;j<sum;j+) if(si.bui_num<sj.bui_num) p=si; si=sj; sj=p; else if(si.bui_num=sj.bui_num) if(si.floor_num<sj.floor_num) p=si; si=sj; sj=p; else if(si.floor_num=sj.floor_num) if(si.room_num<sj.room_num) p=si; si=sj; si
37、=p; else if(si.room_num=sj.room_num) if(si.bed_num<sj.bed_num) p=si; si=sj; sj=p; for(i=0;i<sum;i+) if(si.st.num!=0) printf("n%12d%8s%8d%8c%8d%8d%8d%6dnn",i+1,,si.st.num,si.st.sex,si.bui_num,si.floor_num,si.room_num,si.bed_num); return 0; /*排序模塊*/ sort_message() int choice; do printf("n *宿舍排序*n"); printf(" 1.宿舍情況排序n"); printf(" 0.返回主菜單!n"); 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保設施運維合同樣本
- 專項信托外匯固定資產(chǎn)貸款合作合同
- 玫瑰貸記卡動產(chǎn)質(zhì)押合同協(xié)議
- 員工合同解除合同書
- 贍養(yǎng)義務履行合同范文
- 聯(lián)合購房按揭貸款合同
- 精簡版商業(yè)租賃合同范本
- 租賃合同季度范本:機械設備篇
- 南湖區(qū):合同科技創(chuàng)新與合作新機遇
- 出租車股份合作合同條款
- 干式變壓器培訓課件
- 2023年上海中考語文試卷(附答案)
- 理發(fā)店業(yè)務轉讓協(xié)議書范本
- 2024年江蘇省中學生生物學奧林匹克初賽理論試題
- 環(huán)境年度報告
- 生產(chǎn)流水線的規(guī)劃方案
- 小針刀療法教學課件
- 打造寫生基地方案
- 寫作:廣告詞-【中職專用】高二語文高效課堂(高教版2023·職業(yè)模塊)
- 爆發(fā)性心肌炎護理查房課件
- 銷售人員人才畫像
評論
0/150
提交評論