宿舍管理系統(tǒng)軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁(yè)
宿舍管理系統(tǒng)軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁(yè)
宿舍管理系統(tǒng)軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁(yè)
宿舍管理系統(tǒng)軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁(yè)
宿舍管理系統(tǒng)軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、題目名稱:宿舍管理查詢軟件二、設(shè)計(jì)目的:進(jìn)一步掌握和利用C語(yǔ)言進(jìn)行課程設(shè)計(jì)的能力,理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法,熟練掌握條件語(yǔ)句、循環(huán)、數(shù)組、函數(shù)操作,初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,學(xué)會(huì)高度一個(gè)較長(zhǎng)程序的基本方法和利用流程圖或N-S圖表示算法,將本課程所學(xué)的知識(shí)合理地運(yùn)用于實(shí)踐當(dāng)中。了解一些書上沒有的函數(shù)及使用方法。三、設(shè)計(jì)分析:1、需求分析為了實(shí)現(xiàn)提高高校宿舍管理部門的工作效率,充分利用資源,減少不必要的人力、物力和財(cái)力的支出,方便宿舍管理部門的工作人員全面地掌握學(xué)生住宿情況等目的,為宿舍管理部門開發(fā)設(shè)計(jì)專用系統(tǒng)學(xué)生宿舍信息管理系統(tǒng)來(lái)進(jìn)行管理學(xué)生宿舍信息,使學(xué)生宿舍信息實(shí)

2、現(xiàn)標(biāo)準(zhǔn)化的管理和規(guī)范化的制度是十分必要的。2、經(jīng)濟(jì)可行性分析如今是信息化時(shí)代,信息化管理可以使學(xué)生宿舍管理更加系統(tǒng)化,全面化,快速化,這樣可以為學(xué)校帶來(lái)高效的工作效益和經(jīng)濟(jì)效益,開發(fā)出本系統(tǒng)可以減少宿舍管理人員人數(shù),而且管理方便,各功能實(shí)現(xiàn)迅速,數(shù)據(jù)有效的管理。這些效益和管理上的便捷遠(yuǎn)遠(yuǎn)超過(guò)了開發(fā)本系統(tǒng)的成本,所以在經(jīng)濟(jì)上具有完全的可行性。四、總體設(shè)計(jì):根據(jù)系統(tǒng)要求,即本系統(tǒng)具有信息的錄入,顯示,查找,刪除,從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)、結(jié)束程序等功能,先設(shè)計(jì)出詳細(xì)的系統(tǒng)流程圖,然后將源代碼輸入程序,進(jìn)行編譯調(diào)試即可。 程序總體分九個(gè)項(xiàng)目:輸入記錄、顯示記錄、按房間號(hào)排序并顯示、按學(xué)號(hào)排序并

3、顯示、插入一條記錄并按學(xué)號(hào)排序并顯示、按姓名查找、刪除一條記錄、查找并顯示一個(gè)記錄、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)以及結(jié)束程序。五、詳細(xì)設(shè)計(jì):1、系統(tǒng)流程圖如圖5-1所示開始輸出界面選擇操作選擇1選擇2選擇3選擇4選擇5選擇6選擇7選擇8選擇9選擇0輸入記錄是是顯示記錄否否否否否否否否否退出系統(tǒng)結(jié)束按床位排序顯示按學(xué)號(hào)排序顯示是是是是插入一個(gè)記錄查找刪除記錄查找顯示記錄從文件輸入寫入文件保存是是是是否圖5-1 系統(tǒng)流程圖2、根據(jù)流程圖,將程序源代碼輸入到編譯環(huán)境中,按照提示選擇進(jìn)行記錄的輸入,輸入一個(gè)數(shù)據(jù)后提示是否繼續(xù)輸入,直到結(jié)束程序?yàn)橹?。輸入主菜單如下:輸?"tt學(xué)生宿舍管理系

4、統(tǒng)n"); 輸出("tt§ 1. 輸入記錄 §n");輸出("tt§ 2. 顯示記錄 §n");輸出("tt§ 4. 按學(xué)號(hào)排序并顯示 §n");輸出("tt§ 5. 插入一條記錄按學(xué)號(hào)排序并顯示 §n");輸出("tt§ 6. 按姓名查找,刪除一條記錄 §n");輸出("tt§ 7 查找并顯示一個(gè)記錄 §n");輸出("tt§

5、 8. 從文件中讀入數(shù)據(jù) §n");輸出("tt§ 9. 循環(huán)寫入數(shù)據(jù) §n");輸出("tt§ 0. 結(jié)束程序 §n");輸出("ttn");輸出("tt請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-9):");將程序編譯生成“學(xué)生宿舍管理系統(tǒng).exe”。運(yùn)行該文件如圖5-2所示。圖5-2 輸出界面圖輸入記錄采用循環(huán)輸入while(sign!='n'&&sign!='N') 輸出("tt房間號(hào):"); 輸

6、入("tt%s"&,roomn+i.roomnum);輸出("tt床位號(hào):");輸入("tt%s",&roomn+i.bednum);輸出("tt學(xué)號(hào):");輸入("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 輸入記錄顯示圖 按房間號(hào)排序采用冒泡排序法。 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 按房間號(hào)排序并顯示圖按學(xué)號(hào)排序采用冒泡排序法比較(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é)號(hào)排序并顯示,如圖5-5所示。圖5-5 按學(xué)號(hào)排序顯示圖插入記錄采用交互式輸入:輸出("tt輸入他(她)的姓名:"); 輸入("tt%s",&s);while(strcmp(,s)!=0&&

10、amp;i<n) i+; 如果(i=n)輸出("tt對(duì)不起沒找到該學(xué)生!n"); return;輸出("tt他(她)的房間號(hào):%sn",roomi.roomnum); 輸出("tt他(她)的床位號(hào):%sn",roomi.bednum);輸出("tt他(她)的學(xué)號(hào):%sn",roomi.num);顯示后提示按任意鍵繼續(xù),選擇“5”按提示步驟插入一條記錄,如圖5-6所示。圖5-6 插入一條記錄圖六、系統(tǒng)測(cè)試將源代碼輸入至編譯環(huán)境中,將程序編譯連接后生成“學(xué)生宿舍管理系統(tǒng).exe”運(yùn)行該文件,則顯示主菜單:1、輸入

