c++ 酒店客房管理系统.docx
数据结构题目:酒店客房管理系统专 业:班 级:姓名学号:实训时间:实训地点:成 绩:详细设计说明书目录1. 引言31.1编写目的32. 总体设计32.2软件结构42.3程序描述53 .详细设计53.1功能错误!未定义书签。3.2性能63.3输入项目63.4输出项目63.5算法63.6程序逻辑63.7界面浏览7引言11编写目的完成期中考试作业1.2项目背景酒店客房管理系统主要功能:前台操作:包括开房登记、退房结账和房状态查看预订管理:包括预订房间、预订入住和解除预订信息查询:包括在住客人列表、预订客人列表报表统计:包括开房记录统计、退房结账和预订房间统计完成提示:(1) 住店情况记录在住店管理表中:客人姓名、房号、入住时期、预计离开日期、结账离开日期、应付金额(2) 每个房间的使用情况记录在房间信息表中:房号、价格、押金、房状态(空,入住)(3) 预定情况记录在预订情况表中:客人姓名、房号、入住日期、预计离开日期(4) 数据存在文件中2.总体设计2.1需求概述1. 客房预定系统客房预定预定未到处理预售查询预定系统可随时查询酒店客房预售一览表,及可售房间数,可查询某间客房预定情况。2. 前台接待系统入住登记预定客房查询可售客房查询3. 前台收银系统记帐退房押金加入查帐客人信息查询动态房态查询房间明细帐查询收银员报表当日入住客人报表住店客单查询查询客房状态查询可售情况客房占用统计帐务查询万能查询报表输出2.2软件结构图2.系统总流程图表1:系统总流程数据字典数据流名:登记组成:客户信息 + 房间信息 + 押金+时间数据项:客房信息组成:房号+类型+单价+状态组织:由n 房号数据项:状态 取值:空房可用空房待修 预订占用 正在占用数据项:押金组成:预订金+入住押金+入住租金数据库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算法见后面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;elseswitch(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");/怕出现BUGreturn;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;/无条件的回去GOT O语句if(x>2)/二层以上则100元一天printf("n提示:该房是贵宾套房,100元一天n");elseprintf(-n提示:该房是标准套房,50元一天n);if(roomx-1y-1=0)/判断该房已经入住roomx-1y-1=1;printf("n谢谢您的光临,您已经成功登记。n您的信息如下:侦入住房间:d-%dn”,x,y);start=clock();elseprintf(-警告:该房已经有人入住.请换房入住哈。n);/查询住房信息void hotel_select()int x,y,z;system("cls");/清空内容。以下没什么重要的。就是控制输出格式printf("宾馆入住情况如下:");printf("n|1|1|1|n");printf("| |");for(x=1;x<=5;x+)printf("房间号 | ");printf(n);for(x=0;x<5;x+)if(x=0)printf(|1|1|1|n| 第'层 |,x+1);elseprintf(n|1|1|1|n| 第'层|,x+1);for(y=0;y<5;y+)if(roomxy=0)printf( 空1-1|,x+1,y+1);elseprintf( 住1-1|,x+1,y+1);if(y+1=5)if(x+1=1|x+1=2)printf(该层标间均50元);elseprintf("该层标间均100元");printf("n|1|1|1|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);elseprintf("nt房间%d-%d退房失败°ntt原因:未入住,是空房,不需要退.再会。n”,x,y);/查看价钱void hotel_total()在c语言中有专门处理系统时间,程序计时等等功能的库,艮片ime.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若按小时,您需要付%£元,但是现在你要付100元(黑店 哈哈八 n”,total);这种计费方式比较现实。符合实际elsetotal=day*50;if(day=0)total=50;printf(-n我们旅店是按包天计费的°n若按小时,您需要付%£元,但是现在你要付50元(黑店 哈哈八 n",total);退出void outsystem()char message = "n酒店登记计费系统.";for(i=0;i<strlen(message);i+)printf("%c”,messagei);printf(nn);