资源描述
java专业课程设计酒店标准管理系统
目 录
一、设计题目 3
二、设计目的 3
三、设计分析 3
3
3
4
4
4
四、总体设计 4
4
5
5
8
8
8
8
9
9
五、详细设计 11
11
11
12
13
14
14
六、结论 14
附录(部分源代码) 15
一、设计题目
酒店管理系统
二、设计目的
1.运用已学过的知识进行一个简单的应用程序的开发。
2.通过设计,掌握使用SSH技术、Java高级语言、SQL语言开发一个基于J2EE的应用系统的基本方法。后台数据库主要采用My SQL Server数据库。
3.基本掌握实现对数据库的连接、对数据的查询、修改、插入、删除等操作。
4.设计系统主界面,主界面上包括系统功能菜单。
5.界面友好,操作方便。
三、设计分析
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否达到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括经济上的可行性,技术上的可行性和操作上的可行性,下面将分别介绍三种技术上的可行性。
酒店管理系统是采用Java语言编写的,具有Java的一次编写,到处运行的优点,所以此系统在不同的操作系统上都可以运行,具有很强的移植性、健全性和安全性。并且酒店管理系统应具备功能完备、易于使用、易于维护等特点,而对于后者则要求能建立数据一致性和完整性强、数据安全性好的库。基于以上的要求,,使得代码编写的过程大大的简化。而数据库则是采用目前较为流行的Mysql,Java对Mysql具有很好的支持,并且在经历了多年的发展后Mysql具有很好的口碑。此系统在技术上是可行的。
酒店管理系统具备友好的用户界面,使用方便,易于维护,操作简单易于被用户接受,用户只需有一定的计算机操作基础,并对此系统的使用做简单的了解,即可方便使用此系统,而且使用此系统可以大大减少管理人员的负担。因此从使用操作方面看,此系统的开发是可行的。
本酒店管理系统运行的硬件环境只需一台廉价的电脑既可,软件环境则是安装windows XP系统,,Mysql既可。对于一般的中小型酒店来说都是很小的成本支出。因此此系统在经济上、技术上、操作上的开发都是可行的。
满足客户的需求,实现酒店管理的流程。此管理系统主要功能包括添加新管理员、修改密码、客户预订和入住、客户住宿管理、客户餐饮管理、客户结账等等。
添加新管理员:此功能可以添加新的管理员。
客户入住开单:完成客户入住开单,实现客户入住酒店。
客户住宿管理:可以实现管理人员对客人住宿情况的管理。
客户餐饮管理:可以实现管理人员对客人餐饮情况的管理。
客户结账:实现客户离宿后结账。
四、总体设计
本系统实现了宾客入住酒店从登记到离宿的管理,本系统主要的功能如下:
客户入住开单:完成客户预定或者现场入住开单,实现客人入住酒店。其中需要录入客人的身份证信息、入住时间、房间选择情况等等。
客户住宿管理:可以实现管理人员对客人住宿情况的管理。客户餐饮管理:可以实现管理人员对客人餐饮情况的管理。主要体现在入住客人的就餐消费管理和非入住客人的就餐消费管理等等。
客户结账:实现客户离宿结账,包含住宿消费和就餐消费。
如图4-1。
客房预订
即时开房
信息查询
信息修改
信息删除
就餐消费
信息查询
信息修改
信息删除
住宿结账
就餐结账
主界面
住宿管理系统
餐饮管理系统
结账信息详细
登陆界面
图4-1 系统功能模块图
本系统主要流程如下图4-2。
Y
N
开始
登陆界面
输入账号密码验证码
登录信息正确
选择消费
住宿消费
就餐消费
相关消费
相关消费
退出系统
结束
图4-2 系统流程图
系统E-R图如图4-3。
1
N
N
1
N
用户名
密码
操作员
管理
客房
房间号
入住日期
单价
住房信息编号
入住
宾客
顾客ID
姓名
就餐
餐厅
餐桌号
就餐信息编号
服务者
费用
1
图4-3 系统E-R图
如表4-4。
表4-4 功能需求与程序模块对应的关系
住房信息添加
住房信息查询
住房信息修改
餐饮信息添加
餐饮信息查询
餐饮信息修改
住房结账
餐饮结账
客户入住
Y
住房管理
Y
Y
餐饮管理
Y
Y
Y
结账
Y
Y
整个系统应当操作简便,界面友好,维护简便。数据库要求运行稳定,执行速度快,数据安全性高。软件系统本身运行对计算机硬件平台和操作系统平台要求适中。
数据库技术是信息资源管理最有效的手段。数据库设计是指对于一个指定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。数据库结构设计的好坏将直接对应用系统的效率及实现的效果产生影响。合理的数据库设计可以提高数据存储的效率,保证数据的完整和一致。本系统采用Mysql 数据库,灵活方便。
系统时间:由数据库产生的系统时间首选数据库的日期型,如DATE类型。
外部时间:由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用YYYYMMDDHH24MISS。
大字段:如无特别需要,尽可能避免使用大字段(blob,clob,long,text,image等)
针对此适用于中小型酒店的酒店管理系统的需求,设计如下的数据项和数据结构:
住房信息的输入包括:房间号、客房编号、住房费用、住宿时间、开始日期等。
顾客信息的输入包括:顾客ID、顾客姓名等。
用户登录信息的输入包括:用户名、用户密码、验证码等。
餐厅信息的输入包括:餐桌号、服务人员、就餐编号、就餐日期、就餐费用、客人房间号等。
本系统的数据库共包含5张数据库表,各个数据库表字段的命名遵守见名知意的规则。下面为主要的3个表的结构:
。
表4-5 住房信息表
字段名
类型
可否为空
键值
备注
stayID
int(10)
否
PK
客房编号
roomID
varchar(45)
是
房间号码
customerID
number(33)
否
顾客ID
customerName
varchar(180)
否
顾客姓名
stayTime
varchar(45)
否
住宿时间
fee
int(10)
否
房间单价
startDate
datetime
是
开始日期
。
表4-6 用户登录表
字段名
类型
可否为空
键值
备注
fee
Int(11)
否
房间单价
roomDescribe
varcher(30)
否
房间信息
五、详细设计
用户在登陆本酒店管理系统的时候,只需要输入正确的用户名、密码和验证码,验证码每次登陆都会随机刷新出来,假如输入的信息有误,系统会提示错误之处,重新登陆即可。如图5-1。
图5-1 登陆界面
添加住房信息功能可以实现客户的入住登记,其中包含客人的姓名、身份证号、入住日期、选择房间的情况等等,便于管理员进行管理和查询。如图5-2。
图5-2 添加住房信息界面
实现此功能的代码如下:
private void doAddAssetsInfoAction(HttpServletRequest request,
HttpServletResponse response,
StayInfoActionform oneStayInfoActionform) throws ServletException, IOException{
StayInfoPO oneStayInfoPO=new StayInfoPO();
stayInfoActionFormSaveToStayInfoPO(oneStayInfoActionform,oneStayInfoPO);
((10, 6));
boolean returnResult;
StayInfoCRUDImple oneStayInfoCRUDImple=new StayInfoCRUDImple();
try {
returnResult=(oneStayInfoPO);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
return;
}
if(returnResult){
forwardToSuccessTargetPage(request,response,"/");
}
else {forwardToShowErrorInfoTargetPage(request,response,"在添加住房信息时,系统出现了错误,请重新添加该住房的信息!");}
return;
}
住房信息查询功能便于管理员和客户的查询,可以按住房编号查询,也可以按照入住日期查询,还可以直接查看全部的住宿信息,准确快捷。如图5-3。
图5-3 住房信息查询界面
就餐信息添加功能,能够实现管理员对客人就餐消费的管理,如图5-4。
图5-4 添加就餐信息界面
实现此功能的代码如下:
private void doQueryAssetsInfoAction(HttpServletRequest request,
HttpServletResponse response,
EatingInfoActionform oneEatingInfoActionform) throws ServletException, IOException{
EatingInfoPO oneEatingInfoPO=new EatingInfoPO();
eatingInfoActionFormSaveToEatingInfoPO(oneEatingInfoActionform,oneEatingInfoPO);
((10, 6));
boolean returnResult;
EatingInfoCRUDImple oneEatingInfoCRUDImple=new EatingInfoCRUDImple();
try {
returnResult=(oneEatingInfoPO);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
return;
}
if(returnResult){
forwardToSuccessTargetPage(request,response,"/");
}
else {forwardToShowErrorInfoTargetPage(request,response,"在添加就餐信息时,系统出现了错误,请重新添加就餐信息!");}
return;}
就餐信息查询功能便于管理员和客人对就餐消费信息的查询,如图5-5。
图5-5 就餐信息查询界面
当宾客离店结账的时候可以分开进行就餐结账和住房结账,也可以两种账单和在一起清算,如图5-6。
图5-6 结账界面
六、结论
本系统综合了中小型星级酒店的的特点,从界面的设计到系统的使用都是从方便用户使用的角度出发,具有很强的实用性
主要功能包括客户预订、入住开单、客户住宿管理、客户餐饮管理、客户结账等等。系统的特色归纳如下:
本系统可以运行在多种操作系统平台上(Windows NT/Windows 2000/Windows XP)。数据库管理系统采用Mysql数据库。并且利用安全可靠的Java来编写,使得系统具有很强的移植性和易于维护等特点。
及时全面地处理各种错误异常,特别是对用户提交的信息进行判断,若出现输入错误或信息为空的现象,系统就会及时给予用户出错提示。避免了用户的误操作和输入非法数据的可能性。
用户界面比较友好,操作简单,使用方便。符合酒店管理的基本流程。
本系统基本上满足了酒店管理方面的需要。满足了酒店管理人员对客房管理的工作。在界面上力求做到美观、在操作方面尽量避免由于用户操作不当带来的系统出错现象。但由于时间仓促,本系统还存在一些不足之处,主要体现在:需要进一步修饰和美化;部分模块功能实现有些简单,与实际情况有一定的出入,在以后的学习和工作时间里,我会进一步加强其功能。
附录(部分源代码)
验证码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
CreateVerifyCodeImageBean oneCreateVerifyCodeImageBean=new CreateVerifyCodeImageBean();
, image=();
HttpSession session=();
String verifyCodeInSession=();
("verifyCodeNameInSession",verifyCodeInSession); // 将认证码存入SESSION对象中
("image/jpeg"); //该已经必须要有
("Pragma","No-cache");
("Cache-Control","no-cache");
("Expires", 0);
(image, "JPEG", ()); // 输出图像
}
登陆界面:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
("gb2312");
String verifyCode=("verifyCode");
String userName=("userName");
String passWord=("passWord");
UserInfoRUImple oneUserInfoRUImple=new UserInfoRUImple();
UserInfoPO oneUserInfoPO=new UserInfoPO();
HttpSession session=();
String verifyCodeInSession=(String)("verifyCodeNameInSession");
if((verifyCodeInSession)){
try {
oneUserInfoPO=
(userName, passWord);
} catch (WebException e) {
// TODO Auto-generated catch block
();
}
if(oneUserInfoPO==null){
("errorText","用户名和密码输入错误!");
RequestDispatcher oneRequestDispatcher=(().getInitParameter("forwardShowErrorInfoTargetPage"));
(request, response);
return;
}
else {
RequestDispatcher oneRequestDispatcher=("/");
(request, response);
}
}
else {
("errorText","验证码输入错误!");
RequestDispatcher oneRequestDispatcher=(().getInitParameter("forwardShowErrorInfoTargetPage"));
(request, response);
return;
}
}
住房信息查询:
private void doQueryAssetsInfoAction (HttpServletRequest request,
HttpServletResponse response,
StayInfoActionform oneStayInfoActionform) throws ServletException, IOException{
String sqlQueryWhereString=null;
PageStatePO onePageStatePO=null;
onePageStatePO=new PageStatePO();
(1); //由于是第一次访问,因此获得第一页的数据
();
switch(()){
case :
sqlQueryWhereString="";
break;
case :
if(()!=0){
sqlQueryWhereString="where stayID="+();
}
break;
case :
sqlQueryWhereString="where startDate like '%"+()+"%'";
break;
}
StayInfoCRUDImple oneStayInfoCRUDImple=new StayInfoCRUDImple();
List<StayInfoPO> someStayInfo=null;
try {
someStayInfo=(sqlQueryWhereString,onePageStatePO);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
}
/*
* 将查询的结果保存到requestScope作用域中,实现在页面中显示输出数据
*/
("allStayInfoPOList", someStayInfo);
/*
* 将分页状态对象保存到requestScope作用域中,在页面中显示分页状态有关的各个数据
*/
("onePageStatePO", onePageStatePO);
/*
* 将上次的查询条件保存到requestScope作用域中,有助于分页跳转继续保持相同的查询条件
*/
("sqlQueryWhereString", sqlQueryWhereString);
forwardToSuccessTargetPage(request,response,("ToShowQueryResultTargetPage"));
}
结账界面:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
("gb2312");
String payType=("payType");
String eatingIDString=("eatingID");
String stayIDString=("stayID");
int eatingID=0;
int stayID=0;
if((eatingIDString!=null)&&(()>0)){
eatingID=(eatingIDString);
}
if((stayIDString!=null)&&(()>0)){
stayID=(stayIDString);
}
if(("1")){
EatingInfoPO oneEatingInfoPO=new EatingInfoPO();
EatingInfoCRUDImple oneEatingInfoCRUDImple=new EatingInfoCRUDImple();
try {
oneEatingInfoPO=(eatingID);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
return;
}
("oneEatingInfoPO", oneEatingInfoPO);
("onepayType", 1);
forwardToSuccessTargetPage(request,response,"/payManage/");
}
else{
StayInfoPO oneStayInfoPO=new StayInfoPO();
List<EatingInfoPO> someEatingInfoPO=new ArrayList<EatingInfoPO>();
StayInfoCRUDImple oneStayInfoCRUDImple=new StayInfoCRUDImple();
EatingInfoCRUDImple oneEatingInfoCRUDImple=new EatingInfoCRUDImple();
try {
oneStayInfoPO=(stayID);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
return;
}
("oneStayInfoPO", oneStayInfoPO);
try {
someEatingInfoPO=(stayID);
} catch (WebException e) {
forwardToShowErrorInfoTargetPage(request,response,());
return;
}
("onepayType", 2);
boolean isNull=();
int allFee=0;
if(!isNull){
Iterator<EatingInfoPO> oneIterator=();
while(()){
allFee=allFee+().getFee();
}
allFee=allFee+();
}
("allFee", allFee);
("oneIsNull", isNull);
("someEatingInfoPOInfo", someEatingInfoPO);
forwardToSuccessTargetPage(request,response,"/payManage/");
}
}
展开阅读全文