1. 系统概述
1.1 系统功能概述
1)客户管理。可以大概增加一个客户,包括:身份证号、客户名称、出生年月、性别、联系电话、邮箱、会员类别等信息,默认会员类别为空;可以大概修改和删除客户信息;可以大概根据客户名称、联系电话查询客户根本信息。
2)客户入住。可以大概根据客房标准和日期查询状态为“空闲”的客房信息,表现楼层号、房间号、费用;可以大概根据客户名和联系方式查询房间预订信息,表现:楼层号、房间号、预订开始时间,预订结束时间;可以大概为指定的客户办理指定客房的入住手续,修改客户状态为“入住”,并记录入住时间、前台操纵员。
3)退房管理。可以大概根据房间号查询客房信息;可以大概完成指定客户对指定房间的退房操纵(利用存储过程实现),即起首增加一条客户实际入住记录,包括:客户身份证编号、客户名、房间号、入住时间、退房时间、房费、前台操纵员,然后修改客房状态为“空闲”;末了根据会员类别和入住天数盘算房费。
4)预订客房。可以大概根据标准和日期查询客房空闲情况;可以大概为指定客户预订指定的客房,并记录预订开始时间、预订结束时间、联系人、联系电话、前台操纵员、操纵时间等信息。
5)预订查询。可以大概根据客户名或联系电话查询其预订的客房信息,其中,一个客户可以预订多个客房;可以大概根据楼层号、房间号查询客房的预订详细信息。
图1-1 功能框图
1.2 系统体系结构
图1-2 体系结构图
Browser/Server结构是伴随着因特网的鼓起,对Client/Server结构的一种改进。从本质上说,Browser/Server结构也是一种Client/Server结构,它可看作是一种由传统的二层模式Client/Server结构发展而来的三层模式Client/Server结构在Web上应用的特例。
Browser/Server结构重要是利用了不停成熟的Web浏览器技术:联合浏览器的多种脚本语言和ActiveX技术,用通用浏览器实现原来需要复杂专用软件才华实现的强大功能,同时节约了开发成本。
B/S最大的长处就是可以在任何地方举行操纵而不消安装任何专门的软件,只要有一台能上网的电脑就能利用,客户端零安装、零维护。系统的扩展非常容易。
B/S结构的利用越来越多,特别是由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上举行部分处置惩罚,从而大大的减轻了服务器的负担;并增加了交互性,能举行局部实时刷新。
1.3开发环境
此次设计重要接纳MyEclipse加Tomcat背景服务器举行,设计过程中页面重要利用JSP技术完成,下面对MyEclipse、Tomcat和SQL2008数据库举行简要先容。
MyEclipse,是一个非常良好的用于开发Java, J2EE的Eclipse插件聚集,MyEclipse的功能非常强大,支持也非常广泛,尤其是对各种开元产品的支持非常不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完备支持HTML,JSP,CSS,Javascript,SQL.
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍利用,是开发和调试JSP 程序的首选。可以如许认为,当在一台机器上配置好Apahce服务器,可利用它相应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的历程单独运行的
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
JSP技术利用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处置惩罚逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和表现分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在碰到访问JSP网页的请求时,起首执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操纵数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码举行处置惩罚,然后将天生的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP共同才华完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,重要面向因特网的全部特点.
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如相应用户的各种操纵。JavaScript的一个紧张功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复利用的方式举行程序开发。在HTML基础上,利用JavaScript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活泼的元素和更加出色的内容。
2 数据库设计
表2.1关系模型表
关系名
| 属性及码
| 其他束缚条件
| 客户
| 身份证号,客户名称,出生年月,性别,联系电话,邮箱,会员类别
| 1、身份证号是唯一标识;
2、客户名称不允许为空;
3、联系电话不允许为空;
| 客房
| 房间号,楼层号,标准,费用,地理位置
| 房间号是唯一标识;
| 入住
| 身份证号,房间号,客户名,入住时间,退房时间,前台操纵员,预付金
| 1、 身份证号引用客户关系中的身份证号;
2、 房间号引用客房关系中的房间号;
| 用户
| 用户名,用户类型,默认密码,真实姓名,年事,性别
| 用户名是唯一标识;
| 预订客房
| 房间号,预定开始时间,预定结束时间,联系人,联系电话,前台操纵员,操纵时间
| 1、客房号引用客房关系中的房间号;
2、联系电话不允许为空;
| 会员
| 会员号,会员类型,会员折扣
| 会员类型不能为空
| 房间增加消耗信息
| 消耗编号,房间号,消耗类型,消耗金额,消耗时间,备注
| 客房号引用客房关系中的房间号;
| 表2.2 book 订单表
字段名
| 主键
| 外键
| 类型
| 字节数
| 长度
| 小数位
| 字段说明
| cid
| √
| √
| char
| 18
| 18
| 0
| 身份证号
| rno
| √
| √
| varchar
| 10
| 10
| 0
| 房间号
| username
|
| √
| varchar
| 20
| 20
| 0
| 前台操纵人员
| btime
| √
|
| datatime
| 0
| 0
| 0
| 入住开始时间
| etime
|
|
| datetime
| 0
| 0
| 0
| 入住结束时间
| prePay
|
|
| decimal
| 9
| 18
| 1
| 预支金额
| 表2.3 advance 预定表
字段名
| 主键
| 外键
| 类型
| 字节数
| 长度
| 小数位
| 字段说明
| rno
| √
| √
| varchar
| 10
| 10
| 0
| 房间号
| username
|
| √
| varchar
| 20
| 20
| 0
| 前台操纵员
| person
|
|
| varchar
| 20
| 20
| 0
| 联系人
| phone
| √
|
| char
| 11
| 11
| 0
| 联系电话
| btime
| √
|
| datetime
| 20
| 20
| 0
| 身份证号
| etime
|
|
| datetime
| 9
| 18
| 1
| 总消耗额
| otime
|
|
| datetime
| 4
| 10
| 0
| 等级编号
| 3 系统概要设计
系统有两类用户:前台操纵员和系统管理员。其中,前台管理员负责客房预订、入住登记、房客查询、收费管理等功能,系统管理员负责客房信息输入、客房信息查询、前台操纵员管理、统计报表等功能。系统重要包括6大功能模块:根本信息管理、入住管理、会员管理、客房预订管理、收费管理、统计报表管理。
1)客户管理。可以大概增加一个客户,包括:身份证号、客户名称、出生年月、性别、联系电话、邮箱、会员类别等信息,默认会员类别为空;可以大概修改和删除客户信息;可以大概根据客户名称、联系电话查询客户根本信息。
2)客户入住。可以大概根据客房标准和日期查询状态为“空闲”的客房信息,表现楼层号、房间号、费用;可以大概根据客户名和联系方式查询房间预订信息,表现:楼层号、房间号、预订开始时间,预订结束时间;可以大概为指定的客户办理指定客房的入住手续,修改客户状态为“入住”,并记录入住时间、前台操纵员。
3)退房管理。可以大概根据房间号查询客房信息;可以大概完成指定客户对指定房间的退房操纵(利用存储过程实现),即起首增加一条客户实际入住记录,包括:客户身份证编号、客户名、房间号、入住时间、退房时间、房费、前台操纵员,然后修改客房状态为“空闲”;末了根据会员类别和入住天数盘算房费。
图3-1用例图
图3-2预定客房次序图
图3-3会员状态图
图3-4类图
图3-5前台操纵员活动图
图3-6系统管理员活动图
4系统详细设计与实现
(1) 登录功能。实现用户了登录功能。判断用户的类型,按用户类型表现差别的页面。
(2) 客户入住。可以大概根据客房标准和日期查询状态为“空闲”的客房信息,表现楼层号、房间号、费用;可以大概根据客户名和联系方式查询房间预订信息,表现:楼层号、房间号、预订开始时间,预订结束时间;可以大概为指定的客户办理指定客房的入住手续,修改客户状态为“入住”,并记录入住时间、前台操纵员。
(3) 退房管理。可以大概根据房间号查询客房信息;可以大概完成指定客户对指定房间的退房操纵(利用存储过程实现),即起首增加一条客户实际入住记录,包括:客户身份证编号、客户名、房间号、入住时间、退房时间、房费、前台操纵员,然后修改客房状态为“空闲”;末了根据会员类别和入住天数盘算房费。
(4) 预订客房。可以大概根据标准和日期查询客房空闲情况;可以大概为指定客户预订指定的客房,并记录预订开始时间、预订结束时间、联系人、联系电话、前台操纵员、操纵时间等信息。
(5) 预订查询。可以大概根据客户名或联系电话查询其预订的客房信息,其中,一个客户可以预订多个客房;可以大概根据楼层号、房间号查询客房的预订详细信息。
4.1 登录模块实现
4.1.1 界面设计
此界面实现了用户的登录功能。如图4-1登录界面所示。
图4-1登录界面
4.1.2登录功能实现
此界面重要实现了用户的登录功能。此部分代码文件:login.jsp,LoginServlet,UserDao.java,User.java
功能实现:通过login.jsp 的form表单提交到LoginServlet举行处置惩罚,再调用UserDao.java中方法实现登录验证.
1. login.js
- <divid="loginAndRegisterForm">
- <formmethod="post"id="loginForm">
- <table>
- <tr>
- <thstyle="text-align:left;">用户名:</th>
- <!-- class="easyui-textbox"表示使用EasyUI的textbox组件-->
- <td><inputtype="text"id="userName"style="width:150px;" name="username"class="easyui-textbox"/></td> </tr>
- <tr>
- <thstyle="text-align:left;">密码:</th>
- <td><inputtype="password"id="userPwd"style="width:150px;" name="password"class="easyui-passwordbox"/></td>
- </tr>
- <tr>
- <thstyle="text-align:left;">用户类型:</th>
- <td>
- <selectname="usertype"class="easyui-textbox"id="option">
- <optionvalue="1">前台操作员</option>
- <optionvalue="2">系统管理员</option>
- </select>
- </td>
- </tr>
- </table>
- </form>
- </div>
复制代码 2. LoginServlet.java
- privatevoid login(HttpServletRequestrequest, HttpServletResponse response) throws IOException{
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- String usertype = request.getParameter("usertype");
- Json json = new Json();
- User u = UserDao.getUserByName(username, password);
- if(u!=null && u.getUsertype().equals(usertype)){
- request.getSession().setAttribute("currentUser",u);
- json.setMsg("登录成功");
- json.setSuccess(true);
- if(usertype.equals("1")){
- json.setUrl("/operator/index.jsp");
- }elseif(usertype.equals("2")){
- json.setUrl("/admin/index.jsp");
- }else{
- json.setUrl("/error.jsp");
- }
- }else{
- json.setMsg("用户名或密码错误,登录失败!");
- json.setSuccess(false);
- }
- String jsonStr = JSON.toJSONString(json);
- //将json字符串作为响应内容输出到客户端浏览器。
- response.getWriter().write(jsonStr);
- }
复制代码 4.2客户入住模块实现
4.2.1 界面设计
此界眼前台操纵员处置惩罚客户入住。如:图4-2客户入住界面。
图4-2客户入住界面
图4-3客户入住界面
4.2.2 客户入住功能实现
该功能实现了前台操纵员处置惩罚客户入住的功能。代码文件包括 bookList.jsp,BookServlet.java.
描述:通过bookList.jsp中的form表单向BookServlet.java举行处置惩罚.
1. booklist.jsp
- <tableid="dg"title="客户入住"class="easyui-datagrid"fitColumns="true"pagination="true"
- data-options="rownumbers:true,toolbar:'#tb'">
- <thead>
- <tr>
- <thfield="cb"checkbox="true"align="center"></th>
- <thfield="rno"width="50"align="center">房间号</th>
- <thfield="fno"width="50"align="center">楼层号</th>
- <thfield="standard"width="50"align="center">房间标准</th>
- <thfield="cost"width="50"align="center">房间费用</th>
- <thfield="position"width="50"align="center">地理位置</th>
- </tr>
- </thead>
- </table>
- <divid="tb">
- <div>
- <span> 房间标准: </span>
- <selectid="standard"class="easyui-combobox"data-options="panelHeight:'auto'"style="width:150px;">
- <optionvalue="">全部</option>
- <optionvalue="大床房">大床房</option>
- <optionvalue="标间">标间</option>
- <optionvalue="豪华套房">豪华套房</option>
- </select>
- <span> 入住开始时间: </span>
- <inputtype="text" class="easyui-datebox"id="btime"style="width:150px;">
- <span> 入住结束时间: </span>
- <inputtype="text" class="easyui-datebox" id="etime"style="width:150px;">
- <ahref="javascript:searchRoom()"class="easyui-linkbutton"iconCls="icon-search"plain="true">搜索</a>
- <ahref="javascript:openDialog()"class="easyui-linkbutton"iconCls="icon-edit"plain="true">入住</a>
- <ahref="javascript:reload()"class="easyui-linkbutton"iconCls="icon-reload"plain="true">刷新</a>
- </div>
- </div>
- <divid="dlg"class="easyui-dialog"style="width:400px; padding:10px 20px"
- closed="true"buttons="#dlg-buttons">
- <formid="fm"method="post">
- <tablecellspacing="8px">
- <tr>
- <td>房间号</td>
- <td>
- <inputname="rno"class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>楼层号</td>
- <td>
- <inputname="fno"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>房间标准</td>
- <td>
- <inputname="standard"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>房间费用</td>
- <td>
- <inputname="cost"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>地理位置</td>
- <td>
- <inputname="position"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>身份证号</td>
- <td>
- <inputname="cid"class="easyui-validatebox"data-options="required:true">
- </td>
- </tr>
- <tr>
- <td>预付金</td>
- <td>
- <inputname="prepay"class="easyui-numberbox">
- </td>
- </tr>
- </table>
- </form>
- </div>
- <divid="dlg-buttons">
- <div>
- <ahref="javascript:saveStudent()"class="easyui-linkbutton"iconCls="icon-ok"plain="true">确认</a>
- <ahref="javascript:closeStudentDialog()"class="easyui-linkbutton"iconCls="icon-cancel"plain="true">关闭</a>
- </div>
- </div>
复制代码 3. BookServlet.java
- privatevoid book(HttpServletRequest request, HttpServletResponse response) throws IOException{
- String cid = request.getParameter("cid");
- String btime = request.getParameter("btime");
- String etime = request.getParameter("etime");
- String rno = request.getParameter("rno");
- doubleprepay = Double.parseDouble(request.getParameter("prepay"));
- Json json = new Json();
- User u = (User)request.getSession().getAttribute("currentUser");
- intuserid = u.getUserid();
- if(CustomerDao.getCustomer(cid) == null){
- json.setSuccess(false);
- json.setMsg("用户身份证号不存在,请先添加用户信息");
- }else{
- try {
- BookDao.addBook(rno, cid, btime, userid, etime, prepay);
- json.setSuccess(true);
- json.setMsg("");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- json.setSuccess(false);
- json.setMsg(e.getMessage());
- e.printStackTrace();
- }
- }
- String jsonStr = JSON.toJSONString(json);
- //将json字符串作为响应内容输出到客户端浏览器。
- response.getWriter().write(jsonStr);
- }
复制代码 4.3退房管理模块实现
4.3.1 界面设计
此界眼前台操纵员处置惩罚客户退房管理。如:图4-4退房管理界面。
图4.4退房管理界面
4.3.2 退房管理功能实现
该功能实现了前台操纵员处置惩罚客户入住的功能。代码文件包括 dropList.jsp,BookServlet.java.
描述:通过dropList.jsp中的form表单向BookServlet.java举行处置惩罚.
- <scripttype="text/javascript">
- function deleteRoom() {
- var selectedRows = $("#dg").datagrid("getSelections");
- if(selectedRows.length == 0) {
- $.messager.alert("系统提示", "请选择要退房的房间");
- return;
- }
- if(selectedRows.length != 1) {
- $.messager.alert("系统提示", "请选择一个要退房的客房");
- return;
- }
- var row = selectedRows[0];
- $.messager.confirm("系统提示", "您确定退房么?", function(r) {
- if(r) {
- $.post("${pageContext.request.contextPath}/BookServlet?action=search1",
- { rno:row.rno,
- cid:row.cid,
- btime:row.btime,
- etime:row.etime
- }, function(result){
- if(result.success) {
- $.messager.alert("系统提示", result.msg);
- searchRoom();
- } else {
- $.messager.alert("系统提示", "退房失败!");
- }
- }, "json");
- }
- });
- }
- function searchRoom() {
- $.post("${pageContext.request.contextPath}/BookServlet?action=drop", {
- rno:$('#rno').val()
- }, function(data, states) {
- $("#dg").datagrid("loadData", data);
- },"json");
- }
- function reload() {
- searchRoom();
- }
- </script>
- </head>
- <bodystyle="margin: 1px; font-family: microsoft yahei">
- <tableid="dg"title="退房管理"class="easyui-datagrid"fitColumns="true"pagination="true"
- data-options="rownumbers:true,toolbar:'#tb'">
- <thead>
- <tr>
- <thfield="cb"checkbox="true"align="center"></th>
- <thfield="rno"width="50"align="center">房间号</th>
- <thfield="fno"width="50"align="center">楼层号</th>
- <thfield="standard"width="50"align="center">房间标准</th>
- <thfield="cost"width="50"align="center">房间费用</th>
- <thfield="position"width="50"align="center">地理位置</th>
- <thfield="cid"width="50"align="center">身份证号</th>
- <thfield="btime"width="50"align="center">入住时间</th>
- <thfield="etime"width="50"align="center">退房时间</th>
- </tr>
- </thead>
- </table>
- <divid="tb">
- <div>
- <span> 房间号: </span>
- <inputtype="text" class="easyui-textbox"id="rno"style="width:150px;">
- <ahref="javascript:searchRoom()"class="easyui-linkbutton"iconCls="icon-search"plain="true">搜索</a>
- <ahref="javascript:deleteRoom()"class="easyui-linkbutton"iconCls="icon-edit"plain="true">退房</a>
- <ahref="javascript:reload()"class="easyui-linkbutton"iconCls="icon-reload"plain="true">刷新</a>
- </div>
- </div>
- 1. BookServlet.java
- privatevoid drop(HttpServletRequest request, HttpServletResponse response) throws IOException{
- String rno = request.getParameter("rno");
- List<Map<String, String>> list = new ArrayList<Map<String,String>>();
- list = BookBpo.searchList(rno);
- Object jsonArray = JSON.toJSON(list);
- JSONObject result = new JSONObject();
- result.put("rows", jsonArray);
- result.put("total", list.size());
- response.getWriter().print(result);
- }
- privatevoid search1(HttpServletRequest request, HttpServletResponse response) throws IOException{
- String cid = request.getParameter("cid");
- String btime = request.getParameter("btime");
- String etime = request.getParameter("etime");
- String rno = request.getParameter("rno");
- Json json = new Json();
- User u = (User)request.getSession().getAttribute("currentUser");
- intuserid = u.getUserid();
- try {
- BookBpo.dropBook(rno, cid, userid, btime, etime);
- try{
- History h = HistoryDao.getHistory(rno, cid, btime);
- json.setSuccess(true);
- json.setMsg("房间号:"+rno+"<br/>入住时间:"+btime+"<br/>退房时间:"+etime+"<br/>总费用:"+h.getSumpay());
- }catch(Exception e){
- json.setSuccess(false);
- json.setMsg(e.getMessage());
- e.printStackTrace();
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- json.setSuccess(false);
- json.setMsg(e.getMessage());
- e.printStackTrace();
- }
- String jsonStr = JSON.toJSONString(json);
- //将json字符串作为响应内容输出到客户端浏览器。
- response.getWriter().write(jsonStr);
- }
复制代码 4.4预订客房模块实现
4.4.1 界面设计
此界眼前台操纵员处置惩罚预定客户。如:图4-5预定客户界面。
图4-5预定客户界面
图4-6预定客户界面
4.4.2 预订客房功能实现
该功能实现了前台操纵员处置惩罚预定客户的功能。代码文件包括该功能实现了前台操纵员处置惩罚预定查询的功能。代码文件包括 advanceList.jsp,AdvanceServlet.java.
描述:通过advanceList.jsp中的form表单向AdvanceServlet.java举行处置惩罚.
- <bodystyle="margin: 1px; font-family: microsoft yahei">
- <tableid="dg"title="预定客房"class="easyui-datagrid"fitColumns="true"pagination="true"
- data-options="rownumbers:true,toolbar:'#tb'">
- <thead>
- <tr>
- <thfield="cb"checkbox="true"align="center"></th>
- <thfield="rno"width="50"align="center">房间号</th>
- <thfield="fno"width="50"align="center">楼层号</th>
- <thfield="standard"width="50"align="center">房间标准</th>
- <thfield="cost"width="50"align="center">房间费用</th>
- <thfield="position"width="50"align="center">地理位置</th>
- </tr>
- </thead>
- </table>
- <divid="tb">
- <div>
- <span> 房间标准: </span>
- <selectid="standard"class="easyui-combobox"data-options="panelHeight:'auto'"style="width:150px;">
- <optionvalue="">全部</option>
- <optionvalue="大床房">大床房</option>
- <optionvalue="标间">标间</option>
- <optionvalue="豪华套房">豪华套房</option>
- </select>
- <span> 预订开始时间: </span>
- <inputtype="text" class="easyui-datebox"id="btime"style="width:150px;">
- <span> 预订结束时间: </span>
- <inputtype="text" class="easyui-datebox" id="etime"style="width:150px;">
- <ahref="javascript:searchRoom()"class="easyui-linkbutton"iconCls="icon-search"plain="true">搜索</a>
- <ahref="javascript:openDialog()"class="easyui-linkbutton"iconCls="icon-edit"plain="true">预定</a>
- <ahref="javascript:reload()"class="easyui-linkbutton"iconCls="icon-reload"plain="true">刷新</a>
- </div>
- </div>
- <divid="dlg"class="easyui-dialog"style="width:400px; padding:10px 20px"
- closed="true"buttons="#dlg-buttons">
- <formid="fm"method="post">
- <tablecellspacing="8px">
- <tr>
- <td>房间号</td>
- <td>
- <inputname="rno"class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>楼层号</td>
- <td>
- <inputname="fno"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>房间标准</td>
- <td>
- <inputname="standard"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>房间费用</td>
- <td>
- <inputname="cost"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>地理位置</td>
- <td>
- <inputname="position"class="textbox"readonly="true">
- </td>
- </tr>
- <tr>
- <td>预定人</td>
- <td>
- <inputname="person"class="easyui-validatebox"data-options="required:true">
- </td>
- </tr>
- <tr>
- <td>预定人电话</td>
- <td>
- <inputname="phone"class="easyui-validatebox"data-options="required:true">
- </td>
- </tr>
- </table>
- </form>
- </div>
- <divid="dlg-buttons">
- <div>
- <ahref="javascript:saveStudent()"class="easyui-linkbutton"iconCls="icon-ok"plain="true">确认</a>
- <ahref="javascript:closeStudentDialog()"class="easyui-linkbutton"iconCls="icon-cancel"plain="true">关闭</a>
- </div>
- </div>
复制代码- privatevoid advance(HttpServletRequest request, HttpServletResponse response) throws IOException{
- String rno = request.getParameter("rno");
- String btime = request.getParameter("btime");
- String etime = request.getParameter("etime");
- String phone = request.getParameter("phone");
- String person = request.getParameter("person");
- Json json = new Json();
- User u = (User)request.getSession().getAttribute("currentUser");
- intuserid = u.getUserid();
- try {
- AdvanceDao.addAdvance(rno, phone, btime, userid, etime, person);
- json.setSuccess(true);
- json.setMsg("");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- json.setSuccess(false);
- json.setMsg(e.getMessage());
- e.printStackTrace();
- }
- String jsonStr = JSON.toJSONString(json);
- //将json字符串作为响应内容输出到客户端浏览器。
- response.getWriter().write(jsonStr);
- }
复制代码 4.5.1 界面设计
此界眼前台操纵员根据时间查询客房预定的客房。如:图4-7预定查询界面。
图4-7预定客户界面
图4-8预定客户界面
4.5.2 预定查询功能实现
该功能实现了前台操纵员处置惩罚预定查询的功能。代码文件包括 advanceList.jsp,AdvanceServlet.java.
描述:通过advanceList.jsp中的form表单向AdvanceServlet.java举行处置惩罚.
1. advanceList.jsp
- <bodystyle="margin: 1px; font-family: microsoft yahei">
- <tableid="dg"title="预定查询"class="easyui-datagrid"fitColumns="true"pagination="true"
- data-options="rownumbers:true,toolbar:'#tb'">
- <thead>
- <tr>
- <thfield="cb"checkbox="true"align="center"></th>
- <thfield="rno"width="50"align="center">房间号</th>
- <thfield="fno"width="50"align="center">楼层号</th>
- <thfield="standard"width="50"align="center">房间标准</th>
- <thfield="cost"width="50"align="center">房间费用</th>
- <thfield="position"width="50"align="center">地理位置</th>
- <thfield="person"width="50"align="center">客户名</th>
- <thfield="phone"width="50"align="center">联系电话</th>
- <thfield="btime"width="50"align="center">预订开始时间</th>
- <thfield="etime"width="50"align="center">预订结束时间</th>
- </tr>
- </thead>
- </table>
- <divid="tb">
- <div>
- <span> 客户名: </span>
- <inputtype="text" class="easyui-textbox"id="person"style="width:150px;">
- <span> 客户电话: </span>
- <inputtype="text" class="easyui-textbox"id="phone"style="width:150px;">
- <ahref="javascript:searchRoom()"class="easyui-linkbutton"iconCls="icon-search"plain="true">搜索</a>
- <ahref="javascript:openDialog()"class="easyui-linkbutton"iconCls="icon-edit"plain="true">入住</a>
- <ahref="javascript:reload()"class="easyui-linkbutton"iconCls="icon-reload"plain="true">刷新</a>
- </div>
- </div>
- <divid="dlg"class="easyui-dialog"style="width:400px; padding:10px 20px"
- closed="true"buttons="#dlg-buttons">
- <formid="fm"method="post">
- <tablecellspacing="8px">
- <tr>
- <td>房间号</td>
- <td>
- <inputname="rno"class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>入住时间</td>
- <td>
- <inputname="btime" class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>退房时间</td>
- <td>
- <inputname="etime" class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>客户名</td>
- <td>
- <inputname="person"class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>电话</td>
- <td>
- <inputname="phone"class="textbox" readonly="true">
- </td>
- </tr>
- <tr>
- <td>身份证号</td>
- <td>
- <inputname="cid"class="easyui-validatebox"data-options="required:true">
- </td>
- </tr>
- <tr>
- <td>预付金</td>
- <td>
- <inputname="prepay"class="easyui-numberbox">
- </td>
- </tr>
- </table>
- </form>
- </div>
- <divid="dlg-buttons">
- <div>
- <ahref="javascript:saveStudent()"class="easyui-linkbutton"iconCls="icon-ok"plain="true">确认</a>
- <ahref="javascript:closeStudentDialog()"class="easyui-linkbutton"iconCls="icon-cancel"plain="true">关闭</a>
- </div>
- </div>
复制代码 2. AdvanceServlet.java
- privatevoid search(HttpServletRequest request, HttpServletResponse response) throws IOException{
- String standard = request.getParameter("standard");
- String btime = request.getParameter("btime");
- String etime = request.getParameter("etime");
- List<Map<String, String>> list = new ArrayList<Map<String,String>>();
- list = AdvanceBpo.selectList(standard, btime, etime);
- Object jsonArray = JSON.toJSON(list);
- JSONObject result = new JSONObject();
- result.put("rows", jsonArray);
- result.put("total", list.size());
- response.getWriter().print(result);
- }
- publicstatic List<Room> roomAdanvce(String standard,String btime,String etime){
- EntityManager em = EntityManagerUtil.getEntityManager();
- String sql = null;
- if(standard.equals("") || standard == null){
- sql = "SELECT * FROM room r WHERE r.rno not in (SELECT rno from advance a WHERE a.btime between '"+btime+"' and '"+etime+"' UNION SELECT rno from book b WHERE b.btime between '"+btime+"' and '"+etime+"')";
- }else{ sql = "SELECT * FROM room r WHERE r.rno not in (SELECT rno from advance a WHERE a.btime between '"+btime+"' and '"+etime+"' UNION SELECT rno from book b WHERE b.btime between '"+btime+"' and '"+etime+"') and r.standard='"+standard+"'";}
- Query query=em.createNativeQuery(sql, Room.class);
- List<Room> Rooms = query.getResultList();
- em.close();
- returnRooms;
- }
- publicstatic List<Map<String,String>> selectList(String standard,String btime,String etime){
- List<Map<String,String>> tt = new ArrayList<Map<String,String>>();
- List<Room> Rooms = roomAdanvce(standard, btime, etime);
- Map<String,String> cc = null;
- for (Room user: Rooms) {
- cc = new HashMap<String,String>();
- cc.put("rno", user.getRno());
- cc.put("fno", user.getFno());
- cc.put("standard", user.getStandard());
- cc.put("cost", String.valueOf(user.getCost()));
- cc.put("position", user.getPosition());
- tt.add(cc);
- }
- returntt;
- }
复制代码 5 总结
通过本次课程设计使我进一步熟练掌握了JavaWeb开发的流程,增加了团队之间的相助。在运行程序过程中404错误,经过查抄后不是路径问题的错误,在重新安装Tomcat后并不起作用,经过讨教老师发现,是在web.xml中配置有问题,多写了一个斜杠,通过本次的经验教训使我明白细心的紧张性。
参考文献
[1] 萨师煊, 王珊. 数据库系统概论[M].北京:高等教诲出版社,2006.
[2] 计磊.醒目J2EE整合应用案例[M].北京:人民邮电出版社,2006
[3] 王红.Java Web应用开发技术应用.北京:电子工业出版社,2009
[4] 孙卫琴.Java Web 开发技术详解[M].北京:电子工业出版社,2009
[5] 唐有国.Jsp网站开发详解[M].北京:清华大学出版社,2010
[6]刘卫宏.Eclipse利用教程[M].科学出版社,2007
[7]王珊,陈红.数据库原理教程[M].清华大学出版社,2009
[8]施伯乐,Tomcat和Java web详解[M].科学出版社,2008
[9]封超,Java Web 应用开发[M].人民邮电出版社,2009
[10]吴忠福,数据库设计结构探讨[M].科学出版社,2007
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |