版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度汽車(chē)零部件技術(shù)交易與許可證協(xié)議3篇
- 環(huán)保與經(jīng)濟(jì)雙贏農(nóng)村住房墻材的可持續(xù)發(fā)展路徑
- 二零二五年度餐飲店食品安全監(jiān)督協(xié)議3篇
- 2025年度個(gè)人借款借條設(shè)計(jì)及法律風(fēng)險(xiǎn)防控合同3篇
- 2025年度個(gè)人股權(quán)代持解除條件及補(bǔ)償協(xié)議3篇
- 二零二五年度新能源汽車(chē)零部件銷(xiāo)售協(xié)議3篇
- 智能制造技術(shù)助力醫(yī)療設(shè)備升級(jí)換代
- 2025年度漁船買(mǎi)賣(mài)合同(含漁港租賃權(quán))3篇
- 二零二五年度彩鋼板生產(chǎn)廢棄物處理合同3篇
- 跨領(lǐng)域合作如何有效探索學(xué)生個(gè)性化學(xué)習(xí)路徑
- 辦公設(shè)備(電腦、一體機(jī)、投影機(jī)等)采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 查干淖爾一號(hào)井環(huán)評(píng)
- 案卷評(píng)查培訓(xùn)課件模板
- 體檢中心分析報(bào)告
- 2024年江蘇省樣卷五年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 波浪理論要點(diǎn)圖解完美版
- 金融交易數(shù)據(jù)分析與風(fēng)險(xiǎn)評(píng)估項(xiàng)目環(huán)境敏感性分析
- 牛頓環(huán)與劈尖實(shí)驗(yàn)論文
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)四 其他平臺(tái)載體的運(yùn)營(yíng)方式
- 浙教版科學(xué)八年級(jí)下冊(cè)全冊(cè)課件
- 2022年中國(guó)止血材料行業(yè)概覽:發(fā)展現(xiàn)狀對(duì)比分析研究報(bào)告(摘要版) -頭豹
評(píng)論
0/150
提交評(píng)論