大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)賓館客房管理系統(tǒng)
《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)賓館客房管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)賓館客房管理系統(tǒng)(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、word 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 實(shí)驗(yàn)名稱 : 賓館訂房和退房系統(tǒng) 姓 名 : 胡山權(quán) 學(xué) 號(hào) : 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ù) 3〕實(shí)現(xiàn)統(tǒng)計(jì)業(yè)務(wù) 4〕實(shí)現(xiàn)查詢業(yè)務(wù) 二.概要設(shè)計(jì) 本程序主要有以下幾個(gè)功能模塊 void main () //主函數(shù) void tongji_cus (hotel_lv *
2、L) //統(tǒng)計(jì)當(dāng)前客人人數(shù)函數(shù) void cx_customer (hotel_lv *L) //查詢客人信息函數(shù) cus* Delete (hotel_lv *L) //退房函數(shù) void input (hotel_lv *L) //訂房函數(shù) void Pr_divide(cus *p,fangjian *q) //打印客人信息函數(shù) void Init(hotel_lv *L) //初始化函數(shù) typedef st
3、ruct customer //客人結(jié)構(gòu)體定義 typedef struct hotel_lv //賓館結(jié)構(gòu)體定義 typedef struct fangjian //房間結(jié)構(gòu)體定義 本程序通過(guò)主函數(shù)調(diào)用void main ()主函數(shù),主函數(shù)再調(diào)用其他幾個(gè)功能模塊,其中客房數(shù)量通過(guò)初始化函數(shù)來(lái)實(shí)現(xiàn),輸入客房的數(shù)量和床位的數(shù)量來(lái)確定。 三.詳細(xì)設(shè)計(jì) 賓館客房初始化 Main 錄入客人信息 查詢客人信息 統(tǒng)計(jì)入住情況 退出系
4、 統(tǒng) 查詢?nèi)胱∏闆r 某某 是 入住流程 是否客滿 是 不能入住 否 輸入所需等級(jí) 是否有床位 否 打印客人信息 年齡 性別 入住時(shí)間 分配房間成功 返回主菜單 〔3〕退房業(yè)務(wù) 某某 是 否 是 退房業(yè)務(wù) 輸入要退房的房間等級(jí) 是否有該等級(jí) 否 是否是 輸入房間號(hào) 是否有該房間號(hào) 否 輸入床位號(hào) 是否有該床位號(hào) 否 打印客人信息 年齡 性別 入住時(shí)間 是否退房 返回主菜單 退房成功 〔4〕查詢業(yè)務(wù) 不為空 不為空 不為空 客人信息查詢 輸入客人某某 遍歷各等級(jí) 遍歷各房
5、間 遍歷各床位 不為空 遍歷各床位 是否有該客人 返回主菜單 某某 性別 年齡 入住時(shí)間 〔5〕 統(tǒng)計(jì)業(yè)務(wù) 不為空 不為空 不為空 統(tǒng)計(jì)當(dāng)前客房入住人數(shù) 遍歷各等級(jí) 遍歷個(gè)房間 遍歷各床位 計(jì)數(shù)器conut++ 打印信息 返回主菜單 (1) .主菜單 Init (L); while (1) //進(jìn)入菜單項(xiàng)選擇項(xiàng) { system ("cls"); printf ("\n\n\n"); printf ("****************************
6、********************************\n"); printf("* *\n"); printf ("* 歡迎進(jìn)入賓館客房管理系統(tǒng) *\n"); printf("* *\n"); printf ("****************************************************
7、****\n"); printf ("******工程學(xué)院 計(jì)算機(jī)學(xué)院 1117141班 胡山權(quán)*********\n\n"); printf ("------------------------------------------所有,侵權(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"); pri
8、ntf (" 請(qǐng)選擇你要辦理的業(yè)務(wù) \n"); scanf ("%d",&c); // 做選擇 getchar (); switch (c) { case 1: input (L); break; case 2: p=Delete (L);free (p); break; case 3: cx_customer (L); break; case 4: tongji_cus (L); break; case 0: return; } (2) 統(tǒng)計(jì)當(dāng)前客人人數(shù)函數(shù)
9、void tongji_cus (hotel_lv *L) { hotel_lv *l; fangjian *f; cus *t; int i=0,j=0; int flag; l=L->next; while (l!=NULL) { flag=0; i++; f=l->fj_next; while (f!=NULL) { if (f->mem_num==0) f=f->next; else { t=f->cus_next; while (t!=NULL) { flag++; j=j+flag; t=t->next; }
10、 f=f->next; } } printf ("等級(jí)為%d的房間的入住人數(shù)為%d\n",i,flag); l=l->next; } if (!j) printf ("此時(shí)無(wú)人入住。\n"); system ("pause"); } (3).退房業(yè)務(wù) cus* Delete (hotel_lv *L) { cus *p,*q;char c; fangjian *f; int lv,hotel_num,bed_num; hotel_lv *l; l=L->next; printf ("請(qǐng)輸入該退房客人的房間等
11、級(jí):\n"); scanf ("%d",&lv); getchar (); while (l!=NULL) { . . . . . { f->mem_num--; printf ("退房成功!\n"); system ("pause"); return (q); } else return NULL; } } } if (q=NULL) //如果該房間床位為空 { printf ("沒有找到該床位,請(qǐng)核對(duì)信息后重新輸入。\n");
12、} } } if (f==NULL) //如果該等級(jí)的房間為空 { printf ("沒有找到該房間號(hào),請(qǐng)從新輸入。\n"); } } } if (l==NULL) //如果等級(jí)鏈表為空 { printf ("沒有找到該房間等級(jí),請(qǐng)核對(duì)后輸入!\n"); } system ("pause"); } (4) 查詢客人信息 void cx_customer (hotel_lv *L) { char s[15]; hotel_lv *l; fang
13、jian *f; cus *t; int flag=0; //設(shè)置標(biāo)志量 printf ("請(qǐng)輸入要查詢的客人:\n"); scanf ("%s",s); //輸入要查詢的客人 getchar (); l=L->next; while (l!=NULL) //等級(jí)不為空時(shí),走向房間 { f=l->fj_next; while (f!=NULL) //房間不為空時(shí),走向床
14、位 { if (f->mem_num==0) //假設(shè)此房間當(dāng)前人數(shù)為0,走向下一見房 f=f->next; else { t=f->cus_next; while (t!=NULL) { if (!strcmp (t->name,s)) //如果找到該客人 { Pr_divide (t,f); //打印信息 t=t->next; //指向下一個(gè)人,繼續(xù)查找 flag++; //標(biāo)量加1 } else t=t->nex
15、t; } f=f->next; } } l=l->next; } if (!flag) //標(biāo)志量為0,如此未查找到 { printf ("沒有找到該客人,請(qǐng)核對(duì)再輸入。\n"); system ("pause"); } } //統(tǒng)計(jì)函數(shù)與查詢函數(shù)根本類似 (5) 入住函數(shù) void input (hotel_lv *L) { char c; int i,lv; fangjian *p1;
16、cus *s,*p2,*p3; hotel_lv *l; l=L->next; if (full (L)) //判斷是否客滿 { printf ("房間已滿,不能入住。\n"); system ("pause"); } else { printf ("請(qǐng)輸入旅客所需的房間等級(jí):"); scanf ("%d",&lv); while (l!=NULL) //等級(jí)不為空時(shí) { if (l->lv_num!=lv) l=l->next; else
17、 //有此等級(jí)時(shí) { p1=l->fj_next; while (p1!=NULL) //房間不為空 { if (p1->mem_num==p1->max) //是否有空床位 { p1=p1->next; if (p1==NULL) { getchar (); printf ("此等級(jí)為%d的所有房間均無(wú)空位\n是否愿意更好等級(jí)[y/n]",lv); scanf ("%c",&c); //選擇 if (c=='y') input (L); else return; }
18、 } else //客人信息登記 { //因?yàn)榇参粵]有設(shè)置頭結(jié)點(diǎn),所以對(duì)于第一個(gè)結(jié)點(diǎn)要特別判斷 if(p1->mem_num==0) { s=(cus*)malloc(sizeof(cus)); printf ("\n---------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n 請(qǐng)輸入客人的:"); scanf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf
19、 ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n 請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:"); scanf ("%d %d %d",&s->year,&s->month,&s->day); s->lv=lv; //指針修改 p1->cus_next=s; p1->mem_num++; //房間當(dāng)前最大人數(shù)加1 s->bed_num=1
20、; s->next=NULL; //尾指針設(shè)置為空 Pr_divide (s,p1); //打印房間分配表 system ("cls"); break; } else { p2=p1->cus_next; p3=p2; i=1; while (i<=p1->mem_num) { if (i==p3->bed_num) { p3=p3->next; i++; } else { i++; break; } } if (p3==NULL) { s=(cus*)malloc(sizeof(cu
21、s)); printf("\n--------------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n 請(qǐng)輸入客人的:"); scanf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n 請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:
22、"); 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); system("cls"); break; } else { while(p2->bed_num==i) p2=p2->next; s=(cus*)malloc(sizeof(cus)); printf("\n-------
23、-------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n 請(qǐng)輸入客人的:"); scanf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n 請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:"); scanf ("%d
24、%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-1; Pr_divide(s,p1); system("cls"); break; } } } } break; } } } } (6) 初始化函數(shù) void Init(hotel_lv *L) { int i,j,k,l; hotel_lv *p,*q; fangjian *p1,
25、*p2,*p3;
printf ("請(qǐng)輸入房間分為幾個(gè)等級(jí):\n");
scanf ("%d",&j); //輸入房間分為幾個(gè)等級(jí)
q=L;
for (i=1;i
26、 //輸入該等級(jí)房間的數(shù)目 if (l==0) continue; else //初始化該房間的床位 { p2= (fangjian*)malloc(sizeof(fangjian)); p2->fj_num=1; printf ("請(qǐng)輸入房間等級(jí)為%d房間號(hào)為l的床位個(gè)數(shù)的最大值:\n",p->lv_num,k); scanf ("%d",&(p2->max)); //輸入房間l的床位數(shù)目 p2->mem_num=0; //該
27、房間當(dāng)前人數(shù)賦值為0 p->fj_next=p2; p3=p2; for (k=2;k<=1;k++) { p1=(fangjian*)malloc(sizeof(fangjian)); p3->next=p1; p1->fj_num=k; printf ("請(qǐng)輸入房間等級(jí)為%d房間號(hào)為%d的床位的個(gè)數(shù)的最大值;\n",p->lv_num,k); scanf ("%d",&(p1->max)); //輸入房間K的床位數(shù)目 p1->mem_num=0; //該房間的當(dāng)前人數(shù)賦值為0 p3=p1; } p3->next=NULL
28、; //房間鏈表尾指針為空 } q=q->next; } q->next=NULL; //等級(jí)鏈表尾指針域?yàn)榭? system ("pause"); } (7) 打印客人信息 void Pr_divide(cus *p,fangjian *q) { printf ("*************************************************************\n\n"); printf (
29、" 賓館房間分配系統(tǒng) \n\n"); printf ("*************************************************************\n\n"); printf ("| | 性別 | 年齡 | 等級(jí)號(hào) | 房間號(hào) | 床位號(hào) | 入住時(shí)間 |\n"); printf ("| %6s | %d | %2d | %2d | %2d | %2d | %4d-%2d-%2d | \n", p->name,p->sex,
30、p->age,p->lv,q->fj_num,p->bed_num,p->year,p->month,p->day); printf ("***************************************************************\n"); printf ("\n"); system ("pause"); } 四.程序截圖說(shuō)明 (1) 程序主菜單: (2) 錄入客人信息 〔3〕查詢客人信息 〔4〕統(tǒng)計(jì)業(yè)務(wù) 〔5〕 退房業(yè)務(wù) 五.分析總結(jié): 1. 出現(xiàn)問(wèn)題與解決方法: 剛開始,我
31、想賓館管理系統(tǒng)的算法和學(xué)生宿舍管理系統(tǒng)一樣,所以開始,我定義的結(jié)構(gòu)體數(shù)組,進(jìn)展編寫??墒窃诔跏蓟臅r(shí)候因?yàn)橘e館和宿舍的情況不一樣,而且數(shù)組大小也不能用變量來(lái)指示,所以在用數(shù)組進(jìn)展初始化的時(shí)候遇到了麻煩,有想到,如果用鏈表來(lái)編寫的話,不用定義鏈表的長(zhǎng)度,所以改用鏈表來(lái)編寫。 在客人入住的情況中,開始沒有設(shè)置頭結(jié)點(diǎn),寫到后面覺得不對(duì)勁,因?yàn)橛泻枚嗲闆r要進(jìn)展考慮,〔如:判斷是否客滿,是否需要的等級(jí)有空位等〕,所以又參加頭結(jié)點(diǎn)。在床頭分配的時(shí)候,因?yàn)闆]有設(shè)置床頭的頭結(jié)點(diǎn),所以要對(duì)第一個(gè)床位進(jìn)展特別判斷。然后進(jìn)展屢次修改,最終實(shí)現(xiàn)客人的入住。 退房更入住時(shí)候一樣,需要考慮很多情況,在床位回收的時(shí)候,
32、還是因?yàn)闆]有設(shè)置頭結(jié)點(diǎn),所以要對(duì)第一個(gè)床位進(jìn)展特別判斷,還有就是一開始我把那個(gè)輸入退房人的房間號(hào)和床位號(hào)的語(yǔ)句放在的循環(huán)體,出現(xiàn)了一次循環(huán)要輸入一次,后來(lái)經(jīng)過(guò)調(diào)試發(fā)現(xiàn)了問(wèn)題,移出來(lái)虹歐解決了這個(gè)問(wèn)題。 最后進(jìn)展住函數(shù)的界面編寫,查詢操作比擬簡(jiǎn)單,沒有出現(xiàn)什么問(wèn)題,由于自己不會(huì)文件的保存與讀取函數(shù)的編寫,所以沒有采取文件的存儲(chǔ)與讀取。 : 能夠很好的實(shí)現(xiàn)入住,查詢,統(tǒng)計(jì),退房等功能,但是不能實(shí)現(xiàn)文件的保存與讀取。 六.致: 轉(zhuǎn)眼間,八周的課程設(shè)計(jì)完畢了,感教師為我們提供的每周數(shù)次的到機(jī)房上機(jī)調(diào)試的機(jī)會(huì),在那里,教師將為我們解決各種難題,同學(xué)之間也可以相互討論,這才有了今天的成果,特別是
33、教師的寶貴的意見,給了我很大的啟示,同時(shí)也要感那些給予過(guò)我?guī)椭耐瑢W(xué)們。
七.源程序代碼
#include
34、next; }cus; typedef struct hotel_lv //賓館結(jié)構(gòu)體 { int lv_num; struct hotel_lv *next; struct fangjian *fj_next; }hotel_lv; typedef struct fangjian //房間結(jié)構(gòu)體 { int fj_num; int max; int mem_num; struct fangjian *next; struct customer *cus_n
35、ext;
}fangjian;
void Init(hotel_lv *L) //初始化函數(shù)
{
int i,j,k,l;
hotel_lv *p,*q;
fangjian *p1, *p2,*p3;
printf ("請(qǐng)輸入房間分為幾個(gè)等級(jí):\n");
scanf ("%d",&j); //輸入房間分為幾個(gè)等級(jí)
q=L;
for (i=1;i
36、m=i; //給房間等級(jí)賦值 printf ("請(qǐng)輸入房間等級(jí)為%d的房間個(gè)數(shù):\n",p->lv_num); scanf ("%d",&l); //輸入該等級(jí)房間的數(shù)目 if (l==0) continue; else //初始化該房間的床位 { p2= (fangjian*)malloc(sizeof(fangjian)); p2->fj_num=1; printf ("請(qǐng)輸入房
37、間等級(jí)為%d房間號(hào)為l的床位個(gè)數(shù)的最大值:\n",p->lv_num,k); scanf ("%d",&(p2->max)); //輸入房間l的床位數(shù)目 p2->mem_num=0; //該房間當(dāng)前人數(shù)賦值為0 p->fj_next=p2; p3=p2; for (k=2;k<=1;k++) { p1=(fangjian*)malloc(sizeof(fangjian)); p3->next=p1; p1->fj_num=k; printf ("請(qǐng)輸入房間等級(jí)為%d房間號(hào)為%d的床位的個(gè)數(shù)的最大值;\n",
38、p->lv_num,k); scanf ("%d",&(p1->max)); //輸入房間K的床位數(shù)目 p1->mem_num=0; //該房間的當(dāng)前人數(shù)賦值為0 p3=p1; } p3->next=NULL; //房間鏈表尾指針為空 } q=q->next; } q->next=NULL; //等級(jí)鏈表尾指針域?yàn)榭? system ("pause"); } int full (hote
39、l_lv *L) //判斷是否客滿 { hotel_lv *l;fangjian *f; l=L->next; while (l!=NULL) { f=l->fj_next; while (f!=NULL) { if (f->mem_num!=f->max) //如果有房間的當(dāng)前人數(shù)不等于房間的最大人數(shù),如此返回0 return 0; else f=f->next; } l=l->next; } if (!l) //否如此返回1 return
40、1; else return 0; } void Pr_divide(cus *p,fangjian *q) //打印客人信息 { printf ("********************************************************************\n\n"); printf (" 賓館房間分配系統(tǒng) \n\n"); printf ("*********************************
41、***********************************\n\n"); printf ("| | 性別 | 年齡 | 等級(jí)號(hào) | 房間號(hào) | 床位號(hào) | 入住時(shí)間 |\n"); 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 ("***************************
42、******************************************\n"); printf ("\n"); system ("pause"); } void input (hotel_lv *L) //入住函數(shù) { char c; int i,lv; fangjian *p1; cus *s,*p2,*p3; hotel_lv *l; l=L->next; if (full (L)) //判斷是否客滿 { printf ("房間已滿,不能入住。\n"); sy
43、stem ("pause"); } else { printf ("請(qǐng)輸入旅客所需的房間等級(jí):"); scanf ("%d",&lv); while (l!=NULL) //等級(jí)不為空時(shí) { if (l->lv_num!=lv) l=l->next; else //有此等級(jí)時(shí) { p1=l->fj_next; while (p1!=NULL) //房間不為空 { if (p1->mem_num==p1->max) /
44、/是否有空床位 { p1=p1->next; if (p1==NULL) { getchar (); printf ("此等級(jí)為%d的所有房間均無(wú)空位\n是否愿意更好等級(jí)[y/n]",lv); scanf ("%c",&c); //選擇 if (c=='y') input (L); else return; } } else //客人信息登記 { //因?yàn)榇参粵]有設(shè)置頭結(jié)點(diǎn),所以對(duì)于第一個(gè)結(jié)點(diǎn)要特別判斷 if(p1->mem_num==0) { s=
45、(cus*)malloc(sizeof(cus)); printf ("\n---------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n 請(qǐng)輸入客人的:"); scanf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n
46、請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:"); scanf ("%d %d %d",&s->year,&s->month,&s->day); s->lv=lv; //指針修改 p1->cus_next=s; p1->mem_num++; //房間當(dāng)前最大人數(shù)加1 s->bed_num=1; s->next=NULL; //尾指針設(shè)置為空 Pr_divide (s,p1); //打印房間分配表 system ("cls"); brea
47、k; } else { p2=p1->cus_next; p3=p2; i=1; while (i<=p1->mem_num) { if (i==p3->bed_num) { p3=p3->next; i++; } else { i++; break; } } if (p3==NULL) { s=(cus*)malloc(sizeof(cus)); printf("\n--------------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n
48、 請(qǐng)輸入客人的:"); scanf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n 請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:"); scanf ("%d %d %d",&s->year,&s->month,&s->day); s->lv=lv; while (p2->next!=p3) p2=p2->next;
49、 p2->next=s; p1->mem_num++; s->bed_num=i; s->next=NULL; Pr_divide (s,p1); system("cls"); break; } else { while(p2->bed_num==i) p2=p2->next; s=(cus*)malloc(sizeof(cus)); printf("\n--------------------------------------\n"); printf ("\n 入住客人信息:"); printf("\n 請(qǐng)輸入客人的:"); sca
50、nf ("%s",s->name); printf("\n 請(qǐng)輸入客人年齡:"); scanf ("%d",&(s->age)); printf ("\n 請(qǐng)輸入客人的性別〔如:男1;女0〕:"); scanf ("%d",&(s->sex)); printf ("\n 請(qǐng)輸入客人入住的時(shí)間〔如:1990 10 11〕:"); scanf ("%d %d %d",&s->year,&s->month,&s->day); s->lv=lv; s->next=p2->next; p2->next=s; p1->mem_num++; s->
51、bed_num=i-1; Pr_divide(s,p1); system("cls"); break; } } } } break; } } } } cus* Delete (hotel_lv *L) //退房 { cus *p,*q;char c; fangjian *f; int lv,hotel_num,bed_num; hotel_lv *l; l=L->next; printf ("請(qǐng)輸入該退房客人的房間等級(jí):\n"); scanf ("%d",&lv);
52、 //輸入退房人的房間等級(jí) getchar (); while (l!=NULL) { if (l->lv_num!=lv) l=l->next; else //找到該等級(jí) { f=l->fj_next; printf("請(qǐng)輸入退房客人的房間:\n"); scanf ("%d",&hotel_num); //輸入退房人的房間 getchar (); while (f!=NULL) { if (f->fj_num!=hotel_num) f=f->next; el
53、se //找到該房間 { p=f->cus_next; q=f->cus_next; printf("請(qǐng)輸入該客人的床位號(hào):\n"); scanf ("%d",&bed_num); //輸入退放入的床位號(hào) getchar (); while (q!=NULL) { if (q->bed_num!=bed_num) q=q->next; else //查找該床位 { if (bed_num==1) //因?yàn)榇参粵]有
54、設(shè)置頭結(jié)點(diǎn),所以對(duì)第一個(gè)結(jié)點(diǎn)要特別判斷 { //直接打印客人信息 printf ("此等級(jí)、此房間、此床位的客人信息為:\n"); printf ("改客人的信息為:\n"); printf ("\t性別\t年齡\t入住時(shí)間\n"); printf ("%s\t%d\t%d\t%d-%d-%d\n",q->name,q->sex,q->age,q->year,q->month,q->day); printf ("是否與退房人的信息一樣?[y/n]\n"); scanf ("%c",&c); if (c=='y')
55、 //做出是否退房的選擇 { f->mem_num--; printf ("退房成功!\n"); system ("pause"); return (q); } else return NULL; } else //如果床位不為1 { while (p->next!=q) //指向下一床位 p=p->next; //打印客人信息 printf ("此等級(jí)、此房間、此床位的客人信息為:\n"); printf ("改客人的信息
56、為:\n"); printf ("\t性別\t年齡\t入住時(shí)間\n"); printf ("%s\t%d\t%d\t%d-%d-%d\n",q->name,q->sex,q->age,q->year,q->month,q->day); printf ("是否與退房人的信息一樣?[y/n]\n"); scanf ("%c",&c); if (c=='y') //做出是否退房的選擇 { f->mem_num--; printf ("退房成功!\n"); system ("pause"); return (q); } else return
57、 NULL; } } } if (q=NULL) //如果該房間床位為空 { printf ("沒有找到該床位,請(qǐng)核對(duì)信息后重新輸入。\n"); } } } if (f==NULL) //如果該等級(jí)的房間為空 { printf ("沒有找到該房間號(hào),請(qǐng)從新輸入。\n"); } } } if (l==NULL) //如果等級(jí)鏈表為空 { printf ("沒有找到該房間等級(jí),請(qǐng)核對(duì)后輸入!\n
58、"); } system ("pause"); } void cx_customer (hotel_lv *L) //查詢客人信息 { char s[15]; hotel_lv *l; fangjian *f; cus *t; int flag=0; //設(shè)置標(biāo)志量 printf ("請(qǐng)輸入要查詢的客人:\n"); scanf ("%s",s); //輸入要查詢的客人 getchar (); l=L->ne
59、xt; while (l!=NULL) //等級(jí)不為空時(shí),走向房間 { f=l->fj_next; while (f!=NULL) //房間不為空時(shí),走向床位 { if (f->mem_num==0) //假設(shè)此房間當(dāng)前人數(shù)為0,走向下一見房 f=f->next; else { t=f->cus_next; while (t!=NULL) { if (!strcmp (t->name,s)) //如果找到該客人 { Pr_divide (t,f);
60、 //打印信息 t=t->next; //指向下一個(gè)人,繼續(xù)查找 flag++; //標(biāo)量加1 } else t=t->next; } f=f->next; } } l=l->next; } if (!flag) //標(biāo)志量為0,如此未查找到 { printf ("沒有找到該客人,請(qǐng)核對(duì)再輸入。\n"); system ("pause"); } }
61、 //統(tǒng)計(jì)函數(shù)與查詢函數(shù)根本類似 void tongji_cus (hotel_lv *L) //統(tǒng)計(jì)當(dāng)前客人人數(shù)函數(shù) { hotel_lv *l; fangjian *f; cus *t; int i=0,j=0; int flag; l=L->next; while (l!=NULL) { flag=0; i++; f=l->fj_next; while (f!=NULL) { if (f->mem_num==0) f=f->next;
62、else { t=f->cus_next; while (t!=NULL) { flag++; j=j+flag; t=t->next; } f=f->next; } } printf ("等級(jí)為%d的房間的入住人數(shù)為%d\n",i,flag); l=l->next; } if (!j) printf ("此時(shí)無(wú)人入住。\n"); system ("pause"); } void main () //主函數(shù) { hotel_lv *L; cus *p; int
63、 c; L=(hotel_lv *)malloc (sizeof(hotel_lv)); printf ("初始化旅店信息:\n"); Init (L); while (1) //進(jìn)入菜單項(xiàng)選擇項(xiàng) { system ("cls"); printf ("\n\n\n"); printf ("************************************************************\n"); printf ("*
64、 *\n"); printf ("* 歡迎進(jìn)入賓館客房管理系統(tǒng) *\n"); printf ("* *\n"); printf ("************************************************************\n"); printf ("*********工程學(xué)院 計(jì)算機(jī)學(xué)院 1117141班 胡山權(quán)***********\n\n"); printf
65、("------------------------------------------所有,侵權(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 (" 請(qǐng)選擇你要辦理的業(yè)務(wù) \n"); scanf ("%d",&c); // 做選擇 getchar (); switch (c) { case 1: input (L); break; case 2: p=Delete (L);free (p); break; case 3: cx_customer (L); break; case 4: tongji_cus (L); break; case 0: return; } getchar (); } } 30 / 30
- 溫馨提示:
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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版選擇性必修下冊(cè)《孔雀東南飛》課件
- 案例分析PPT模版
- 民生附加醫(yī)樂保醫(yī)療保險(xiǎn)產(chǎn)品主要特色基本形態(tài)投保案例增值服務(wù)介紹課件
- 乳腺癌新輔助化療共識(shí)與進(jìn)展課件
- 2021 2022學(xué)年新教材高中物理第2章勻變速直線運(yùn)動(dòng)的研究4自由落體運(yùn)動(dòng)ppt課件新人教版必修第一冊(cè)
- 《公司金融》資本預(yù)算
- 工程安全與結(jié)構(gòu)健康監(jiān)測(cè)
- 防水閘門制造取費(fèi)、工期、質(zhì)量保證工作匯報(bào)
- 水處理技術(shù)基礎(chǔ)
- 腘窩囊腫綜述中英文對(duì)照-課件
- 平面構(gòu)成基本形
- 奧運(yùn)福娃簡(jiǎn)介
- 課題2元素 (3)
- “相約中秋”流程
- 勞動(dòng)爭(zhēng)議處理課件