![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/26/63adb061-0d0d-4444-91fe-f853dfbf3d7e/63adb061-0d0d-4444-91fe-f853dfbf3d7e1.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/26/63adb061-0d0d-4444-91fe-f853dfbf3d7e/63adb061-0d0d-4444-91fe-f853dfbf3d7e2.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/26/63adb061-0d0d-4444-91fe-f853dfbf3d7e/63adb061-0d0d-4444-91fe-f853dfbf3d7e3.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/26/63adb061-0d0d-4444-91fe-f853dfbf3d7e/63adb061-0d0d-4444-91fe-f853dfbf3d7e4.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/26/63adb061-0d0d-4444-91fe-f853dfbf3d7e/63adb061-0d0d-4444-91fe-f853dfbf3d7e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、秦皇島分校NorthEastern University At QinHuangDao數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)宿舍管理查詢軟件班級(jí)學(xué)號(hào)班學(xué)生姓名提交日期2015年7月24日成 績(jī)計(jì)算機(jī)與通信工程學(xué)院一、需求分析1、程序設(shè)計(jì)任務(wù)為宿舍管理人員編寫(xiě)一個(gè)宿舍管理查詢軟件。程序設(shè)計(jì)要求:A.采用交互工作方式B.建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行排序(冒泡、選擇、插入排序等任選一種) 查詢菜單:(用二分查找實(shí)現(xiàn)以下操作 )A.按姓名查詢B.按學(xué)號(hào)查詢C.按房號(hào)查詢打印任一查詢結(jié)果(可以連續(xù)操作)2、功能要實(shí)現(xiàn)交互工作方式,各項(xiàng)操作結(jié)束后均應(yīng)返回主菜單;系統(tǒng)本無(wú)任何信息數(shù)據(jù), 要建立數(shù)據(jù)文件,
2、需開(kāi)發(fā)一個(gè)信息錄入功能, 即首先創(chuàng)建一個(gè)學(xué)員線性表,同時(shí)我們可以將數(shù)據(jù)暫時(shí)保存在內(nèi)存中,所以我們未開(kāi)發(fā)信息存盤(pán)功能;信息錄入后都保存在內(nèi)存中,用戶看不到,需要設(shè)計(jì)一個(gè)信息顯示功能,信息的顯示應(yīng)該便于查閱,所以需具備按各種關(guān)鍵字顯示的功能;本系統(tǒng)按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行冒泡排序,采用二分查找方式分別實(shí)現(xiàn)按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))查詢功能;由于有些同學(xué)因?yàn)椴煌蚨x校,所以設(shè)計(jì)了刪除功能;由于有新同學(xué)入校,所以設(shè)計(jì)了插入功能;當(dāng)用戶操作完畢需要退出時(shí),我們提供了退出選項(xiàng),便于使用者退出交互式工作系統(tǒng)。3、功能模塊圖4、流程圖開(kāi)始退出輸入學(xué)牛信氫l<=f=8TTHRUA5、輸入和輸
3、出輸入的形式1)開(kāi)始創(chuàng)建線性表:按先后順序輸入姓名 (20個(gè)字以內(nèi)),學(xué)號(hào)(整型),房號(hào)(整型)。2)根據(jù)用戶所選擇的操作鍵,然后再根據(jù)程序的相應(yīng)提示進(jìn)行輸入。選擇操作鍵1 (按姓名排序):無(wú)輸入;選擇操作鍵2 (按學(xué)號(hào)排序):無(wú)輸入;選擇操作鍵3 (按房號(hào)排序):無(wú)輸入;選擇操作鍵4 (按姓名查找):輸入要查找的姓名;選擇操作鍵 選擇操作鍵 選擇操作鍵 選擇操作鍵(按學(xué)號(hào)查找)(按房號(hào)查找)(按學(xué)號(hào)插入)(按學(xué)號(hào)刪除)輸入要查找的學(xué)號(hào);輸入要查找的房號(hào);按照提示順序輸入要插入的學(xué)生姓名,學(xué)號(hào),房號(hào);輸入要?jiǎng)h除學(xué)生的學(xué)號(hào)。輸出的形式及范圍根據(jù)用戶選擇的不同,會(huì)有不同的輸出。選擇操作鍵 選擇操作
4、鍵 選擇操作鍵 選擇操作鍵 出該學(xué)生不存在;選擇操作鍵 出該學(xué)生不存在;選擇操作鍵 出該學(xué)生不存在。選擇操作鍵選擇操作鍵 的所有學(xué)生信息。(按姓名排序) (按學(xué)號(hào)排序) (按房號(hào)排序 (按姓名查找)(按學(xué)號(hào)查找)(按房號(hào)查找)(按學(xué)號(hào)插入)(按學(xué)號(hào)刪除):輸出以姓名首字母排序的所有學(xué)生信息;:輸出按學(xué)號(hào)從小到大排列的所有學(xué)生信息;):輸出按房號(hào)從小到大排列的所有學(xué)生信息;:若查找成功,則輸出相應(yīng)學(xué)生信息,:若查找成功,則輸出相應(yīng)學(xué)生信息,:若查找成功,則輸出相應(yīng)學(xué)生信息,若不成功,則輸若不成功,則輸若不成功,則輸:輸出插入后的所有學(xué)生信息;:輸出所需刪除的學(xué)生信息,確認(rèn)刪除后,輸出刪除后開(kāi)始錄
5、入的數(shù)據(jù):姓名學(xué)號(hào)房號(hào)劉備1102孫權(quán)6231周瑜312466、測(cè)試數(shù)據(jù)正確輸入:查找的數(shù)據(jù):正確輸出:孫權(quán)二、 詳細(xì)設(shè)計(jì)(按學(xué)號(hào))2311、數(shù)據(jù)結(jié)構(gòu)typedef struct / char name20;int num;int room;stu;stu stud;typedef struct定義結(jié)構(gòu)體成員/學(xué)號(hào)和房號(hào)都為整型int length;stu *elem;int listsize;linklist;2、數(shù)據(jù)int f ;/當(dāng)前長(zhǎng)度存儲(chǔ)空間基址當(dāng)前分配的存儲(chǔ)容量f 為全局變量,指選擇的操作鍵數(shù)char name20 ;name 為姓名 int num ; num 為學(xué)號(hào)int ro
6、om ; room 為房號(hào) int length; length 為線性表的當(dāng)前長(zhǎng)度 stu *elem; elem 指示線性表的基地址 int listsize;listsize 為當(dāng)前分配的存儲(chǔ)容量 char c ; c 為進(jìn)入主界面的任意鍵char ch;ch 為判斷字符y 或 nint i,j;在冒泡排序中, i 為外層循環(huán)次數(shù),j 為內(nèi)層循環(huán)次數(shù)int i ;在打印學(xué)生信息時(shí), i 作為循環(huán)變量int m;int n;int a;m,n,a 在二分查找中分別代表房號(hào),學(xué)號(hào),姓名int i,j,k;i,j,k 在按學(xué)號(hào)插入中作為循環(huán)變量int i,j,k=-1;i,j,k 在按學(xué)號(hào)刪除
7、中作為循環(huán)變量3、函數(shù)調(diào)用具體函數(shù)如下:void init(linklist &l)void create(linklist &l)void sort3(linklist &l)void sort2(linklist &l)void sort1(linklist &l)void chazhao3(linklistvoid chazhao2(linklistvoid chazhao1(linklistvoid print1(linklist &l)void print2(linklist &l,int mid) 數(shù)實(shí)現(xiàn)。:用于線性表初始化,
8、通過(guò)調(diào)用C語(yǔ)言文件操作函數(shù)來(lái)實(shí)現(xiàn)。:用于創(chuàng)建學(xué)生信息表,通過(guò)線性表來(lái)實(shí)現(xiàn)。:用于按房號(hào)排序,通過(guò)采用冒泡排序的算法來(lái)實(shí)現(xiàn)。:用于按學(xué)號(hào)排序,通過(guò)采用冒泡排序的算法來(lái)實(shí)現(xiàn)。:用于按姓名排序,通過(guò)采用冒泡排序的算法來(lái)實(shí)現(xiàn)。&l)&l)&l)用于按房號(hào)從小到大查找, 用于按學(xué)號(hào)從小到大查找, 用于按姓名從小到大查找,通過(guò)采用二分查找的算法來(lái)實(shí)現(xiàn)。通過(guò)采用二分查找的算法來(lái)實(shí)現(xiàn)。通過(guò)采用二分查找的算法來(lái)實(shí)現(xiàn)。:用于打印學(xué)生信息,通過(guò)調(diào)用文件操作函數(shù)實(shí)現(xiàn)。:用于打印查找到的學(xué)生信息,通過(guò)調(diào)用文件查找函int panduan2(char ch) :用于如果學(xué)生不存在 , 判斷是否繼續(xù)
9、查找,通過(guò)if 語(yǔ)句,文件操作函數(shù)實(shí)現(xiàn)void panduan3() :用于如果已無(wú)學(xué)生記錄則返回主界面,通過(guò)調(diào)用其他函數(shù)和文件操作函數(shù)實(shí)現(xiàn)。void disp():用于返回主界面,通過(guò)調(diào)用menu() 函數(shù)實(shí)現(xiàn)。void menu():用于列出操作菜單,通過(guò)輸入輸出語(yǔ)句實(shí)現(xiàn)。void main():程序操作的入口,是程序的主函數(shù),可以按照已定義的函數(shù)調(diào)用子函數(shù)。4、主程序:int main() / 主函數(shù)linklist l; /定義線性表linit(l); / 調(diào)用初始化函數(shù)char ch;system("color a"); printf("n")
10、;printf("*歡迎進(jìn)入宿舍管理查詢系統(tǒng)*n");printf("n");printf(" 請(qǐng)按任意鍵開(kāi)始操作:");scanf("%c",&ch);system("cls");/將屏幕先前顯示的內(nèi)容清理掉create(l); /調(diào)用線性表創(chuàng)建函數(shù)system("cls");t=1;menu(); / 調(diào)用主菜單函數(shù)while(f!=0)system("cls");switch(f)case 1: sort1(l); /調(diào)用按姓名排序函數(shù)pri
11、ntf("n");if(l.length=0)printf(" 已無(wú)學(xué)生記錄n");printf("n");disp();menu();elseprintf(" 按姓名排序:n");print1(l);disp(); / 調(diào)用返回主界面menu();break;case 2: sort2(l); / 調(diào)用按學(xué)號(hào)排序函數(shù) printf("n");if(l.length=0)printf(" 已無(wú)學(xué)生記錄n");printf("n");disp();menu(
12、);elseprintf(" 按學(xué)號(hào)排序:n");print1(l);disp();menu();break;case 3: sort3(l); / 調(diào)用按房號(hào)排序函數(shù)printf("n");if(l.length=0)printf(" 已無(wú)學(xué)生記錄n");printf("n");disp();menu();elseprintf(" 按房號(hào)排序:n");print1(l);disp();menu();先調(diào)用按姓名排序函數(shù)進(jìn)行排序再調(diào)用按姓名查找函數(shù)進(jìn)行(二分)查找先調(diào)用按學(xué)號(hào)排序函數(shù)進(jìn)行排序再調(diào)
13、用按學(xué)號(hào)查找函數(shù)進(jìn)行(二分)查找先調(diào)用按房號(hào)排序函數(shù)進(jìn)行排序 再調(diào)用按房號(hào)查找函數(shù)進(jìn)行(二分)查找break;case 4:sort1(l);/chazhao1(l); / break;case 5: sort2(l); / chazhao2(l); / break;case 6: sort3(l); / chazhao3(l); / break;case 7: sort2(l); / 調(diào)用插入函數(shù) insert(l);system("cls");printf(" 顯示插入后的學(xué)生信息:n");print1(l);disp();menu();break;
14、case 8: Delete(l); /調(diào)用刪除函數(shù)if(l.length=0)printf("n");printf(" 學(xué)生記錄已被刪除完n");printf("n");disp();menu(); elseprintf(" 顯示刪除后的學(xué)生信息:n");print1(l);disp();menu(); break;三、調(diào)試分析為了避免繁瑣、 改進(jìn)算法, 在一些函數(shù)中調(diào)用了其它的函數(shù)。 如: 在按 (姓名、 學(xué)號(hào)、房號(hào))查找中都調(diào)用了 panduan1(ch) 和 panduan2(ch) 函數(shù)。在插入和刪除模塊
15、中,顯示學(xué)生的信息的下面總是有主界面,經(jīng)過(guò)調(diào)試,運(yùn)用system("cls") 函數(shù)清屏后,顯示的只有學(xué)生的信息了,再按鍵即可返回主界面。本程序多次運(yùn)用了 disp() 、 menu() 、 system("cls") 、 fflush(stdin) 等函數(shù),經(jīng)過(guò)多次調(diào)試,已經(jīng)很好的控制了顯示的學(xué)生信息與主界面的轉(zhuǎn)換。通過(guò)本次課程設(shè)計(jì),對(duì)線性表、冒泡排序、二分查找的應(yīng)用有了更深入的了解。 四、用戶手冊(cè)首先, 運(yùn)行程序進(jìn)入 “歡迎進(jìn)入宿舍管理查詢系統(tǒng)” 界面, 然后進(jìn)入線性表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊任意鍵則進(jìn)入操作界面(主界面)
16、,然后可按鍵進(jìn)行操作。單擊數(shù)字鍵“ 1”,則為按姓名排序 單擊數(shù)字鍵“ 3”,則為按房號(hào)排序 單擊數(shù)字鍵“ 5”,則為按學(xué)號(hào)查找 單擊數(shù)字鍵“ 7”,則為按學(xué)號(hào)插入 系統(tǒng)中有如下關(guān)鍵詞:?jiǎn)螕魯?shù)字鍵“ 2”,則為按學(xué)號(hào)排序 單擊數(shù)字鍵“ 4”,則為按姓名查找 單擊數(shù)字鍵“ 6”,則為按學(xué)號(hào)查找 單擊數(shù)字鍵“ 8”,則為按學(xué)號(hào)刪除提示:當(dāng)輸入的數(shù)字鍵為 。時(shí),退出操作;請(qǐng)輸入數(shù)字鍵(18為操作鍵);請(qǐng)按任意鍵進(jìn)入主界面。五、測(cè)試結(jié)果(1)歡迎界面I "。丸我的塞科庫(kù)VDoCurnents'CFrwVFEE pkhengjaj.ticc-'IHHHfIWHHHHHWHHHH
17、HHHttHHWHHf歡迎進(jìn)入 盾舌管理查詢 系g充 = «蕾有M產(chǎn)餐有修¥ 請(qǐng)按任意鍵開(kāi)始操作n(2)按任意鍵進(jìn)入線性表的創(chuàng)建界面,并輸入數(shù)據(jù),開(kāi)始創(chuàng)建*1*1*? 始創(chuàng) 建線性表例修苴 * “防百例片有詞 * MiWX* MMX MME Bi Mi生#學(xué)瀏:1:10 S名口于手 第普看 為入AJn否批紙怖大(3)按操作鍵選擇操作 "生若南 DocnmBnfs'i 匚-FKeeTennpc heng 想白法”* 請(qǐng)技鍵途擇操作 *»«»»*»*»*1按姓名排序3按信號(hào)排序5技學(xué)號(hào)查找7按學(xué)號(hào)插入
18、Z按學(xué)號(hào)排序4按姓名查找6按房號(hào)查找6按學(xué)號(hào)刪除退出操作半.(4)按姓名排序匕,找的黃科1軍'LAocuEEntsTL -卜亡七* I rmpXchengxu.EKe按姓名排序;姓名學(xué)號(hào)房號(hào)1102孫叔6231周瑜3124上按任意鍵進(jìn)入主界面:(5)按學(xué)號(hào)排序B .口 科我更懂 Af?Uccu rrrenta'lhrMXl EmpVcJiengxu.eKe''技學(xué)號(hào)排序;姓名學(xué)號(hào) 房號(hào)劃章1102同趟3124a枚6231請(qǐng)按任意鍵進(jìn)入主界面:(6)按房號(hào)排序U:UOCU menT5L-rreeyi em p-cnengxu.exe按房號(hào)排序:姓名學(xué)號(hào) 房號(hào)劉備1
19、182周瑜2謔4他權(quán)Gg1請(qǐng)按任意摧進(jìn)入主界面:(7)按姓名查找 "D:fiSI&.DD£:ijrnent5,LC-FreeTenipliLcherigxLisexefe按姓名查找一一-請(qǐng)輸入要查找的姓名:劉備查找成功> 謾學(xué)生信息為隹名孚號(hào) 房號(hào)包董1102是否雛續(xù)查找?:(8)按學(xué)號(hào)查找廊Uocument、L -卜ee I empcrergxui.exe,學(xué)號(hào)查找請(qǐng)輸入要查找的學(xué)號(hào):6 始找成功一一一'談學(xué)生信息為:區(qū)名孚號(hào) 慮號(hào)忸卜權(quán)6231是苦繼續(xù)查找?3nx(9)按房號(hào)查找技房號(hào)查找一一-請(qǐng)輸入要查找的房號(hào):124找成一翳生抽周瑜3124是否
20、繼續(xù)查找"¥公二(10)按學(xué)號(hào)插入5euukuT*ii-n evh i cinp ua m ig 用人名曾可 標(biāo)姓"L十房(11)按學(xué)號(hào)刪除懶嬲料T劉備1102是否健續(xù)刪除?<iXy六、附錄源程序:采用順序線性表解決宿舍管理問(wèn)題(C語(yǔ)言)#include<stdio.h> #include<stdlib.h> #include<string.h>#define N 40 /線性表存儲(chǔ)空間的初始分配量#define increase 10 /線性表存儲(chǔ)空間的分配量增量int f,t=0;定義全局變量typedef struc
21、tchar name20;int num;學(xué)號(hào)和房號(hào)都為整型int room;stu;stu stud;typedef structint length; /當(dāng)前長(zhǎng)度stu *elem;存儲(chǔ)空間基址int listsize;當(dāng)前分配的存儲(chǔ)容量linklist;void init(linklist &l)/ 線性表初始化l.length=0;l.elem=(stu *)malloc(N*sizeof(stu);l.listsize=N;void menu()操作菜單printf("n"); printf("*請(qǐng)按鍵選擇操作*n");2按學(xué)號(hào)排序n&
22、quot;);printf("n");printf("n");printf("1按姓名排序printf("n");printf("3按房號(hào)排序4按姓名查找n");printf("n");printf("5 按學(xué)號(hào)查找6 按房號(hào)查找n");printf("n");printf("7 按學(xué)號(hào)插入8 按學(xué)號(hào)刪除n");printf("n"); printf("n"); printf("
23、;n"); printf("n");printf(" 提示 :當(dāng)輸入的數(shù)字鍵為 0 時(shí),退出操作n");if(t=1)printf(" 請(qǐng)輸入數(shù)字鍵 (18 為操作鍵 ):");/18 為有效數(shù)字操作鍵scanf("%d",&f);if(f<0|f>9)system("cls");printf("n");printf(" 輸入數(shù)字不對(duì),請(qǐng)?jiān)谠幹剌?n"); printf("n");menu();void
24、disp()/返回主界面char c;fflush(stdin);printf("n");printf(" 請(qǐng)按任意鍵進(jìn)入主界面:");scanf("%c",&c);system("cls");void panduan3() /如果已無(wú)學(xué)生記錄則返回主界面printf("n");printf(" 已無(wú)學(xué)生記錄n");printf("n");disp();menu();void shuru(linklist l)/輸入學(xué)生的信息printf(&quo
25、t; 請(qǐng)輸入姓名:");fflush(stdin);/清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets();/輸入一行字符串(姓名)printf(" 請(qǐng)輸入學(xué)號(hào):");scanf("%d",&stud.num);printf(" 請(qǐng)輸入房號(hào):");scanf("%d",&stud.room);void create(linklist &l)/ 創(chuàng)建學(xué)生信息表if(l.length>=l.listsize)/判斷學(xué)生的人數(shù)是否超過(guò)初值,如果超過(guò),則重新分配stu *
26、newbase;newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu );l.elem=newbase;l.listsize+=increase;int i=2;char ch;printf("n");printf("*開(kāi)始創(chuàng)建線性表*n");printf("n");printf(" 請(qǐng)輸入第 1 個(gè)學(xué)生的信息n");shuru(l);/調(diào)用輸入函數(shù)ch=getchar();strcpy(,);l.eleml
27、.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;printf("n");printf(" 是否繼續(xù)輸入 ?<y/n>:");scanf("%c",&ch);printf("n");printf("n");while(ch='y')printf(" 請(qǐng)輸入第 %d 個(gè)學(xué)生的信息 n",i);shuru(l);strcpy(,stud
28、.name);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;i+;ch=getchar(); printf("n");printf(" 是否繼續(xù)輸入 ?<y/n>:");scanf("%c",&ch);printf("n");printf("n");if(ch='n') system("cls");void sort3(linklist &l)
29、/ 按房號(hào)排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi.room>l.elemj.room)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort2(linklist &l)/ 按學(xué)號(hào)排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi.num>l.elemj.n
30、um)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort1(linklist &l)/ 按姓名排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(strcmp(,)>0)temp=l.elemi; l.elemi=l.elemj;l.elemj=temp;void print1(linklist &l)/ 打印學(xué)生信息int i;printf("n&
31、quot;);printf(" 姓名 學(xué)號(hào) 房號(hào) n");printf("n");for(i=0;i<l.length;i+)printf("%-15s %-3d %5dn",,l.elemi.num,l.elemi.room);void print2(linklist &l,int mid)/打印查找到的學(xué)生信息printf(" 查找成功 > 該學(xué)生信息為 :n");printf(" 姓名學(xué)號(hào) 房號(hào) n");printf("n")
32、;printf("%-15s %-5d %-5dn",,l.elemmid.num,l.elemmid.room);int panduan1(char ch)/判斷是否繼續(xù)查找scanf("%c",&ch);printf(" 是否繼續(xù)查找 ?<y/n>:");fflush(stdin);scanf("%c",&ch);if(ch='y')system("cls");return(1);elsereturn 0;int pan
33、duan2(char ch)/如果學(xué)生不存在,判斷是否繼續(xù)查找scanf("%c",&ch);printf(" 該學(xué)生不存在 ,是否繼續(xù)查找 ?<y/n>:");fflush(stdin);scanf("%c",&ch);if(ch='y')system("cls");return(1);else return 0;void chazhao3(linklist &l)/ 按房號(hào)從小到大查找(采用二分查找)if(l.length=0) panduan3();/此函數(shù)
34、功能為:返回主界面elseint low=0,high=l.length,mid,flag=0;/flag 作為標(biāo)志符, 為 1 則表示查找成功, 否則沒(méi) 有所要查找的學(xué)生int m;char ch;printf("n");printf("n");printf(" 按房號(hào)查找 > 請(qǐng)輸入要查找的房號(hào):");scanf("%d",&m);printf("n"); while(low<=high) mid=(low+high)/2;if(m=l.elemmid.room) fla
35、g=1; break;else if(m>l.elemmid.room) low=mid+1;else high=mid-1; if(flag=1)print2(l,mid);if(panduan1(ch)/ 調(diào)用判斷函數(shù)1chazhao3(l);else system("cls");menu();elseif(panduan2(ch)/調(diào)用判斷函數(shù)2chazhao3(l); else system("cls"); menu();void chazhao2(linklist &l)/ 按學(xué)號(hào)從小到大查找(采用二分查找)if(l.length
36、=0) panduan3();elseint low=0,high=l.length,mid,flag=0;int n;char ch;printf("n");printf("n");printf(" 按學(xué)號(hào)查找 > 請(qǐng)輸入要查找的學(xué)號(hào):");scanf("%d",&n);printf("n");while(low<=high)mid=(low+high)/2;if(n=l.elemmid.num)flag=1; break;else if(n>l.elemmid.nu
37、m)low=mid+1;elsehigh=mid-1;if(flag=1)print2(l,mid);if(panduan1(ch)chazhao2(l);else system("cls"); menu();else if(panduan2(ch) chazhao2(l);else system("cls"); menu();void chazhao1(linklist &l)/ 按姓名從小到大查找(采用二分查找)if(l.length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;p
38、rintf("n");printf("n");printf(" 按姓名查找 > 請(qǐng)輸入要查找的姓名 :");char a15,ch;scanf("%s",a);printf("n");while(low<=high)mid=(low+high)/2;if(strcmp(a,)=0)flag=1; break;else if(strcmp(a,)>0) low=mid+1;elsehigh=mid-1;if(flag=1)p
39、rint2(l,mid); /打印查找到的學(xué)生的信息 if(panduan1(ch) chazhao1(l); else system("cls"); menu();else if(panduan2(ch) chazhao1(l); else system("cls");menu();void insert(linklist &l)/ 按學(xué)號(hào)從小到大插入該學(xué)生int i,j,k;char ch;printf("n");printf(" 插入的學(xué)生信息為 :n");printf(" 姓名 :&quo
40、t;);fflush(stdin);/ 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù) gets();printf(" 學(xué)號(hào):");scanf("%d",&stud.num);printf(" 房號(hào):");scanf("%d",&stud.room);if(l.length=0)strcpy(,); l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;for(i=0;i<
41、;l.length;i+)if(stud.num<l.elemi.num) k=i;for(j=l.length;j>k;j-)l.elemj=l.elemj-1;strcpy(,);l.elemk.num=stud.num;l.elemk.room=stud.room; break; elsestrcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room; l.length+;fflush(stdin);prin
42、tf("n");printf(" 是否繼續(xù)插入 ?<y/n>:");scanf("%c",&ch);if(ch='y') insert(l);else system("cls");void Delete(linklist &l)/ 按學(xué)號(hào)刪除該學(xué)生 int i,j,k=-1;char ch;printf("n");printf("n");printf(" 請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào) :");scanf("%
43、d",&stud.num);for(i=0;i<l.length;i+) if(stud.num=l.elemi.num)printf(" 該學(xué)生的信息為 :n");printf("n");printf("%-15s %-3d %7dn",,l.elemi.num,l.elemi.room); k=i;for(j=k;j<l.length-1;j+)l.elemj=l.elemj+1;printf("n");break;if(i>=l.length) pr
44、intf(" 該學(xué)生不存在n");if(k>=0)l.length-;fflush(stdin);printf("n");printf(" 是否繼續(xù)刪除?<y/n>:");scanf("%c",&ch);system("cls");if(ch='y') Delete(l);else system("cls");int main()/主函數(shù)linklist l;/定義線性表linit(l);/調(diào)用初始化函數(shù)char ch;system("color a");printf("n");print
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育部申請(qǐng)書(shū)
- 2000字助學(xué)金申請(qǐng)書(shū)
- 經(jīng)濟(jì)適用房申請(qǐng)書(shū)
- 義務(wù)兵留隊(duì)申請(qǐng)書(shū)2016
- 公租房個(gè)人申請(qǐng)書(shū)范文
- 小學(xué)音樂(lè)教師成長(zhǎng)計(jì)劃(31篇)
- 退出法官員額申請(qǐng)書(shū)
- 2024-2025學(xué)年高中歷史第四單元近代中國(guó)反侵略求民主的潮流13辛亥革命講義新人教版必修1
- 二零二五版水泥制品行業(yè)環(huán)保標(biāo)準(zhǔn)修訂咨詢合同
- 二零二五年度黃金購(gòu)貨合同范本(定制化服務(wù))2篇
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 人教版《道德與法治》二年級(jí)下冊(cè)全冊(cè)優(yōu)秀課件
- RB/T 040-2020病原微生物實(shí)驗(yàn)室生物安全風(fēng)險(xiǎn)管理指南
- GB/T 889.1-2000I型非金屬嵌件六角鎖緊螺母
- 構(gòu)建物聯(lián)網(wǎng)系統(tǒng)原型-教學(xué)設(shè)計(jì)
- (完整word版)家譜WORD樣本
- 無(wú)主之地2全裝備代碼
- 小升初廣東省深圳市2021-2022學(xué)年六年級(jí)下學(xué)期期末數(shù)學(xué)真題測(cè)試模擬卷(解答題)有解析
- DB32∕T 2882-2016 城市軌道交通橋隧結(jié)構(gòu)養(yǎng)護(hù)技術(shù)規(guī)程
- 血液透析應(yīng)急流程圖+
- 京東考試答案參考
評(píng)論
0/150
提交評(píng)論