數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計_第1頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計_第2頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計_第3頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計_第4頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢軟件課程設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計宿舍管理查詢軟件學(xué)院:信息科學(xué)技術(shù)學(xué)院班級:信計082學(xué)號:0841110Q,姓名:余鵬指導(dǎo)教師:并接完成日期:2010年12月目錄一、設(shè)計任務(wù)3二、總體設(shè)計3三、系統(tǒng)流程圖3四、詳細(xì)設(shè)計及測試5五、心得體會12附錄:源代碼13一、設(shè)計任務(wù)題目:宿舍管理查詢軟件任務(wù):為宿舍管理人員編寫一個宿舍管理查詢軟件,程序設(shè)計要求:(1)建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號、房號)進(jìn)行排序(冒泡、選擇、插入排序等任選一種)(2)實現(xiàn)如下查詢功能:按姓名查詢按學(xué)號查詢按房號查詢(3)打印任意查詢結(jié)果(可以連續(xù)操作)針對題目所要求的功能不太多,我特意添加了插入數(shù)據(jù)、讀入文件數(shù)據(jù)以及將數(shù)據(jù)

2、寫入文件三個額外功能。二、總體設(shè)計根據(jù)系統(tǒng)要求,即本系統(tǒng)具有信息的錄入,顯示,排序顯示、查找,插入、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)、結(jié)束程序等功能,先設(shè)計出詳細(xì)的系統(tǒng)流程圖,然后將源代碼輸入程序,進(jìn)行編譯調(diào)試即可。程序總體分12個項目:輸入記錄、顯示記錄、按姓名排序并顯示、按房間號排序并顯示、按學(xué)號排序并顯示、按姓名查找并顯示、按房問號查找并顯示、按學(xué)號查找并顯示、插入一條記錄按學(xué)號排序并顯示、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)以及結(jié)束程序。三、系統(tǒng)流程圖系統(tǒng)流程圖下頁圖所示四、詳細(xì)設(shè)計及測試根據(jù)流程圖,將程序源代碼輸入到編譯環(huán)境中,按照提示選擇進(jìn)行記錄的輸入,輸入一個數(shù)據(jù)后提示是否繼續(xù)輸入,直到

