




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第1頁。洛陽理工學(xué)院實驗報告宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第1頁。系部計算機與信息工程系班級學(xué)號姓名課程名稱數(shù)據(jù)結(jié)構(gòu)實驗日期2014.5.21實驗名稱實驗6-7:宿舍管理查詢系統(tǒng)成績實驗?zāi)康模赫莆諗?shù)據(jù)結(jié)構(gòu)的兩種基本技術(shù):查找和排序,根據(jù)實際情況選擇效率較高的算法解決應(yīng)用問題。實驗條件:電腦一臺,VC++6.0實驗內(nèi)容與步驟:內(nèi)容:為宿舍管理人員設(shè)計一個宿舍管理查詢系統(tǒng),程序采用交互工作方式,完成下列功能:建立合適的數(shù)據(jù)結(jié)構(gòu)作為查找表并輸入數(shù)據(jù);數(shù)據(jù)分別按關(guān)鍵字姓名、學(xué)號、房號進(jìn)行排序(所學(xué)排序算法任選一種效率較高的算法);設(shè)計查詢菜單,按指定關(guān)鍵字姓名、學(xué)號、房號進(jìn)行查詢并輸出結(jié)果,要求查詢采用效率較高的算法實現(xiàn);可以連續(xù)查詢;算法思想:添加學(xué)生信息函數(shù)修改學(xué)生信息函數(shù)刪除學(xué)生信息函數(shù)顯示所有學(xué)生信息函數(shù)排序函數(shù)按照宿舍號從小到大排序(冒泡法)排序函數(shù)按照學(xué)號從小到大排序(冒泡法)查詢函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(順序查找)查詢函數(shù)以學(xué)號為關(guān)鍵字進(jìn)行查詢(折半查找)查詢函數(shù)以宿舍號為關(guān)鍵字進(jìn)行查詢(折半查找)存儲函數(shù)運行結(jié)果:宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第2頁。宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第2頁。實驗總結(jié):此次的實驗,使我掌握了冒泡排序與折半查找,也對系統(tǒng)的建立有了一定的了解,并會簡單的創(chuàng)建,對結(jié)構(gòu)體定義有更深的理解,在此特別感謝同學(xué)的幫助。此次的實驗為最后一個,還是感覺自己掌握的不近人意,還要加強鞏固。附:源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intchange=0;//用來判斷是否已保存操作//定義一個存儲學(xué)生相關(guān)信息的結(jié)構(gòu)體typedefstruct{ charS_name[31];//學(xué)生姓名charS_number[16];//學(xué)生學(xué)號 intD_number;//學(xué)生所在寢室的宿舍號宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第3頁。}Stud;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第3頁。typedefstruct{Studstudent[M]; intTotal;//學(xué)生總數(shù)}Stu,*St;//判斷學(xué)號是否與表中所存學(xué)號重復(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é)號輸入失敗,該學(xué)號已存在,請重新輸入學(xué)號!\n"); printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");scanf("%s",(S->student[t]).S_number); getchar(); i=1; } } }}//添加學(xué)生信息函數(shù)voidAdd(StS){ printf("請輸入學(xué)生姓名(30個字符以內(nèi)):"); scanf("%s",(S->student[++(S->Total)]).S_name); getchar();//獲取換行符宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第4頁。 printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第4頁。 scanf("%s",(S->student[S->Total]).S_number);getchar(); S_number_Judge(S,S->Total);//判斷輸入的學(xué)號是否與表中所存在的學(xué)號重復(fù) printf("請輸入宿舍號碼:"); 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("請輸入你要修改學(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("請輸入學(xué)生姓名(30個字符以內(nèi)):"); scanf("%s",(S->student[flag]).S_name); getchar(); printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第5頁。 scanf("%s",(S->student[flag]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第5頁。 getchar(); S_number_Judge(S,flag); printf("請輸入宿舍號:"); scanf("%d",&(S->student[flag]).D_number); getchar();//getchar(n); change=1; printf("修改成功!\n"); } putchar('\n');}//刪除學(xué)生信息voidDelete(StS){ inti,j; intflag=0;//用來判斷表中是否存在所要刪除的學(xué)生的信息 charname[20]; printf("請輸入你要刪除學(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é)生在表中不存在!"); 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)實驗報告全文共14頁,當(dāng)前為第6頁。 strcpy((S->student[i]).S_number,(S->student[j]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共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é)號宿舍號\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ù)按照寢室號從小到大排序(冒泡法)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)實驗報告全文共14頁,當(dāng)前為第7頁。 strcpy(number,(S->student[i]).S_number);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共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é)號從小到大排序(冒泡法)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)實驗報告全文共14頁,當(dāng)前為第8頁。//查詢函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(順序查找)宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第8頁。voidQuery_S_name(StS){ inti,j=0; charname[31]; printf("請輸入你要查找的學(xué)生的姓名(30個字符以內(nèi)):"); scanf("%s",name); getchar(); printf("所查找學(xué)生信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號宿舍號\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é)號為關(guān)鍵字進(jìn)行查詢(折半查找)voidQuery_S_number(StS){ intflag,top,bottom,mid; charnumber[15]; flag=0; bottom=1; top=S->Total; printf("請輸入你要查找學(xué)生的學(xué)號:"); scanf("%s",number); getchar();宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第9頁。 Sort_S_number(S);//將表中原數(shù)據(jù)按照學(xué)號從小到大排序宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第9頁。 printf("所查找學(xué)生信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號宿舍號\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ù)以寢室號為關(guān)鍵字進(jìn)行查詢(折半查找)voidQuery_D_number(StS){ inti,j,m,n,base,top,mid; j=0;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第10頁。 base=1;宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第10頁。 top=S->Total; printf("請輸入你要查詢的寢室號:"); scanf("%d",&i); getchar(); Sort_D_number(S);//將表中原數(shù)據(jù)按照寢室號從小到大排序 printf("所查找寢室信息如下:\n"); printf("學(xué)生姓名學(xué)生學(xué)號宿舍號\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)實驗報告全文共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)實驗報告全文共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é)號查找***********\n"); printf("************按3按寢室號查找**********\n"); printf("***********************************\n"); do { printf("請輸入信息\n"); scanf("%d",&j);宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共14頁,當(dāng)前為第12頁。 getchar();宿舍管理查詢系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗報告全文共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("選擇錯誤:請在選項之間選擇!\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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國單級吸懸臂力化工離心泵數(shù)據(jù)監(jiān)測研究報告
- 2025年中國鋼包頭皮鞋市場調(diào)查研究報告
- 2025年中國電子燃?xì)庋b置市場調(diào)查研究報告
- 2025年中國原油加工產(chǎn)品市場調(diào)查研究報告
- Unit5 Fun club Section A1a-1d 教學(xué)設(shè)計 2024-2025學(xué)年人教版(2024)七年級英語上冊
- 2025年中國剪叉式升高搬運車市場調(diào)查研究報告
- 2025年中國乙烯合股線市場調(diào)查研究報告
- 2024-2025學(xué)年新教材高中生物課時雙測過關(guān)九細(xì)胞膜的功能和組成成分含解析新人教版必修第一冊
- 2024-2025學(xué)年高中數(shù)學(xué)第二章隨機變量及其分布2.2.1條件概率練習(xí)含解析新人教A版選修2-3
- 第15課 物聯(lián)系統(tǒng)原型的運行與調(diào)試 -教學(xué)設(shè)計 2023-2024學(xué)年浙教版(2023)初中信息技術(shù)七年級下冊
- 慶陽煤炭資源開發(fā)調(diào)研報告
- 蘇教版科學(xué)五年級下15《升旗的方法》教案
- 橋博常見問題
- 現(xiàn)代工業(yè)發(fā)酵調(diào)控緒論
- 超高性能混凝土項目立項申請(參考模板)
- 電纜橋架招標(biāo)文件范本(含技術(shù)規(guī)范書)
- 試車場各種道路施工方案設(shè)計
- 貴州省電梯日常維護(hù)保養(yǎng)合同范本
- 泰國主要城市中英泰文對照
- 鴿巢問題說課稿(共6頁)
- 頭頸部影像學(xué)表現(xiàn)(詳細(xì)、全面)
評論
0/150
提交評論