版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
洛陽理工學院實驗報告系部計算機與信息工程系班級學號姓名課程名稱數據結構實驗日期2014.5.21實驗名稱實驗6-7:宿舍管理查詢系統(tǒng)成績實驗目的:掌握數據結構的兩種基本技術:查找和排序,根據實際情況選擇效率較高的算法解決應用問題。實驗條件:電腦一臺,VC++6.0實驗內容與步驟:內容:為宿舍管理人員設計一個宿舍管理查詢系統(tǒng),程序采用交互工作方式,完成下列功能:建立合適的數據結構作為查找表并輸入數據;數據分別按關鍵字姓名、學號、房號進行排序(所學排序算法任選一種效率較高的算法);設計查詢菜單,按指定關鍵字姓名、學號、房號進行查詢并輸出結果,要求查詢采用效率較高的算法實現;可以連續(xù)查詢;算法思想:.添加學生信息函數.修改學生信息函數.刪除學生信息函數.顯示所有學生信息函數.排序函數按照宿舍號從小到大排序(冒泡法).排序函數按照學號從小到大排序(冒泡法).查詢函數以姓名為關鍵字進行查詢(順序查找).查詢函數以學號為關鍵字進行查詢(折半查找).查詢函數以宿舍號為關鍵字進行查詢(折半查找).存儲函數運行結果:回人人人成請選擇所要實現的功能《請輸入a%中的任意一個數字〉:a--E:徵捱給構模建安騎隋舍管理查向縈統(tǒng)\口ebuq\宿舍管母查詢親統(tǒng)回人人人成請選擇所要實現的功能《請輸入a%中的任意一個數字〉:a--E:徵捱給構模建安騎隋舍管理查向縈統(tǒng)\口ebuq\宿舍管母查詢親統(tǒng)-毒看功一生舍?>:內三B1長:請選擇所要實現的功能<請輸入請選擇所要實現的功能<請輸入a%巾的任意一個數字):a33以符符字個1550<3<3號:1WI于碼姥的號生生舍!影看功人人八成請選擇所要實現的功能<請輸入a”中的任意一個數字):請選擇所要實現的功能<請輸入a”中的任意一個數字):b'T?E:徵捱給相模軟實驗6喑舍智旦查向縈婚Debug*宿舍管=詞親統(tǒng)啟xe回|??|請強眷救聚修改學生的姓名;李四口下二請強眷救聚修改學生的姓名;李四口下二請選擇所要實現的功能《請輸入a%中的任意一個數字〉:請選擇所要實現的功能《請輸入a%中的任意一個數字〉:c解酷跨刪除學生的姓名浮斯請選擇所要實現的功能<請輸入a飛巾的任意一個數字Xd姓名查找器慧巽覲MM姓名查找器慧巽覲MM苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴苴請輸入信息111藕震生信息如下:我的學生的姓名C011藕震生信息如下:我的學生的姓名C0個字符以內):張三學生學號 宿舍號附:源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intchange=0;//用來判斷是否已保存操作〃定義一個存儲學生相關信息的結構體typedefstruct(charS_name[31]; 〃學生姓名charS_number[16];//學生學號intD_number; 〃學生所在寢室的宿舍號}Stud;typedefstruct(Studstudent[M];intTotal; 〃學生總數}Stu,*St;//判斷學號是否與表中所存學號重復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("學號輸入失敗,該學號已存在,請重新輸入學號!\n");printf("請輸入學生的學號(15個字符以內):");scanf("%s",(S->student[t]).S_number);getchar();i=1;}}}}//添加學生信息函數voidAdd(StS)(printf(”請輸入學生姓名(30個字符以內):");scanf("%s",(S->student[++(S->Total)]).S_name);getchar();//獲取換行符printf("請輸入學生的學號(15個字符以內):");scanf("%s",(S->student[S->Total]).S_number);getchar();S_number_Judge(S,S->Total);/^U斷輸入的學號是否與表中所存在的學號重復printf("請輸入宿舍號碼:");scanf("%d”,&(S->student[S->Total]).D_number);getchar();change=1;printf("添加成功!\n\n");)//修改學生信息函數voidAlter(StS)(inti;intflag=0;//用來判斷表中是否存在所要修改的學生的信息charname[20];printf("請輸入你要修改學生的姓名:");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("你所要修改的學生信息在表中不存在!\n");else(printf("新信息如下:\n");printf(”請輸入學生姓名(30個字符以內):");scanf("%s",(S->student[flag]).S_name);getchar();printf("請輸入學生的學號(15個字符以內):");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');)//刪除學生信息voidDelete(StS)(inti,j;intflag=0;//用來判斷表中是否存在所要刪除的學生的信息charname[20];printf("請輸入你要刪除學生的姓名:");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("你所要刪除的學生在表中不存在!)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");)〃顯示所有學生信息函數voidDisplay_All(StS)(inti;printf("全體學生信息如下:\n");printf("學生姓名 學生學號 宿舍號\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');)〃排序函數按照寢室號從小到大排序(冒泡法)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;))〃排序函數按照學號從小到大排序(冒泡法)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;))//查詢函數以姓名為關鍵字進行查詢(順序查找)voidQuery_S_name(StS)(inti,j=0;charname[31];printf("請輸入你要查找的學生的姓名(30個字符以內):");scanf("%s",name);getchar();printf("所查找學生信息如下:\n");printf("學生姓名 學生學號 宿舍號\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查找失敗,表中不存在該學生的信息!\n\n");)//查詢函數以學號為關鍵字進行查詢(折半查找)voidQuery_S_number(StS)(intflag,top,bottom,mid;charnumber[15];flag=0;bottom=1;top二S->Total;printf("請輸入你要查找學生的學號:");scanf("%s",number);getchar();Sort_S_number(S);//將表中原數據按照學號從小到大排序printf("所查找學生信息如下:\n");printf("學生姓名 學生學號 宿舍號\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查找失敗,表中不存在該學生的信息!\n\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);//將表中原數據按照寢室號從小到大排序printf("所查找寢室信息如下:\n");printf("學生姓名 學生學號 宿舍號\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按學號查找***********\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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東水利電力職業(yè)技術學院《小學班級管理主任工作》2023-2024學年第一學期期末試卷
- 廣東生態(tài)工程職業(yè)學院《媒介批評》2023-2024學年第一學期期末試卷
- 廣東石油化工學院《交互設計概論》2023-2024學年第一學期期末試卷
- 七年級上冊《5.3.2 銷售中的盈虧問題》課件與作業(yè)
- 廣東嶺南職業(yè)技術學院《藝術學原理》2023-2024學年第一學期期末試卷
- 大學生創(chuàng)新創(chuàng)業(yè)降龍十八講(閩南師范大學)學習通測試及答案
- 大學體育(上海體育學院)學習通測試及答案
- 2025新北師大版英語七年級下UNIT 6 Animals單詞表
- 【名師一號】2020-2021學年高中地理中圖版同步練習必修二-雙基限時練8
- 【紅對勾】2021-2022學年人教版高中政治必修一習題-第二單元-生產、勞動與經營-5-1
- 安全工器具-變壓器絕緣油課件
- 瓦楞紙箱工藝流程演示文稿
- 神通數據庫管理系統(tǒng)v7.0企業(yè)版-3概要設計說明書
- 生產異常問題反饋流程圖
- 安置房項目二次結構磚砌體工程專項施工方案培訓資料
- SB/T 10756-2012泡菜
- GB/T 20492-2006鋅-5%鋁-混合稀土合金鍍層鋼絲、鋼絞線
- 公司變更評審表
- 醫(yī)院輸血質量管理考核標準
- 七年級語文上冊:15、《古代詩歌四首》教案
- 自由戰(zhàn)爭-簡體素材表
評論
0/150
提交評論