3、結(jié)束程序為止。將程序編譯生成“學(xué)生宿舍管理系統(tǒng).exe”。運行該文件如圖1所示。12345670090101工支記記一名間號名間號一件寫程運學(xué)錄錄排口1一號查番人?行際顯一在嗑一變千據(jù)顯并顯顯并顯按數(shù)并序并£開?據(jù)tg查找記讀數(shù)*1>T<0按項選的圖1輸出界面圖輸入記錄采用循環(huán)輸入while(sign!='n'&&sign!='N')/*判斷*/(printf("tt姓名:");scanf("tt%s",&roomn+);printf("tt學(xué)號:&quo

4、t;);scanf("tt%s",&roomn+i.num);printf("tt房間號:");scanf("tt%s",&roomn+i.roomnum);printf("tt是否繼續(xù)輸入?(Y/N)");scanf("tt%c",&sign);/*輸入判斷*/i+;返回(n+i);按照提示選擇“1”進(jìn)行記錄的輸入如圖2所示:圖2輸入記錄顯示圖連續(xù)輸入多組數(shù)據(jù)后,按“n”結(jié)束輸入,提示按任意鍵繼續(xù),按任意鍵后選擇“2”進(jìn)行記錄的顯示如圖3所示。bu示顯并序LL示小示顯示

5、示顯一歪子據(jù)顯并顯顯并卷數(shù)并序一開需開支據(jù)查找記讀數(shù)*:21)T<0按項選的學(xué)錄錄排口哥查蓋入室行*記記名問號名間號一件寫程運士入示姓愿于姓廈天文環(huán)委要輸顯您錄W12345678Q-010選-下房間號學(xué)號姓名105200?01左二103200915本四225201088主五請按任意鍵繼續(xù).圖3顯示所有記錄按姓名排序采用冒泡排序法。inti,j;chart10;for(i=0;i<n-1;i+)/*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(,roomj+1.name)>0)strcpy(t,roomj+1.name);st

6、rcpy(roomj+1.name,);strcpy(,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);顯示后提示按任意鍵繼續(xù),選擇“3”進(jìn)行按姓名排序并顯示,如圖4所示。E:去件安裝包VC6cNMyPrqjectn謖程設(shè)計曰bu9,湃程設(shè)計,exb,于錄錄排口與號查香入E行顯k記

7、記名間號名間號-件寫程運并x人示姓愿于姓愿又文班年要序,KVK123456789016選姓序系Hi二理示顯示示顯.無乎據(jù)顯一開顯顯-開顯按數(shù)并存turn開關(guān)據(jù)查找記讀數(shù)示顯并序th*:3!>T<«按項*選的示李四王五1032M09152252A1088105200901請按任意鍵繼續(xù).一按房間號排序采用冒泡排序法for(i=0;i<n-1;i+)/*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum)>0)(strcpy(t,roomj+1.num);strcpy(roomj

8、+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);顯示后提示按任意鍵繼續(xù),選擇“4”進(jìn)行按房間號排序并顯示,如圖5所*£:徽件安裝包/匚6£明的同日心課程設(shè)計0巴卜091淳程-設(shè)計exe輸顯您口豆123456789010選房記

9、記名間號名間號-件寫程運序入示姓愿于姓愿天幫至S系川-一理示顯示示顯一公子據(jù)顯一開顯顯一開顯按數(shù)并序一開翦開查找記讀數(shù)*:4!>TC0按項選派的顯房間號學(xué)號姓名183200915幸坦105200901米三225201888主五請按任意鍵繼續(xù)-同樣學(xué)號排序也是用的冒泡法排序0for(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.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(

10、roomj.roomnum,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,);strcpy(,t);顯示后提示按任意鍵繼續(xù),選擇“5”進(jìn)行按學(xué)號排序并顯示,如圖6所示。缶做件安裝包WC6CNMyPrcjg六課程沒計時涕程設(shè)計總xe”0t學(xué)錄錄排411_號查雷入室行顯成記記名間號名間號一件寫程運并序入示姓暈姓屋天文環(huán)里要媒輸顯你界擇號123456789010選學(xué)示顯示示

11、顯一恐子據(jù)顯并顯顯并顯按數(shù)并序書孩開類據(jù)41查找記讀數(shù):51>I<0按項選!的示功房間號學(xué)號姓名10520090110320091522520109B請按任意鍵繼續(xù).王五功能6-8為查找功能按姓名查找并顯示功能printf("tt輸入要查找的姓名:");scanf("%s",s);while(strcmp(,s)!=0&&i<n)i+;/*if(i=n)printf("tt對不起沒有找到該學(xué)生!n");/*查找判斷*/返回失敗信息*/elseDisplay_a_record(roo

12、m1,i);/*調(diào)用函數(shù)*/顯示后提示按任意鍵繼續(xù),選擇“6”按提示步驟按學(xué)號查找一條記錄并顯示,如圖7所示。舊璇件安裝包4VCGCN'.MyProjects、課程注=+Dubug*說程迨計exe'2345678901g選姓一記記名問號名間號一件寫程入示姓屋子姓屋又文環(huán)市輸顯Is標(biāo)警查擇名要佰并序一開孩開京據(jù)選王查找記讀數(shù)的于錄錄排口號查番入室行示示會示顯示示顯一互于據(jù)顯并顯顯并顯按數(shù)房間號學(xué)號姓名105200901張三請按任意鍵繼續(xù).圖7按姓名查找并顯示圖按房間號查找和按學(xué)號查找的方法大同小異。分別輸入“7”、“8”顯示截圖如下頁示顯并序LLF_不顯示示顯一公子掂顯并顯顯并顯

