Java课程设计报告报告酒店客房管理系统.docx
《Java课程设计报告报告酒店客房管理系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告报告酒店客房管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
Java课程设计报告报告酒店客房管理系统
《Java网络编程》
课程设计报告
酒店客房管理
指导教师:
***
班级:
1303班
组长:
*
组员:
*
*
*
*
完成日期:
2016年6月20号
运城学院计算机科学与技术系
第一章问题定义
随着人类社会进入信息时代,计算机越来越多地活跃在社会各个领域,成为不可缺少的工具,尤其在管理方面,管理软件的出现使大量繁琐复杂的问题变得简单易行。
在人民生活水平提高的同时,餐饮,住宿,娱乐业在服务行业中占有越来越重要的地位。
要使在当前酒店行业日趋激烈的竞争中脱颖而出,必须努力发展自己在管理方面的特色,避免传统管理方法的失误,使酒店的信誉以及各个管理方面都能够出现零失误,给管理者和普通的营业员带来操作上的方便,对整个酒店各个方面的业务带来快捷,方便,高效的服务,才是管理软件的成功之处。
现今酒店宾馆的规模不断扩大,客户数量急剧增加,有关客户的各种信息也成倍增长,尤其是大量的客房预订信息。
面对庞大的信息量,需要有客户信息管理系统来提高客户管理工作的效率。
通过这样的系统,可以做到信息的规范管理,科学统计和快速查询,从而减少管理方面的工作量。
当前许多酒店正在逐步完善客户信息管理工作,需要一个能满足内部管理需求,提高管理效率的应用系统进行内部管理。
许多酒店经过多年的发展,规模不断扩大,客流量成倍增长,积累了大量的客户信息急需进行统一管理以防信息的流失。
因此,许多酒店需要一个功能全面的客户信息管理系统来进行管理,以使管理客户信息的工作在该系统的配合下更加高效和便捷。
第二章系统需求分析
2.1系统建设目标
在对系统初步调查的基础上就可以提出项目的开发目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。
由于传统的手工客房信息管理,管理过程复杂繁琐,低执行效率,并且容易出错。
为了提高工作效率,减少工作中的错误,针对酒店客房管理开发管理软件,让前台客服人员通过电脑操作进行酒店客房管理,为用户节省时间和人力,更能全面、有效地掌握酒店基本情况,及时获取最新的准确资料和信息。
本酒店客房管理系统主要以提高酒店客房服务的速度、精度,改善顾客服务的亲善程度,减少工作差错为目标,减少各项资金支出,提高管理质量,从而能为酒店经营上档次创造条件。
2.2可行性分析
可行性分析是任何一个大型工程正式投入力量之前必须进行的一项工作。
这对于保证资源的合理利用、避免浪费是一个十分重要的,也是项目一旦开始以后能顺利进行的必要保证。
当系统的开发目标确定后,就可以从以下三方面对能否实现新系统目标进行可行性分析:
2.2.1技术可行性
技术可行性是指:
根据现有的技术条件,能否达到所提出的要求;所需要的物理资源是否具备,能否得到。
硬件:
计算机的存储量大,运算速度快,成本较低,外部设备的功能好、效率高、可靠性高,通信设备的能力、质量都满足要求。
系统软件:
本系统主要采用B/S结构,其中B/S部分采用JSP技术来实现,由前台用户使用、后台系统管理部分两大部分组成,不需安装客户端,被授权用户通过浏览器即可登录系统。
服务器以Win7为操作系统,Mysql为数据库,主体程序Eclipse实现。
客户端以Win7为平台,用浏览器进行系统登陆和页面浏览。
在B/S三层体系结构系统中,用户通过客户端浏览器向网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。
B/S结构简化了客户机的工作,客户机上无需配置客户端软件。
服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。
浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由WebServer完成。
实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了Web[]服务器。
2.2.2经济可行性
经济可行性分析要估计项目的成本和效益,分析项目经济上是否合理,并将费用与效益进行比较,看是否有利。
该酒店客房管理系统开发经费对于一个企业来来说是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以为该企业开发酒店管理系统在经济上是可行的。
2.2.3运行可行性
运行可行性是指所建立的信息系统能否在该企业实现,在当前的操作环境下能否很好的进行,即组织内外是否具备接受和使用新系统的条件。
该酒店管理系统是一个简单的信息管理系统,所耗费的资源非常少,并且将来的操作界面是直接浏览网页的形式,利用鼠标进行傻瓜式的操作,操作中的每一步都会有相应的提示,这样可以让更多的人群在最短的时间内学会使用他。
2.2.4法律可行性
整个系统由于是自行开发,自行使用,在开发过程中没有涉及合同、责任等与法律抵触的方面。
因此,本系统在法律上是可行的。
按上述四方面进行可行性分析、研究后,我们认为该项目是可行的。
2.3系统需求分析
该酒店预订管理系统使用户能迅速而便捷的了解和查询酒店信息,根据自己的需求来预订房间。
一个方便地实现对客房变更、房价及预订信息的自动化操作。
使用该系统全面管理酒店信息,为用户节省时间和人力,更能全面、有效地掌握酒店基本情况,及时获取最新的准确资料和信息。
该软件能系统管理酒店的信息,功能与实现方面有相当的针对性和实用性。
该系统的主要功能有酒店信息管理,房间类型管理,订单信息管理,业务人员编辑和系统用户管理。
酒店客房管理系统需要具有以下的功能:
1)系统管理功能:
普通接待人员的注册
2)客户管理功能:
提供住宿客户信息的登记以及浏览。
3)住房管理功能:
可以进行客户入住、房间更换、退房的管理。
4)查询管理功能:
提供对所有用户和房间信息的查询。
如:
房间状态查询、客户住房信息查询、客户退房查询、管理员信息查询等。
5)房间管理功能:
提供房间的信息管理,例如:
房间状态,不同类型房价的剩余量的记录。
6)其他特殊功能:
不同权限的用户登录实现不同的功能、各类信息的统计。
第三章系统总体设计
系统总体设计是对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。
它主要包括系统模块结构设计、数据库设计等内容。
3.1系统总体结构设计
本系统设计采用了自顶向下方式进行设计的。
首先设计总体结构[4],然后再逐层深入,直至进行每一个模块的设计。
总体设计主要是指在系统分析的基础上,针对企业电子商务的目标,刻画系统的内部结构及其相互关系,明确目标系统的各个组成部分、各个组成部分的作用及其相互关系,系统的流程如图所示:
系统功能模块图
3.2使用结构化方法进行系统分析
3.2.1系统功能建模
对用户需求进行分析,画出系统的数据流图,如图所示。
图3.1酒店客房管理系统的顶层数据流图
图3.2酒店客房管理系统的二层数据流图
3.2.2学生宿舍管理系统的E-R图
根据系统数据流程图,我们可以列出以下系统所需的数据项:
客户:
姓名、性别、年龄、证件号码、押金、房间号、房间状态
用户:
账户名、账户密码、姓名、性别、年龄、联系电话
房间:
房间号、房间类型、房间单价、电话、房间状态
款项:
已收押金、消费金额、结余金额
同时系统还需要进行记录的数据项:
入住及退房记录:
客户姓名、入住时间、退出时间、
管理员查询记录:
日期、当天收入金额、支出金额、全部押金
管理员更新记录:
房价更改、客户登记、结算金额
用户ER图
房间ER图
客户ER图
结算ER图
总体ER图
3.3数据库设计
根据E-R模型和数据库需求分析,本系统总共涉及10个数据表格。
其中包括用户表、房间表、客户表表、结算表4个基本表,同时还需要不用的用户登录实现不同的功能,因此还需要角色表、角色类型表,同时还引入了房间状态表,实现简单的操作。
本系统的数据表设计如图所示。
Account表
Function表
Living表
Role表
Role_function表
Room表
Rooms表
Roomstate表
User表
User_role表
第四章系统的详细设计及其实现
本章所讲的主要内容是该系统的实现方法和原理。
下面来详细介绍系统的实现
4.1注册页面
//注册新用户
protectedvoiddoZhuCe(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
Useruser=newUser();
ResultMsgrmsg=null;
try{
BeanUtils.copyProperties(user,req.getParameterMap());
SqlSessionsqlsession=MybatisUtil.getSqlSession();
sqlsession.insert("User.insert1",user);
mit();
sqlsession.close();
rmsg=newResultMsg(true,"注册成功");
}catch(IllegalAccessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InvocationTargetExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
JsonUtil.outJsonStrAndColse(resp,JsonUtil.transToJsonStr(rmsg))
}
}
4.2用户登录
//判断用户名和密码是否正确
protectedvoiddoCheckLogin(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
Useruser=newUser();
try{
BeanUtils.copyProperties(user,req.getParameterMap());
SqlSessionsqlsession=MybatisUtil.getSqlSession();
System.out.println(user.getAccount());
Useruu=sqlsession.selectOne("User.select1",user);
System.out.println("name=="+uu.getAccount()+"p==="+uu.getPwd());
if(uu.getAccount().equals(user.getAccount())&&uu.getPwd().equals(user.getPwd())){
req.getSession().setAttribute("loginuser",uu);
//正确跳转到主页面
req.getRequestDispatcher("Myjsp/main.jsp").forward(req,resp);
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
//不正确跳转到登录页面
req.getRequestDispatcher("Myjsp/login.jsp");
}
}
4.3入住登记
//添加一条入住信息
protectedvoidaddAccount(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
//TODOAuto-generatedmethodstub
Accountacc=newAccount();
ResultMsgrmsg=null;
SqlSessionsqlsession=MybatisUtil.getSqlSession();
System.out.println(req.getParameterMap());
try{
BeanUtils.copyProperties(acc,req.getParameterMap());
System.out.println("addddddddddddddddacc==========="+acc);
if(acc.getAccid()==0){
System.out.println(888888);
sqlsession.insert("Acc.insert1",acc);
if(acc.getStateidfk()==3){
Stringaccs=acc.getAccount();
Accountaccse=newAccount();
Livelive=newLive();
Datedate=newDate();
accse.setAccount(accs);
System.out.println("accs-----------"+accse);
Accountacclive=sqlsession.selectOne("Acc.select5",acc.getAccid());
live.setCheckdate(date.toLocaleString());
live.setAccidfk(acclive.getAccid());
live.setRoomidfk(acclive.getRoomidfk());
live.setCashpledge(acc.getCashpledge());
sqlsession.insert("Acc.insert2",live);
}
}else{
System.out.println("updateacc=============="+acc);
sqlsession.update("Acc.update1",acc);
if(acc.getStateidfk()==3){
Stringaccs=acc.getAccount();
Accountaccse=newAccount();
Livelive=newLive();
Datedate=newDate();
accse.setAccount(accs);
System.out.println("accs-----------"+accse);
Accountacclive=sqlsession.selectOne("Acc.select5",accse);
live.setCheckdate(date.toLocaleString());
live.setAccidfk(acclive.getAccid());
live.setRoomidfk(acclive.getRoomidfk());
live.setCashpledge(300);
sqlsession.insert("Acc.insert2",live);
}
}
Roomro=newRoom();
introomid=acc.getRoomidfk();
intstatidfk=acc.getStateidfk();
ro.setRoomid(roomid);
ro.setStateidfk(statidfk);
sqlsession.update("Acc.update2",ro);
mit();
sqlsession.close();
rmsg=newResultMsg(true,"操作成功");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
rmsg=newResultMsg(true,"操作失败");
}
JsonUtil.outJsonStrAndColse(resp,JsonUtil.transToJsonStr(rmsg));
}
}
4.4离店结账并生成结账报表
//结账信息
protectedvoidDelete(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
//TODOAuto-generatedmethodstub
intlivid=Integer.parseInt(req.getParameter("livid"));
intbill=Integer.parseInt(req.getParameter("bill"));
System.out.println("livid===="+livid);
System.out.println("bill=="+bill);
SqlSessionsqlsession=MybatisUtil.getSqlSession();
ResultMsgrmsg=null;
Livelive=newLive();
live.setLivid(livid);
live.setBill(bill);
try{
Livelives=sqlsession.selectOne("Live.select4",livid);
/*sqlsession.delete("Live.delete1",livid);
System.out.println("accid======="+accid);
sqlsession.delete("Live.delete2",accid);*/
sqlsession.update("Acc.update3",lives.getAccidfk());
sqlsession.update("Room.update_room_state",lives);
sqlsession.update("Live.update1",live);
Livelive2=sqlsession.selectOne("Live.select6",livid);
mit();
sqlsession.close();
StringBuffersb=newStringBuffer();
sb.append("center;'>账单姓名:
"+live2.getAccount().getAccount());
sb.append("");
sb.append("房间号:
"+live2.getRoomnumber().getRoomnumber());
sb.append("");
sb.append("押金:
"+live2.getCashpledge());
sb.append("");
sb.append("消费:
"+live2.getBill());
sb.append("");
sb.append("结余:
"+(live2.getCashpledge()-live2.getBill()));
sb.append("");
sb.append("时间:
"+live2.getCheckdate());
sb.append("");sb.append("");
sb.append("欢迎下次光临!
");
rmsg=newResultMsg(true,sb.toString());
}catch(Exceptione){
e.printStackTrace();
rmsg=newResultMsg(true,"结算失败");
}
JsonUtil.outJsonStrAndColse(resp,JsonUtil.transToJsonStr(rmsg));
}
}
4.5房间增加
//添加房型
protectedvoidaddType(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
//TODOAuto-generatedmethodstub
RoomTypetypes=newRoomType();
ResultMsgrmsg=null;
SqlSessionsqlsession=MybatisUtil.getSqlSession();
try{
BeanUtils.copyProperties(types,req.getParameterMap());
System.out.println(types.getRoomsid());
if(types.getRoomsid()==0){
System.out.println(888888);
sqlsession.insert("RoomType.insert1",types);
}else{
System.out.println(000000);
sqlsession.update("RoomType.update1",types);
}
mit();
sqlsession.close();
rmsg=newResultMsg(true,"操作成功");
}catch(Exception