数据结构课程设计宾馆客房管理系统Word下载.docx
《数据结构课程设计宾馆客房管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计宾馆客房管理系统Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
//统计当前客人人数函数//查询客人信息函数//退房函数//订房函数//打印客人信息函数//初始化函数//客人结构体定义//宾馆结构体定义
//房间结构体定义
本程序通过主函数调用voidmain()主函数,主函数再调用其他几个功能模块,其中客房数量通过初始化函数来实现,输入客房的数量和床位的数量来确定。
详细设计
1.程序运行流程图
宾馆客房初始化
Main
录入客
L人信息
查询客人信息丿
查询入住情况
统计入住情况
退出系统
2•入住流程图
(3)退房业务
是
(4)查询业务
客人信息查询
输入客人姓名
遍历各等级
不为空
遍历各房间
(5)统计业务
3.各功能模块源代码及详细介绍
⑴主菜单
Init(L);
while
(1)
{
system("
cis"
);
printf("
\n\n\n"
printf
//进入菜单选项
H**********************************************************
**\n"
printf("
*printf("
*
欢迎进入宾馆客房管理系统
*\n"
printf(
\\******************************************************
printf("
printf("
******湖北工程学院计算机学院1117141班胡山权*********\n\n"
版权所有,XX\n"
1录入客人信息\n"
2退房业务\n"
3查询客人信息\n"
4统计客人信息\n"
scanf("
%d"
&
c);
getchar();
switch(c)
0退出系统\n"
请选择你要办理的业务\n"
//做选择
case1:
case2:
input(L);
break;
p=Delete(L);
free(p);
case3:
case4:
cx_customer(L);
tongji_cus(L);
case0:
return;
}
(2)统计当前客人人数函数
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!
if(f->
mem_num==0)f=f->
else
{t=f->
cus_next;
while(t!
{flag++;
j=j+flag;
t=t->
}f=f->
等级为%d的房间的入住人数为%d\n"
i,flag);
l=l->
if(!
j)
此时无人入住。
\n"
system("
pause"
(3).退房业务
cus*Delete(hotel_lv*L)
{cus*p,*q;
charc;
intlv,hotel_num,bed_num;
hotel_lv*l;
l=L->
请输入该退房客人的房间等级号码:
lv);
getchar();
{.
f->
mem_num--;
退房成功!
return(q);
}elsereturnNULL;
//如果该房间内床位为空
}if(q=NULL)
没有找到该床位,请核对信息后重新输入。
if(f==NULL)//如果该等级的房间为空
没有找到该房间号,请从新输入。
if(l==NULL)//如果等级链表为空
没有找到该房间等级,请核对后输入!
(4)查询客人信息
voidcx_customer(hotel_lv*L)
chars[15];
hotel_lv*l;
fangjian*f;
intflag=0;
请输入要查询的客人姓名:
scanf("
%s"
s);
//设置标志量
\n"
//输入要查询的客人姓名
//等级不为空时,走向房间
//房间不为空时,走向床位
//若此房间当前人数为0,走向下一见房
strcmp(t->
name,s)){
Pr_divide(t,f);
t=t->
flag++;
f=f->
l=l->
flag)
//如果找到该客人
//打印信息//指向下一个人,继续查找
//标量加1
没有找到该客人,请核对再输入system("
//标志量为0,则未查找到
//统计函数与查询函数基本类似
(5)入住函数voidinput(hotel_lv*L){
charc;
inti,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(p1==NULL)
此等级为%d的所有房间均无空位\n是否愿意更好等级[y/n]"
lv);
%c"
//选择
if(c=='
y'
)
return;
else//客人信息登记
{//因为床位没有设置头结点,所以对于第一个结点要特别判断
if(p1->
mem_num==0)
s=(cus*)malloc(sizeof(cus));
\n\n"
\n入住客人信息:
\n请输入客人的姓名:
s->
name);
\n请输入客人年龄:
(s->
age));
\n请输入客人的性别(如:
男1;
女0):
"
sex));
\n请输入客人入住的时间(如:
19901011):
%d%d%d"
s->
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(i<
=p1->
mem_num){
if(i==p3->
bed_num)
{p3=p3->
i++;
break;
if(p3==NULL)
{s=(cus*)malloc(sizeof(cus));
printf("
\n请输入客人入住的时间(如:
19901011):
while(p2->
next!
=p3)p2=p2->
p2->
next=s;
bed_num=i;
system("
els