13、按數(shù)項選的學(xué)錄錄排口號查番入手行記記名間號備號一件寫程運入示姓屋子姓晟又文環(huán)里輸顯你善查擇號要12345t7890iSJ*r人.號學(xué)號間房Z25201088王五請按任意鍵繼續(xù).圖9按學(xué)號查找并顯示圖n)/*插入一條記錄并按學(xué)號排序*/*調(diào)用排序函數(shù)*/*返回成功信息*/圖8按房間號查找并顯示圖功能9為插入一條記錄按學(xué)號排序并顯示。intInsert_a_record(Studentroom,intprintf("tt學(xué)生姓名:");scanf("tt%s",&);printf("tt學(xué)生學(xué)號:");scan

14、f("tt%s",&roomn.num);printf("tt學(xué)生房間號:");scanf("tt%s",&roomn.roomnum);n+;Sort_by_num(room,n);printf("tt插入記錄成功!n");return(n);顯示后提示按任意鍵繼續(xù),選擇9”進(jìn)行插入數(shù)據(jù),如下頁圖10所示。圖10插入一條記錄按學(xué)號排序并顯示圖五、心得體會這次課程設(shè)計我做的還不是很完善,因為功能不是很多,如果以后有機(jī)會完善的話,應(yīng)該對管理員和用戶登錄時做進(jìn)一步完善。學(xué)生的信息還不夠完整,如學(xué)生的宿舍

15、長,系別,一些費用以及學(xué)生的成績等待相關(guān)詳細(xì)信息。如果使次系統(tǒng)再詳細(xì)些,需添加更多的管理員以及管理員權(quán)限,還有學(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>#include<stdlib.h>#include<cty

16、pe.h>#include<string.h>typedefstruct(charroomnum4;charnum10;charname20;Student;Studentroom11000;intmenu()(charc;dosystem("cls");t學(xué)生宿舍管理系統(tǒng)n");t§1.輸入記錄§n");t§2.顯示記錄§n");t§3.按姓名排序并顯示§n");t§4.按房間號排序并顯示§n");t§5.按學(xué)號排序

17、并顯示§n");t§6.按姓名查找并顯示§n");t§7.按房間號查找并顯示§n");t§8.按學(xué)號查找并顯示§n");t§9.插入一條記錄按學(xué)號排序并顯示§n");t§10.從文件中讀入數(shù)據(jù)§n");t§11.循環(huán)寫入數(shù)據(jù)§n");t§0.結(jié)束程序§n");tn");請選擇您要運行的選項按(0-11):");c=getchar();)while(

18、c<'0'11c>'11');return(c-'0');)intInput(Studentroom口,intn)inti=0;charsign;while(sign!='n'&&sign!='N')printf("tt姓名:");scanf("tt%s",&roomn+);printf("tt學(xué)號:");scanf("tt%s",&roomn+i.num);printf(&quo

19、t;tt房間號:");scanf("tt%s",&roomn+i.roomnum);printf("tt是否繼續(xù)輸入?(Y/N)");scanf("tt%c",&sign);i+;)return(n+i);)voidDisplay_all_record(Studentroom,intn)inti;printf("ttn");printf("tt房間號學(xué)號姓名n");printf("ttn");for(i=1;i<n+1;i+)(printf(&

20、quot;tt%-10s%-10s%-10sn",roomi-1.roomnum,roomi-1.num,);printf("tt");system("pause");voidDisplay_a_record(Studentroom,intn)(printf("ttn");printf("tt房間號學(xué)號姓名n");printf("ttn");printf("tt%-10s%-10s%-10sn",roomn.roomnum,roomn.num

21、,);/*輸出所查找的一條記錄*/printf("n");printf("tt");voidSort_by_name(Studentroom,intn)(inti,j;chart10;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(r

22、oomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);)voidSort_by_num(Studentroom,intn)(inti,j;chart10;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.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcp

23、y(roomj.roomnum,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,);strcpy(,t);)voidSort_by_roomnum(Studentroom,intn)(inti,j;chart10;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomn

24、um)>0)(strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);)voidFind_record_name(Studentroom,intn)chars10;inti=0;

25、printf("tt輸入要查找的姓名:");scanf("%s",s);while(strcmp(,s)!=0&&i<n)i+;if(i=n)(printf("tt對不起沒有找到該學(xué)生!n");elseDisplay_a_record(room1,i);voidFind_record_rommnum(Studentroom,intn)chars20;inti=0;printf("tt輸入要查找的房間號:");scanf("%s",s);while(str

26、cmp(roomi.roomnum,s)!=0&&i<n)i+;if(i=n)printf("tt對不起沒有找到該學(xué)生!n");elseDisplay_a_record(room1,i);voidFind_record_num(Studentroom,intn)chars20;inti=0;printf("tt輸入要查找的學(xué)號:");scanf("%s",s);while(strcmp(roomi.num,s)!=0&&i<n)i+;if(i=n)!n");printf("

27、;tt對不起沒有找到該學(xué)生elseDisplay_a_record(room1,i);intInsert_a_record(Studentroom,intn)printf("tt學(xué)生姓名:");scanf("tt%s",&);printf("tt學(xué)生學(xué)號:");scanf("tt%s",&roomn.num);printf("tt學(xué)生房間號:");scanf("tt%s",&roomn.roomnum);n+;Sort_by_num

28、(room,n);printf("tt插入記錄成功!n");return(n);intAddfromText(Studentroom,intn)inti=0,num;FILE*fp;charfilename20;printf("tt輸入文件名:");scanf("tt%s",&filename);if(fp=fopen(filename,"rb")=NULL)printf("tt無法打開該文件n");printf("tt");system("pause&qu

29、ot;);return(n);fscanf(fp,"%d",&num);while(i<num)fscanf(fp,"%s%s%s%s",roomn+i.roomnum,roomn+i.num,roomn+);i+;n+=num;fclose(fp);printf("tt讀入成功!n");printf("tt");system("pause");return(n);voidWritetoText(Studentroom,intn)inti=0;FILE*fp;charf

30、ilename100;printf("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);while(i<n)(fprintf(fp,"%-10s%-10s%-10s%-10sn&quo

31、t;,roomi.roomnum,roomi.num,);i+;fclose(fp);printf("寫入成功!n");intmain()(intn=0;for(;)(switch(menu()(case 1:printf("tt輸入記錄n");n=Input(room1,n);break;case 2:Display_all_record(room1,n);break;case 3:printf("tt按姓名排序并顯示n");Sort_by_name(room1,n);printf("tt排序成功!n");Display_all_record(room1,n);printf("tt");break;case 4:printf("tt按房間號排序并顯示n");Sor

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論