实习报告酒店管理.docx
《实习报告酒店管理.docx》由会员分享,可在线阅读,更多相关《实习报告酒店管理.docx(14页珍藏版)》请在冰豆网上搜索。
实习报告酒店管理
《程序设计》实习报告
一、[实习题目]
设某旅馆有N间房,每间客房的房间号码、房间等级、床位数、以及占用状态分别存放在一维数组ROOM、RANK、NBNK、NBED、STATUS中。
房间的等级值为1、2或3,房间的状态值为0(空闲)或1(占有),客房是以房间(不是以床位)为单位出租的。
编写一个程序,它可能根据几个散客的要求预定一间空房。
设程序的输入为:
人数M、房间的等级要求R(当R为0时表示任何等级都可以),程序的输出为所有可供选择的房间号。
程序的基本处理过程如流程图所示。
可根据几个不同方案来编写出程序。
方案1:
设当前该旅馆各个房间的情况如图6-1所示:
序号
ROOM
RANK
NBED
STATDS
1
101
3
4
0
2
102
3
4
1
3
201
2
3
0
4
202
2
4
1
5
301
1
6
0
6
302
1
2
0
图6-1方案一中各客房状态
程序在输入人数M和房间要求R后,输入可供选择的房间号码。
方案2:
已知有方案1那样的条件,并且已知等级为r的房间每人每天的住宿费为RATE(r);RATE是一个一维数组。
程序在输出每个候选的房间号码RM(j)之后,还要要求输出这批散客每人所付的住宿费DAYRENT(j)。
考虑到旅馆的房间数N可能较大,为此,不必每次预定时都把满足的房间号RM(j)都输出。
设程序要求输入人数M、房间等级要求R、以及希望输出可供选择的房间号码数K(1<=K<=N),程序执行后能输出所要求的结果。
方案3:
程序的已知条件与要求基本同方案1和方案2。
为了是程序能具有较大的适应性,设旅馆的房间数N是一个可供修改的符号常量,而旅馆订房系统的房间初始信息可以由程序员根据旅馆现状初始化(即ROOM、RANK、NBED、STATDS、RATE数组状态可由程序员进行初始化),然后在初始化的基础进行订房工作。
初始化后的工作要求同方案2.
方案4:
在方案3的基础上,增加客户订房的功能(键入可供选择的房号)。
方案5:
在方案3和方案4的基础上,加上退房功能;
方案6:
鼓励同学加入更符合实际应用所需要的功能。
*备注:
该实习报告采用方案5。
二、[解题的基本算法]
(1)该程序必须具有三个功能;查房,订房与退房。
为了方便我们可以把订房功能与退房功能划分开来。
并把查房功能嵌入订房功能与退房功能里面。
首先,在程序开头设置判断,如果输入‘1’就进入订房功能;如果输入‘0’就进入退房功能。
订房功能会根据客人提供的人数M与等级R筛选出适合的房间信息,并以带序号形式罗列出来供客人选择。
客人订房时只需输入相应的序号即可,而不必输入繁杂的房间号码,如果客人只是想查房,而不需要订房时可输入‘0’结束,那样将可以达到查房功能。
而退房功能则会把所有属于“占有状态”的房间信息,并以序号形式罗列出来。
同样客人要退房时输入序号,不需要退房时输入可‘0’结束。
(2)首先设置初始化语句,对一维数组ROOM、RANK、NBNK、NBED、STATUS、RATE、DAYRENT进行初始化。
(3)根据客人提供的人数M与等级R进行筛选的功能,第一;当等级为0时,只需把满足床位NBED(j)>=M的房间信息筛选出来即可。
第二;当等级不为0时,必须要同时满足等级RANK(j)=R与床位NBED(j)>=M的房间才被筛选出来。
如果没有找到匹配的房间,则输出“没有找到符合条件的房间”。
客人订了房的话,就把房信息中的状态值STATUS(j)改为‘1’。
(4)在筛选房间的同时,我们可以插入计算住宿费的程序,并把它储存在DAYRENT的一位数组中。
住宿费的计算:
第一;查询该房间信息中的等级RANK(j)。
第二;根据等级查询出相应等级的费用RATE(j)。
第三;由于住宿费为每床位每天的费用,所以查询该房间的床位数NBED(j),第四;一间房间总的费用即为RATE(j)×NBED(j)。
第五,要求是每人所需付的费用,所以DAYRENT(j)=RATE(j)×NBED(j)÷M。
(5)退房功能;首先把状态值STATUS(j)为‘1’的房间序号形式罗列出来,然后把客人需要退房的相应房间的状态值STATUS(j)改为‘0’。
(6)输出格式;为了更客观的显示数据,我们有必要把房间信息以表格的形式输出来,可以利用制表的转义字符”\t”与限定输出数据字段宽度的输出操纵符setw(intwidth)。
三、[程序流程图]
四、[源程序代码]
#include
#include
#include
voidmain()
{
charch;
constintN=6;
intROOM[N],RANK[N],NBED[N],STATDS[N];
intRATE[3];
for(i=0;i{
Cout<<”initalizetheROOM[N]”;
Cin>>ROOM[i];
}
for(i=0;i{
Cout<<”initalizetheRANK[N]”;
Cin>>RANK[i];
}
for(i=0;i{
Cout<<”initalizetheNBED[N]”;
Cin>>NBED[i];
}
for(i=0;i{
Cout<<”initalizetheSTATDS[N]”;
Cin>>STATDS[i];
}
for(i=0;i{
Cout<<”initalizetheRATE[3]”;
Cin>>RATE[i];
}
do
{
intRM[N]={0};
intI,J,M,R,S,T,K,A;
floatDAYRENT[N]={0.0};
clrscr();
do
{
cout<<"\n\t\t---welcometohotel---\n";
cout<<"\n\t\t(cheakout--'0'/book--'1')";
cin>>A;
}while(A<0||A>1);
if(A==1)
{
do//要求客人提供人数M并排错。
{
cout<<"\n\t\tinputthenumberofthepeople:
";
cin>>M;
}while(M<=0||M>6);
do//要求客人提供等级R并排错。
{
cout<<"\n\t\tinputtherank:
";
cin>>R;
}while(R<0||R>3);
for(I=0,J=0;I{
if(R==0&&STATDS[I]==0&&NBED[I]>=M)
{
RM[J]=ROOM[I];
S=RANK[I];DAYRENT[J]=(RATE[S-1]*NBED[I]/(M*1.0));
//计算住宿费。
J++;
}
if(R!
=0&&STATDS[I]==0&&NBED[I]>=M&&RANK[I]==R)
{
RM[J]=ROOM[I];
S=RANK[I];DAYRENT[J]=(RATE[S-1]*NBED[I]/(M*1.0));
//计算住宿费。
J++;
}
if(STATDS[I]!
=0||NBED[I]=R){continue;}//不符合的房间信息跳过。
}
cout<<"\n\t\tthereare"<\n\n\t\t";
cout<<"\n\t\t"<<"number"<<"ROOM"<<"DAYRNT";
for(I=0;I{
cout<<"\n\n\t\t"<cout<cout<}
do
{
cout<<"\n\n\t\tplaesechoosenumberoftheroom(K):
";
cin>>K;//输入所需订房的房间序号K。
}while(K<0||K>J);
for(I=0;I{
if(RM[K-1]==ROOM[I])
{
STATDS[I]=1;//把已订的房间状态改为“占有”。
cout<<"\n\n\t\tyouhadsuccesstobooktheROOM:
"<cout<<"\n\n\t\tthedayrentofeachpeople:
”<}
if(RM[K-1]!
=ROOM[I])
{continue;}
}
}
else
{
cout<<"\n\t\ttheROOMwhichcanyoucheakout:
";
cout<<"\n\t\tnumber"<<"ROOM";
for(J=0,I=0;I{
if(STATDS[I]==1)
{
RM[J]=ROOM[I];
cout<<"\n\n\t\t"<cout<J++;
}
if(STATDS[I]!
=1)
{continue;}
}
do
{
cout<<"\n\n\t\tplaeseinputnumberoftheroom(K):
";
cin>>K;//输入输入所需退房的房间序号K。
}while(K<0||K>J);
for(I=0;I{
if(RM[K-1]==ROOM[I])
{
STATDS[I]=0;
cout<<"\n\n\t\tyouhadsuccesstocheakouttheROOM:
"<}
if(RM[K-1]!
=ROOM[I])
{continue;}
}
}
cout<<"\n\n\t\tcontinue(yes--anykey/no--N)?
";
ch=getche();
if(ch=='N')ch='n';
}while(ch!
='n');
}
五、[调试方案]
订房需要成功地把房间状态更改,当再次查房时,不会再显示该房间信息,同样地,退房业务也如此。
订房时,根据客人提供的信息(即人数M与等级R)正确筛选出房间信息。
退房时,又正确地筛选出“占有状态”的房间。
根据以上条件,我们设计出方案:
初始化数据为:
Number
ROOM
RANK
NBED
STATUS
1
101
1
4
1
2
102
1
2
0
3