當(dāng)前位置首頁 > 學(xué)術(shù)論文 > 其它論文相關(guān)文檔
搜柄,搜必應(yīng)! 快速導(dǎo)航 | 使用教程

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——宿舍管理查詢軟件要點(diǎn)

文檔格式:DOCX| 26 頁|大小 254.27KB|積分 12|2025-03-16 發(fā)布|文檔ID:253595204
第1頁
第2頁
第3頁
下載文檔到電腦,查找使用更方便 還剩頁未讀,繼續(xù)閱讀>>
1 / 26
此文檔下載收益歸作者所有 下載文檔
  • 版權(quán)提示
  • 文本預(yù)覽
  • 常見問題
  • 秦皇島分校NorthEastern University At QinHuangDao數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)宿舍管理查詢軟件班級(jí)學(xué)號(hào)班學(xué)生姓名提交日期2015年7月24日成 績計(jì)算機(jī)與通信工程學(xué)院一、需求分析1、程序設(shè)計(jì)任務(wù)為宿舍管理人員編寫一個(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)本無任何信息數(shù)據(jù), 要建立數(shù)據(jù)文件,需開發(fā)一個(gè)信息錄入功能, 即首先創(chuàng)建一個(gè)學(xué)員線性表,同時(shí)我們可以將數(shù)據(jù)暫時(shí)保存在內(nèi)存中,所以我們未開發(fā)信息存盤功能;③信息錄入后都保存在內(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、流程圖開始退出輸入學(xué)牛信氫?l<=f^=8▼ T T ?HRUA5、輸入和輸出①輸入的形式1)開始創(chuàng)建線性表:按先后順序輸入姓名 (20個(gè)字以內(nèi)),學(xué)號(hào)(整型),房號(hào)(整型)2)根據(jù)用戶所選擇的操作鍵,然后再根據(jù)程序的相應(yīng)提示進(jìn)行輸入選擇操作鍵1 (按姓名排序):無輸入;選擇操作鍵2 (按學(xué)號(hào)排序):無輸入;選擇操作鍵3 (按房號(hào)排序):無輸入;選擇操作鍵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ì)有不同的輸出選擇操作鍵 選擇操作鍵 選擇操作鍵 選擇操作鍵 出該學(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)刪除后,輸出刪除后開始錄入的數(shù)據(jù):姓名學(xué)號(hào)房號(hào)劉備1102孫權(quán)6231周瑜312466、測試數(shù)據(jù)正確輸入:查找的數(shù)據(jù):正確輸出:孫權(quán)二、 詳細(xì)設(shè)計(jì)(按學(xué)號(hào))2311、數(shù)據(jù)結(jié)構(gòu)typedef struct // {char name[20];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)前長度存儲(chǔ)空間基址當(dāng)前分配的存儲(chǔ)容量f 為全局變量,指選擇的操作鍵數(shù)char name[20] ;name 為姓名 int num ; num 為學(xué)號(hào)int room ; room 為房號(hào) int length; length 為線性表的當(dā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)刪除中作為循環(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)。

    用于線性表初始化,通過調(diào)用 C語言文件操作函數(shù)來實(shí)現(xiàn)用于創(chuàng)建學(xué)生信息表,通過線性表來實(shí)現(xiàn)用于按房號(hào)排序,通過采用冒泡排序的算法來實(shí)現(xiàn)用于按學(xué)號(hào)排序,通過采用冒泡排序的算法來實(shí)現(xiàn)用于按姓名排序,通過采用冒泡排序的算法來實(shí)現(xiàn)l)&l)&l)用于按房號(hào)從小到大查找, 用于按學(xué)號(hào)從小到大查找, 用于按姓名從小到大查找,通過采用二分查找的算法來實(shí)現(xiàn)通過采用二分查找的算法來實(shí)現(xiàn)通過采用二分查找的算法來實(shí)現(xiàn)用于打印學(xué)生信息,通過調(diào)用文件操作函數(shù)實(shí)現(xiàn)用于打印查找到的學(xué)生信息,通過調(diào)用文件查找函int panduan2(char ch) :用于如果學(xué)生不存在 , 判斷是否繼續(xù)查找,通過 if 語句,文件操作函數(shù)實(shí)現(xiàn)void panduan3() :用于如果已無學(xué)生記錄則返回主界面,通過調(diào)用其他函數(shù)和文件操作函數(shù)實(shí)現(xiàn) void disp() :用于返回主界面,通過調(diào)用 menu() 函數(shù)實(shí)現(xiàn)void menu(): 用于列出操作菜單,通過輸入輸出語句實(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");printf("*************************歡迎進(jìn)入宿舍管理查詢系統(tǒng)*************************\n");printf("\n");printf(" 請按任意鍵開始操作 :");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ù)printf("\n");if(l.length==0){printf(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();}else{printf(" 按姓名排序 :\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(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();}else{printf(" 按學(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(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();}else{printf(" 按房號(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)用按學(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;case 8: Delete(l); // 調(diào)用刪除函數(shù)if(l.length==0){printf("\n");printf(" 學(xué)生記錄已被刪除完 \n");printf("\n");disp();menu();} else{printf(" 顯示刪除后的學(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ù)②在插入和刪除模塊中,顯示學(xué)生的信息的下面總是有主界面,經(jīng)過調(diào)試,運(yùn)用system("cls") 函數(shù)清屏后,顯示的只有學(xué)生的信息了,再按鍵即可返回主界面③本程序多次運(yùn)用了 disp() 、 menu() 、 system("cls") 、 fflush(stdin) 等函數(shù),經(jīng)過多次調(diào)試,已經(jīng)很好的控制了顯示的學(xué)生信息與主界面的轉(zhuǎn)換④通過本次課程設(shè)計(jì),對(duì)線性表、冒泡排序、二分查找的應(yīng)用有了更深入的了解 四、用戶手冊首先, 運(yùn)行程序進(jìn)入 “歡迎進(jìn)入宿舍管理查詢系統(tǒng)” 界面, 然后進(jìn)入線性表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊任意鍵則進(jìn)入操作界面(主界面) ,然后可按鍵進(jìn)行操作單擊數(shù)字鍵“ 1”,則為按姓名排序 單擊數(shù)字鍵“ 3”,則為按房號(hào)排序 單擊數(shù)字鍵“ 5”,則為按學(xué)號(hào)查找 單擊數(shù)字鍵“ 7”,則為按學(xué)號(hào)插入 系統(tǒng)中有如下關(guān)鍵詞:單擊數(shù)字鍵“ 2”,則為按學(xué)號(hào)排序 單擊數(shù)字鍵“ 4”,則為按姓名查找 單擊數(shù)字鍵“ 6”,則為按學(xué)號(hào)查找 單擊數(shù)字鍵“ 8”,則為按學(xué)號(hào)刪除提示:當(dāng)輸入的數(shù)字鍵為 。

    時(shí),退出操作;請輸入數(shù)字鍵(1~8為操作鍵);請按任意鍵進(jìn)入主界面五、測試結(jié)果(1)歡迎界面I "丸我的塞科庫VDoCurnents'CFrwVFEE pkhengjaj.ticc-'IHHHfIWHHHHHWHHHHHHHttHHWHHf歡迎進(jìn)入 盾舌管理查詢 系g充■ = ?蕾?『有M■產(chǎn)餐有??修????¥?? 請按任意鍵開始操作n(2)按任意鍵進(jìn)入線性表的創(chuàng)建界面,并輸入數(shù)據(jù),開始創(chuàng)建*****1**************1******?^ 始創(chuàng) 建線’性表例修苴 * “防百例片有詞 * MiWX * MMX MME Bi Mi生#學(xué)瀏:1:10 S名口于手 第普看 為入AJn否批紙怖大(3)按操作鍵選擇操作? " 生若南 DocnmBnfs'i 匚-FKee\Tennp\c heng 想白法”*************** 請技鍵途擇操作 *****????■?*?*■?■***■1按姓名排序3按信號(hào)排序5技學(xué)號(hào)查找7按學(xué)號(hào)插入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)劃章 1 102同趟 3 124a枚 6 231請按任意鍵進(jìn)入主界面:(6)按房號(hào)排序U: \UOCU menT5\L-rreeyi em p-\cnengxu.exe按房號(hào)排序:姓名 學(xué)號(hào) 房號(hào)劉備 1 182周瑜 2 謔4他權(quán) G g1請按任意摧進(jìn)入主界面:(7)按姓名查找■ "D:\fi^S^I&.DD£:ijrnent5,,LC-Free\TenipliLcherigxLisexefe按姓名查找一一-〉請輸入要查找的姓名:劉備查找成功——> 謾學(xué)生信息為■隹名 孚號(hào) 房號(hào)包董 1 102是否雛續(xù)查找?:(8)按學(xué)號(hào)查找■ 廊\Uocument、\L -卜「ee\ I emp\crergxui.exe,,學(xué)號(hào)查找請輸入要查找的學(xué)號(hào):6 始找成功一一一'談學(xué)生信息為:區(qū)名 孚號(hào) 慮號(hào)忸卜權(quán) 6 231是苦繼續(xù)查找?3nx(9)按房號(hào)查找技房號(hào)查找一一-〉請輸入要查找的房號(hào):124找成一翳生抽周瑜 3 124是否繼續(xù)查找"¥公〉二(10)按學(xué)號(hào)插入■ 5 e?%uuku「T*ii -n evh i cinp ua m ig 用人名曾可 標(biāo)姓"L十房(11)按學(xué)號(hào)刪除 懶嬲料T劉備 1 102是否健續(xù)刪除? #include #include#define N 40 //線性表存儲(chǔ)空間的初始分配量#define increase 10 //線性表存儲(chǔ)空間的分配量增量int f,t=0; 〃定義全局變量typedef struct{char name[20];int num; 〃學(xué)號(hào)和房號(hào)都為整型int room;}stu;stu stud;typedef struct{int length; //當(dā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("***************請按鍵選擇操作****************\n");2按學(xué)號(hào)排序\n");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("\n"); printf("\n");printf(" 提示 :當(dāng)輸入的數(shù)字鍵為 0 時(shí),退出操作 \n");if(t==1){printf(" 請輸入數(shù)字鍵 (1~8 為操作鍵 ):");//1~8 為有效數(shù)字操作鍵scanf("%d",&f);if(f<0||f>9){system("cls");printf("\n");printf(" 輸入數(shù)字不對(duì) ,請?jiān)谠幹剌?!\n"); printf("\n");menu();}}}void disp() //返回主界面{char c;fflush(stdin);printf("\n");printf(" 請按任意鍵進(jìn)入主界面 :");scanf("%c",&c);system("cls");}void panduan3() //如果已無學(xué)生記錄則返回主界面{printf("\n");printf(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();}void shuru(linklist l) //輸入學(xué)生的信息{printf(" 請輸入姓名 :");fflush(stdin); // 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets(stud.name); //輸入一行字符串(姓名) printf(" 請輸入學(xué)號(hào) :");scanf("%d",&stud.num);printf(" 請輸入房號(hào) :");scanf("%d",&stud.room);}void create(linklist &l)// 創(chuàng)建學(xué)生信息表{if(l.length>=l.listsize) //判斷學(xué)生的人數(shù)是否超過初值,如果超過,則重新分配{stu *newbase;newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu ));l.elem=newbase;l.listsize+=increase;}int i=2;char ch;printf("\n");printf("**************************開始創(chuàng)建線性表***************************\n");printf("\n");printf(" 請輸入第 1 個(gè)學(xué)生的信息 \n");shuru(l); //調(diào)用輸入函數(shù)ch=getchar();strcpy(l.elem[l.length].name,stud.name);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;l.length++;printf("\n");printf(" 是否繼續(xù)輸入 ?:");scanf("%c",&ch);printf("\n");printf("\n");while(ch=='y'){printf(" 請輸入第 %d 個(gè)學(xué)生的信息 \n",i);shuru(l);strcpy(l.elem[l.length].name,stud.name);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;l.length++;i++;ch=getchar(); printf("\n");printf(" 是否繼續(xù)輸入 ?:");scanf("%c",&ch);printf("\n");printf("\n");}if(ch=='n') system("cls");}void sort3(linklist &l)// 按房號(hào)排序(采用冒泡排序){int i,j;stu temp;for(i=0;il.elem[j].room){temp=l.elem[i];l.elem[i]=l.elem[j];l.elem[j]=temp;}}void sort2(linklist &l)// 按學(xué)號(hào)排序(采用冒泡排序){int i,j;stu temp;for(i=0;il.elem[j].num){temp=l.elem[i];l.elem[i]=l.elem[j];l.elem[j]=temp;}}void sort1(linklist &l)// 按姓名排序(采用冒泡排序){int i,j;stu temp;for(i=0;i0){temp=l.elem[i]; l.elem[i]=l.elem[j];l.elem[j]=temp;}}void print1(linklist &l)// 打印學(xué)生信息{int i;printf("\n");printf(" 姓名 學(xué)號(hào) 房號(hào) \n");printf("\n");for(i=0;i 該學(xué)生信息為 :\n");printf(" 姓名 學(xué)號(hào) 房號(hào) \n");printf("\n");printf("%-15s %-5d %-5d\n",l.elem[mid].name,l.elem[mid].num,l.elem[mid].room);}int panduan1(char ch) //判斷是否繼續(xù)查找{scanf("%c",&ch);printf(" 是否繼續(xù)查找 ?:");fflush(stdin);scanf("%c",&ch);if(ch=='y'){system("cls");return(1);}elsereturn 0;}int panduan2(char ch) //如果學(xué)生不存在 ,判斷是否繼續(xù)查找{scanf("%c",&ch);printf(" 該學(xué)生不存在 ,是否繼續(xù)查找 ?:");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ù)功能為:返回主界面else{int low=0,high=l.length,mid,flag=0;//flag 作為標(biāo)志符, 為 1 則表示查找成功, 否則沒 有所要查找的學(xué)生int m;char ch;printf("\n");printf("\n");printf(" 按房號(hào)查找 > 請輸入要查找的房號(hào) :");scanf("%d",&m);printf("\n"); while(low<=high) {mid=(low+high)/2;if(m==l.elem[mid].room) {flag=1; break;}else if(m>l.elem[mid].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();}else{if(panduan2(ch)) //調(diào)用判斷函數(shù) 2chazhao3(l); else{ system("cls"); menu();}}}}void chazhao2(linklist &l)// 按學(xué)號(hào)從小到大查找(采用二分查找){if(l.length==0) panduan3();else{int low=0,high=l.length,mid,flag=0;int n;char ch;printf("\n");printf("\n");printf(" 按學(xué)號(hào)查找 > 請輸入要查找的學(xué)號(hào) :");scanf("%d",&n);printf("\n");while(low<=high){mid=(low+high)/2;if(n==l.elem[mid].num){flag=1; break;}else if(n>l.elem[mid].num)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();else{int low=0,high=l.length,mid,flag=0;printf("\n");printf("\n");printf(" 按姓名查找 > 請輸入要查找的姓名 :");char a[15],ch;scanf("%s",a);printf("\n");while(low<=high){mid=(low+high)/2;if(strcmp(a,l.elem[mid].name)==0){flag=1; break;}else if(strcmp(a,l.elem[mid].name)>0) low=mid+1;elsehigh=mid-1;}if(flag==1){print2(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(" 姓名 :");fflush(stdin);// 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù) gets(stud.name);printf(" 學(xué)號(hào) :"); scanf("%d",&stud.num);printf(" 房號(hào) :"); scanf("%d",&stud.room);if(l.length==0){strcpy(l.elem[l.length].name,stud.name); l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;}for(i=0;ik;j--)l.elem[j]=l.elem[j-1];strcpy(l.elem[k].name,stud.name);l.elem[k].num=stud.num;l.elem[k].room=stud.room; break;} else{strcpy(l.elem[l.length].name,stud.name);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room; }}l.length++;fflush(stdin);printf("\n");printf(" 是否繼續(xù)插入 ?:");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(" 請輸入要?jiǎng)h除學(xué)生的學(xué)號(hào) :");scanf("%d",&stud.num);for(i=0;i=l.length) printf(" 該學(xué)生不存在 \n");if(k>=0)l.length--;fflush(stdin);printf("\n");printf(" 是否繼續(xù)刪除 ?:");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");printf("*************************歡迎進(jìn)入宿舍管理查詢系統(tǒng)*************************\n");printf("\n");printf(" 請按任意鍵開始操作 :");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ù)printf("\n");if(l.length==0){printf(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();} else{printf(" 按姓名排序 :\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(" 已無學(xué)生記錄 \n");printf("\n");disp(); menu();}else{printf(" 按學(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(" 已無學(xué)生記錄 \n");printf("\n");disp();menu();}else{printf(" 按房號(hào)排序 :\n");print1(l);disp();menu();}break;case 4:sort1(l); //先調(diào)用按姓名排序函數(shù)進(jìn)行排序chazhao1(l); //再調(diào)用按姓名查找函數(shù)進(jìn)行二分)查找 break;case 5: sort2(l); //先調(diào)用按學(xué)號(hào)排序函數(shù)進(jìn)行排序chazhao2(l); //再調(diào)用按學(xué)號(hào)查找函數(shù)進(jìn)行二分)查找break; case 6: sort3(l); // 先調(diào)用按房號(hào)排序函數(shù)進(jìn)行排序 chazhao3(l); //再調(diào)用按房號(hào)查找函數(shù)進(jìn)行二分)查找break;case 7: sort2(l); // 調(diào)用插入函數(shù)insert(l);system("cls");printf(" 顯示插入后的學(xué)生信息 :\n");print1(l);disp();menu();break;case 8: Delete(l); //調(diào)用刪除函數(shù)if(l.length==0){printf("\n");printf(" 學(xué)生記錄已被刪除完 \n");printf("\n");disp();menu();} else{printf(" 顯示刪除后的學(xué)生信息 :\n");print1(l);disp();menu();} break;}}}七、參考文獻(xiàn)1、《C++程序設(shè)計(jì)(第2版)》,譚浩強(qiáng)編著,清華大學(xué)出版社, 2013年11月。

    2、《數(shù)據(jù)結(jié)構(gòu) C 語言版) 》 ,嚴(yán)蔚敏、吳偉民編著,清華大學(xué)出版社, 2013 年 4 月。

    點(diǎn)擊閱讀更多內(nèi)容
    最新文檔
    傳統(tǒng)文化道德不是高懸的明月而是腳下的星光.pptx
    世界無煙日關(guān)注青少年成長健康無煙為成長護(hù)航.pptx
    五四青年節(jié)詩詞贊歌五四青年自強(qiáng)不息.pptx
    XX學(xué)校班主任培訓(xùn)用心管理慧做班主任.pptx
    拒絕熬夜健康養(yǎng)生規(guī)律作息遠(yuǎn)離亞健康.pptx
    兒童成長手冊時(shí)光里的童真印記.pptx
    幼兒園夏季傳染病預(yù)防指南預(yù)見夏天健康童行夏季傳染病預(yù)防科普.pptx
    高中生心理健康教育主題班會(huì)快樂學(xué)習(xí)高效學(xué)習(xí)正視壓力學(xué)會(huì)減壓.pptx
    員工職業(yè)道德與職業(yè)素養(yǎng)培訓(xùn)遵守職業(yè)道德提高職業(yè)修養(yǎng).pptx
    2025職業(yè)病防治法宣傳周健康守護(hù)職防同行.pptx
    XX幼兒園防災(zāi)減災(zāi)安全教育臨災(zāi)不亂安全童行學(xué)會(huì)保護(hù)自己.pptx
    在2025年縣教育工作大會(huì)暨高考備考工作推進(jìn)會(huì)上的講話發(fā)言材料.docx
    在2025年縣全面從嚴(yán)治黨和黨風(fēng)廉政會(huì)議上的講話發(fā)言材料.docx
    在2025年全市慶?!拔逡弧濒邉趧?dòng)模范表彰大會(huì)上的講話發(fā)言材料多篇.docx
    2025年稅務(wù)局青年代表在五四青年座談會(huì)上的發(fā)言材料3篇.docx
    在2025年市委全體會(huì)議上的主持講話發(fā)言材料.docx
    2025年黨風(fēng)廉政建設(shè)工作要點(diǎn)材料.docx
    在2025年全市青年干部慶祝五四青年節(jié)大會(huì)上的講話發(fā)言材料多篇.docx
    在入黨積極分子培訓(xùn)班上的講話發(fā)言材料.docx
    縣文旅局黨組書記在五一假期及夏季旅游安全生產(chǎn)工作部署會(huì)議上的講話發(fā)言材料.docx
    賣家[上傳人]:飛天仙子
    資質(zhì):實(shí)名認(rèn)證