宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告_第1頁(yè)
宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告_第2頁(yè)
宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告_第3頁(yè)
宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告_第4頁(yè)
宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第1頁(yè)。洛陽(yáng)理工學(xué)院實(shí)驗(yàn)報(bào)告宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第1頁(yè)。系部計(jì)算機(jī)與信息工程系班級(jí)學(xué)號(hào)姓名課程名稱(chēng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)日期2014.5.21實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)6-7:宿舍管理查詢(xún)系統(tǒng)成績(jī)實(shí)驗(yàn)?zāi)康模赫莆諗?shù)據(jù)結(jié)構(gòu)的兩種基本技術(shù):查找和排序,根據(jù)實(shí)際情況選擇效率較高的算法解決應(yīng)用問(wèn)題。實(shí)驗(yàn)條件:電腦一臺(tái),VC++6.0實(shí)驗(yàn)內(nèi)容與步驟:內(nèi)容:為宿舍管理人員設(shè)計(jì)一個(gè)宿舍管理查詢(xún)系統(tǒng),程序采用交互工作方式,完成下列功能:建立合適的數(shù)據(jù)結(jié)構(gòu)作為查找表并輸入數(shù)據(jù);數(shù)據(jù)分別按關(guān)鍵字姓名、學(xué)號(hào)、房號(hào)進(jìn)行排序(所學(xué)排序算法任選一種效率較高的算法);設(shè)計(jì)查詢(xún)菜單,按指定關(guān)鍵字姓名、學(xué)號(hào)、房號(hào)進(jìn)行查詢(xún)并輸出結(jié)果,要求查詢(xún)采用效率較高的算法實(shí)現(xiàn);可以連續(xù)查詢(xún);算法思想:添加學(xué)生信息函數(shù)修改學(xué)生信息函數(shù)刪除學(xué)生信息函數(shù)顯示所有學(xué)生信息函數(shù)排序函數(shù)按照宿舍號(hào)從小到大排序(冒泡法)排序函數(shù)按照學(xué)號(hào)從小到大排序(冒泡法)查詢(xún)函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(xún)(順序查找)查詢(xún)函數(shù)以學(xué)號(hào)為關(guān)鍵字進(jìn)行查詢(xún)(折半查找)查詢(xún)函數(shù)以宿舍號(hào)為關(guān)鍵字進(jìn)行查詢(xún)(折半查找)存儲(chǔ)函數(shù)運(yùn)行結(jié)果:宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第2頁(yè)。宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第2頁(yè)。實(shí)驗(yàn)總結(jié):此次的實(shí)驗(yàn),使我掌握了冒泡排序與折半查找,也對(duì)系統(tǒng)的建立有了一定的了解,并會(huì)簡(jiǎn)單的創(chuàng)建,對(duì)結(jié)構(gòu)體定義有更深的理解,在此特別感謝同學(xué)的幫助。此次的實(shí)驗(yàn)為最后一個(gè),還是感覺(jué)自己掌握的不近人意,還要加強(qiáng)鞏固。附:源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intchange=0;//用來(lái)判斷是否已保存操作//定義一個(gè)存儲(chǔ)學(xué)生相關(guān)信息的結(jié)構(gòu)體typedefstruct{ charS_name[31];//學(xué)生姓名charS_number[16];//學(xué)生學(xué)號(hào) intD_number;//學(xué)生所在寢室的宿舍號(hào)宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第3頁(yè)。}Stud;宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第3頁(yè)。typedefstruct{Studstudent[M]; intTotal;//學(xué)生總數(shù)}Stu,*St;//判斷學(xué)號(hào)是否與表中所存學(xué)號(hào)重復(fù)voidS_number_Judge(StS,intt){ inti; for(i=1;i<=(S->Total)-1;i++) { if(i!=t) { while((strcmp((S->student[i]).S_number,(S->student[t]).S_number)==0)&&(i!=t)) { printf("學(xué)號(hào)輸入失敗,該學(xué)號(hào)已存在,請(qǐng)重新輸入學(xué)號(hào)!\n"); printf("請(qǐng)輸入學(xué)生的學(xué)號(hào)(15個(gè)字符以?xún)?nèi)):");scanf("%s",(S->student[t]).S_number); getchar(); i=1; } } }}//添加學(xué)生信息函數(shù)voidAdd(StS){ printf("請(qǐng)輸入學(xué)生姓名(30個(gè)字符以?xún)?nèi)):"); scanf("%s",(S->student[++(S->Total)]).S_name); getchar();//獲取換行符宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第4頁(yè)。 printf("請(qǐng)輸入學(xué)生的學(xué)號(hào)(15個(gè)字符以?xún)?nèi)):");宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第4頁(yè)。 scanf("%s",(S->student[S->Total]).S_number);getchar(); S_number_Judge(S,S->Total);//判斷輸入的學(xué)號(hào)是否與表中所存在的學(xué)號(hào)重復(fù) printf("請(qǐng)輸入宿舍號(hào)碼:"); scanf("%d",&(S->student[S->Total]).D_number); getchar(); change=1; printf("添加成功!\n\n");}//修改學(xué)生信息函數(shù)voidAlter(StS){ inti; intflag=0;//用來(lái)判斷表中是否存在所要修改的學(xué)生的信息 charname[20]; printf("請(qǐng)輸入你要修改學(xué)生的姓名:");scanf("%s",name); getchar(); for(i=1;i<=S->Total;i++) if(strcmp((S->student[i]).S_name,name)==0) flag=i; if(!flag) printf("你所要修改的學(xué)生信息在表中不存在!\n"); else { printf("新信息如下:\n"); printf("請(qǐng)輸入學(xué)生姓名(30個(gè)字符以?xún)?nèi)):"); scanf("%s",(S->student[flag]).S_name); getchar(); printf("請(qǐng)輸入學(xué)生的學(xué)號(hào)(15個(gè)字符以?xún)?nèi)):");宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第5頁(yè)。 scanf("%s",(S->student[flag]).S_number);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第5頁(yè)。 getchar(); S_number_Judge(S,flag); printf("請(qǐng)輸入宿舍號(hào):"); scanf("%d",&(S->student[flag]).D_number); getchar();//getchar(n); change=1; printf("修改成功!\n"); } putchar('\n');}//刪除學(xué)生信息voidDelete(StS){ inti,j; intflag=0;//用來(lái)判斷表中是否存在所要?jiǎng)h除的學(xué)生的信息 charname[20]; printf("請(qǐng)輸入你要?jiǎng)h除學(xué)生的姓名:"); scanf("%s",name);getchar(); for(i=1;i<=S->Total;i++) if(strcmp((S->student[i]).S_name,name)==0) flag=i; if(!flag) printf("你所要?jiǎng)h除的學(xué)生在表中不存在!"); else { for(i=flag;i<S->Total;i++) { j=i+1; strcpy((S->student[i]).S_name,(S->student[j]).S_name);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第6頁(yè)。 strcpy((S->student[i]).S_number,(S->student[j]).S_number);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第6頁(yè)。 (S->student[i]).D_number=(S->student[j]).D_number; } (S->Total)--; change=1; printf("刪除成功!"); } printf("\n\n");}//顯示所有學(xué)生信息函數(shù)voidDisplay_All(StS){ inti; printf("全體學(xué)生信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號(hào)宿舍號(hào)\n"); for(i=1;i<=S->Total;i++)printf("%-20s%-15s%-5d\n",(S->student[i]).S_name,(S->student[i]).S_number,(S->student[i]).D_number); putchar('\n\n');}//排序函數(shù)按照寢室號(hào)從小到大排序(冒泡法)voidSort_D_number(StS){ inti,j,t; charname[30]; charnumber[15]; for(i=1;i<=S->Total;i++) for(j=i;j<=S->Total;j++) if((S->student[i]).D_number>(S->student[j]).D_number) { strcpy(name,(S->student[i]).S_name);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第7頁(yè)。 strcpy(number,(S->student[i]).S_number);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第7頁(yè)。 t=(S->student[i]).D_number; strcpy((S->student[i]).S_name,(S->student[j]).S_name); strcpy((S->student[i]).S_number,(S->student[j]).S_number); (S->student[i]).D_number=(S->student[j]).D_number; strcpy((S->student[j]).S_name,name); strcpy((S->student[j]).S_number,number); (S->student[j]).D_number=t; }}//排序函數(shù)按照學(xué)號(hào)從小到大排序(冒泡法)voidSort_S_number(StS){ inti,j,t; charname[30]; charnumber[15]; for(i=1;i<=S->Total;i++) for(j=i;j<=S->Total;j++) if(strcmp((S->student[i]).S_number,(S->student[j]).S_number)>0) { strcpy(name,(S->student[i]).S_name); strcpy(number,(S->student[i]).S_number); t=(S->student[i]).D_number; strcpy((S->student[i]).S_name,(S->student[j]).S_name); strcpy((S->student[i]).S_number,(S->student[j]).S_number); (S->student[i]).D_number=(S->student[j]).D_number; strcpy((S->student[j]).S_name,name); strcpy((S->student[j]).S_number,number); (S->student[j]).D_number=t; }}宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第8頁(yè)。//查詢(xún)函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(xún)(順序查找)宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第8頁(yè)。voidQuery_S_name(StS){ inti,j=0; charname[31]; printf("請(qǐng)輸入你要查找的學(xué)生的姓名(30個(gè)字符以?xún)?nèi)):"); scanf("%s",name); getchar(); printf("所查找學(xué)生信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號(hào)宿舍號(hào)\n"); for(i=1;i<=S->Total;i++) if(strcmp(name,(S->student[i]).S_name)==0) {printf("%-20s%-15s%-5d\n",(S->student[i]).S_name,(S->student[i]).S_number,(S->student[i]).D_number);j=1;}if(!j) printf("\n查找失敗,表中不存在該學(xué)生的信息!\n\n");}//查詢(xún)函數(shù)以學(xué)號(hào)為關(guān)鍵字進(jìn)行查詢(xún)(折半查找)voidQuery_S_number(StS){ intflag,top,bottom,mid; charnumber[15]; flag=0; bottom=1; top=S->Total; printf("請(qǐng)輸入你要查找學(xué)生的學(xué)號(hào):"); scanf("%s",number); getchar();宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第9頁(yè)。 Sort_S_number(S);//將表中原數(shù)據(jù)按照學(xué)號(hào)從小到大排序宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第9頁(yè)。 printf("所查找學(xué)生信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號(hào)宿舍號(hào)\n");if(strcmp(number,(S->student[1]).S_number)>=0&&strcmp(number,(S->student[S->Total]).S_number)<=0) { while(bottom<=top) { mid=(bottom+top)/2; if(strcmp(number,(S->student[mid]).S_number)==0) { printf("%-20s%-15s%-5d\n",(S->student[mid]).S_name,(S->student[mid]).S_number,(S->student[mid]).D_number); putchar('\n'); flag=1; break; } elseif(strcmp(number,(S->student[mid]).S_number)>0) bottom=mid+1; else top=mid-1; } } if(!flag) printf("\n查找失敗,表中不存在該學(xué)生的信息!\n\n");}//查詢(xún)函數(shù)以寢室號(hào)為關(guān)鍵字進(jìn)行查詢(xún)(折半查找)voidQuery_D_number(StS){ inti,j,m,n,base,top,mid; j=0;宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第10頁(yè)。 base=1;宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第10頁(yè)。 top=S->Total; printf("請(qǐng)輸入你要查詢(xún)的寢室號(hào):"); scanf("%d",&i); getchar(); Sort_D_number(S);//將表中原數(shù)據(jù)按照寢室號(hào)從小到大排序 printf("所查找寢室信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號(hào)宿舍號(hào)\n"); if(i>=(S->student[1]).D_number&&i<=(S->student[S->Total]).D_number) { while(base<=top) { mid=(base+top)/2; if(i==(S->student[mid]).D_number) { m=mid;n=mid-1; while((S->student[m]).D_number==i) { printf("%-20s%-15s%-5d\n",(S->student[m]).S_name,(S->student[m]).S_number,(S->student[m]).D_number);m++; if(m>S->Total) break; } if(n>0) { while((S->student[n]).D_number==i) {宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第11頁(yè)。 printf("%-20s%-15s%-5d\n",(S->student[n]).S_name,(S->student[n]).S_number,(S->student[n]).D_number);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第11頁(yè)。n--; if(n<1) break; } } j=1; putchar('\n'); break; } elseif(i>(S->student[mid]).D_number) base=mid+1; else top=mid-1; } } if(!j) printf("\n查找失敗,表中不存在該寢室的信息!\n\n");}voidSearch(StS){ intj; printf("***********************************\n"); printf("************按1按姓名查找***********\n"); printf("************按2按學(xué)號(hào)查找***********\n"); printf("************按3按寢室號(hào)查找**********\n"); printf("***********************************\n"); do { printf("請(qǐng)輸入信息\n"); scanf("%d",&j);宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第12頁(yè)。 getchar();宿舍管理查詢(xún)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁(yè),當(dāng)前為第12頁(yè)。 putchar('\n'); switch(j) { case1:Query_S_name(S); break; case2:Query_S_number(S); break; case3:Query_D_number(S); break; default:printf("選擇錯(cuò)誤:請(qǐng)?jiān)谶x項(xiàng)之間選擇!\n\n"); break; } } while((j!=1)&&(j!=2)&&(j!=3));}voidMenu(){//菜單 printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~歡迎進(jìn)入宿舍管理系統(tǒng)~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("*******************************菜單*******************************\n"); printf("-------------------------按a.添加學(xué)生信息-------------------------\n"); printf("-------------------------按b.修改學(xué)生信息------------

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論