摘要:本系统应用JSP技术,运用WindowsXP平台,使用JAVA编程语言和SQL Server 2005数据库,采用B/S模式开发设计完成。系统分为前台和后台管理,前台主要实现客户的浏览信息、预定客房等功能,后台是管理员管理信息的平台,主要是管理员对客房、客户的信息的管理(包括添加、修改、删除、查询)。针对C/S结构的酒店客房管理系统存在的不足,使用JSP+JavaBean开发模式、Tomcat作为Web服务器、SQL Server 2000作为后台数据库,开发出了B/S结构的酒店客房管理系统。从实际运行效果看,该系统能减少软件的开发与维护成本及酒店用户的使用成本,体现了较好的扩展性、健壮性、稳定性,提高了酒店客房管理的效率。
计算机技术发展至今已走过了半个多世纪之久,现在各个阶层、各个领域都使用着计算机,在这个快节奏的时代中它已经成为了社会生活的必需品。它的出现是现代社会进步,科技发展的标志。同时现代化的酒店组织庞大,信息量大。为了要提高效率,降低成本我们需要借助计算机来进行现代化的信息管理,设计一个酒店客房管理系统。
酒店是服务与销售同步的一类企业。因此,给住店客人提供方便快捷的服务、降低自己的营业成本是各个酒店追求的目标。一般来说,酒店主要是靠出租房间及以此产生的各种消费作为收入来源。所以,酒店客房部的管理水平直接影响到整个酒店的经济效益。
随着宾馆酒店业竞争的加剧,宾馆之间客源的争夺越来越激烈,宾馆需要使用更有效的信息化手段,拓展经营空间,降低运营成本,提高管理和决策效率。传统的宾馆酒店计算机管理系统主要包括前台管理系统和后台管理系统两大部分,基本包含了宾馆主要业务部门,初步实现了对顾客服务和进行财务核算所需要的各个功能。但传统的宾馆酒店管理系统基于财务管理为主线的设计理念,无法满足宾馆酒店全面信息化管理的需要。
现代宾馆酒店业迅速发展,新的管理观念与模式层出不穷。宾客客房管理系统亦随着宾馆管理理念的发展而发展。宾馆客房管理系统依照国家星级宾馆标准化业务程序,采用了先进的数据库理论,多媒体技术,软件工程理念等,从基层,中层,高层三个管理者层次为切入点,以成本分析,预测,控制为主线,形成一套上下贯通,操作便捷的酒店系统解决方案,科学地将宾馆各种日常业务完美的结合在一起,为管理及决策提供了强有力的支持。其对客人个性化服务及全面彻底的信息化,使企业电算化管理水平提升到一个新的更高层次。提供大量丰富的基于企业管理经营过程中实际的数据。
目前,酒店客房管理系统架构上大多是C/S结构,所使用的主要有MS Visual Studio.NET系列、Delphi、Java及其相应的开发技术。无论采用哪种开发技术,对于C/S结构的酒店客房管理系统,都存在一个问题,即若要在一台电脑上能够运行它,必须安装相应的软件,对主机的硬件配置上都有不同程度地特别要求。使得软件的开发和维护成本、酒店用户的使用成本都较高。本文以开发一个实例的方式,详细讲解了采用SQL Server 2000作为后台数据库,基于JSP技术开发出一个B/S结构的酒店客房管理系统的系统设计与编程实现过程。
1 系统设计
1.1 角色的功能划分
依据需求规格说明书,将系统分为4个职责明确、分工合理的角色:管理员、前台接待岗、前台收银岗、财务岗。每种角色都可以修改自己的登录密码、查看自己的登录日志、浏览当前房态。下面主要介绍各个角色各自的典型功能。
管理员职责:证件类别、现金币种、付款方式、房间种类、房间消费商品及其价格(例如零食、饮料等,在本系统中称为“房间消费商品”)、酒店提供的收费性服务项目(例如电话费、清洁费等,在本系统中称为“房间消费杂项”)、前台各岗位工作人员等基本数据的添加、修改、删除;每种房间种类的默认房价、为催交按金而设定的最小余额的修改;删除误输入的信息。
前台接待岗职责为客人入住登记、预订房间、无消费直接退房、转房、房态转换、客人资料录入与查询、随时打印在住客人报表等。
前台收银岗职责:领取按金单、收取按金、添加房间消费、转账、结账、打印各种财务报表、当班清转、核数过租、日结等方面。
财务岗职责主要就是强调从财务的角度查看各种财务报表,并以此对前台收银岗人员上交的各种财务报表进行账目核实。
从上述角色的职责功能划分看,财务岗是前台收银岗的一个“子集”,故而本文重点介绍其余3种角色。管理员一般由前台主管或经理担任。财务岗人员主要是核对前台收银岗上交的各种财务报表,所以一般只需设置一个账号即可。接待岗人员不接触和“钱”相关的操作、视图。收银岗人员不负责房间状态的手工修改、客人房间的分配。但在实践中,酒店用户可根据自身情况,进行灵活设置与调整。例如,对于规模较小的酒店,可将一个前台员工同时分配一个接待岗账号和一个收银岗账号。对于规模较大的酒店,可让有接待岗和收银岗账号的人互不相交,只有二者合作才能完成客人入住手续,即:接待岗人员为一客人分配好房间及其房价后,将房号告知收银岗人员(客人登记时,接待岗人员可以根据当时工作的闲忙状况,可暂时先只输入客人的姓名,等闲点时再补充录入客人的其他信息);然后收银岗人员根据房号和收取客人按金时所开的按金单票据信息,正式确认客人入住。系统中的角色与主要实体之间的联系,见图1所示。
图1中①主要是删除房间有误的消费、调整房租。对其说明如下:
(1) 对于由前台收银岗人员对某房间误输的消费项目,他们只能采取用抵消的方法(即输入相应的负数),以保证该房间消费总额的正确性。这样,在打出的结账单、流水账报表里都会出现因用于抵消的“负数”,而造成“冗余”记录。在本系统中,只有管理员才能删除有误的房间消费项目。
(2) 在核数过租时,未发现在住房的房价有什么错误,但当发现时已经因为日结而由系统自动新加了一天的房租。在本系统中,只有管理员才能修改在住房的房租。
1.2 房态转换
从图1中可以看出,整个客房管理系统的运作基本上都是围绕着房间而展开的,为了保持接待岗和收银岗在合作办理客人入住时的同步性,在房态中新设了“待交按金”状态。具体的房态转换如图2所示。
对图2中的①、②、③分别说明如下:
①是针对接待岗人员在客人入住登记选择房间时,有可能发生选错房号的情况。此时,接待岗人员只需按“取消入住登记”即可。
②是针对虽然客人交了相应按金,办完了入住手续,但因自身的一些原因,要退房离店,此时经确认还未产生任何消费。这种情况下的退房,虽比较少见,但确实是存在的。如果此时由收银岗人员正常结账退房,则会在结账单流水账报表里显示出结果。而假如由接待岗人员办理“无消费直接退房”,就可以从数据库中直接将本次入住事件的所有相关数据彻底清除。在结账单流水账报表里就不会出现这些“无实际意义、冗余”的数据。
③是针对在预订事件发生时,空房较为紧张的情况下,维护酒店利益、尽可能提高开房率,使“脏房”的房间也可成为“预订房”。在系统中会提示优先清理已被预订了的脏房。
1.3 房租零头收取
为监督收银岗员工的结账工作,在上交的财务报表中,凡涉及到客人房租消费的,除了列出一个结账单对应房间的房租总额外,还进一步将房租的“整数”、“零头”分开列出,以方便经理、财务人员核对账务。所谓“整数”即经过日结,由系统自动形成的房租,一般是房价的正整数倍。所谓“零头”即收银岗人员根据客人结账退房时,离店时间与规定的中午12点整点退房的这个时间差而产生的房租。为减少工作量、提高结账速度,将其默认为零。依据经验,欲结账离店的客人一般都会在中午12点之前退房,这时零头部分默认即可;对于少量的超过12点结账退房的情况,则收银岗人员根据酒店事先制定好的超时收费规定以及和客人达成的约定,手工输入超时部分的房租。
1.4 有序打印财务报表
收银岗人员打印的报表分为当班营业报表(付款方式统计表、实收汇总表、结账单流水账明细表)、全天营业报表、按金单报表、在住客人消费报表。
因酒店的客房部是24小时营业,所以一般将前台工作人员分为早、中、晚3个班次,轮流上班。早班和中班交接班时都是先打印当班营业报表,然后当班清转、退出系统,下一班人员登录。较复杂的是晚班以及晚班与早班之间工作的交接。在晚班期间,临近夜里12点时,进行“核数过租”,查看所有在住房的房价、按金等是否有误。如发现有误,及时修改(这项工作主要以刚开出的房间为主)。次日早上6点左右,打印当班营业报表、当班清转、打印全天营业报表、日结、打印在住客人消费的报表。至约下班前15分钟,进行当班清转、退出系统,早班人员登录。
2 数据库设计
在数据库设计时,整体上综合考虑两方面因素:关系型数据库规范化理论和表的连接操作对读写数据库性能的影响,将数据库设计成满足3NF。具体在每个表的每个字段上:字段名称采取“简洁而有意义”的原则;字段的类型和长度采取“节约够用、适当留有余地以便于扩展”的原则。
页面设计及相关代码分析
宾馆客房管理系统的页面由五部分组成:
●宾馆客房管理系统登陆界面的设计
●客房管理管理页面的设计
●客房经营管理页面的设计
●客户信息查询页面的设计
●员工信息管理页面的设计
1.宾馆客房管理系统登陆界面的设计
系统共分两类用户:酒店管理员和前台服务员
当用户进入宾馆客房管理系统登陆界面后,首先需要进行身份验证,系统在验证通过后,将使用UserType变量记录其用户类型,并根据用户类型确定用户的使用权限。宾馆客房管理
在SQL Server 2000中共建了22个表:管理员表、用户表、证件种类表、现金种类表、付款方式表、房间表、房态名称表、按金催交的最小余额表、按金使用情况表、房间消费商品表、房间消费杂项表、房间维修记录表、房种默认价格表、日结记录表、转房记录表、转账记录表、客人信息表、客人-按金表、客人-房间表、房间-消费汇总表、房间-消费商品明细表、房间-消费杂项明细表。限于篇幅,本文只介绍两个典型的表及其字段的功能说明。
(1)客人-房间表crooms的表结构,如表1所示。
关于字段oldflag取值:零表示该客人是在住客人;为正整数时表示该客人已离店(本系统中称为历史客人)。如果一个客人在一天之内多次入住、离店,其最大值即表示了该客人在当日的离店次数。为保持数据库中数据的一致性和完整性约束,在日结清理数据时,针对该客人的消费记录、住店记录等数据采取的处理方法如下:
假如该客人是历史客人,则先查询出与此客人相关的oldflag字段上的最大值(设为X),然后删除oldflag≤X的消费记录、oldflag
(2) 房间-消费汇总表rctotal的表结构,如表2所示。
3 系统实现
为客人提供快捷的服务、为酒店用户提供人性化的操作界面是本系统的设计目标。在系统实现时,采用酒店行业的术语、按照酒店用户的使用习惯,提高界面的友好性。
根据作者的项目实践经验,酒店一般都是在服务台用一个Hub集线器将若干主机连接起来形成一个局域网。在该局域网内使用客房管理系统。若无特别需要,基本是不需连接Internet的。在这种环境下,软件架构采用B/S、C/S均可。但酒店客房部的营业活动具有较为明显的“旺季和淡季”。采用B/S结构开发,酒店用户可根据需要,基本不受限制地自行增添、更换非服务器主机。
基于成本、安全性、可扩展性3个因素进行考虑,本系统的架构是B/S结构,具体采用JSP为开发技术(选用“JSP+JavaBean”模式)、Tomcat为Web服务器、SQL Server 2000为后台数据库。
在“JSP+JavaBean”模式下,将与数据库连接池相关的操作、读写数据库的操作、需经常使用的数据库的数据进行的操作分别定义成一个类。考虑到某个功能可能需要用到上述建立的多个类,而JSP动作元素中的标签每次只能创建一个Bean实例。为避免出现JSP页面中多次重复使用标签的情况,在开发时单独建立一个JSP文件,在该JSP文件中,用若干条标签将上述类的实例一起创建好。这样就可以在各个JSP页面中仅用一条JSP指令元素中的include指令即可透明地读写数据库,也便于修改和统一管理。
各个角色经统一的登录页面成功登录后,界面均是一个被拆分为常见的“左窄右宽型”的框架集,其中左侧是功能选择区,右侧是具体操作区。
本系统实现了一对一的个性化服务,已被地跨广东省佛山和江门两市的柏丽酒店连锁集团的八家分店使用,现在已经进入稳定运行期。从运行效果看,本系统体现了更加系统化、规范化、自动化,实现操作简便、灵活性强、安全性好等特点,更为广大客户提供了方便的信息查询平台。