酒店网上订房管理系统设计与开发分析研究 计算机专业_第1页
酒店网上订房管理系统设计与开发分析研究 计算机专业_第2页
酒店网上订房管理系统设计与开发分析研究 计算机专业_第3页
酒店网上订房管理系统设计与开发分析研究 计算机专业_第4页
酒店网上订房管理系统设计与开发分析研究 计算机专业_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1引言酒店的基本内涵就是为旅客提供住宿服务,今天的酒店与过去的酒店相比有很大的变化。随着社会的进步,经济的迅猛发展,社会人员流动频繁,酒店管理工作越来越复杂。如何实现酒店管理的自动化,带来更大的收益。如何利用现代社会赋予我们的新观念、新手段创造更大的财富,针对酒店预订这一环节,就需要简化后的酒店预订系统。1.1研究背景基于酒店行业需要便利快捷的管理模式,计算机管理可以使酒店业运作的更加可靠、快捷和高效,不但节省了管理者的时间,更是对旅客的方便。本系统提供给旅客以快捷、准确和可靠的服务,同时,也提高了酒店自身的管理水平。本系统是针对酒店的具体业务而开发的。业务管理以酒店前台管理为核心,为旅客提供高效的服务,减免手工处理的繁琐与误差,及时、准确的反映酒店的经营情况。系统具体有以下特点:系统具有高可靠性、安全性、操作性。模块化结构,可根据业务需要,十分方便的进行添加、删除、修改和快速查询的功能。直观的图形用户界面,更加简便快捷。系统的实用性:本系统的开发成本低,功能针对酒店前台管理功能,实用性强,可维护性好。1.2研究意义鉴于目前酒店预订工作效率低,不能及时了解旅客的需要,不能更好的适应当前旅客要求。手工管理存在许多弊端,由于不可避免的人为因素,造成数据丢失、误报。计算机信息化管理有着存储量大,速度快等许多优点,因此利用计算机提供信息对旅客预订过程形成一套动态的管理。1.3国内外研究情况随着市场经济和世界贸易的不断深入,竞争激烈,酒店行业要做到能及时满足旅客需要,按时间分配房间,及时解决旅客退房等突发情况,这必须计划出一个方案,使酒店入住率提高。随着互联网技术的发展普及,开设互联网网上酒店预订系统,不但能够为国内旅客提供有效的订房服务,同时也能不受地域限制,为外国旅客提供异地预订服务。计算机管理系统的应用使酒店经济效益得到提高,全面的信息采集和处理可以辅助提高酒店的决策水平。1.4研究系统目的显而易见的巨大利益,促使酒店行业的变更,使用更为便捷、安全的管理方法可以使酒店得到更大利润。现代计算机技术的发展,使得酒店管理方式发生变化,就连酒店数据的存储方式也改变成使用数据库完成数据管理。酒店管理系统主要管理操作包括:客户信息管理、客房管理以及对酒店资料管理等,它们是酒店管理系统的核心业务。2系统分析2.1酒店预定系统简介新中环酒店预定系统首先会呈现给用户一个友好的欢迎主界面,功能是介绍酒店的优点和特色,也给用户进行服务的预定提供一个平台,如果用户已经有定单号又想查询相关信息或想对本酒店有什么意见分别可以点击"查询订单"和"心声评论",如果没有,则可以点击预定房间进入房间预定界面,当客人输入好名字,入住日期和天数后方可提交,由于只有会员才可以对房间进行预定,所以用户会跳转到一个登录界面,如果没用户名则可以注册一个,否则直接登录,系统将生成一个订单号给客户供以后使用。本酒店主要使用到的工具和技术有Tomcat、Myeclipse、SQLServer2005、JAVA、JSPServlet、MVC模式。Servlet主要由JAVA语言编写,JSP页面则大多数用HTML语言编写,做好的JSP文件都会发布到WEB服务器(其实就是Tomcat)中才可以运行,最后以MVC的形式完成作品,本作品的MVC模式主要体现在JSPSERVLET还有JAVABEAN各负各的职责,视图是由我们的JSP完成、模型由我们的JAVABEAN完成,而控制则由我们的Servlet完成,而体现出MVC模型。2.2需求分析经过对酒店预订流程的大概了解及对网上提供的预定系统的参考和交流,此系统应有如下功能:(1)管理端有如下功能:管理员的管理;处理订单;添加新资源;资源的修改;资源的查询;(2)客户端有如下功能:客户注册和登录;浏览酒店提供的各种预订资源,并根据自己需要下订单;客户注册成功后可以下达订单;客户登录后可以查看自己已提交订单的处理情况;用户登录后可以修改自己的订单并对订单处理;3系统设计通过对需求的分析,对于此系统的功能和性能要求有了一定的了解,进而可以确定系统的开发目标和初步的功能结构。3.1系统目标通过需求分析,最终确定系统要实现的目标如下。实现需求分析阶段所提出的功能;界面清晰明了,各个界面均具有导航功能,方便客户浏览。3.2系统功能结构本系统主要包括酒店各项资源的基本信息、订单的基本信息、添加资源、订单处理等部分,其系统结构如图3_2所示:如图3_2系统结构图3.3系统整体的用例模型客人主要使用账号登录系统就可以查看酒店的客房选择适合自己的房间,提前预订。酒店管理者可以登录自己的账号行驶相应的权利对酒店进行管理,例如查询客户信息,入住情况,客房信息等。游客用例图如3_3_1所示:图3_3_1游客用例图前台管理员用例图如图3_3_2所示:图3_3_2前台管理员用例图用例描述如下:用例编号:001用例名:注册用户用例描述:本用例用于游客的注册和个人信息的填写。参与者:游客前置条件:网上酒店预定系统正常运行期间。后置条件:用例成功后,添加一名新用户。基本路径1.当游客希望注册个人信息以使用本系统时,用例启动;2.系统转到用户注册页面,提示用户输入个人信息;3.用户输入个人信息;4.系统检查信息是否由有效,将信息存入数据库;5.注册成功返回界面;扩展点1a.如果用户输入的注册信息无效,系统显示错误信息并转到错误页面,用户重新填写信息;或者取消注册,用例结束用例编号:002用例名:浏览主页用例描述:本用例用于游客在网上酒店预定系统中浏览主页。参与者:游客前置条件:网上酒店预定系统正常运行期间。后置条件:无基本路径1.当游客进入本系统时,用例启动;2.进入本用例,浏览网上酒店预定系统中的资源;扩展点1a.可以将套间加入订单管理。用例编号:003用例名:预定管理用例描述:本用例用于会员在网上酒店预定系统中将需预定的套间加入订单管理中。参与者:会员前置条件:网上酒店预定系统正常运行期间。后置条件:用例成功后,订单管理中套间状态发生变化基本路径1.当会员浏览某本预定系统提出加入订单管理时,用例启动;2.系统将所浏览图书加入购物车;扩展点1a.会员.可以管理预定。1a1.会员可以添加预定。1a2.会员可以删除订单管理中的套间。用例编号:004用例名:个人订单管理用例描述:本用例用于会员查看个人相关信息。参与者:会员前置条件:会员登录。后置条件:用例成功后,可以查看个人订单和取消订单。基本路径1.会员提出查询订单时,用例启动;2.系统列出所有有关该会员的相关信息(注册信息);扩展点1a.会员可以查看订单信息;1a1.会员取消订单;用例编号:005用例名:提交订单用例描述:本用例用于会员提交订单信息。参与者:会员前置条件:会员登录。后置条件:用例成功后,订单提交到系统员工接受订单并作相关处理。基本路径1.会员进入网上酒店预定系统会员提交订单界面,并在界面中提交订单;2.界面将会员提交的订单信息传递给控制对象;3.控制对象向数据库中提交订单信息数据;4.控制对象将成功提交的订单信息返回界面;5.会员在界面获得订单提交成功的信息;扩展点1a.提交订单错误。1a1.会员所选套间无房。用例编号:006用例名:前台管理员登录用例描述:前台管理员根据所注册的用户名和密码,登录到网上酒店预订系统。参与者:前台管理员前置条件:网上酒店预订系统正常运行期间。、后置条件:如果管理员登录成功,该管理员可以对网上酒店预订系统进行相关操作;若登录不成功,该管理员不能进入网上酒店预订系统。基本路径1.前台管理员希望通过网上酒店预订系统进行某一项操作;2.前台管理员登录系统,在登录页面输入自己的用户名和密码并提交;3.系统将前台管理员提交的用户名和密码传递到的数据库中检查用户合法身份的方法中,该方法将用户信息与数据库中的用户信息进行比较,检查用户信息中是否存在此员工的信息,系统记录并显示当前登录用户;4.检查通过,将验证结果返回到登录界面显示;5.前台管理员在登录界面获得验证结果;扩展点1a.系统标识码有效性检查失败1a1.前台管理员重新输入识别码;1a2.前台管理员离开或重新输入账号;1b.前台管理员输入无效次数超过限制(不超过3次),系统显示提示信息,用例终止。用例编号:007用例名:主页管理用例描述:本用例用于前台管理员管理套间信息。参与者:前台管理员前置条件:员工登录。后置条件:用例成功后,套间信息被添加、修改或删除。基本路径1.前台管理员提出查看套间信息时,用例启动;2.系统列出所有符合该管理员要求的资源;3.管理员提出所要执行的操作;4.如果前台管理员需要修改套间信息则修改套间信息,需要删除套间信息则删除套间信息,需要添加套间信息则添加套间信息;5.保存信息;扩展点1a.系统没有所需套间的有关信息;1a1.系统没有查到套间的信息;1a2.系统弹出错误信息提示没有该套间信息;1a3.系统返回继续查询其他套间的信息;2a.添加的数据为非法数据2a1.系统显示输入错误提示信息2a2.当前用户重新添加套间信息或退出系统或返回进行其他操用例编号:008用例名:订单管理用例描述:本用例用于前台管理员管理订单。参与者:前台管理员前置条件:前台管理员登录。后置条件:用例成功后,用户订单处理为已预定。基本路径:1.前台管理员提出符合该前台管理员要求的订单时,用例启动;2.系统列出所有符合该前台管理员要求的订单;3.前台管理员提出所要执行的操作;4.如果前台管理员需要修改订单信息则修改订单信息,需要删除订单信息则删除订单信息;5.保存信息;扩展点:无用例编号:009用例名:查看客房信息用例描述:本用例用于前台管理员管理客房。参与者:前台管理员前置条件:前台管理员登录。后置条件:用例成功后,可查询管理相关信息。基本路径:1.前台管理员提出符合该前台管理员要求的套间信息时,用例启动;2.系统列出所有符合该前台管理员要求的功能;3.前台管理员提出所要执行的操作;4.如果前台管理员需要查询入住情况则查看入住信息,需要管理退房则删除该套间信息;5.保存信息;扩展点:无3.4数据库设计开发一个系统之前,做好数据库分析和设计是十分必要的。良好的数据库设计,使得开发变得相对简单,耐用对系统以后的更新换代有重要作用。此系统由Tomcat+SQLServer构成,是一个基于WEB的小型系统,所以选择常用的中小型数据库SQLServer。同时SQLServer比MYSQL功能更强大,可在JAVA程序里编写事务对数据进行处理,数据的完整性会有更好的保障,不过由于时间有限,我们没有用到事务的功能,只是选择了SQLServer。项目E-R图该系统主要包括的实体有用户、订单,还有一些后面真实开发中还要用到的实体(现在还没做到特别完善,所以只先设计了这两个表)。下面通过介绍各实体的E-R图,通过E-R图来了解各实体的属性。用户E-R图如下图3_4_1所示。图3_4_1用户E-R图管理员E-R图如下图3_4_2所示。图3_4_2管理员E-R图酒店预定客房订单E-R图如下图3_4_3所示。图3_4_3酒店预定客房订单E-R图4详细设计4.1功能模块划分4.1.1主界面模块该模块是整个酒店预订管理系统的前台,从这里可以连接到其他模块,还有一些关于酒店的一些介绍。其主要代码main.html如下:下达订单界面:当用户按下预定按钮后,客户可以选择入住时间和入住晚数。主要代码如下:<h2>商务套房:</h2><formid="date"action="/jiudian/servlet/RegAndLoginServlet"method="post">入住客人姓名:<inputtype="text"name="guestname"style="width:54px;"/><br/><br/>4.1.3登录系统框架在提交定单并生成定单之前需要会员才可以完成,登录的主要代码如下:<formname="login"action="/jiudian/servlet/RegAndLoginServlet"method="post"><divclass="fields"><pclass="seperror"><labelclass="small"for="user01">Username</label><inputtype="text"value=""class="sText"name="username"id="user01"/></p><br/><pclass="sep"><labelclass="small"for="pass01">Password</label><inputtype="password"value=""class="sText"name="userpassword"id="pass01"/></p><divclass="action"><inputtype="button"class="butDef"value="Register"id="Register"onclick="regi()"/><inputtype="hidden"name="action"value="login"><inputtype="submit"class="butDef"value="Login"id="loginbtn"onClick="checkLoginForm()"/></div></div></form>登录界面的Servlet主要代码如下所示:图4_1_3登录界面4.1.4注册界面如果用户没有会员用户和密码,则可以点击Register注册一个用户和密码。主要JSP代码如下所示:<formid="reg"class="appnitro"method="post"action="/jiudian/servlet/RegAndLoginServlet"><divclass="form_description"><p>注册成功我们成为我们的一员,让我们可以竭诚为你提供最好的服务!</p></div><ul><liid="li_4"><labelclass="description"for="username">用户名:</label><div><inputid="username"name="username"class="elementtextmedium"type="text"maxlength="255"value=""onblur="checkEmail()"onfocus="hiddenError()"onkeypress="value=value.replace()"/></div></li><liid="li_2"><labelclass="description"for="password">设置密码:</label><div><inputid="password"name="password"class="elementtextmedium"type="text"maxlength="255"/></div></li><liid="li_3"><labelclass="description"for="check">确认密码:</label><div><inputid="check"name="check"class="elementtextmedium"type="text"maxlength="255"/></div></li><liclass="buttons"><inputtype="hidden"name="action"value="reg"><inputid="loginbtn"class="button_text"type="submit"name="loginbtn"value="立即注册"onclick="checkRegForm()"/></li></ul></form>注册界面的Servlet代码如下所示:if(action.equals("reg")){System.out.println("11");//得到注册用户填写的资料Stringusername=req.getParameter("username").trim();Stringpassword=req.getParameter("password").trim();Stringcheck=req.getParameter("check").trim();System.out.println("22");//拼装查看用户是否存在的SQLStringsqla="select*fromuser1whereusername='"+username+"'";if(username==""){res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}if(password==""){res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}if(check==""){res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}if(password.length()<6){res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}if(password!=check){res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}if(DB.isExist(sqla)){//res.sendRedirect("http://localhost:8080/jiudian/login_register.jsp");//跳转到主页return;}else{//插入新用户的SQLStringsql="insertintouser1values('"+username+"','"+password+"')";DB.update(sql);//执行插入动作res.sendRedirect("http://localhost:8080/jiudian/login.jsp");//跳转到主页}req.setAttribute("msg",msg);//转发消息}elseif(action.equals("login")){System.out.println("1");session.removeAttribute("username");//从session中移除当前登陆用户Stringusername=req.getParameter("username").trim();//得到登陆用户名System.out.println(username);Stringpwd=req.getParameter("userpassword").trim();//得到登陆密码System.out.println(pwd);//拼装查看用户是否存在的SQLStringsqla="select*fromuser1whereusername='"+username+"'";System.out.println("2");if(DB.isExist(sqla)){System.out.println("3");Stringsql="selectpasswordfromuser1whereusername='"+username+"'";Stringpassword=DB.getInfo(sql).trim();//从数据库得到密码System.out.println("4");if(pwd.equals(password)){session.setAttribute("username",username);//登陆成功res.sendRedirect("http://localhost:8080/jiudian/success.jsp");//跳转到主页}else{msg=username+"密码不正确!!!<br><br>"+"<ahref=login.jsp>重新登陆</a>";req.setAttribute("msg",msg);//将信息发送到信息显示页面res.sendRedirect("http://localhost:8080/jiudian/fail.jsp");}}else{msg=username+"此用户名不存在!!!<br><br>"+"<ahref=login.jsp>重新登陆</a>";req.setAttribute("msg",msg);//将信息发送到信息显示页面res.sendRedirect("http://localhost:8080/jiudian/NoPerson.jsp");}}elseif(action.equals("book_businessRoom")){System.out.println("111");//得到注册用户填写的资料Stringguestname=req.getParameter("guestname");StringorderNum="ZCSYHQ"+System.currentTimeMillis();Stringyear=req.getParameter("years");Stringmonth=req.getParameter("months");Stringday=req.getParameter("days");Stringdate=year+"-"+month+"-"+day;StringdayNum=req.getParameter("dayNum").trim();floattotal=Integer.parseInt(dayNum)*499;System.out.println("222");if(dayNum==null){dayNum="1";}System.out.println("222");//拼装查看用户是否存在的SQLStringsqla="insertintoorder1values('"+orderNum+"','"+guestname+"','businessRoom','"+date+"',"+dayNum+",499,"+total+");";Stringsql=newString(sqla.getBytes("gbk"),"iso8859-1");//转码System.out.println("8");DB.update(sql);System.out.println("333");res.sendRedirect("http://localhost:8080/jiudian/login.jsp");//跳转到主页System.out.println("b");}elseif(action.equals("book_advancedRoom")){System.out.println("111");//得到注册用户填写的资料Stringguestname=req.getParameter("guestname");StringorderNum="ZCSYHQ"+System.currentTimeMillis();Stringyear=req.getParameter("years");Stringmonth=req.getParameter("months");Stringday=req.getParameter("days");Stringdate=year+"-"+month+"-"+day;StringdayNum=req.getParameter("dayNum").trim();System.out.println("222");if(dayNum==null){dayNum="1";}System.out.println("222");floattotal=Integer.parseInt(dayNum)*599;//拼装查看用户是否存在的SQLStringsqla="insertintoorder1values('"+orderNum+"','"+guestname+"','advancedRoom','"+date+"',"+dayNum+",599,"+total+");";Stringsql=newString(sqla.getBytes("gbk"),"iso8859-1");//转码System.out.println("8");DB.update(sqla);System.out.println("333");res.sendRedirect("http://localhost:8080/jiudian/login.jsp");//跳转到主页}注册界面如图4_1_4所示:图4_1_4注册界面订单生成模块界面如图4_1_6所示:图4_1_6订单生成模块界面4.1.6新中环酒店管理系统该模块采用的是MVC模式进行开发的管理系统,主要实现客户订单的查询订单和取消订单功能,共有四个文件组成,视图表现为两个页面,分别用于接收用户输入和向用户显示结果;用JSP实现,checkOrder.jsp文件实现订单查询和取消订单入口,displycheckOrder.jsp实现查询后的结果输出,其中,查询可以根据订单号或姓名查询,而取消订单只能根据订单号取消;控制器用Servlet实现,文件名为OrderQuery.java,作用是从checkOrder.jsp页面接收用户输入,存储到JavaBean实例中,然后进行查询,结果也保存在JavaBean实例中;模型用JavaBean实现,文件名为OrderBean.java,其作用是保存用户输入和查询结果。查询和删除入口界面如图4_1_6_1所示:图4_1_6_1入口界面图输入订单号,通过jsp文件提交到servlet控制器中处理,处理完后存储到JavaBean中,再通过jsp文件显示查询结果,其查询的核心代码如下:取消订单的核心代码如下:if(submit.equals("删除")){Stringcondition2="deleteorder1WhereorderNum='"+number+"'";Connectioncon;Statementsql;intrs;try{Stringuri="jdbc:sqlserver://:1433;DatabaseName=Hotel";con=DriverManager.getConnection(uri,"ss_login1","123");sql=con.createStatement();rs=sql.executeUpdate(condition2);if(rs==1){response.sendRedirect("success.jsp");}else{response.sendRedirect("fail.jsp");}con.close();}catch(SQLExceptione){System.out.println(e);}}留言显示界面如下图4_1_7_2所示:图4_1_7_2留言显示5系统测试5.1软件测试的方法软件测试是软件开发过程中的一个重要环节。软件测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。测试任何产品都有两种方法:5.1.1黑盒测试黑盒测试时完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进行的测试,又称为功能测试。从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。5.1.2白盒测试白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为结构测试。从是否执行程序的角度分为静态测试和动态测试。从软件开发的过程按阶段划分有单元测试,集成测试,确认测试和系统测试验收测试。测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。不论采用何种测试方法,只要对每一种可能的情况都进行测试,就可以得到完全正确的程序。包含所有可能情况的测试成为穷尽测试。但对于实际程序而然,穷尽测试是不可能的。5.2模块测试模块测试是针对概要设计中的一个一个模块来进行测试的,他的重点就是测module与module之间的关系。ModuleTes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论