




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、題目名稱:宿舍管理查詢軟件二、設(shè)計目的:進(jìn)一步掌握和利用C語言進(jìn)行課程設(shè)計的能力,理解和運用結(jié)構(gòu)化程設(shè)計的思想和方法,熟練掌握條件語句、循環(huán)、數(shù)組、函數(shù)操作,初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法,學(xué)會高度一個較長程序的基本方法和利用流程圖或N-S圖表示算法,將本課程所學(xué)的知識合理地運用于實踐當(dāng)中。了解一些書上沒有的函數(shù)及使用方法。三、設(shè)計分析:1、需求分析為了實現(xiàn)提高高校宿舍管理部門的工作效率,充分利用資源,減少不必要的人力、物力和財力的支出,方便宿舍管理部門的工作人員全面地掌握學(xué)生住宿情況等目的,為宿舍管理部門開發(fā)設(shè)計專用系統(tǒng)學(xué)生宿舍信息管理系統(tǒng)來進(jìn)行管理學(xué)生宿舍信息,使學(xué)生宿舍信息實
2、現(xiàn)標(biāo)準(zhǔn)化的管理和規(guī)范化的制度是十分必要的。2、經(jīng)濟(jì)可行性分析如今是信息化時代,信息化管理可以使學(xué)生宿舍管理更加系統(tǒng)化,全面化,快速化,這樣可以為學(xué)校帶來高效的工作效益和經(jīng)濟(jì)效益,開發(fā)出本系統(tǒng)可以減少宿舍管理人員人數(shù),而且管理方便,各功能實現(xiàn)迅速,數(shù)據(jù)有效的管理。這些效益和管理上的便捷遠(yuǎn)遠(yuǎn)超過了開發(fā)本系統(tǒng)的成本,所以在經(jīng)濟(jì)上具有完全的可行性。四、總體設(shè)計:根據(jù)系統(tǒng)要求,即本系統(tǒng)具有信息的錄入,顯示,查找,刪除,從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)、結(jié)束程序等功能,先設(shè)計出詳細(xì)的系統(tǒng)流程圖,然后將源代碼輸入程序,進(jìn)行編譯調(diào)試即可。 程序總體分九個項目:輸入記錄、顯示記錄、按房間號排序并顯示、按學(xué)號排序并
3、顯示、插入一條記錄并按學(xué)號排序并顯示、按姓名查找、刪除一條記錄、查找并顯示一個記錄、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)以及結(jié)束程序。五、詳細(xì)設(shè)計:1、系統(tǒng)流程圖如圖5-1所示開始輸出界面選擇操作選擇1選擇2選擇3選擇4選擇5選擇6選擇7選擇8選擇9選擇0輸入記錄是是顯示記錄否否否否否否否否否退出系統(tǒng)結(jié)束按床位排序顯示按學(xué)號排序顯示是是是是插入一個記錄查找刪除記錄查找顯示記錄從文件輸入寫入文件保存是是是是否圖5-1 系統(tǒng)流程圖2、根據(jù)流程圖,將程序源代碼輸入到編譯環(huán)境中,按照提示選擇進(jìn)行記錄的輸入,輸入一個數(shù)據(jù)后提示是否繼續(xù)輸入,直到結(jié)束程序為止。輸入主菜單如下:輸出("tt學(xué)生宿舍管理系
4、統(tǒng)n"); 輸出("tt§ 1. 輸入記錄 §n");輸出("tt§ 2. 顯示記錄 §n");輸出("tt§ 4. 按學(xué)號排序并顯示 §n");輸出("tt§ 5. 插入一條記錄按學(xué)號排序并顯示 §n");輸出("tt§ 6. 按姓名查找,刪除一條記錄 §n");輸出("tt§ 7 查找并顯示一個記錄 §n");輸出("tt§
5、 8. 從文件中讀入數(shù)據(jù) §n");輸出("tt§ 9. 循環(huán)寫入數(shù)據(jù) §n");輸出("tt§ 0. 結(jié)束程序 §n");輸出("ttn");輸出("tt請選擇您要運行的選項按(0-9):");將程序編譯生成“學(xué)生宿舍管理系統(tǒng).exe”。運行該文件如圖5-2所示。圖5-2 輸出界面圖輸入記錄采用循環(huán)輸入while(sign!='n'&&sign!='N') 輸出("tt房間號:"); 輸
6、入("tt%s"&,roomn+i.roomnum);輸出("tt床位號:");輸入("tt%s",&roomn+i.bednum);輸出("tt學(xué)號:");輸入("tt%s",&roomn+i.num);輸出("tt姓名:");輸入("tt%s",&roomn+);gets(x); /*清除多余的輸入*/輸出("tt是否繼續(xù)輸入?(Y/N)");輸入("tt%c",&am
7、p;sign); i+;返回(n+i);按照提示選擇“1”進(jìn)行記錄的輸入如圖5-3所示:圖5-3 輸入記錄顯示圖 按房間號排序采用冒泡排序法。 int i,j,*p,*q,s; char t10; for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum)>0) 比較(t,roomj+1.roomnum);比較(roomj+1.roomnum,roomj.roomnum);比較(roomj.roomnum,t);比較(t,roomj+1.bednum);比較(ro
8、omj+1.bednum,roomj.bednum);比較(roomj.bednum,t);比較(t,roomj+1.num);比較(roomj+1.num,roomj.num);比較(roomj.num,t);比較(t,roomj+1.name);比較(roomj+1.name,);比較(,t);連續(xù)輸入多組數(shù)據(jù)后,按“n”結(jié)束輸入,提示按任意鍵繼續(xù),按任意鍵后選擇“2”進(jìn)行記錄的顯示如圖5-4所示。圖5-4 按房間號排序并顯示圖按學(xué)號排序采用冒泡排序法比較(t,roomj+1.bednum);比較(roomj+1.bednum,roomj.bednu
9、m);比較(roomj.bednum,t);比較(t,roomj+1.num);比較(roomj+1.num,roomj.num);比較(roomj.num,t);比較(t,roomj+1.name);比較(roomj+1.name,);比較(,t);顯示后提示按任意鍵繼續(xù),選擇“4”進(jìn)行按學(xué)號排序并顯示,如圖5-5所示。圖5-5 按學(xué)號排序顯示圖插入記錄采用交互式輸入:輸出("tt輸入他(她)的姓名:"); 輸入("tt%s",&s);while(strcmp(,s)!=0&&
10、amp;i<n) i+; 如果(i=n)輸出("tt對不起沒找到該學(xué)生!n"); return;輸出("tt他(她)的房間號:%sn",roomi.roomnum); 輸出("tt他(她)的床位號:%sn",roomi.bednum);輸出("tt他(她)的學(xué)號:%sn",roomi.num);顯示后提示按任意鍵繼續(xù),選擇“5”按提示步驟插入一條記錄,如圖5-6所示。圖5-6 插入一條記錄圖六、系統(tǒng)測試將源代碼輸入至編譯環(huán)境中,將程序編譯連接后生成“學(xué)生宿舍管理系統(tǒng).exe”運行該文件,則顯示主菜單:1、輸入
11、記錄2、顯示記錄3、按房間號排序并顯示4、按學(xué)號排序并顯示5、插入一條記錄并按學(xué)號排序顯示6、按姓名查找,刪除一條記錄7、查找并顯示一個記錄8、從文件中讀入數(shù)據(jù)9、循環(huán)寫入數(shù)據(jù)0、結(jié)束程序請選擇您要運行的選項按(0-9):按照提示選擇“1”進(jìn)行記錄的輸入,則在主菜單下顯示:輸入記錄房間號:101床位號:1學(xué)號:21姓名:xiaoning是否繼續(xù)輸入?(Y/N)-按N結(jié)束,按任意鍵后選擇“2”進(jìn)行記錄的顯示,則在主菜單下顯示:房間號 床位號 學(xué)號 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang請按任意鍵繼
12、續(xù)選擇“5”插入一條記錄,則在主菜單下顯示:學(xué)生房間號:513學(xué)生床位號:4學(xué)生學(xué)號:52學(xué)生姓名:xiaoguan插入記錄成功!房間號 床位號 學(xué)號 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang513 4 52 xiaoguan請按任意鍵繼續(xù)七、結(jié)論這次課程設(shè)計我做的還不是很完善,因為功能不是很多,如果以后有機(jī)會完善的話,應(yīng)該對管理員和用戶登錄時做進(jìn)一步完善。學(xué)生的信息還不夠完整,如學(xué)生的宿舍長,系別,一些費用以及學(xué)生的成績等待相關(guān)詳細(xì)信息。如果使次系統(tǒng)再詳細(xì)些,需添加更多的管理員以及管理員權(quán)限,還
13、有學(xué)生的更多信息,如果有必要的話,添加一些有關(guān)教師的信息,以及教師登錄的界面。在這次課程設(shè)計的過程中,我們體會到要想開發(fā)一個系統(tǒng)軟件,不僅需要相當(dāng)?shù)膶I(yè)技術(shù)知識,還要有嚴(yán)謹(jǐn)縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費力氣。同時還要善于捕獲細(xì)小的方面,因為那往往是這個程序的致命因素。這次課程設(shè)計培養(yǎng)了我的細(xì)心和耐性,更樹立了一種科學(xué)的態(tài)度。附錄:源代碼#include<stdio.h> /*引用庫函數(shù)*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef stru
14、ct /*定義結(jié)構(gòu)體數(shù)組*/char roomnum4; /*房間號*/char bednum2; /*床位號*/char num10; /*學(xué)號*/char name20; /*姓名*/Student;Student room11000; /*結(jié)構(gòu)體數(shù)組變量*/int menu_select() /*菜單函數(shù)*/char c;dosystem("cls"); /*運行前清屏*/printf("tt學(xué)生宿舍管理系統(tǒng)n"); /*菜單選擇*/printf("tt§ 1. 輸入記錄 §n");printf("
15、tt§ 2. 顯示記錄 §n");printf("tt§ 4. 按學(xué)號排序并顯示 §n");printf("tt§ 5. 插入一條記錄按學(xué)號排序并顯示 §n");printf("tt§ 6. 按姓名查找,刪除一條記錄 §n");printf("tt§ 7 查找并顯示一個記錄 §n");printf("tt§ 8. 從文件中讀入數(shù)據(jù) §n");printf("
16、tt§ 9. 循環(huán)寫入數(shù)據(jù) §n");printf("tt§ 0. 結(jié)束程序 §n");printf("ttn");printf("tt請選擇您要運行的選項按(0-9):");c=getchar(); /*讀入選擇*/while(c<'0'|c>'9');return(c-'0'); /*返回選擇*/int Input(Student room,int n) /*輸入若干條記錄*/int i=0;char sign,x10;
17、/*x10為清除多余的數(shù)據(jù)所用*/while(sign!='n'&&sign!='N') /*判斷*/printf("tt房間號:"); /*交互輸入*/scanf("tt%s"&,roomn+i.roomnum);printf("tt床位號:");scanf("tt%s",&roomn+i.bednum);printf("tt學(xué)號:");scanf("tt%s",&roomn+i.num);printf
18、("tt姓名:");scanf("tt%s",&roomn+);gets(x); /*清除多余的輸入*/printf("tt是否繼續(xù)輸入?(Y/N)");scanf("tt%c",&sign); /*輸入判斷*/i+;return(n+i);void Display(Student room,int n) /*顯示所有記錄*/int i;printf("tt-n"); /*格式頭*/printf("tt房間號 床位號 學(xué)號 姓名 n");print
19、f("tt-n");for(i=1;i<n+1;i+) /*循環(huán)輸入*/printf("tt%-10s%-10s%-10s%-20sn",roomi-1.roomnum,roomi-1.bednum,roomi-1.num,);if(i>1&&i%10=0) /*每十個暫停*/printf("tt-n");/*格式*/printf("tt");system("pause");printf("tt-n"); printf(&q
20、uot;tt");system("pause");void Sort_by_num(Student room,int n) /*按學(xué)號排序*/int i,j,*p,*q,s;char t10;for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.num,roomj+1.num)>0)strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+
21、1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);void Sort_by_roomnum(Student room,int n) /*按房間號排序*/int i,j,*p,*q,s;char t10;for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum
22、)>0)strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,roomj.
23、name);strcpy(,t);int Insert_a_record(Student room,int n) /*插入一條記錄*/char x100; /*清除多余輸入所用*/printf("tt學(xué)生房間號:"); /*交互式輸入*/scanf("tt%s",&roomn.roomnum);printf("tt學(xué)生床位號:");scanf("tt%s",&roomn.bednum);printf("tt學(xué)生學(xué)號:");scanf("tt%s&qu
24、ot;,&roomn.num);printf("tt學(xué)生姓名:");scanf("tt%s",&);gets(x);n+;Sort_by_num(room,n); /*調(diào)用排序函數(shù)*/printf("tt插入記錄成功!n"); /*返回成功信息*/return(n);int Delete_a_record(Student room,int n) /*按姓名查找,刪除一條記錄*/char s20;int i=0,j;printf("tt輸入他(她)的姓名:"); /*交互式問尋*/
25、scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/if(i=n)printf("tt對不起沒找到該學(xué)生!n"); /*返回失敗信息*/return(n);for(j=i;j<n-1;j+) /*刪除操作*/strcpy(roomj.roomnum,roomj+1.roomnum);strcpy(roomj.bednum,roomj+1.bednum); strcpy(roomj.num,roomj+1.num);strcpy(,roo
26、mj+1.name);printf("tt刪除記錄成功!n"); /*返回成功信息*/return(n-1);void Query_a_record(Student room,int n) /*查找并顯示一個記錄*/char s20;int i=0;printf("tt輸入他(她)的姓名:"); /*交互式輸入*/scanf("tt%s",&s);while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/if(i=n)printf("tt對不起沒找到該學(xué)生!
27、n"); /*輸入失敗信息*/return;printf("tt他(她)的房間號:%sn",roomi.roomnum); /*輸出該學(xué)生信息*/printf("tt他(她)的床位號:%sn",roomi.bednum);printf("tt他(她)的學(xué)號:%sn",roomi.num);int AddfromText(Student room,int n) /*從文件中讀入數(shù)據(jù)*/int i=0,num;FILE *fp; /*定義文件指針*/char filename20; /*定義文件名*/printf("t
28、t輸入文件名:");scanf("tt%s",&filename); /*輸入文件名*/if(fp=fopen(filename,"rb")=NULL) /*打開文件*/printf("tt無法打開該文件n"); /*打開失敗信息*/printf("tt");system("pause");return(n);fscanf(fp,"%d",&num); /*讀入總記錄量*/while(i<num) /*循環(huán)讀入數(shù)據(jù)*/ fscanf(fp,&q
29、uot;%s%s%s%s",roomn+i.roomnum,roomn+i.bednum,roomn+i.num,roomn+);i+;n+=num;fclose(fp); /*關(guān)閉文件*/printf("tt讀入成功!n");printf("tt");system("pause");return(n);void WritetoText(Student room,int n) /*將所有記錄寫入文件*/int i=0;FILE *fp; /*定義文件指針*/char filename100; /*定義文件名*/p
30、rintf("tt循環(huán)寫入數(shù)據(jù)n"); /*輸入文件名*/printf("tt輸入文件名:");scanf("tt%s",&filename);if(fp=fopen(filename,"w")=NULL) /*打開文件*/printf("tt無法打開該文件n");system("pause");return;fprintf(fp,"%dn",n); /*循環(huán)寫入數(shù)據(jù)*/while(i<n)fprintf(fp,"%-10s%-10
31、s%-10s%-10sn",roomi.roomnum,roomi.bednum,roomi.num,);i+;fclose(fp); /*關(guān)閉文件*/printf("寫入成功!n"); /*返回成功信息*/void main() /*主函數(shù)*/int n=0;for(;)switch(menu_select() /*選擇判斷*/ case 1:printf("tt輸入記錄n"); /*輸入若干條記錄*/n=Input(room1,n);break; case 2: printf("tt顯示記錄n"); /*顯示所有記錄*/ Display(room1,n); break; case 3: printf("tt按房間號排序并顯示n"); Sort_by_roomnum(room1,n);
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程造價全過程跟蹤審計咨詢合同范本
- 冷庫服務(wù)安裝合同范本
- 企業(yè)購買電腦合同范本
- 廠長和下屬分房合同范本
- 中美服裝合同范本
- 合作舉辦演出合同范本
- 債務(wù)繼承合同范本
- 叉車以租代售合同范本
- 單人房間 出租合同范本
- 名額買賣合同范例
- 2025年安徽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫一套
- 開啟新征程??點亮新學(xué)期+課件=2024-2025學(xué)年高一下學(xué)期開學(xué)家長會
- 壓力容器考試審核考試題庫(容標(biāo)委氣體協(xié)會聯(lián)合)
- 人教版(2025版)七年級下冊英語UNIT 1 Animal Friends 單元整體教學(xué)設(shè)計(6個課時)
- 2025年春季學(xué)期學(xué)校德育工作計劃及安排表
- 2025年山東商務(wù)職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 海洋自主無人系統(tǒng)跨域協(xié)同任務(wù)規(guī)劃模型與技術(shù)發(fā)展研究
- 校園體育活動的多元化與健康促進(jìn)
- 新中式養(yǎng)生知識培訓(xùn)課件
- 山東省臨沂市地圖矢量課件模板()
- 學(xué)習(xí)2025年全國教育工作會議心得體會
評論
0/150
提交評論