实习报告酒店管理.docx

上传人:b****7 文档编号:10701121 上传时间:2023-02-22 格式:DOCX 页数:19 大小:103.38KB
下载 相关 举报
实习报告酒店管理.docx_第1页
第1页 / 共19页
实习报告酒店管理.docx_第2页
第2页 / 共19页
实习报告酒店管理.docx_第3页
第3页 / 共19页
实习报告酒店管理.docx_第4页
第4页 / 共19页
实习报告酒店管理.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

实习报告酒店管理.docx

《实习报告酒店管理.docx》由会员分享,可在线阅读,更多相关《实习报告酒店管理.docx(19页珍藏版)》请在冰豆网上搜索。

实习报告酒店管理.docx

实习报告酒店管理

《程序设计》实习报告

一、[实习题目]

设某旅馆有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)。

三、[程序流程图]

B

C

X=0?

Y=0?

把相应的房间状态改为占有。

把相应的房间状态改为空闲。

Continue?

结束

D

Y(订房失败)

Y(退房失败)

N(订房成功)

Y

N

四、[源程序代码]

#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

201

2

3

0

4

202

3

4

1

5

301

2

6

0

6

302

3

6

1

7

401

2

5

0

8

402

2

6

1

9

501

3

3

0

10

502

1

2

1

RANK

1

2

3

DAYRENT

80

100

120

1)现在我们要测试一下订房是否能根据我们提供的数据正确地输出房间信息。

(不需要订房)

①检查语句if(R==0&&STATDS[I]==0&&NBED[I]>=M)

输入人数M=3,等级R=0,结果:

Number

ROOM

DAYRENT

1

201

100

2

301

200

3

401

166.66666666

4

501

120

Thereare4ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tostop)0

②检查语句if(R!

=0&&STATDS[I]==0&&NBED[I]>=M&&

RANK[I]==R)

输入人数M=4,等级R=2,结果:

Number

ROOM

DAYRENT

1

201

100

1

301

200

3

401

166.66666666

120

Thereare2ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tostop)0

③检查语句if(STATDS[I]!

=0||NBED[I]

=R)

输入人数M=4,等级R=1,结果:

Thereare0ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tostop)0

2)定房;人数M=2,等级R=2;

按照题意,程序应该具有筛选出符合条件的房间信息的功能。

正确的结果为:

NUMBER

ROOM

DAYRENT

1

201

150

2

301

300

3

401

250

 

Thereare3ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tostop)1

然后根据客人提供所需订房的房间号码,找出相应的序号输入(不订房可输入‘0’):

输入’1’;把201房订了。

3)查房;我们测试一下订房是否成功,同样输入人数M=2,等级R=2;

依题意,正确结果为:

NUMBER

ROOM

DARLYRENT

1

301

300

2

401

250

 

Thereare2ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tostop)0

这次我们只是查房,不需要订房,可输入‘0’作结束。

4)再次查房;由于前面一步没有订房,所以再次确认查房结果是否保持不变。

5)退房;

退房功能会直接把状态为占有的房间罗列出来,(注意由于前面把201房顶了,退房显示的房间信息要包含有201)正确结果为:

Number

ROOM

1

101

2

201

3

202

4

302

5

502

Thereare5ROOMforyouchoice.

Inputthenumberwhichdidyouwanttocheakout(‘0’tostop)2

然后根据客人提供所需退房的房间号码,找出相应的序号输入(不退房可输入‘0’):

输入’2’;把201房退了。

6)查房;首先检测退房是否成功,同样进入退房业务;

依题意;正确结果:

Number

ROOM

1

101

2

202

3

302

4

502

Thereare4ROOMforyouchoice.

Inputthenumberwhichdidyouwanttocheakout(‘0’tostop)0

这次我们只是查房,不需要退房,可输入‘0’作结束。

然后,进入订房业务,看退掉的房间是否在订房业务中显示;

依题意;正确结果:

NUMBER

ROOM

DAYRENT

1

201

150

2

301

300

3

401

250

 

Thereare3ROOMforyouchoice.

Inputthenumberoftheroomwhichdidyouwanttobook?

(‘0’tospot)0

这次我们只是查房,不需要订房房,可输入‘0’作结束。

7)再次查房;由于前面一步没有订房,所以再次确认查房结果是否保持不变。

五、[主要的体会与教训]

1)该题主要是关于“一位数组”和“基本控制结构”的练习,编写完后,对一位数组、复合语句的的应用使有了更深刻的了解。

2)在设计程序中筛选房间信息的循环结构时,对于条件语句的使用一开始很困难,但经过了反复的调试,掌握了复合语句与continue语句的使用。

3)计算住宿费时,一开始无法想到储存方法,后来学会了巧妙把“计算住宿费的语句”写进“扫描房间信息的循环结构中。

4)在对程序的输出格式方面我也下了很大功夫,有所提高。

5)再设计调试方案时,原来只按自己的习惯,忽略了对住宿费的核对,这明显不足。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1