數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)名稱:賓館訂房和退房系統(tǒng)姓名:胡山權(quán)學(xué)號:111714110學(xué)院:計(jì)算機(jī)科學(xué)及技術(shù)學(xué)院專業(yè):網(wǎng)絡(luò)工程指導(dǎo)老師:陳建新一.需求分析1. 實(shí)驗(yàn)題目:賓館訂房和退房系統(tǒng)2. 基本要求:1)實(shí)現(xiàn)賓館的訂房業(yè)務(wù)2)實(shí)現(xiàn)退房業(yè)務(wù)統(tǒng)計(jì)當(dāng)前客人查詢客人信息退房函數(shù)訂房函數(shù)打印客人信息初始化函數(shù)客人結(jié)構(gòu)體定賓館結(jié)構(gòu)體定房間結(jié)構(gòu)體定3) 實(shí)現(xiàn)統(tǒng)計(jì)業(yè)務(wù)4) 實(shí)現(xiàn)查詢業(yè)務(wù)其他:要求在VC+6.0下運(yùn)行通過概要設(shè)計(jì)本程序主要有以下幾個功能模塊voidmain()/主函數(shù)voidtongji_cus(hotel_lv*L)/人數(shù)函數(shù)voidcx_customer(hotel_lv*L)/函數(shù)cus

2、*Delete(hotel_lv*L)/voidinput(hotel_lv*L)/voidPr_divide(cus*p,fangjian*q)/函數(shù)voidInit(hotel_lv*L)/typedefstructcustomer/義typedefstructhotel_lv/義typedefstructfangjian/本程序通過主函數(shù)調(diào)用voidmain()主函數(shù),主函數(shù)再調(diào)用其他幾個功能模塊,其中客房數(shù)量通過初始化函數(shù)來實(shí)現(xiàn),輸入客房的數(shù)量和床位的數(shù)量來確定。三.詳細(xì)設(shè)計(jì)程序運(yùn)行流程圖入住流程圖(3)退房業(yè)務(wù)是(4)查詢業(yè)務(wù)fr客人信息查詢1F輸入客人姓名1f遍歷各等級kJ不為空遍

