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

下載本文檔

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

文檔簡介

洛陽理工學(xué)院實驗報告系部計算機與信息工程系班級學(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é)果:回人人人成請選擇所要實現(xiàn)的功能《請輸入a%中的任意一個數(shù)字〉:a--E:徵捱給構(gòu)模建安騎隋舍管理查向縈統(tǒng)\口ebuq\宿舍管母查詢親統(tǒng)回人人人成請選擇所要實現(xiàn)的功能《請輸入a%中的任意一個數(shù)字〉:a--E:徵捱給構(gòu)模建安騎隋舍管理查向縈統(tǒng)\口ebuq\宿舍管母查詢親統(tǒng)-毒看功一生舍?>:內(nèi)三B1長:請選擇所要實現(xiàn)的功能<請輸入請選擇所要實現(xiàn)的功能<請輸入a%巾的任意一個數(shù)字):a33以符符字個1550<3<3號:1WI于碼姥的號生生舍!影看功人人八成請選擇所要實現(xiàn)的功能<請輸入a”中的任意一個數(shù)字):請選擇所要實現(xiàn)的功能<請輸入a”中的任意一個數(shù)字):b'T?E:徵捱給相模軟實驗6喑舍智旦查向縈婚Debug*宿舍管=詞親統(tǒng)啟xe回|??|請強眷救聚修改學(xué)生的姓名;李四口下二請強眷救聚修改學(xué)生的姓名;李四口下二請選擇所要實現(xiàn)的功能《請輸入a%中的任意一個數(shù)字〉:請選擇所要實現(xiàn)的功能《請輸入a%中的任意一個數(shù)字〉:c解酷跨刪除學(xué)生的姓名浮斯請選擇所要實現(xiàn)的功能<請輸入a飛巾的任意一個數(shù)字Xd姓名查找器慧巽覲MM姓名查找器慧巽覲MM苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴請輸入信息111藕震生信息如下:我的學(xué)生的姓名C011藕震生信息如下:我的學(xué)生的姓名C0個字符以內(nèi)):張三學(xué)生學(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é)生所在寢室的宿舍號}Stud;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();//獲取換行符printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");scanf("%s",(S->student[S->Total]).S_number);getchar();S_number_Judge(S,S->Total);/^U斷輸入的學(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)):");scanf("%s",(S->student[flag]).S_number);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);strcpy((S->student[i]).S_number,(S->student[j]).S_number);(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);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;))〃排序函數(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;))//查詢函數(shù)以姓名為關(guān)鍵字進(jìn)行查詢(順序查找)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);jT;)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();Sort_S_number(S);//將表中原數(shù)據(jù)按照學(xué)號從小到大排序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;elsetop=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;base=1;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)(printf("%-20s%-15s%-5d\n",(S->student[n]).S_name,(S->student[n]).S_number,(S->student[n]).D_number);

n--;if(n<1)break;))jT;putchar('\n');break;)elseif(i>(S->student[mid]).D_number)base=mid+1;elsetop=mid-1;))if(!j)printf("\n查找失敗,表中不存在該寢室的信息!\n\n");)voidSearch(StS)intj;ajprintf(*************printf(*************printf(*************按printf(*************printf(*************printf(*************按1按姓名查找***********\n");按2按學(xué)號查找***********\n");按3按寢室號查找**********\n");ajdo(printf("請輸入信息\n");scanf("%d",&j);getchar();

putchar('\n');switch(j)(:Query_S_name(S);break;:Query_S_number(S);break;:Query_D_number(S);bre

溫馨提示

  • 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

提交評論