11、記錄2、顯示記錄3、按房間號(hào)排序并顯示4、按學(xué)號(hào)排序并顯示5、插入一條記錄并按學(xué)號(hào)排序顯示6、按姓名查找,刪除一條記錄7、查找并顯示一個(gè)記錄8、從文件中讀入數(shù)據(jù)9、循環(huán)寫入數(shù)據(jù)0、結(jié)束程序請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-9):按照提示選擇“1”進(jìn)行記錄的輸入,則在主菜單下顯示:輸入記錄房間號(hào):101床位號(hào):1學(xué)號(hào):21姓名:xiaoning是否繼續(xù)輸入?(Y/N)-按N結(jié)束,按任意鍵后選擇“2”進(jìn)行記錄的顯示,則在主菜單下顯示:房間號(hào) 床位號(hào) 學(xué)號(hào) 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang請(qǐng)按任意鍵繼

12、續(xù)選擇“5”插入一條記錄,則在主菜單下顯示:學(xué)生房間號(hào):513學(xué)生床位號(hào):4學(xué)生學(xué)號(hào):52學(xué)生姓名:xiaoguan插入記錄成功!房間號(hào) 床位號(hào) 學(xué)號(hào) 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang513 4 52 xiaoguan請(qǐng)按任意鍵繼續(xù)七、結(jié)論這次課程設(shè)計(jì)我做的還不是很完善,因?yàn)楣δ懿皇呛芏?,如果以后有機(jī)會(huì)完善的話,應(yīng)該對(duì)管理員和用戶登錄時(shí)做進(jìn)一步完善。學(xué)生的信息還不夠完整,如學(xué)生的宿舍長(zhǎng),系別,一些費(fèi)用以及學(xué)生的成績(jī)等待相關(guān)詳細(xì)信息。如果使次系統(tǒng)再詳細(xì)些,需添加更多的管理員以及管理員權(quán)限,還

13、有學(xué)生的更多信息,如果有必要的話,添加一些有關(guān)教師的信息,以及教師登錄的界面。在這次課程設(shè)計(jì)的過(guò)程中,我們體會(huì)到要想開發(fā)一個(gè)系統(tǒng)軟件,不僅需要相當(dāng)?shù)膶I(yè)技術(shù)知識(shí),還要有嚴(yán)謹(jǐn)縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費(fèi)力氣。同時(shí)還要善于捕獲細(xì)小的方面,因?yàn)槟峭沁@個(gè)程序的致命因素。這次課程設(shè)計(jì)培養(yǎng)了我的細(xì)心和耐性,更樹立了一種科學(xué)的態(tài)度。附錄:源代碼#include<stdio.h> /*引用庫(kù)函數(shù)*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef stru

14、ct /*定義結(jié)構(gòu)體數(shù)組*/char roomnum4; /*房間號(hào)*/char bednum2; /*床位號(hào)*/char num10; /*學(xué)號(hào)*/char name20; /*姓名*/Student;Student room11000; /*結(jié)構(gòu)體數(shù)組變量*/int menu_select() /*菜單函數(shù)*/char c;dosystem("cls"); /*運(yùn)行前清屏*/printf("tt學(xué)生宿舍管理系統(tǒng)n"); /*菜單選擇*/printf("tt§ 1. 輸入記錄 §n");printf("

15、tt§ 2. 顯示記錄 §n");printf("tt§ 4. 按學(xué)號(hào)排序并顯示 §n");printf("tt§ 5. 插入一條記錄按學(xué)號(hào)排序并顯示 §n");printf("tt§ 6. 按姓名查找,刪除一條記錄 §n");printf("tt§ 7 查找并顯示一個(gè)記錄 §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請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(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房間號(hào):"); /*交互輸入*/scanf("tt%s"&,roomn+i.roomnum);printf("tt床位號(hào):");scanf("tt%s",&roomn+i.bednum);printf("tt學(xué)號(hào):");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房間號(hào) 床位號(hào) 學(xué)號(hào) 姓名 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) /*每十個(gè)暫停*/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é)號(hào)排序*/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) /*按房間號(hào)排序*/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é)生房間號(hào):"); /*交互式輸入*/scanf("tt%s",&roomn.roomnum);printf("tt學(xué)生床位號(hào):");scanf("tt%s",&roomn.bednum);printf("tt學(xué)生學(xué)號(hào):");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對(duì)不起沒找到該學(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) /*查找并顯示一個(gè)記錄*/char s20;int i=0;printf("tt輸入他(她)的姓名:"); /*交互式輸入*/scanf("tt%s",&s);while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/if(i=n)printf("tt對(duì)不起沒找到該學(xué)生!

27、n"); /*輸入失敗信息*/return;printf("tt他(她)的房間號(hào):%sn",roomi.roomnum); /*輸出該學(xué)生信息*/printf("tt他(她)的床位號(hào):%sn",roomi.bednum);printf("tt他(她)的學(xué)號(hào):%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無(wú)法打開該文件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無(wú)法打開該文件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按房間號(hào)排序并顯示n"); Sort_by_roomnum(room1,n);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論