3、歷各房間(5)統(tǒng)計(jì)業(yè)務(wù)統(tǒng)計(jì)當(dāng)前客房入住人遍歷各等11不為空遍歷個房間1不為空f遍歷各床位1不為空f計(jì)數(shù)器conut+打印信息返回主菜單各功能模塊源代碼及詳細(xì)介紹(1) .主菜單Init(L);while(1)/進(jìn)入菜單選項(xiàng)system("cis");printf("nnn");printf("*printf(”*n");printf("*歡迎進(jìn)入賓館客房管理系統(tǒng)*n");printf("*n");printf("*n");printf("*湖北工程學(xué)院計(jì)算機(jī)學(xué)院11

4、17141班胡山權(quán)*、i*|Hprintf("版權(quán)所有,侵權(quán)必究n");printf("1錄入客人信息n");printf("2退房業(yè)務(wù)n");printf("3查詢客人信息n");printf("4統(tǒng)計(jì)客人信息n");printf("0退出系統(tǒng)n");printf("請選擇你要辦理的業(yè)務(wù)n");scanf("%d",&c);/做選擇getchar();switch(c)case1:input(L);break;case2:p=

5、Delete(L);free(p);break;case3:cx_customer(L);break;case4:tongji_cus(L);break;case0:return;(2) 統(tǒng)計(jì)當(dāng)前客人人數(shù)函數(shù)voidtongji_cus(hotel_lv*L)hotel_lv*l;fangjian*f;cus*t;inti=0,j=0;intflag;l=L->next;while(l!=NULL)flag=0;i+;f=l->fj_next;while(f!=NULL)if(f->mem_num=0)f=f->next;elset=f->cus_next;whi

6、le(t!=NULL)flag+;j=j+flag;t=t->next;f=f->next;printf("等級為d的房間的入住人數(shù)為dn",i,flag);l=l->next;if(!j)printf("此時無人入住。n");system("pause");(3) .退房業(yè)務(wù)cus*Delete(hotel_lv*L)cus*p,*q;charc;fangjian*f;intlv,hotel_num,bed_num;hotel_lv*l;l=L->next;n");printf("請輸入該

7、退房客人的房間等級號碼:scanf("%d",&lv);getchar();while(l!=NULL)f->mem_num-;printf("退房成功!n");system("pause");return(q);elsereturnNULL;if(q=NULL)/如果該房間內(nèi)床位為空printf("沒有找到該床位,請核對信息后重新輸入。n");if(f=NULL)/如果該等級的房間為空printf("沒有找到該房間號,請從新輸入。n");if(l=NULL)/如果等級鏈表為空pr

8、intf("沒有找到該房間等級,請核對后輸入!n");system("pause");查詢客人信息voidcx_customer(hotel_lv*L)chars15;hotel_lv*l;fangjian*f;cus*t;intflag=0;intflag=0;/設(shè)置標(biāo)志量printf("請輸入要查詢的客人姓名:n");scanf("%s",s);/輸入要查詢的客人姓名等級不為空時,走房間不為空時,走向床若此房間當(dāng)前人數(shù)為0,走getchar();l=L->next;while(l!=NULL)/向房間f=

9、l->fj_next;while(f!=NULL)/位if(f->mem_num=0)/向下一見房f=f->next;elset=f->cus_next;while(t!=NULL)if(!strcmp(t->name,s)/如果找到該客人Pr_divide(t,f);/打印信t=t->next;人,繼續(xù)查找flag+;1elset=t->next;f=f->next;l=l->next;if(!flag)/查找到/指向下一個/標(biāo)量加標(biāo)志量為0,則未printf("沒有找到該客人,請核對再輸入。n");system(&q

10、uot;pause");/基本類似統(tǒng)計(jì)函數(shù)及查詢函數(shù)(5)入住函數(shù)判斷是否客滿);等級不為空voidinput(hotel_lv*L)charc;inti,lv;fangjian*p1;cus*s,*p2,*p3;hotel_lv*l;l=L->next;if(full(L)/printf("房間已滿,不能入住。n");system("pause");elseprintf("請輸入旅客所需的房間等級:scanf("%d",&lv);while(l!=NULL)/時if(l->lv_num!=lv

11、)l=l->next;else/有此等級時p1=l->fj_next;while(p1!=NULL)/房間不為空if(p1->mem_num=p1->max)/是否有空床位p1=p1->next;if(p1=NULL)getchar();printf("此等級為d的所有房間均無空位n是否愿意更好等級y/n",lv);scanf("%c",&c);/選擇if(c='y')input(L);elsereturn;elseelse/客人信息登記/因?yàn)榇参粵]有設(shè)置頭結(jié)點(diǎn),所以對于第一個結(jié)點(diǎn)要特別判斷if(p1

12、->mem_num=0)s=(cus*)malloc(sizeof(cus);printf("nn");printf("n入住客人信息:");printf("n請輸入客人的姓名:");scanf("%s",s->name);printf("n請輸入客人年齡:");scanf("%d",&(s->age);printf("n請輸入客人的性別(如:男1;女0):");scanf("%d",&(s->s

13、ex);printf("n請輸入客人入住的時間(如:19901011):");scanf("%d%d%d",&s->year,&s->month,&s->day);s->lv=lv;/指針修改p1->cus_next=s;p1->mem_num+;p1->mem_num+;/房間當(dāng)前最大人數(shù)加1置為空房間分配表人數(shù)加1置為空房間分配表s->bed_num=1;s->next=NULL;/Pr_divide(s,p1);/system("cls");break

14、;elsep2=p1->cus_next;p3=p2;i=1;while(i<=p1->mem_num)if(i=p3->bed_num)p3=p3->next;i+;尾指針設(shè)打印尾指針設(shè)打印elsei+;break;if(p3=NULL)s=(cus*)malloc(sizeof(cus);printf("nn");printf("n入住客人信息:");printf("n請輸入客人的姓名:");scanf("%s",s->name);printf("n請輸入客人年齡:

15、");scanf("%d",&(s->age);printf("n請輸入客人的性別(如:男1;女0):");scanf("%d",&(s->sex);printf("n請輸入客人入住的時間(如:19901011):");scanf("%d%d%d",&s->year,&s->month,&s->day);s->lv=lv;while(p2->next!=p3)p2=p2->next;p2->n

16、ext=s;p1->mem_num+;s->bed_num=i;s->next=NULL;Pr_divide(s,p1);system("cls");break;elsewhile(p2->bed_num=i)p2=p2->next;s=(cus*)malloc(sizeof(cus);printf("nn");printf("n入住客人信息:");printfscanf("%s",s->name);printf("n請輸入客人年齡:");scanf(&quo

17、t;%d",&(s->age);("n請輸入客人的性別(如:男1;女0):")1scanf("%d",&(s->sex);printf("n請輸入客人入住的時間(如:19901011):");scanf("%d%d%d",&s->year,&s->month,&s->day);s->lv=lv;s->next=p2->next;p2->next=s;p1->mem_num+;s->bed_num=i-

18、1;Pr_divide(s,p1);system("cls");break;break;(6)初始化函數(shù)voidInit(hotel_lv*L)inti,j,k,l;hotel_lv*p,*q;fangjian*p1,*p2,*p3;printf("請輸入房間分為幾個等級:n");輸入房間分為幾個scanf("%d",&j);/等級q=L;for(i=1;i<j;i+)p=(hotel_lv*)malloc(sizeof(hotel_lv);q->next=p;等級賦值printf("請輸入房間等級為d的

19、房間個數(shù):n",p->lv_num);scanf("%d",&l);/輸入該等級房間的數(shù)目if(l=0)continue;else/初始化該房間的床位p2=(fangjian*)malloc(sizeof(fangjian);p2->fj_num=1;printf("請輸入房間等級為%d房間號為l的床位個數(shù)的最大值:n",p->lv_num,k);scanf("%d",&(p2->max);/輸入房間l的床位數(shù)目p2->mem_num=0;/該房間內(nèi)當(dāng)前人數(shù)賦值為0p->f

20、j_next=p2;p3=p2;for(k=2;k<=1;k+)p1=(fangjian*)malloc(sizeof(fangjian);p3->next=p1;p1->fj_num=k;printf("請輸入房間等級為%c房間號為d勺床位的個數(shù)的最大值;數(shù)的最大值;n",p->lv_num,k);scanf("%d",&(p1->max);/輸入房間K的床位數(shù)目p1->mem_num=0;/該房間內(nèi)的當(dāng)前人數(shù)賦值為0p3=p1;p3->next=NULL;/房間鏈表尾指針為空q=q->next;

21、q=q->next;q->next=NULL;q->next=NULL;/等級鏈表尾指針域?yàn)榭誷ystem("pause");(7)打印客人信息voidPr_divide(cus*p,fangjian*q)printf("*nn");printf("賓館房間分配系統(tǒng)nn");printf("*nn");printf("|姓名|性別|年齡|等級號|房間號|床位號|入住時間|n");printf("|%6s|%d|%2d|%2d|%2d|%2d|%4d-%2d-%2d|n

22、",p->name,p->sex,p->age,p->lv,q->fj_num,p->bed_num,p->year,p->month,p->day);printf("*n");printf("n");system("pause");四.程序截圖說明(1)程序主菜單:馥迎進(jìn)入賓館客房管理系統(tǒng)B'C:UsersnnacheDesktc叭程序番矚管窿葢統(tǒng)啟畑"版權(quán)所有,慢權(quán)必究請選擇你姜辦理的業(yè)務(wù)人侶息務(wù)3查詢客人信息自(2)錄入客人信息(3)查詢客人信息W

23、AW八n>I夂|八U1書入各人信息3狼房業(yè)務(wù)4信息0很屮萃紳3爲(wèi)辦理的業(yè)務(wù)器領(lǐng)入要查詢的客人姓名:胡山權(quán)薛齋券轉(zhuǎn)禪希薛褲豪玄齋暫低淸遵齋菱豪iWiSWiC卿驀if豪黑豪薛薛黑豪耒齋阿倩育聲算豪鼻齋|倩育低齋豪薛齋!酬豪希薛卿醫(yī)低希離宣館房間分配系統(tǒng)!莊電:性別:年齡:等級號:房間號:床位號:入住時間:;胡山權(quán):丄:20i1!1!1:190-10-11!M:3ff奠M沖>;杜耳JCH耳其拭其腳蔓冀>C><lt真M>C>C:M其真jf其其耗施其冥MjffKIBXlf再噸冀夢耳:K其><再腌M耳耳期其M><>;其具:M”1<

24、;:|«>«其翼噸冀請按任鳶鍵-.(4)統(tǒng)計(jì)業(yè)務(wù)rCAUser5macheDe5ktopSjDtbugmW>.exe"歡迎進(jìn)入賓館客房管理系統(tǒng)歡迎進(jìn)入賓館客房管理系統(tǒng)*更理址人兵謂各厲官理系鞏»范W版權(quán)所有,侵權(quán)必究也*皿*«湖北工程學(xué)院計(jì)算機(jī)學(xué)院1117141班胡山權(quán)huxkh缽信鼠3g«Al0蘇瀘請選擇你要辦理的業(yè)務(wù)%的房矍轡騎%的房矍轡騎(5)退房業(yè)務(wù)系統(tǒng):鑼紗息3姓矍杏與退房人的信總相同?【如年齡入住時囘2國1990-5-G評成功!,意健纟蠟-*湖北工*薛院廿算機(jī)學(xué)院1117141班胡陋冥皿版權(quán)所有*侵權(quán)必究4&a

25、mp;請囲爭你要辦理的業(yè)務(wù)備輸入該退房客人的房間等級號碼備輸入退房客人的房間號碼:1請輸入該客人的床位號,此等級、此房間、此庫位的客人信息劃咬客只的闢為五.分析總結(jié):1出現(xiàn)問題及解決辦法:剛開始,我想賓館管理系統(tǒng)的算法和學(xué)生宿舍管理系統(tǒng)一樣,所以開始,我定義的結(jié)構(gòu)體數(shù)組,進(jìn)行編寫。可是在初始化的時候因?yàn)橘e館和宿舍的情況不一樣,而且數(shù)組大小也不能用變量來指示,所以在用數(shù)組進(jìn)行初始化的時候遇到了麻煩,有想到,如果用鏈表來編寫的話,不用定義鏈表的長度,所以改用鏈表來編寫。在客人入住的情況中,開始沒有設(shè)置頭結(jié)點(diǎn),寫到后面覺得不對勁,因?yàn)橛泻枚嗲闆r要進(jìn)行考慮,(如:判斷是否客滿,是否需要的等級有空位等)

26、,所以又加入頭結(jié)點(diǎn)。在床頭分配的時候,因?yàn)闆]有設(shè)置床頭的頭結(jié)點(diǎn),所以要對第一個床位進(jìn)行特別判斷。然后進(jìn)行多次修改,最終實(shí)現(xiàn)客人的入住。退房更入住時候一樣,需要考慮很多情況,在床位回收的時候,還是因?yàn)闆]有設(shè)置頭結(jié)點(diǎn),所以要對第一個床位進(jìn)行特別判斷,還有就是一開始我把那個輸入退房人的房間號和床位號的語句放在的循環(huán)體內(nèi),出現(xiàn)了一次循環(huán)要輸入一次,后來經(jīng)過調(diào)試發(fā)現(xiàn)了問題,移出來虹歐解決了這個問題。最后進(jìn)行住函數(shù)的界面編寫,查詢操作比較簡單,沒有出現(xiàn)什么問題,由于自己不會文件的保存及讀取函數(shù)的編寫,所以沒有采取文件的存儲及讀取。2.方法優(yōu)缺點(diǎn)分析:能夠很好的實(shí)現(xiàn)入住,查詢,統(tǒng)計(jì),退房等功能,但是不能實(shí)現(xiàn)

27、文件的保存及讀取。六致謝:轉(zhuǎn)眼間,八周的課程設(shè)計(jì)結(jié)束了,感謝老師為我們提供的每周數(shù)次的到機(jī)房上機(jī)調(diào)試的機(jī)會,在那里,老師將為我們解決各種難題,同學(xué)之間也可以相互討論,這才有了今天的成果,特別是老師的寶貴的意見,給了我很大的啟示,同時也要感謝那些給予過我?guī)椭耐瑢W(xué)們。七源程序代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>typedefstructcustomer/charname15;intage;intsex;intlv;intbed_num;in

28、tyear;intmonth;intday;structcustomer*next;cus;typedefstructhotel_lv/客人結(jié)構(gòu)體客人結(jié)構(gòu)體賓館結(jié)構(gòu)體intlv_num;structhotel_lv*next;structfangjian*fj_next;hotel_lv;typedefstructfangjian/房間結(jié)構(gòu)體intfj_num;intmax;intmem_num;structfangjian*next;structcustomer*cus_next;fangjian;voidInit(hotel_lv*L)/初始化函數(shù)inti,j,k,l;hotel_lv*p

29、,*q;fangjian*p1,*p2,*p3;printf("請輸入房間分為幾個等級:n");scanf("%d",&j);/輸入房間分為幾個等級q=L;for(i=1;i<j;i+)p=(hotel_lv*)malloc(sizeof(hotel_lv);q->next=p;p->lv_num=i;/給房間等級賦值printf("請輸入房間等級為小的房間個數(shù):n",p->lv_num);scanf("%d",&l);/輸入該等級房間的數(shù)目if(l=0)continue;e

30、lse/初始化該房間的床位p2=(fangjian*)malloc(sizeof(fangjian);p2->fj_num=1;printf("請輸入房間等級為%d房間號為l的床位個數(shù)的最大值:n",p->lv_num,k);scanf("%d",&(p2->max);/輸入房間l的床位數(shù)目p2->mem_num=0;/該房間內(nèi)當(dāng)前人數(shù)賦值為0p->fj_next=p2;p3=p2;for(k=2;k<=1;k+)p1=(fangjian*)malloc(sizeof(fangjian);p3->next

31、=p1;p1->fj_num=k;printf("請輸入房間等級為%d>間號為d的床位的個數(shù)的最大值;n”,p->lv_num,k);scanf("%d",&(p1->max);/輸入房間K的床位數(shù)目p1->mem_num=0;/該房間內(nèi)的當(dāng)前人數(shù)賦值為0p3=p1;p3->next=NULL;/房間鏈表尾指針為空q=q->next;q->next=NULL;/等級鏈表尾指針域?yàn)榭誷ystem("pause");intfull(hotel_lv*L)/判斷是否客滿hotel_lv*l;fa

32、ngjian*f;l=L->next;while(l!=NULL)f=l->fj_next;while(f!=NULL)if(f->mem_num!=f->max)/如果有房間的當(dāng)前人數(shù)不等于房間的最大人數(shù),則返回0return0;elsef=f->next;l=l->next;則返回1if(!l)/elsereturn1;return0;voidPr_divide(cus*p,fangjian*q)/打印客人信息printf("*賓館房賓館房*間分配系統(tǒng)printf("nn");printf("*nn");

33、printf("|姓名|性別|年齡|等級號|房間號|床位號|入住時間|n");入住函數(shù)/printf("|%6s|%d|%2d|%2d|%2d|%2d|%4d-%2d-%2d|n",p->name,p->sex,p->age,p->lv,q->fj_num,p->bed_num,p->year,p->month,p->day);printf("*n");printf("n");system("pause");voidinput(hotel_l

34、v*L)/charc;inti,lv;fangjian*p1;cus*s,*p2,*p3;hotel_lv*l;l=L->next;if(full(L)判斷是否客滿););/等級不為空時/有此等級時printf("房間已滿,不能入住。n");system("pause");elseprintf("請輸入旅客所需的房間等級:scanf("%d",&lv);while(l!=NULL)if(l->lv_num!=lv)l=l->next;elsep1=l->fj_next;/房間不為空if(p1-

35、>mem_num=p1->max)while(p1!=NULL)/是否有空床位/是否有空床位p1=p1->next;if(p1=NULL)getchar();printf("此等級為%d的所有房間均無空位n是否愿意更好等級y/n",lv);scanf("%c",&c);/選擇if(c='y')input(L);elsereturn;else/客人信息登記/因?yàn)榇参粵]有設(shè)置頭結(jié)點(diǎn),所以對于第一個結(jié)點(diǎn)要特別判斷if(p1->mem_num=0)s=(cus*)malloc(sizeof(cus);printf(

36、"nn");printf("n入住客人信息:");printf("n請輸入客人的姓名:");scanf("%s",s->name);printf("n請輸入客人年齡:");scanf("%d",&(s->age);printf("n請輸入客人的性別(如:男1;女0):");scanf("%d",&(s->sex);printf("n請輸入客人入住的時間(如:19901011):");

37、scanf("%d%d%d",&s->year,&s->month,&s->day);s->lv=lv;/指針修改p1->cus_next=s;p1->mem_num+;/房間當(dāng)前最大人數(shù)加1s->bed_num=1;s->next=NULL;/尾指針設(shè)置為空Pr_divide(s,p1);/打印房間分配表system("cls");break;elsep2=p1->cus_next;p3=p2;i=1;while(i<=p1->mem_num)if(i=p3-&g

38、t;bed_num)p3=p3->next;i+;elsei+;break;if(p3=NULL)s=(cus*)malloc(sizeof(cus);n");n");printf("nprintf("n入住客人信息:");printf("n輸入客人的姓名:");scanf("%s",s->name);printf("n請輸入客人年齡:");scanf("%d",&(s->age);printf("n請輸入客人的性別(如:男1;女

39、0):");scanf("%d",&(s->sex);printf("n請輸入客人入住的時間(如:19901011):");scanf("%d%d%d",&s->year,&s->month,&s->day);s->lv=lv;while(p2->next!=p3)p2=p2->next;p2->next=s;p1->mem_num+;s->bed_num=i;s->next=NULL;Pr_divide(s,p1);syste

40、m("cls");break;elseprintf("nwhile(p2->bed_num=i)p2=p2->next;s=(cus*)malloc(sizeof(cus);n");printf("n入住客人信息:");printf("n輸入客人的姓名:");printf("n請("%s",s->name);scanf請輸入客人年齡:");scanf("%d",&(s->age);printf("n輸入客人的性別(如:男1;女0):");scanf("%d",&(s->sex);("nprintf請輸入客人入住的時間(如:19901011):");scanf("%d%d%d",&am

溫馨提示

  • 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

提交評論