1、/统计当前客人人数函数 /查询客人信息函数 /退房函数 /订房函数 /打印客人信息函数 /初始化函数 /客人结构体定义 /宾馆结构体定义/房间结构体定义本程序通过主函数调用 void main ()主函数,主函数再调用其他几个功能模块,其中客 房数量通过初始化函数来实现,输入客房的数量和床位的数量来确定。详细设计1.程序运行流程图宾馆客房初始化Main录入客L人信息查询客 人信息 丿查询入 住情况统计入 住情况退出系 统2入住流程图(3)退房业务是(4)查询业务客人信息查询输入客人姓名遍历各等级不为空遍历各房间(5)统计业务3. 各功能模块源代码及详细介绍主菜单Init (L);while (
2、1)system (cis); printf (nnnprintf/进入菜单选项H*nprin tf(* printf (*欢迎进入宾馆客房管理系统*nprintf ( *printf(printf (* 湖北工程学院 计算机学院1117141班 胡山权*nn 版权所有,XXn 1录入客人信息n 2 退房业务 n 3查询客人信息n 4统计客人信息n scanf (%d,&c); getchar ();switch (c)0 退出系统 n 请选择你要办理的业务 n/ 做选择case 1:case 2:input (L);break;p=Delete (L);free (p);case 3:cas
3、e 4:cx_customer (L); tongji_cus (L);case 0: return;(2) 统计当前客人人数函数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!if (f-mem_num=0) f=f-else t=f-cus_next; while (t! flag+; j=j+flag; t=t- f=f- 等级为 %d 的房间的入住人数为 %dn
4、,i,flag); l=l-if (!j) 此时无人入住。 n system (pause(3) .退房业务cus* Delete (hotel_lv *L) cus *p,*q; char c; int lv,hotel_num,bed_num; hotel_lv *l; l=L- 请输入该退房客人的房间等级号码:lv);getchar (); .f-mem_num-; 退房成功! return (q); else return NULL;/ 如 果 该 房 间 内 床 位 为 空 if (q=NULL) 没有找到该床位,请核对信息后重新输入。if (f=NULL) /如果该等级的房间为空
5、没有找到该房间号,请从新输入。if (l=NULL) /如果等级链表为空 没有找到该房间等级,请核对后输入!(4) 查询客人信息void cx_customer (hotel_lv *L)char s15;hotel_lv *l;fangjian *f;int flag=0; 请输入要查询的客人姓名:scanf (%s,s);/设置标志量n/输入要查询的客人姓名/等级不为空时,走向房间/房间不为空时,走向床位/若此房间当前人数为 0,走向下一见房strcmp (t-name,s) Pr_divide (t,f);t=t-flag+;f=f-l=l-flag)/如果找到该客人/打印信息 /指向下
6、一个人,继续查找/标量加 1 没有找到该客人,请核对再输入 system (/ 标志量为 0,则未查找到/统计函数与查询函数基本类似(5) 入住函数 void input (hotel_lv *L) char c;int i,lv; fangjian *p1;cus *s,*p2,*p3;if (full (L) / 判断是否客满 房间已满,不能入住。 请输入旅客所需的房间等级: =NULL) /等级不为空时if (l-lv_num!=lv)/有此等级时 p1=l- while (p1!=NULL) / 房间不为空if (p1-mem_num=p1-max) /是否有空床位 p1=p1-if
7、(p1=NULL) 此等级为 %d 的所有房间均无空位 n 是否愿意更好等级 y/n,lv);%c /选择if (c=y)return;else /客人信息登记 / 因为床位没有设置头结点, 所以对于第一个结点要特别判断if(p1-mem_num=0)s=(cus*)malloc(sizeof(cus);n nn 入住客人信息:n 请输入客人的姓名:,s-name);n 请输入客人年龄:(s-age);n 请输入客人的性别(如:男 1;女 0):sex);n 请输入客人入住的时间(如: 1990 10 11):%d %d %ds-year,&month,&day);lv=lv; p1-cus_next=s;mem_num+; s-bed_num=1;next=NULL;Pr_divide (s,p1);cls/指针修改/房间当前最大人数加 1/尾指针设置为空/打印房间分配表 p2=p1- p3=p2; i=1; while (imem_num) if (i=p3-bed_num) p3=p3- i+; break;if (p3=NULL) s=(cus*)malloc(sizeof(cus); printf(n 请输入客人入住的时间 (如:1990 10 11):while (p2-next!=p3) p2=p2-p2-next=s;bed_num=i; system(els
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1