版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大理大学数学与计算机学院综合性实验报告学年学期:2016-2017第三学期 课程名称:J2EE开发技术 专业:计算机科学与技术 班级:2014级 学号:LX14115150 姓名:申畅恒 成绩评定: 一、项目名称基于MVC模式的酒店预订系统二、功能性需求1、 用户在浏览器里输入网址,系统响应后显示酒店房间列表信息,其中房间列表中显示房间的编号、名称、价格属性,用户可以选择预定房间,可以选择多个房间,在房间后面的选择框内打钩选择确认即可。2、 用户确认房间后,点击酒店房间列表中的“提交订单”后,系统会响应下一个界面,如果用户未登录则进入用户登录页面,用户在用户登录页面填写用户名和密码后登录进入订单填写界面;若用户已进行了登录则直接进入订单填写页面;3、 用户进入订单填写页面后,用户在订单填写页面中输入房间数量、联系人姓名、联系电话、到店时间、离店时间、房间编号等信息,作校验后将订单提交服务器进行处理;4、 用户将订单提交,系统将订单信息写入数据库,如果订单信息写入数据库成功则跳转到订单预订成功页面,提示用户预订信息,否则进行预订失败页面。三、系统总体设计1)流程图(UML顺序图MVC模式是指模型-视图-控制器模型层为JavaBeen实现数据的表示和业务逻辑User.java 用户实体类,包括姓名、性别、电话、密码等属性Room.java 房间实体类,包括编号、名称、面积、楼层、价格等属性JdbcBean.java 数据库操纵通用类RoomDao.java 操纵Room类的读取操纵视图层为JSP页面,负责显示功能roomlist.jsp 房间列表页面order.jsp 订单填写页面login.jsp 登录页面signup.jsp 注册页面success.jsp 预订成功提示页面控制器为Servlet,负责接收用户的请求LoginProcess.java 处理用户登录LogoutProcess.java 处理注销事物OrderServlet.java 订单信息控制器
Im”himaider匕u址C嘲i泊閃阴帥l?l⑶n- --■— 11RmmLlBoizQr&aiilKl阿Li>prPraM!K[Im”himaider匕u址C嘲i泊閃阴帥l?l⑶n- --■— 11RmmLlBoizQr&aiilKl阿Li>prPraM!K[RM©iMl=r・Llccqau--2)页面的设计使用div布局进行控制页面。使用css样式对页面控制布局的位置、颜色、背景颜色(或者图片)等。整个页面分成三个部分:头部、尾部、和中间的主体内容。三个部分都放在一个div里面。头部放入一个商标和图片,头部的最下面放入导览行。主体内容主要有:一个大标题、介绍和整体内容。尾部有版权说明和一些社交网络标志。3)类设计3)类设计4)数据库设计使用Oracle11GR2数据库。•用户表User1:User_id:用户编号,主键,数字型number(ll)User_name:用户名,唯一,varchar2(10)Password:用户密码,32位的字符(用MD5加密过的字符)•房间表Roomlist:Roomnumber:房间号,主键roomtype:房间类型price:价格amount:房间剩余量QjAdministratjor:C:\Windows\Eystem32\cmd.eKe-sqlplus:—二 XSjL-:-23L>92L》dscc_iser1;Namefjl:11Y TypnUSERID1ICTbTJLLNUM艾R二1)USZRNME1ICTbTJLLP^SSTORDNOTNULLVAE^CHAR2(32)EQ-、dc<croonlist;himfji:l1? 'Iyp=RDOKNUMBER1ICTtTJLLNLMKR二1)RDOITYPE1ICTbFJLLTAR二空2囚NO!Nll.l.NUMBER[nJM0U1ITNOTNULLNUMBER[5)3.四、系统实现系统界面截图及关键代码,并作详细描述。1.系统界面•房间列表在页面上引入dao.RoomDao和bean.Room。实例化一个RoomDao对象然后调用getRoomList()方法。获取到list之后使用jstl标准标签库和EL表达式语言进行遍历list并显示(表格形式)。<jsp:useBeanid="bean"class="dao.RoomDao"scope="page"></jsp:useBean><divclass="containersection"><formaction="login.order"method="post"onSubmit="returncheck()"><%List<Room>list=bean.getRoomList();pageContext.setAttribute("list",list);%><tablewidth='600'border='1'><tr><th>房间号</th><th>房间类型</七h><th>价格</th><th>房间剩余量</th><th>预定</th></tr>
<c:forEachvar="room"items="${list}"><tr><td>${room.roomNumber}</td><td>${room.roomName}</td><td>${room.price}</td><td>${room.roomAmount}</td><td><inputname='isSelected'type='checkboxvalue='${room.roomNumber}'></td></tr></c:forEach><tr><tdcolspan=‘5’align='center'><inputclass='largebluebuttonid='submit-button'type='submit'value='提交'></td></tr></table></form></div>ntLHI.馆啟山事雷iantLHI.馆啟山事雷ia□LNU10□祜弄山事露ia□2WC0JKI0JWZmO4WLEjr.^ib#nrm□4M214□3KL■.:3ja□5HQ&J3ia□RoomsandStrifesJcAirjl ijip吓HEpbfiles-inL^TWTf-'PHI旳!叭 wrrtiThfi"tT5ibfkmvjljie4iRulicAbeX-mmeridfi44ml70liyrAiihHqini登录利用表单控件的required属性进行控制控件是否填写,若未填写则提示<formmethod="post"action="LoginProcces"><inputtype="text"required="required"placeholder="用户名"name="name"></input><inputtype="password"required="required"placeholder="密码"name="password"></input><buttonclass="but"type="submit">登录</button><ahref="signup.html">注册</a></form>•订单信息使用jstl标准标签库和EL表达式语言进行遍历已经选定的房间列表(房间列表从session获取)。利用HTML5控件的date,number,text作为日期、电话和姓名的输入框。<divclass="containersection"><h4>你已经选择的房间类型:</h4><table><tr><th>房间类型</七h><th>房间价格</七h></tr><c:forEachvar="room"items="${sessionScope.selectedRoom}"><tr><td>${room.roomName}</td><td>${room.price}</td></tr></c:forEach></table><hr><formaction="success.order"method="post"onSubmit="returncheck(this)">预计到店日期:<inputtype="date"name="date">姓名:<inputtype="text"name="name">电话号码:<inputtype="number"name="tel"><inputclass='smallbluebutton'id='submit-button'type='submit'value='提交‘></form></div>•订单成功使用jstl标准标签库和EL表达式语言进行遍历已经选定的房间列表(房间列表从session获取)及订单信息。<divclass="containersection"><h4>你已经选择的房间类型:</h4><table><tr><th>房间类型</七h><th>房间价格</七h></tr><c:forEachvar="room"items="${sessionScope.selectedRoom}"><tr><td>${room.roomName}</td><td>${room.price}</td></tr></c:forEach></table><hr>到店日期:${param.date}<br>用户名:${sessionScope.username}<br>姓名:${}<br>电话:${param.tel}<hr></div>2.控制器订单处理OrderServlet.javaOrderServlet.java处理两个请求:1,房间列表页面请求login.order首先获取session然后查看用户是否已经登录,如果已经登录则跳转到订单页面(order.jsp)否则跳转到登录页面。2,订单页面请求success.order跳转到订单成功页面。publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringurl=request.getServletPath();if(url.equals("/login.order")){//处理跳转到登录页面之前的事物HttpSessionsession=request.getSession();String[]roomNumberList=request.getParameterValues("isSelected");List<Room>list=newArrayList<Room>();Roomroom=null;RoomDaodao=newRoomDao();for(StringroomNumber:roomNumberList){room=dao.getRoomById(Integer.parseInt(roomNumber));list.add(room);}session.setAttribute("selectedRoom",list);
if(session.getAttribute("username")==null){
response.sendRedirect("login.html");}else{RequestDispatcherrd=request.getRequestDispatcher("order.jsp");rd.forward(request,response);}}else{//处理订单事物//System.out.print(request.getParameter("date"));request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");request.getRequestDispatcher("success.jsp").forward(request,response);}}•登录处理LoginProcess.java获取表单提交的用户名和密码,然后对密码进行MD5加密然后提交给user对象进行数据库验证。如果验证正确则保存session然后判断用户是否已经选定房间,如果已经选定则跳转到订单页面,否则跳转到房间列表页面。如果验证错误则跳转回去到登录页面。publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringname=request.getParameter("name");Stringpass=request.getParameter("password");try{Stringpassword=Encode.Md5(pass);Useruser=newUser();user.setName(name);user.setPassword(password);Booleanb=user.isUser();if(!b){response.sendRedirect("login.html");}else{HttpSessionsession=request.getSession();session.setAttribute("username",name);if(session.getAttribute("selectedRoom")==null)response.sendRedirect("roomList.jsp");elseresponse.sendRedirect("order.jsp");}}catch(Exceptione){e.printStackTrace();}}3.模型•用户类User.java两个属性(用户名、密码)一个方法(isUser:用了检验用户名密码)。publicclassUser{privateStringname;privateStringpassword;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}//getuserpublicBooleanisUser(){JDBCBeanjb=newJDBCBean();Stringsql="selectpasswordfromuser1whereuser_name='"++"'";ResultSetrs=jb.executeQuery(sql);try{while(rs.next()){Stringpassword=rs.getString("password");if(password.equals(this.password))returntrue;}}catch(Exceptione){returnfalse;}finally{jb.close();}returnfalse;}}房间类Room.java四个属性(房间编号,房间类型,房间价格,房间剩余量)publicclassRoom{privateStringroomName;privateStringroomNumber;privateintprice;privateintroomAmount;publicRoom(){}publicRoom(StringroomName,StringroomNumber,intprice,introomAmount){super();this.roomName=roomName;this.roomNumber=roomNumber;this.price=price;this.roomAmount=roomAmount;}publicintgetRoomAmount(){returnroomAmount;}publicvoidsetRoomAmount(introomAmount){this.roomAmount=roomAmount;}publicStringgetRoomName(){returnroomName;}publicvoidsetRoomName(StringroomName){this.roomName=roomName;}publicStringgetRoomNumber(){returnroomNumber;}publicvoidsetRoomNumber(StringroomNumber){this.roomNumber=roomNumber;}publicintgetPrice(){returnprice;}publicvoidsetPrice(intprice){this.price=price;}}RoomDao.java两个方法:getRoomList:获取房间列表,getRoomByld:获取一个房间publicclassRoomDao{publicList<Room>getRoomList(){Stringsql="select*fromroomlistwhereamount>0";List<Room>roomList=newArrayList<Room>();Roomroom=null;JDBCBeanjdbcBean=newJDBCBean();ResultSetrs=jdbcBean.executeQuery(sql);try{while(rs.next()){room=newRoom();room.setPrice(rs.getInt("price"));room.setRoomAmount(rs.getInt("amount"));room.setRoomName(rs.getString("roomtype"));room.setRoomNumber(""+rs.getInt("roomnumber"));roomList.add(room);}}catch(Exceptione){e.printStackTrace();}finally{jdbcBean.close();}returnroomList;}//getroompublicRoomgetRoomById(intid){Stringsql="select*fromroomlistwhereroomnumber="+id;JDBCBeanjb=newJDBCBean();ResultSetrs=jb.executeQuery(sql);try{while(rs.next()){Roomroom=newRoom();room.setRoomNumber(""+rs.getInt("roomnumber"));room.setRoomAmount(rs.getInt("amount"));room.setRoomName(rs.getString("roomtype"));room.setPrice(rs.getInt("price"));returnroom;}}catch(Exceptione){e.printStackTrace();returnnull;}finally{jb.close();returnnull;数据库操作帮助类JDBCBean.java用来辅助操作数据库publicclassJDBCBean{privateStringdriverStr="oracle.jdbc.driver.OracleDriver";privateStringconnStr="jdbc:oracle:thin:@localhost:1521:orcl";privateStringname="chanheng";privateStringpass="chanheng";privateConnectionconnection=null;privateStatementstmt=null;privateResultSetrs=null;publicJDBCBean(){try{Class.forName(driverStr);}catch(ClassNotFoundExceptione){//System.out.print("cannotloaddriver");e.printStackTrace();}}privateConnectiongetConnection(){try{connection=DriverManager.getConnection(connStr,name,pass);}catch(SQLExceptione){e.printStackTrace();}returnconnection;}privateStatementcreateStatement(){try{stmt=getConnection().createStatement();}catch(Exceptione){e.printStackTrace();}returnstmt;}publicResultSetexecuteQuery(Stringsql){try{rs=createStatement().executeQuery(sql);//System.out.println("connected");}catch(Exceptione){e.printStackTrace();}returnrs;}publicintexecuteUpdate(Stringsql){intresult=0;try{result=createStatement().executeUpdate(sql);}catch(Exceptione){e.printStackTrace();}returnresult;}publicvoidclose(){try{if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(connection!=null)connection.close();}catch(SQLExceptione){e.printStackTrace();}}}4.Web.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID"version="3.1"><display-name>hotel</display-name><servlet><servlet-name>RegisterServlet</servlet-name><servlet-class>servlet.RegisterServlet</servlet-class></servlet><servlet><servlet-name>Order</servlet-name><servlet-class>servlet.OrderServlet</servlet-class></servlet><servlet><servlet-name>LoginProcces</servlet-name><servlet-class>servlet.LoginProcces</servlet-class></servlet><servlet><servlet-name>LogoutProcess</servlet-name><servlet-class>servlet.LogoutProcess</servlet-class></servlet><servlet><servlet-name>SignupProcess</servlet-nam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 早绝经与绝经女性骨质疏松防治指南总结2026
- 2025朔州市朔城区神头职业中学校工作人员招聘考试试题
- 2025景德镇市体育运动学校工作人员招聘考试试题
- 2026年高考作文终极押题猜想新高考
- 基坑自动化监测专项施工方案
- 2026年美妆基因检测定制报告及未来五至十年精准美容报告
- 2026年四川省绵阳市中考数学模拟预测题
- 2026年制造业创新报告及工业机器人应用技术发展报告
- 幼儿园角色扮演游戏幼儿语言复杂度变化-基于2023年角色区对话录音词汇密度分析
- 智能精准教研在小学音乐课程开发中的创新与实践研究教学研究课题报告
- 2024年“湖北工匠杯”全省检验检测行业职业技能大赛(农产品食品检验员)试题库(含答案)
- 第4章-动车组列车餐饮服务操作技能《高速铁路列车餐饮服务》
- 7、辽、西夏与北宋的并立
- 关于领导干部报告个人有关事项的规定全文
- 电梯井钢结构安装安全技术交底
- 耕地占补平衡用户手册
- 嘘 - 副本【经典绘本】
- 《最重要的事 只有一件》读书笔记PPT模板思维导图下载
- 医学导论 第二篇 医学教育与医学学习
- GB/T 20303.1-2016起重机司机室和控制站第1部分:总则
- 工会经费使用管理常见问题解答
评论
0/150
提交评论