酒店管理系统报告
学校:
学院:
班级:
姓名:
学号:
一、需求分析
随着信息的迅速发展,信息化管理已经引入并且应用到各行各业的管理领域中去,而一个大型的机电将管理信息化也是势在必行的,大量的客流量,同时还要存储各项业务的信息不断更换的客流信息,员工个人信息和工资发配等任务,若要时还是用人力管理不仅将会影响到盈利的同时无异于又给每一位员工带来了很大的工作量!
酒店形态具有种种优点,但在目前状况下,它仍存在服务业企业所共有的落后的一面,如:不能有效地、快速地服务于每个顾客,收款结算速度慢,容易出现服务不周,不易进行服务评价等。而且在酒店日常管理中,货物的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。随着酒店形态的高速发展,其经营管理也变的愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。而企业若想再激烈的市场经济中立足并胜出,就必须拥有一套完善并适应自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息,完善服务质量、提高经济效益、分析市场需求、制定服务计划和目标等管理目的。
住房管理模块。此模块必须具有以下功能:
登录管理:只有在输入正确的户名和密码才可登录进入操作界面。
房间信息的管理:可以对房间信息进行增添、删除、修改、查询功能。开房功能:记录住户信息,并把相应的房间状态改为“入住”。
退房:退房时算出总费用 (房间价格+ 加床价格) * 天数;退房成功后把相应的房间状态改为“空闲”;更新用户消费总金额。
预订房功能:提前预定房间,注意房间的状态,预定日期前还是可以由其他房客入住,预定房间到期时未入住的处理。
二、可行性分析
1. 引言
1.1 编写目的
酒店发展电子商务,是对客源市场的战略考虑,是市场竞争的新优势,课提高酒店的综合竞
争力。正是在这样的前提之下,开发酒店管理系统,其目的是提高酒店管理的效率和效益,减少劳动力,节约资源,从而降低公司的运行成本。
1.2 背景
a.开发软件名称:酒店管理系统。
b.项目任务提出者:三维连锁酒店。
c.项目开发者:计
算机和通信专业团队。d.用户:所有的酒店或者宾馆。e.实现软件单位:计大101 f.项目
与其他软件、系统的关系
本系统采用MySQL数据库、MVC框架,有良好的兼容性。本项目是采用java语言编程实现。
1.3 定义
网上订房:主要是客户用来在网上预订房间,为客户提供便利。
酒店公告:主要是酒店用来发布最新优惠信息和其他新闻。
查询功能:主要是方便酒店管理人员查看房间的使用情况,方便调整房间。意见管理:主要是提供给酒店管理客户意见的平台,以便更好地运营。
2. 可行性分析的前提
2.1 要求
主要功能:为客户提供各种餐饮服务,提高酒店运行效率和服务水平。性能要求:客户提供的信息必须及时的反映在酒店的工作平台上。客户的定单必须无差错的存储在酒店的主服务器上。对服务器上的数据必须进行及时正确的刷新。
输入要求:数据完整,详实。输出要求:简捷,快速,实时。
2.2目标
开发酒店管理系统实现各种要求,它能够拓展经营空间,降低运营成本,
提高管理和决策效率。系统同时也能节约客户的时间,客户可以异地订房和网上付款,方便快捷。
2.3条件、假定和限制
2.4进行可行性分析的方法
本次可行性分析是按照前面给出的步骤进行的,即按照复查项目目标和规模,研究目前正使用的系统,导出新系统的高层逻辑模型,重新定义问题这一循环反复过程进行的。
包括调查研究、系统分析、模型方法等
3系统功能总框架
系统设计模块:
酒店管理系统分为前台和后台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。
客房类型设置模块:该模块用来管理酒店的所有客房类型,包括新增客房类型、编辑已有客房类型、删除客房类型等功能。
客房设置模块:该模块用来管理酒店的所有客房信息,包括新增客房、编辑已有客房、删除客房等功能。
操作员设置模块:该模块用来管理酒店的操作员信息,包括新增操作员、编辑已有操作员信息、删除操作信息等功能。
系统前台供酒店所有工作人员使用,包括入住登记模块、结账模块、预定模块、客户管理模块以及业务统计五个模块。具体的功能模块如下。
入住登记模块:该模块用来登记客户的入住信息,其中入住信息包括登记信息、客人信息以及费用信息三部分。
结账模块:该模块用来处理客户的退房信息,只需要知道客户所住的房间号码,就能进行退房结账。
预定模块:该模块用来处理客户的预定信息,除了可以新增预定信息外,还可以对已有的预定信息进行管理。
客户管理模块:该模块用来管理客户的登记信息,包括新增客户信息、编译已有客户信息、删除客户信息等功能。
业务统计模块:该模块用来统计酒店的客房出租率,并且已图形报表的形式来显示出租率信息。
本系统的开发工具具体如下。
系统开发平台:MyEclipse 6.5。
数据库管理系统软件:MySQL 5.0。
java开发包:JDK 5.0以上。
Web服务器:Tomcat 6.0。
本系统采用MVC架构模式开发,具体技术如下。
AJAX框架:使用ExtJS技术开发
显示层:使用JSP技术开发
数据访问层:使用DAO模式开发
持久层:使用Hibernate框架开发
首页访问地址:http://localhost:8080/JavaPrj_9/
三、各模块实现:
客房类型设置模块:
此模块主要代码:
public boolean addNewRoomCatalog(RoomCatalog roomCatalog) {//添加客房类型String id = roomCatalog.getRcId();//获得客房类型编号
Long count=(Long)queryForObject(
"select count(*) from RoomCatalog where rcId=?"
,new Object[] {id});//根据客房类型编号查找客房类型if(count.longValue()==0){//记录数为0
hibernateT emplate.save(roomCatalog);//保存客房类型
return true;
}
else{//记录数不为0
https://www.doczj.com/doc/3d12318383.html,("该客房类型以及存在!");
return false;
}
}
public boolean delRoomCatalog(RoomCatalog roomCatalog) {
Long count=(Long)queryForObject(
"select count(*) from RoomCatalog where rcId=?"
,new Object[] {roomCatalog.getRcId()});//查找该客房类型if(count.longValue()==0){ //判断记录数是否为0 return false;
}
else{ //记录数不为0
hibernateT emplate.delete(roomCatalog);//删除该客房类型
return true;
}
}
客房设置模块:
此模块主要代码:
public List
return roomCatalogDao.showAllRoomCatalog();
}
public void updateRoomCatalog(RoomCatalog roomCatalog) {//更新客房类型roomCatalogDao.update(roomCatalog);
}
public boolean addNewRoomCatalog(RoomCatalog roomCatalog) {//新增客房类型return roomCatalogDao.addNewRoomCatalog(roomCatalog);
}
public boolean delRoomCatalog(RoomCatalog roomCatalog) {//删除客房类型return roomCatalogDao.delRoomCatalog(roomCatalog);
}
if ((String) request.getParameter("json").trim() != null) {
json = (String) request.getParameter("json").trim();
https://www.doczj.com/doc/3d12318383.html,("Update the room information");
https://www.doczj.com/doc/3d12318383.html,(json);
JSONObject jsonObject = JSONObject.fromObject( json );
String state = jsonObject.getString("rmState");
String pic = jsonObject.getString("rmPicture");
jsonObject.remove("isNew");
jsonObject.remove("rmState");
jsonObject.remove("rmPicture");
if(state.equals("空闲")){
state = "0";
}else if(state.equals("预定")){
state = "1";
}else if(state.equals("租用")){
state = "2";
}else if(state.equals("结帐")){
state = "3";
}else if(state.equals("清洁")){
state = "4";
}else if(state.equals("锁房")){
state = "5";
}
jsonObject.put("rmState", state);
if(pic.equals("标准间")){
pic = "public/images/rooms/standardroom.gif";
}else if(pic.equals("单人间")){
pic = "public/images/rooms/single.gif";
}
jsonObject.put("rmPicture", pic);
https://www.doczj.com/doc/3d12318383.html,(jsonObject);
Room room = (Room) JSONObject.toBean( jsonObject, Room.class );
https://www.doczj.com/doc/3d12318383.html,(room);
businessService.updateRoom(room);
} else {
response.getWriter().write("{failure:true}");
}
}
操作员设置模块:
此模块主要代码:
public static final int PRIVILEGE_USER = 0; //普通操作员
public static final int PRIVILEGE_ADMIN = 0xff; //管理员
private String opUserName; //操作员用户名(自定义)
private String opPassword; //操作员密码
private Integer opPrivilege; //操作员权限
private String opAddress; //地址
private String opName; //姓名
private String opTelephone; //电话
private String opMobile; //手机
private String opZip; //邮编
private Timestamp opCreateTime; //创建时间
@Id
@Column(updatable=false, nullable=false, length=20)
//@Pattern(regex="[a-z0-9]{3,20}", message="用户名只能由英文字母和数字构成,长度为3-20个字符")
public String getOpUserName() {
return opUserName;
}
public void setOpUserName(String opUserName) {
this.opUserName = opUserName;
}
@Column(nullable=false, length=32)
public String getOpPassword() {
return opPassword;
}
public void setOpPassword(String opPassword) {
this.opPassword = opPassword;
}
@Column(nullable=false)
public Integer getOpPrivilege() {
return opPrivilege;
}
public void setOpPrivilege(Integer opPrivilege) {
this.opPrivilege = opPrivilege;
}
@Column(nullable=true,length=100)
public String getOpAddress() {
return opAddress;
}
public void setOpAddress(String opAddress) {
this.opAddress = opAddress;
}
@Column(nullable=false,length=20)
public String getOpName() {
return opName;
}
public void setOpName(String opName) {
this.opName = opName;
}
@Column(nullable=true,length=16)
public String getOpTelephone() {
return opTelephone;
}
public void setOpTelephone(String opTelephone) {
this.opT elephone = opTelephone;
}
@Column(nullable=true,length=16)
public String getOpMobile() {
return opMobile;
}
public void setOpMobile(String opMobile) {
this.opMobile = opMobile;
}
@Column(nullable=true,length=10)
public String getOpZip() {
return opZip;
}
public void setOpZip(String opZip) {
this.opZip = opZip;
}
@Column(nullable=false)
public Timestamp getOpCreateTime() {
return opCreateTime;
}
public void setOpCreateTime(Timestamp opCreateTime) { this.opCreateTime = opCreateTime;
}
}
入住登记模块:
此模块主要代码:
public class Guest { //顾客信息类
private String gtId; //客人编号
private String gtName; //客人姓名
private String gtType; //客人类型
private String gtCardCatalog; //客人证件类别
private String gtCardId; //客人证件号码
private String gtCountry; //国籍
private String gtAddress; //地址
private String gtZip; //邮编
private String gtCompany; //公司(工作单位)
private String gtT elphone; //固定电话
private String gtMobile; //手机
private String gtGender; //性别
private String gtEmail; //Email地址
private Timestamp gtCreateTime; //资料创建时间
@Id
@Column(nullable=false, updatable=false, length=32)
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy="uuid") public String getGtId() {
return gtId;
}
public void setGtId(String gtId) {
this.gtId = gtId;
}
@Column(nullable=false, length=20)
public String getGtName() {
return gtName;
}
public void setGtName(String gtName) {
this.gtName = gtName;
}
@Column(nullable=false)
public String getGtType() {
return gtType;
}
public void setGtType(String gtType) {
this.gtType = gtType;
}
@Column(nullable=false,length=16)
public String getGtCardCatalog() {
return gtCardCatalog;
}
public void setGtCardCatalog(String gtCardCatalog) { this.gtCardCatalog = gtCardCatalog;
}
@Column(nullable=false,length=32)
public String getGtCardId() {
return gtCardId;
}
public void setGtCardId(String gtCardId) {
this.gtCardId = gtCardId;
}
@Column(nullable=true,length=32)
public String getGtCountry() {
return gtCountry;
}
public void setGtCountry(String gtCountry) {
this.gtCountry = gtCountry;
}
@Column(nullable=true,length=100)
public String getGtAddress() {
return gtAddress;
}
public void setGtAddress(String gtAddress) { this.gtAddress = gtAddress;
}
@Column(nullable=true,length=10)
public String getGtZip() {
return gtZip;
}
public void setGtZip(String gtZip) {
this.gtZip = gtZip;
}
@Column(nullable=true,length=50)
public String getGtCompany() {
return gtCompany;
}
public void setGtCompany(String gtCompany) { this.gtCompany = gtCompany;
}
@Column(nullable=true,length=16)
public String getGtTelphone() {
return gtTelphone;
}
public void setGtTelphone(String gtT elphone) { this.gtTelphone = gtTelphone;
}
@Column(nullable=true,length=16)
public String getGtMobile() {
return gtMobile;
}
public void setGtMobile(String gtMobile) { this.gtMobile = gtMobile;
}
@Column(nullable=false,length=4)
public String getGtGender() {
return gtGender;
}
public void setGtGender(String gtGender) { this.gtGender = gtGender;
}
@Column(nullable=true,length=32)
public String getGtEmail() {
return gtEmail;
}
public void setGtEmail(String gtEmail) {
this.gtEmail = gtEmail;
}
@Column(nullable=false)
public Timestamp getGtCreateTime() {
return gtCreateTime;
}
public void setGtCreateTime(Timestamp gtCreateTime) {
this.gtCreateTime = gtCreateTime;
}
}
结账模块:
此模块主要代码:
CheckinItem checkinItem =new CheckinItem();
if(request.getParameter("prePrice")!=null){ //考虑
String prePrice=(String) request.getParameter("prePrice").trim();
}
if(request.getParameter("prctPrice")!=null){ //实际价格
String prctPrice=(String) request.getParameter("prctPrice").trim();
checkinItem.setCimPrctPrice(new BigDecimal(prctPrice));
}
if(request.getParameter("discount")!=null){ //折扣
String discount=(String) request.getParameter("discount").trim();
checkinItem.setCimDiscount(new BigDecimal(discount));
}
if(request.getParameter("inDateTime")!=null){ //客人入住时间
String inDateTime=(String) request.getParameter("inDateTime").trim();
checkinItem.setCimInDatetime(Timestamp.valueOf(inDateTime));
}
if(request.getParameter("preOutDateTime")!=null){ //预计离开时间
String preOutDateTime=(String) request.getParameter("preOutDateTime").trim();
checkinItem.setCimOutDatetime(Timestamp.valueOf(preOutDateTime));
}
return checkinItem;
预定模块:
此模块主要代码:
public class CheckinOrder { //入住登记订单类private String cioId; //入住登记订单编号
private List
private Integer cioManNumber; //人数
private String cioGuestCatalog; //客人类别
private String cioGuestType; //客人类型
private String cioGroupName; //团队名称
private String cioGuestCardCatalog; //客人证件类别
private String cioGuestCardId; //客人证件号码
private String cioCause; //事由
private String cioState; //登记状态
private Timestamp cioInDateTime; //客人入住时间
private Timestamp cioPreOutDateTime;//预计离开时间
private Timestamp cioPrctOutDateTime;//实际离开时间
private String cioPaymentModel; //支付类型
private BigDecimal cioPaidMoney; //已付押金
private String cioIsReservId; //有无预定
private String cioOperator; //操作员
private String cioGuestGender; //客人性别
private BigDecimal cioTotalRate; //总费用
private BigDecimal cioBedRate; //加床费
private String cioOrderId; //登记单号
@Id
@Column(nullable=false, updatable=false, length=32)
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy="uuid")
public String getCioId() {
return cioId;
}
public void setCioId(String cioId) {
this.cioId = cioId;
}
@OneToMany(targetEntity=CheckinItem.class,mappedBy="checkinOrder",cascade = CascadeType.ALL)
public List
return checkinItems;
}
public void setCheckinItems(List
this.checkinItems = checkinItems;
}
@Column(nullable=false, length=20)
public String getCioGuestName() {
return cioGuestName;
}
public void setCioGuestName(String cioGuestName) {
this.cioGuestName = cioGuestName;
}
@Column(nullable=false)
public Integer getCioManNumber() {
return cioManNumber;
}
public void setCioManNumber(Integer cioManNumber) {
this.cioManNumber = cioManNumber;
}
@Column(nullable=false,length=16)
public String getCioGuestCatalog() {
return cioGuestCatalog;
}
public void setCioGuestCatalog(String cioGuestCatalog) {
this.cioGuestCatalog = cioGuestCatalog;
}
@Column(nullable=false,length=16)
public String getCioGuestType() {
return cioGuestType;
}
public void setCioGuestType(String cioGuestType) {
this.cioGuestType = cioGuestType;
}
@Column(nullable=true, length=32)
public String getCioGroupName() {
return cioGroupName;
}
public void setCioGroupName(String cioGroupName) {
this.cioGroupName = cioGroupName;
}
@Column(nullable=false,length=16)
public String getCioGuestCardCatalog() {
return cioGuestCardCatalog;
}
public void setCioGuestCardCatalog(String cioGuestCardCatalog) { this.cioGuestCardCatalog = cioGuestCardCatalog;
}
@Column(nullable=false, length=32)
public String getCioGuestCardId() {
return cioGuestCardId;
}
public void setCioGuestCardId(String cioGuestCardId) { this.cioGuestCardId = cioGuestCardId;
}
@Column(nullable=true, length=100)
public String getCioCause() {
return cioCause;
}
public void setCioCause(String cioCause) {
this.cioCause = cioCause;
}
//登记中已入住已结帐已失效
@Column(nullable=false)
public String getCioState() {
return cioState;
}
public void setCioState(String cioState) {
this.cioState = cioState;
}
@Column(nullable=false)
public Timestamp getCioInDateTime() {
return cioInDateTime;
}
public void setCioInDateTime(Timestamp cioInDateTime) { this.cioInDateTime = cioInDateTime;
}
@Column(nullable=false)
public Timestamp getCioPreOutDateTime() {
return cioPreOutDateTime;
}
public void setCioPreOutDateTime(Timestamp cioPreOutDateTime) { this.cioPreOutDateTime = cioPreOutDateTime;
}
@Column(nullable=false)
public Timestamp getCioPrctOutDateTime() {
return cioPrctOutDateTime;
}
public void setCioPrctOutDateTime(Timestamp cioPrctOutDateTime) { this.cioPrctOutDateTime = cioPrctOutDateTime;
}
@Column(nullable=false,length=16)
public String getCioPaymentModel() {
return cioPaymentModel;
}
public void setCioPaymentModel(String cioPaymentModel) { this.cioPaymentModel = cioPaymentModel;
}
@Column(nullable=false)
public BigDecimal getCioPaidMoney() {
return cioPaidMoney;
}
public void setCioPaidMoney(BigDecimal cioPaidMoney) { this.cioPaidMoney = cioPaidMoney;
}
@Column(nullable=true, length=32)
public String getCioIsReservId() {
return cioIsReservId;
}
public void setCioIsReservId(String cioIsReservId) {
this.cioIsReservId = cioIsReservId;
}
@Column(nullable=false, length=20)
public String getCioOperator() {
return cioOperator;
}
public void setCioOperator(String cioOperator) {
this.cioOperator = cioOperator;
}
@Column(nullable=false,length=6)
public String getCioGuestGender() {
return cioGuestGender;
}
public void setCioGuestGender(String cioGuestGender) { this.cioGuestGender = cioGuestGender;
}
@Column(nullable=false)
public BigDecimal getCioT otalRate() {
return cioT otalRate;
}
public void setCioT otalRate(BigDecimal cioTotalRate) { this.cioTotalRate = cioTotalRate;
}
@Column(nullable=true)
public BigDecimal getCioBedRate() {
return cioBedRate;
}
public void setCioBedRate(BigDecimal cioBedRate) { this.cioBedRate = cioBedRate;
}
@Column(nullable=false,length=32)
public String getCioOrderId() {
return cioOrderId;
}
public void setCioOrderId(String cioOrderId) {
this.cioOrderId = cioOrderId;
}
客户管理模块:
业务统计模块:
数据库主要代码:
INSERT INTO `tb_balancement` VALUES ('402881e51a448696011a4489783f0003','402881e51a448696011a4489373e0001','4028 81e51a39c232011a39da4d3e0005','结单',320,1000,200,'2008-06-01 22:30:37','admin','现金','remark');
INSERT INTO `tb_balancement` VALUES ('402881e51a53efae011a53f874550004','402881e51a53efae011a53f77fc40001','402881 e51a39c232011a39da4d3e0005','结单',350,0,0,'2008-06-04 22:26:09','admin','现金','fdsafdsa');
INSERT INTO `tb_balancement` VALUES ('402881e625636b70012563767c6c0001','402881e625587aa7012559003f2d0003','4028 81e625587aa7012558e59ffa0001','结单',260,0,0,'2009-12-06 18:08:47','admin','现金','') #
# Table structure for table tb_checkinitem
#;
INSERT INTO `tb_checkinitem` VALUES ('402881e51a448696011a4489376d0002','402881e51a448696011a4489373e0001','8109 ',320,100,'2008-06-01 21:15:00','2008-06-02 12:00:00','已结账');
INSERT INTO `tb_checkinitem` VALUES ('402881e51a53efae011a53f77fd30002','402881e51a53efae011a53f77fc40001','8308',10 0,31.25,'2008-06-04 22:24:00','2008-06-05 12:00:00','已结账');
INSERT INTO `tb_checkinitem` VALUES ('402881e51a53efae011a53f77fd30003','402881e51a53efae011a53f77fc40001','8209',25 0,96.15,'2008-06-04 22:24:00','2008-06-05 12:00:00','已结账');
INSERT INTO `tb_checkinitem` VALUES ('402881e51a579a4b011a57d29eb50004','402881e51a579a4b011a57d29ea50003','8208 ',320,100,'2008-06-05 16:22:00','2008-06-06 12:00:00','已入住');
INSERT INTO `tb_checkinitem` VALUES ('402881e5267907ec01267915e3390005','402881e5267907ec01267915e32e0004','8101 ',260,100,'2010-01-29 15:53:00','2010-01-30 12:00:00','已入住');
INSERT INTO `tb_checkinitem` VALUES ('402881e6254e53a001254e58d94e0002','402881e6254e53a001254e58d93e0001','810