版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第1頁。洛陽理工學(xué)院實(shí)驗(yàn)報(bào)告宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第1頁。系部計(jì)算機(jī)與信息工程系班級(jí)學(xué)號(hào)姓名課程名稱數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)日期2014.5.21實(shí)驗(yàn)名稱實(shí)驗(yàn)6-7:宿舍管理查詢系統(tǒng)成績實(shí)驗(yàn)?zāi)康模赫莆諗?shù)據(jù)結(jié)構(gòu)的兩種基本技術(shù):查找和排序,根據(jù)實(shí)際情況選擇效率較高的算法解決應(yīng)用問題。實(shí)驗(yàn)條件:電腦一臺(tái),VC++6.0實(shí)驗(yàn)內(nèi)容與步驟:內(nèi)容:為宿舍管理人員設(shè)計(jì)一個(gè)宿舍管理查詢系統(tǒng),程序采用交互工作方式,完成下列功能:建立合適的數(shù)據(jù)結(jié)構(gòu)作為查找表并輸入數(shù)據(jù);數(shù)據(jù)分別按關(guān)鍵字姓名、學(xué)號(hào)、房號(hào)進(jìn)行排序(所學(xué)排序算法任選一種效率較高的算法);設(shè)計(jì)查詢菜單,按指定關(guān)鍵字姓名、學(xué)號(hào)、房號(hào)進(jìn)行查詢并輸出結(jié)果,要求查詢采用效率較高的算法實(shí)現(xiàn);可以連續(xù)查詢;算法思想:添加學(xué)生信息函數(shù)修改學(xué)生信息函數(shù)刪除學(xué)生信息函數(shù)顯示所有學(xué)生信息函數(shù)排序函數(shù)按照宿舍號(hào)從小到大排序(冒泡法)排序函數(shù)按照學(xué)號(hào)從小到大排序(冒泡法)查詢函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(順序查找)查詢函數(shù)以學(xué)號(hào)為關(guān)鍵字進(jìn)行查詢(折半查找)查詢函數(shù)以宿舍號(hào)為關(guān)鍵字進(jìn)行查詢(折半查找)存儲(chǔ)函數(shù)運(yùn)行結(jié)果:宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第2頁。宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第2頁。實(shí)驗(yàn)總結(jié):此次的實(shí)驗(yàn),使我掌握了冒泡排序與折半查找,也對(duì)系統(tǒng)的建立有了一定的了解,并會(huì)簡單的創(chuàng)建,對(duì)結(jié)構(gòu)體定義有更深的理解,在此特別感謝同學(xué)的幫助。此次的實(shí)驗(yàn)為最后一個(gè),還是感覺自己掌握的不近人意,還要加強(qiáng)鞏固。附:源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intchange=0;//用來判斷是否已保存操作//定義一個(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)宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第3頁。}Stud;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第3頁。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è)字符以內(nèi)):");scanf("%s",(S->student[t]).S_number); getchar(); i=1; } } }}//添加學(xué)生信息函數(shù)voidAdd(StS){ printf("請(qǐng)輸入學(xué)生姓名(30個(gè)字符以內(nèi)):"); scanf("%s",(S->student[++(S->Total)]).S_name); getchar();//獲取換行符宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第4頁。 printf("請(qǐng)輸入學(xué)生的學(xué)號(hào)(15個(gè)字符以內(nèi)):");宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第4頁。 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;//用來判斷表中是否存在所要修改的學(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è)字符以內(nèi)):"); scanf("%s",(S->student[flag]).S_name); getchar(); printf("請(qǐng)輸入學(xué)生的學(xué)號(hào)(15個(gè)字符以內(nèi)):");宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第5頁。 scanf("%s",(S->student[flag]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第5頁。 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;//用來判斷表中是否存在所要?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);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第6頁。 strcpy((S->student[i]).S_number,(S->student[j]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第6頁。 (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);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第7頁。 strcpy(number,(S->student[i]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第7頁。 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; }}宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第8頁。//查詢函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(順序查找)宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第8頁。voidQuery_S_name(StS){ inti,j=0; charname[31]; printf("請(qǐng)輸入你要查找的學(xué)生的姓名(30個(gè)字符以內(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");}//查詢函數(shù)以學(xué)號(hào)為關(guān)鍵字進(jì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();宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第9頁。 Sort_S_number(S);//將表中原數(shù)據(jù)按照學(xué)號(hào)從小到大排序宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第9頁。 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");}//查詢函數(shù)以寢室號(hào)為關(guān)鍵字進(jìn)行查詢(折半查找)voidQuery_D_number(StS){ inti,j,m,n,base,top,mid; j=0;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第10頁。 base=1;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第10頁。 top=S->Total; printf("請(qǐng)輸入你要查詢的寢室號(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) {宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第11頁。 printf("%-20s%-15s%-5d\n",(S->student[n]).S_name,(S->student[n]).S_number,(S->student[n]).D_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第11頁。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);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第12頁。 getchar();宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告全文共14頁,當(dāng)前為第12頁。 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026貴州畢節(jié)市圖書館招募文化人才志愿者11人備考題庫及答案詳解參考
- 2026重慶市沙坪壩區(qū)婦幼保健院招聘6人備考題庫及答案詳解(奪冠系列)
- 2026西安交通大學(xué)能動(dòng)學(xué)院管理輔助人員招聘?jìng)淇碱}庫及參考答案詳解
- 2026重慶輪船(集團(tuán))有限公司交運(yùn)游輪分公司三峽游輪船員招聘17人備考題庫有答案詳解
- 2026浙江金華市武義縣安然殯儀服務(wù)有限公司招聘1人備考題庫及答案詳解(考點(diǎn)梳理)
- 2026貴州黔東南州錦屏縣中醫(yī)醫(yī)院第一次招聘編外人員3人備考題庫及一套參考答案詳解
- 企業(yè)安全管理制度文檔與操作指南
- 企業(yè)車輛租賃管理規(guī)范與執(zhí)行制度
- 2026春季學(xué)期廣東廣州市天河區(qū)同仁實(shí)驗(yàn)學(xué)校教師招聘初中英語教師1人備考題庫含答案詳解(綜合卷)
- 2026春期四川宜賓市珙縣中學(xué)校招聘頂崗教師3人備考題庫及答案詳解(基礎(chǔ)+提升)
- 2026年陜西西安市高三高考一模數(shù)學(xué)試卷試題(含答案詳解)
- 外事工作培訓(xùn)
- 婦產(chǎn)科臨床技能:輸精管結(jié)扎護(hù)理課件
- 鎮(zhèn)海區(qū)國資系統(tǒng)招聘筆試題庫2026
- 2025至2030中國高壓套管行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 廣州市2026屆高一數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- AI在建筑中的應(yīng)用【演示文檔課件】
- 2026秋招:國家電投面試題及答案
- 《2025年CSCO前列腺癌診療指南》更新要點(diǎn)解讀
- 2025北京市體育局所屬事業(yè)單位招聘100人筆試參考題庫及答案解析
- 左心導(dǎo)管檢查及造影操作技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論