c++-酒店客房管理系统(共12页).doc
精选优质文档-倾情为你奉上 数据结构题 目:酒店客房管理系统 专 业: 班 级: 姓 名 学号: 实训时间: 实训地点: 成 绩: 详细设计说明书目录引言1.1编写目的完成期中考试作业1.2项目背景酒店客房管理系统 主要功能:前台操作:包括开房登记、退房结账和房状态查看预订管理:包括预订房间、预订入住和解除预订信息查询:包括在住客人列表、预订客人列表报表统计:包括开房记录统计、退房结账和预订房间统计完成提示:(1)住店情况记录在住店管理表中:客人姓名、房号、入住时期、预计离开日期、结账离开日期、应付金额(2)每个房间的使用情况记录在房间信息表中:房号、价格、押金、房状态(空,入住)(3)预定情况记录在预订情况表中:客人姓名、房号、入住日期、预计离开日期(4)数据存在文件中2总体设计2.1需求概述 1客房预定系统 客房预定 预定未到处理 预售查询 预定系统可随时查询酒店客房预售一览表,及可售房间数,可查询某间客房预定情况。 2前台接待系统 入住登记 预定客房查询 可售客房查询 3前台收银系统 记帐 退房 押金加入 查帐 客人信息查询 动态房态查询 房间明细帐查询 收银员报表 当日入住客人报表 住店客单查询 查询客房状态 查询可售情况 客房占用统计 帐务查询 万能查询 报表输出2.2软件结构 图 2. 系统总流程图表1: 系统总流程数据字典数据流名: 登记组 成: 客户信息+房间信息+押金+时间数 据 项: 客房信息组 成: 房号+类型+单价+状态组 织: 房号数 据 项: 状态取值: 空房可用 空房待修 预订占用 正在占用数 据 项: 押金组 成: 预订金+入住押金+入住租金数据库12 3程序描述流程图数据字典数据处理名:前台加工简 述:在酒店中直接与客人发生关系的活动,为客人提供的一切服务,包 括 客人进入酒店前的预订,预订后的入住,消费,以及离店前的手续 办理。组 成:预订+接待+取消预订+离店3 .详细设计3.1备注 按照客人从住店、离店的过程将系统划分为预订、接待、取消预订和离店四个处理过程。客人通过预订,也可直接到酒店登记住宿。客人预订后,也可能取消预订。客人预订离店接待取消预订 表3: 个人预订数据字典数据处理名:房间查询简 述:根据客人的预订要求,查询客房预订信息表,确定是否有空房输 入:客户信息,来源:外部实体“客人”输 出:1 无客房,去处:外部实体“客人” 2 有客房,预订登记表,去处:“客人信息”数据流名称:预订登记表简 述:在房间查询有房时所填的表,用于记载客人信息组 成:身份证号+姓名+性别+年龄+民族+国籍+家庭住址+VIP+电话客人来店预订,服务员查询“客房预订信息表”,无空房则返回客人。有客房则登记,并核对“客人黑名单”(进行消费而未付帐的客人名单)及“挂帐表”,无误后收取预订押金并记入“预订金入帐表”。进行订房,将预订信息记入“客人预订信息表”,修改“客房预订信息表”的客房状态,给客人预订证明表。预订完成。3.2性能1对数据对象类的确定2对各类间关联的确定3系统应提供客房的分类管理功能、4系统在各功能模块的实现当中,提供多级分类检索和组合搜索3.3输入项目1客房类型2员工名或编号3客房信息4客房状态3.4输出项目1客房类型表2. 客房信息表3客房状态表3.5算法见后面是黑客已预订完预订证明表客人收 银订房预订金入帐表团体预订信息表客人客人信息查 询客人黑名单房 间查 询客房预订信息表1客房预订信息表2有无空房间订金收据交款预订登记表挂帐单位表3.6程序逻辑 3.7 界面浏览3.5算法补充#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>/成员变量的声明 int i,j,k,p=0; char temp=" "int room55;clock_t start;/成员方法的声明void init() int x,y,z; for(x=0;x<5;x+) for(y=0;y<5;y+) roomxy=0; void hotelTitle() printf("n-酒店房间登记与计费管理系统-n"); printf("t1.登记入住n"); printf("t2.查询房间的入住情况n"); printf("t3.查询当前费用n"); printf("t4.结账退房n"); printf("t5.退出程序n");void hotel_execute();void hotel_select(); void hotel_outhotel();void outsystem();void hotel_total();int main(void) system("color f1"); init(); while(1) Loop: hotelTitle(); printf("n请选择:"); j=scanf("%d",&k); if(j=0|k<1|k>5) printf("n输入错误。nt请输入所列出的选项。nn 3 秒后刷新.Please Weit! Thanksn"); fflush(stdin); system("cls"); goto Loop; else switch(k) case 1:hotel_execute();break; case 2:hotel_select();break; case 3:hotel_total();break; case 4:hotel_outhotel();break; case 5:outsystem();return; default: printf("nt系统出错!请联系管理员!n");/怕出现BUG return; fflush(stdin); /清空缓存 /入住登记 void hotel_execute() int x,y,z; printf("请输入你要住本酒店多少层楼的住房?【1-5】"); fflush(stdin); L:scanf("%d",&x); p=x; if(x>5) printf("不好意思本店没有该层楼房。n请重新选择:"); goto L; printf("请输入你要住第%d层的几号房间?【1-5】",x); fflush(stdin); LP:scanf("%d",&y); if(y>5) printf("不好意思该层楼并无该房间。n请重新选择:"); goto LP;/无条件的回去 GOTO语句 if(x>2)/二层以上则100元一天 printf("n提示:该房是贵宾套房,100元一天n"); else printf("n提示:该房是标准套房,50元一天n"); if(roomx-1y-1=0)/判断该房已经入住 roomx-1y-1=1; printf("n谢谢您的光临,您已经成功登记。n您的信息如下:n入住房间:%d-%dn",x,y); start=clock(); else printf("警告:该房已经有人入住.请换房入住哈。n"); /查询住房信息 void hotel_select() int x,y,z; system("cls");/清空内容。 /以下没什么重要的。就是控制输出格式 printf("宾馆入住情况如下:"); printf("n|-|-|-|-|-|-|n"); printf("| |"); for(x=1;x<=5;x+) printf("房间号 |"); printf("n"); for(x=0;x<5;x+) if(x=0) printf("|-|-|-|-|-|-|n|第%d层 |",x+1); else printf("n|-|-|-|-|-|-|n|第%d层 |",x+1); for(y=0;y<5;y+) if(roomxy=0) printf("空%d-%d |",x+1,y+1); else printf("住%d-%d |",x+1,y+1); if(y+1=5) if(x+1=1|x+1=2) printf(" 该层标间均50元"); else printf(" 该层标间均100元"); printf("n|-|-|-|-|-|-|n"); printf("n住房信息:n"); for(x=0,z=0;x<5;x+) for(y=0;y<5;y+) if(roomxy!=0) z+; printf("t%d-%d有人入住n",x+1,y+1); if(z=0) printf("t现无人入住本酒店.n"); /结账 void hotel_outhotel() int x=0,y=0; printf("请输入您要结账退房的楼层编号?"); scanf("%d",&x); printf("请输入该楼层退房的房间编号?"); scanf("%d",&y); if(roomx-1y-1=1) roomx-1y-1=0; printf("nt房间%d-%d退房成功,再会。n",x,y); else printf("nt房间%d-%d退房失败。ntt原因:未入住,是空房,不需要退.再会。n",x,y); /查看价钱void hotel_total() /在c语言中有专门处理系统时间,程序计时等等功能的库,即time.h /在time.h中函数clock_t clock( void )可以完成计时功能。 /这个函数返回从"开启这个程序进程"到"程序中调用clock()函数"时之间的CPU时钟计时单元(clock tick)数, /在MSDN中称之为挂钟时间(wal-clock)。 /其中clock_t是用来保存时间的数据类型,在time.h文件中, /我们可以找到对它的定义: #ifndef _CLOCK_T_DEFINED typedef long clock_t; /#define _CLOCK_T_DEFINED #endif 很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC, /它用来表示一秒钟会有多少个时钟计时单元, /其定义如下: #define CLOCKS_PER_SEC (clock_t)1000) 可以看到每过千分之一秒(1毫秒), /调用clock()函数返回的值就加1。 clock_t finish=clock(); double duration = (double)(finish - start) / CLOCKS_PER_SEC; double day=duration/60/60/24;/这里是将秒换成天 double total=0; printf( "您住了%f秒钟.n",duration); /system("pause");按任意键继续. if(p>2) total=day*100; if(day=0) total=100; printf("n我们旅店是按包天计费的。n若按小时,您需要付%f元,但是现在你要付100元(黑店哈哈)n",total); /这种计费方式比较现实。符合实际 else total=day*50; if(day=0) total=50; printf("n我们旅店是按包天计费的。n若按小时,您需要付%f元,但是现在你要付50元(黑店哈哈)n",total); /退出 void outsystem() char message = "n酒店登记计费系统. " for(i=0;i<strlen(message);i+) printf("%c",messagei); printf("nn");专心-专注-专业