实习报告(酒店管理).doc_第1页
实习报告(酒店管理).doc_第2页
实习报告(酒店管理).doc_第3页
实习报告(酒店管理).doc_第4页
实习报告(酒店管理).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计实习报告一、实习题目设某旅馆有N间房,每间客房的房间号码、房间等级、床位数、以及占用状态分别存放在一维数组ROOM、RANK、NBNK、NBED、STATUS中。房间的等级值为1、2或3,房间的状态值为0(空闲)或1(占有),客房是以房间(不是以床位)为单位出租的。编写一个程序,它可能根据几个散客的要求预定一间空房。设程序的输入为:人数M、房间的等级要求R(当R为0时表示任何等级都可以),程序的输出为所有可供选择的房间号。程序的基本处理过程如流程图所示。可根据几个不同方案来编写出程序。 方案1:设当前该旅馆各个房间的情况如图6-1所示:序号ROOMRANKNBEDSTATDS110134021023413201230420224153011606302120图6-1 方案一中各客房状态 程序在输入人数M和房间要求R后,输入可供选择的房间号码。方案2:已知有方案1那样的条件,并且已知等级为r的房间每人每天的住宿费为RATE(r);RATE是一个一维数组。程序在输出每个候选的房间号码RM(j)之后,还要要求输出这批散客每人所付的住宿费DAYRENT(j)。考虑到旅馆的房间数N可能较大,为此,不必每次预定时都把满足的房间号RM(j)都输出。设程序要求输入人数M、房间等级要求R、以及希望输出可供选择的房间号码数K(1=K=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(int width)。三、程序流程图开始iN?i=0输入ROOMi初始化房间数NYiN?i=0输入NBEDiiN?i=0输入RANKiNNi3?i=0输入RATEiNiN?i=0输入STATDSiNYYNYYAi+i+i+i+i+A输入人数M输入等级RA=0?订房请输入A=1退房请输入 A=0R=0?Y(退房)N(订房)j=0RANK(j)=MRANK(j)=R?Y(对等级无要求)N(对等级有要求)DAYRENT(k)= RATE(j)*NBED(j)/Mk=0k+j+YNYNjk?i=0输出DAYRENTi、ROOMi、RMiNYi+iN?i=0输出RMi、STATDSiNYi+输入需要退房的相应序号X输入需要订房的相应序号Y0=X=i0=Y=kN数据错误N数据错误BCYYDSTATDS(i)=0BCX=0?Y=0?把相应的房间状态改为占有。把相应的房间状态改为空闲。Continue?结束DY(订房失败)Y(退房失败)N(订房成功)YN四、源程序代码#include#include#includevoid main() char ch; const int N=6; int ROOMN,RANKN,NBEDN,STATDSN; int RATE3;for(i=0;iN;i+) /该循环对ROOMN进行初始化。 CoutROOMi;for(i=0;iN;i+) /该循环对RANKN进行初始化 CoutRANKi;for(i=0;iN;i+) /该循环对NBEDN进行初始化 Cout NBEDi;for(i=0;iN;i+) /该循环对STATDSN进行初始化 Cout STATDSi;for(i=0;iN;i+) /该循环对RATE3进行初始化 Cout RATEi; do int RMN=0; int I,J,M,R,S,T,K,A; float DAYRENTN=0.0; clrscr(); do coutntt -welcome to hotel-n; coutA; while(A1); if(A=1) do /要求客人提供人数M并排错。 coutM; while(M6); do /要求客人提供等级R并排错。 coutR; while(R3); for(I=0,J=0;I=M) RMJ=ROOMI;S=RANKI; DAYRENTJ=(RATES-1*NBEDI/(M*1.0); /计算住宿费。 J+; if(R!=0&STATDSI=0&NBEDI=M&RANKI=R) RMJ=ROOMI;S=RANKI; DAYRENTJ=(RATES-1*NBEDI/(M*1.0); /计算住宿费。J+; if(STATDSI!=0|NBEDIM|RANKI!=R) continue; /不符合的房间信息跳过。 coutntt there are J room for your choice!nntt; coutntt number ROOM DAYRNT; for(I=0;IJ;I+) /该循环输出符合条件的J间房间。 coutnnttsetw(6)I+1; coutsetw(8)RMI;coutsetw(8)DAYRENTI; /设计输出格式。 do coutK; /输入所需订房的房间序号K。 while(KJ); for(I=0;IN;I+) /扫描找出相应序号的房间信息 if(RMK-1=ROOMI) STATDSI=1; /把已订的房间状态改为“占有”。coutnntt you had success to book the ROOM: ROOMI;coutnntt the dayrent of each people:” DAYRENTK-1; if(RMK-1!=ROOMI) continue; else coutntt the ROOM which can you cheak out:; coutntt number ROOM; for(J=0,I=0;IN;I+) /该循环扫描出状态为“占有”的房间。 if(STATDSI=1) RMJ=ROOMI; coutnnttsetw(6)J+1;coutsetw(6)RMJ; J+; if(STATDSI!=1) continue; do coutK; /输入输入所需退房的房间序号K。 while(KJ); for(I=0;IN;I+) /扫描找出相应序号的房间信息。 if(RMK-1=ROOMI) STATDSI=0;coutnntt you had success to cheak out the ROOM: ROOMI; if(RMK-1!=ROOMI) continue; cout=M)输入人数M=3,等级R=0,结果:NumberROOMDAYRENT120110023012003401166.666666664501120There are 4 ROOM for you choice.Input the number of the room which did you want to book?(0to stop)0检查语句if(R!=0&STATDSI=0&NBEDI=M&RANKI=R)输入人数M=4,等级R=2,结果:NumberROOMDAYRENT120110013012003401166.66666666120 There are 2 ROOM for you choice. Input the number of the room which did you want to book?(0to stop)0检查语句if(STATDSI!=0|NBEDIM|RANKI!=R)输入人数M=4,等级R=1,结果:There are 0 ROOM for you choice.Input the number of the room which did you want to book?(0to stop)02)定房;人数M2,等级R=2;按照题意,程序应该具有筛选出符合条件的房间信息的功能。正确的结果为:NUMBERROOMDAYRENT120115023013003401250 There are 3 ROOM for you choice.Input the number of the room which did you want to book?(0to stop)1然后根据客人提供所需订房的房间号码,找出相应的序号输入(不订房可输入0): 输入1;把201房订了。3)查房;我们测试一下订房是否成功,同样输入人数M2,等级R=2; 依题意,正确结果为:NUMBERROOMDARLYRENT13013002401250There are 2 ROOM for you choice.Input the number of the room which did you want to book?(0to stop)0这次我们只是查房,不需要订房,可输入0作结束。4)再次查房;由于前面一步没有订房,所以再次确认查房结果是否保持不变。5)退房; 退房功能会直接把状态为占有的房间罗列出来,(注意由于前面把201房顶了,退房显示的房间信息要包含有201)正确结果为:NumberROOM11012201320243025502There are 5 ROOM for you choice.Input the number which did you want to cheak out(0to stop)2然后根据客人提供所需退房的房间号码,找出相应的序号输入(不退房可输入0): 输入2;把201房退了。6)查房;首先检测退房是否成功,同样进入退房业务; 依题意;正确结果:NumberROOM1101220233024502There are 4 ROOM for you choice.Input the number which did you want to cheak out(0to stop)0这次我们只是查房,不需要退房,可输入0作结束。 然后,进入订房业务,看退掉的房间是否在订房业务中显示; 依题意;正确结果:NUMBERROOMDAYRENT120115023013003401250 There are 3 ROOM for you choice.Input the number of the room which did you want to book?(0to spot)0这次我们只是查房,不需要订房房,可输入0作结束。 7)再次查房;由于前面一步没有订房,所以再次确认查房结果是否保持不变。五、主要的体会与教训1)该题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论