《Java网络编程》课程设计报告酒店客房管理指导教师:***班级: 1303班组长:*组员: ****完成日期:2016年6月20号运城学院计算机科学与技术系目录第一章问题定义 (3)第二章系统需求分析 (3)2.1 系统建设目标 (3)2.2 可行性分析 (3)2.2.1 技术可行性 (4)2.2.2 经济可行性 (5)2.2.3 运行可行性 (5)25565 63DD 揝\37898 940A 鐊39237 9945 饅30392 76B8皸24587 600B 怋*37451 924B 鉋2.2.4 法律可行性 (5)2.3 系统需求分析 (5)第三章系统总体设计 (6)3.1 系统总体结构设计 (6)3.2 使用结构化方法进行系统分析 (6)3.2.1系统功能建模 (6)3.2.2 学生宿舍管理系统的E-R图 (6)第四章系统的详细设计及其实现 (7)4.1 注册页面 (8)4.2 用户登录 (8)4.3 入住登记 (9)4.4 离店结账并生成结账报表 (11)4.5 房间增加 (13)4.6 房间删除 (14)4.7 房间查询 (15)4.8 房间更新 (15)4.9 客户查询 (16)Z30476 770C 県8Y|g33602 8342 荂-第五章系统测试 (16)165.2 测试方法...................................................175.3 测试步骤...................................................175.4 测试过程...................................................175.5 测试结论...................................................18第六章课程设计体会 (18)第一章问题定义随着人类社会进入信息时代,计算机越来越多地活跃在社会各个领域,成为不可缺少的工具,尤其在管理方面,管理软件的出现使大量繁琐复杂的问题变得简单易行。
在人民生活水平提高的同时,餐饮,住宿,娱乐业在服务行业中占有越来越重要的地位。
要使在当前酒店行业日趋激烈的竞争中脱颖而出,必须努力发展自己在管理方面的特色,避免传统管理方法的失误,使酒店的信誉以及各个管理方面都能够出现零失误,给管理者和普通的营业员带来操作上的方便,对整个酒店各个方面的业务带来快捷,方便,高效的服务,才是管理软件的成功之处。
现今酒店宾馆的规模不断扩大,客户数量急剧增加,有关客户的各种信息也成倍增长,尤其是大量的客房预订信息。
面对庞大的信息量,需要有客户信息管理系统来提高客户管理工作的效率。
通过这样的系统,可以做到信息的规范管理,科学统计和快速查询,从而减少管理方面的工作量。
当前许多酒店正在逐步完善客户信息管理工作,需要一个能满足内部管理需求,提高管理效率的应用系统进行内部管理。
许多酒店经过多年的发展,规模不断扩大,客流量成倍增长,积累了大量的客户信息急需进行统一管理以防信息的流失。
因此,许多酒店需要一个功能全面的客户信息管理系统来进行管理,以使管理客户信息的工作在该系统的配合下更加高效和便捷。
第二章系统需求分析2.1 系统建设目标在对系统初步调查的基础上就可以提出项目的开发目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。
由于传统的手工客房信息管理,管理过程复杂繁琐,低执行效率,并且容易出错。
为了提高工作效率,减少工作中的错误,针对酒店客房管理开发管理软件,让前台客服人员通过电脑操作进行酒店客房管理,为用户节省时间和人力,更能全面、有效地掌握酒店基本情况,及时获取最新的准确资料和信息。
本酒店客房管理系统主要以提高酒店客房服务的速度、精度,改善顾客服务的亲善程度,减少工作差错为目标,减少各项资金支出,提高管理质量,从而能为酒店经营上档次创造条件。
2.2 可行性分析可行性分析是任何一个大型工程正式投入力量之前必须进行的一项工作。
这对于保证资源的合理利用、避免浪费是一个十分重要的,也是项目一旦开始以后能顺利进行的必要保证。
当系统的.:开发目标确定后,就可以从以下三方面对能否实现新系统目标进行可行性分析2.2.1 技术可行性枮67AE $26542 A38344 95C8 闈技术可行性是指:根据现有的技术条件,能否达到所提出的要求;所需要的物理资源是否具备,能否得到。
硬件:计算机的存储量大,运算速度快,成本较低,外部设备的功能好、效率高、可靠性高,通信设备的能力、质量都满足要求。
系统软件:本系统主要采用B/S结构,其中B/S部分采用JSP技术来实现,由前台用户使用、后台系统管理部分两大部分组成,不需安装客户端,被授权用户通过浏览器即可登录系统。
服务器以Win7为操作系统,Mysql为数据库,主体程序Eclipse实现。
客户端以Win7为平台,用浏览器进行系统登陆和页面浏览。
在B/S三层体系结构系统中,用户通过客户端浏览器向网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。
B/S结构简化了客户机的工作,客户机上无需配置客户端软件。
服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。
浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由Web Server完成。
实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷[i]服务器。
Web 分配给了2.2.2 经济可行性经济可行性分析要估计项目的成本和效益,分析项目经济上是否合理,并将费用与效益进行比较,看是否有利。
该酒店客房管理系统开发经费对于一个企业来来说是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以为该企业开发酒店管理系统在经济上是可行的。
2.2.3 运行可行性运行可行性是指所建立的信息系统能否在该企业实现,在当前的操作环境下能否很好的进行,即组织内外是否具备接受和使用新系统的条件。
该酒店管理系统是一个简单的信息管理系统,所耗费的资源非常少,并且将来的操作界面是直接浏览网页的形式,利用鼠标进行傻瓜式的操作,操作中的每一步都会有相应的提示,这样可以让更多的人群在最短的时间内学会使用他。
2.2.4 法律可行性整个系统由于是自行开发,自行使用,在开发过程中没有涉及合同、责任等与法律抵触的方面。
因此,本系统在法律上是可行的。
按上述四方面进行可行性分析、研究后,我们认为该项目是可行的。
2.3 系统需求分析该酒店预订管理系统使用户能迅速而便捷的了解和查询酒店信息,根据自己的需求来预订房间。
一个方便地实现对客房变更、房价及预订信息的自动化操作。
使用该系统全面管理酒店信息,为用户节省时间和人力,更能全面、有效地掌握酒店基本情况,及时获取最新的准确资料和信息。
该软件能系统管理酒店的信息,功能与实现方面有相当的针对性和实用性。
该系统的主要功能有酒店信息管理,房间类型管理,订单信息管理,业务人员编辑和系统用户管理。
酒店客房管理系统需要具有以下的功能:G@, r34772 87D4 蟔26458 675A 杚21184 52C0 勀1)系统管理功能:普通接待人员的注册2)客户管理功能:提供住宿客户信息的登记以及浏览。
3)住房管理功能:可以进行客户入住、房间更换、退房的管理。
4)查询管理功能:提供对所有用户和房间信息的查询。
如:房间状态查询、客户住房信息查询、客户退房查询、管理员信息查询等。
5)房间管理功能:提供房间的信息管理,例如:房间状态,不同类型房价的剩余量的记录。
6)其他特殊功能:不同权限的用户登录实现不同的功能、各类信息的统计。
第三章系统总体设计系统总体设计是对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。
它主要包括系统模块结构设计、数据库设计等内容。
3.1 系统总体结构设计[4],然后再逐层深入,首先设计总体结构直至进本系统设计采用了自顶向下方式进行设计的。
行每一个模块的设计。
总体设计主要是指在系统分析的基础上,针对企业电子商务的目标,刻画系统的内部结构及其相互关系,明确目标系统的各个组成部分、各个组成部分的作用及其相互关系,系统的流程如图所示:系统功能模块图3.2 使用结构化方法进行系统分析3.2.1系统功能建模对用户需求进行分析,画出系统的数据流图,如图所示。
图3.1 酒店客房管理系统的顶层数据流图酒店客房管理系统的二层数据流图3.2 图3.2.2 学生宿舍管理系统的E-R图根据系统数据流程图,我们可以列出以下系统所需的数据项:X nG25649 6431 搱36112 8D10 贐38513 9671 陱客户:姓名、性别、年龄、证件号码、押金、房间号、房间状态用户:账户名、账户密码、姓名、性别、年龄、联系电话房间:房间号、房间类型、房间单价、电话、房间状态款项:已收押金、消费金额、结余金额同时系统还需要进行记录的数据项:入住及退房记录:客户姓名、入住时间、退出时间、管理员查询记录:日期、当天收入金额、支出金额、全部押金.管理员更新记录:房价更改、客户登记、结算金额用户ER图房间ER图客户ER图结算ER图总体ER图3.3 数据库设计根据E-R模型和数据库需求分析,本系统总共涉及10个数据表格。
其中包括用户表、房间表、客户表表、结算表4个基本表,同时还需要不用的用户登录实现不同的功能,因此还需要角色表、角色类型表,同时还引入了房间状态表,实现简单的操作。
本系统的数据表设计如图所示。
Account表Function表Living表vx; L40215 9D17 鴗34941 887D 衽Role表Role_function表Room表Rooms表Roomstate表User表User_role表第四章系统的详细设计及其实现本章所讲的主要内容是该系统的实现方法和原理。
下面来详细介绍系统的实现.4.1 注册页面//注册新用户protected void doZhuCe(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {User user = new User();ResultMsg rmsg=null;try {copyProperties(user, req.getParameterMap()); BeanUtils.getSqlSession();SqlSession sqlsession= MybatisUtil.25034 61CA 懊33517 82ED 苭31816 7C48 籈F24310 5EF6 延39406 99EE 駮23417 5B79 孹sqlsession.insert(User.insert1,user);mit();sqlsession.close();); 尬注册成功truenew rmsg= ResultMsg(} catch (IllegalAccessException e) {Auto-generated catch block TODO//e.printStackTrace();} catch (InvocationTargetException e) {Auto-generated catch block TODO//e.printStackTrace();}outJsonStrAndColsetransToJsonStr(rmsg))JsonUtil.(resp, JsonUtil.}}4.2 用户登录//判断用户名和密码是否正确protected void doCheckLogin(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {29137 71D1 燑+?( 35834 8BFA 诺nBUser(); new User user ={ trycopyProperties(user,req.getParameterMap()); BeanUtils.getSqlSession(); SqlSession sqlsession = MybatisUtil.out.println(user.getAccount());er uu = sqlsession.selectOne(User.select1, user);out.println(ame==+uu.getAccount()+p===+uu.getPwd());System.(uu.getAccount().equals(user.getAccount()) && uu.getPwd().equals(user.getPwd())){ ifreq.getSession().setAttribute(loginuser, uu);正确跳转到主页面// req.getRequestDispatcher(Myjsp/main.jsp).forward(req, resp);}(Exception e) {catch}// TODO Auto-generated catch blocke.printStackTrace();//不正确跳转到登录页面req.getRequestDispatcher(Myjsp/login.jsp);}38791 9787 鞇g24672 6060 恠26011 659B 斛38067 94B3 钳32262 7E06 縆'}4.3 入住登记//添加一条入住信息protected void addAccount(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubAccount acc=new Account();ResultMsg rmsg=null;SqlSession sqlsession=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){String accs= acc.getAccount();21993 55E9 嗩28775 7067 灧22439 57A7 垧g28690 7012 瀒Q20653 50AD 傭Account accse=new Account();Live live=new Live();Date date=new Date();accse.setAccount(accs);System.out.println(accs-----------+accse);Account acclive=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){String accs= acc.getAccount();磋ub30923 78CB €40130 9CC2 鳂.nAccount accse=new Account();Live live=new Live();Date date=new Date();accse.setAccount(accs);System.out.println(accs-----------+accse);Account acclive=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);}}Room ro=new Room();int roomid=acc.getRoomidfk();int statidfk=acc.getStateidfk();ro.setRoomid(roomid);ro.setStateidfk(statidfk);35750 8BA6 讦36558 8ECE 軎21631 547F 呿240577 9E81 麁N39684 9B04 鬄34410 866A 虪sqlsession.update(Acc.update2, ro);mit();sqlsession.close();); 操作成功浲杳渽睥删獥汵?杳琨畲?} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace(););浲杳渽睥删獥汵?杳琨畲?操作失败}JsonUtil.outJsonStrAndColse(resp, JsonUtil.transToJsonStr(rmsg));}}4.4 离店结账并生成结账报表//结账信息protected void Delete(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubint livid=Integer.parseInt(req.getParameter(livid));硶30838 7876 奦{i22886 5966 罰c7?24 7F70int bill=Integer.parseInt(req.getParameter(ill));System.out.println(livid====+livid);System.out.println(ill== + bill);SqlSession sqlsession=MybatisUtil.getSqlSession();ResultMsg rmsg=null;Live live = new Live();live.setLivid(livid);live.setBill(bill);try{Live lives=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);Live live2 = sqlsession.selectOne(Live.select6, livid);mit();証8A3C35388崷5D3723863澾6FBE2860635303 89E7 觧26989 696D 業27266 6A82 檂sqlsession.close();StringBuffer sb = new StringBuffer();sb.append(<div class = 'billlist'><h3 style = 'text-align: center;'>账单</h3>姓名:+live2.getAccount().getAccount());sb.append(</br>);+live2.getRoomnumber().getRoomnumber()); 扳愮灰湥? 房间号:sb.append(</br>);+live2.getCashpledge()); 扳愮灰湥? 押金:sb.append(</br>);+live2.getBill()); 扳愮灰湥? 消费:sb.append(</br>);+(live2.getCashpledge() - live2.getBill())); 结余:扳愮灰湥?sb.append(</br>);+live2.getCheckdate()); 时间:扳愮灰湥?sb.append(</br>);sb.append(</br>););欢迎下次光临!扳愮灰湥?rmsg=new ResultMsg(true,sb.toString());}catch(Exception e){e.printStackTrace();32709 7FC5 翅20291 4F43 佃24141 5E4D 幍25480 6388 授37536 92A0 銠31731 7BF3 篳36643 8F23 輣$); 结算失败浲杳渽睥删獥汵?杳琨畲? }JsonUtil.outJsonStrAndColse(resp, JsonUtil.transToJsonStr(rmsg));}}4.5 房间增加//添加房型protected void addType(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubRoomType types=new RoomType();ResultMsg rmsg=null;SqlSession sqlsession=MybatisUtil.getSqlSession();try {BeanUtils.copyProperties(types, req.getParameterMap());System.out.println(types.getRoomsid());if(types.getRoomsid()==0){System.out.println(888888);yg淿28159 6DFF 儂20738 5102 喔21908 5594 湔628244 6E54 取21462 53D6sqlsession.insert(RoomType.insert1, types);}else{System.out.println(000000);sqlsession.update(RoomType.update1,types);mit();sqlsession.close();浲杳渽睥删獥汵?杳琨畲? 操作成功 );} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace(););操作失败浲杳渽睥删獥汵?杳琨畲?}JsonUtil.outJsonStrAndColse(resp, JsonUtil.transToJsonStr(rmsg));}}4.6 房间删除//移除一种房间类型26867 68F3 棳439200 9920 餠40540 9E5C 鹜 25890 6522 攢 38754 9762 面protected void toremove(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubResultMsg rmsg=null;try{String roomsids=req.getParameter(oomsid);int roomsid=Integer.parseInt(roomsids);SqlSession sqlsession=MybatisUtil.getSqlSession();sqlsession.delete(RoomType.delete1,roomsid);mit();sqlsession.close(););删除成功浲杳渽睥删獥汵?杳琨畲?}catch(Exception e){e.printStackTrace();); 删除失败浲杳渽睥删獥汵?杳琨畲?}JsonUtil.outJsonStrAndColse(resp, JsonUtil.transToJsonStr(rmsg));}1TJ 35797 8BD5 试8N29631 73BF 玿4.7 房间查询//查询所有房间类型protected void doList(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubSqlSession sqlsession=MybatisUtil.getSqlSession();List<RoomType> typelist =sqlsession.selectList(RoomType.select1);String jsonStr = JsonUtil.transToJsonStr(typelist);System.out.println(typelist.get(0).getRoomtype());JsonUtil.outJsonStrAndColse(resp,jsonStr);}protected void toUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubString roomsids=req.getParameter(oomsid);int roomsid=Integer.parseInt(roomsids);SqlSession sqlsession=MybatisUtil.getSqlSession();RoomType type =sqlsession.selectOne(RoomType.select2,roomsid);M28207 6E2F 港26505 6789 枉X24550 5FE6 忦u23657 5C69 屩26059 65CB 旋req.setAttribute( ype, type);req.getRequestDispatcher(Myjsp/room/rotypeedit.jsp).forward(req, resp);4.8 房间更新//更新房间信息protected void toUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubString roomsids=req.getParameter(oomsid);int roomsid=Integer.parseInt(roomsids);SqlSession sqlsession=MybatisUtil.getSqlSession();RoomType type =sqlsession.selectOne(RoomType.select2,roomsid);req.setAttribute( ype, type);req.getRequestDispatcher(Myjsp/room/rotypeedit.jsp).forward(req, resp); }4.9 客户查询//查询所有现入住客户protected void AccList(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubSqlSession sqlsession=MybatisUtil.getSqlSession();List<Account> Acclist =sqlsession.selectList(Acc.select1);JsonUtil.outJsonStrAndColse(resp,JsonUtil.transToJsonStr(Acclist));}protected void toUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int accid=Integer.parseInt(req.getParameter(accid));SqlSession sqlsession=MybatisUtil.getSqlSession();Account acc =sqlsession.selectOne(Acc.select2,accid);req.setAttribute(acc,acc);req.getRequestDispatcher(Myjsp/room/accountedit.jsp).forward(req, resp);}第五章系统测试5.1 测试综述系统测试其实就是对系统实现的一个校正。