酒店客房管理系统.doc_第1页
酒店客房管理系统.doc_第2页
酒店客房管理系统.doc_第3页
酒店客房管理系统.doc_第4页
酒店客房管理系统.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

滨江学院 数据库原理课程设计题 目 酒店客房管理系统 院 系 滨江学院计算机系专 业 网络工程 学生姓名 学 号 指导教师 二0 一一 年 六 月 二 十 四 日目 录一 前 言31.1 选题背景.31.2 本文的研究内容.3二 系统分析.32.1 需求分析.3三 数据库设计33.1 数据库概念.33.1.1 概念设计.33.1.2 酒店管理系统系统E-R图.33.2 数据库逻辑结构设计.33.2.1酒店管理系统逻辑结构设计.4四 详细设计44.1 数据库设计与实现44.2 用户登陆54.3 客户预定模块64.4 查询模块.114.5 入住模块.124.6 退房模块.12五 维护 .155.1 数据库的维护. 15六 总结与体会.15 一 前 言1.1 选题背景酒店业是一个前景广阔而又竞争激烈的行业。改革开放以来,我国的酒店业迅速发展,已经成为一个具有相当规模的产业。由于我国的旅游业迅速发展,通过调查,我国在2020年将成为世界上第四大旅游国家;同时我国加入世界贸易组织,酒店业将完全开放,这个时候,我国的酒店业将面临着前所未有的机遇和挑战。但是,现在甚至还有一些酒店还停留在由人工操作和管理阶段,这样已经无法适应当前的发展趋势。因此,要想使酒店的工作质量和效率提高,采用先进的计算机网络 通信技术改变酒店业务模式,实现酒店业务管理的自动化已经成为一种必然。 酒店管理系统采用B/S结构。按照按国家星级宾馆标准化业务程序流式设计,会采用主流开发工具来开发,搭建比较稳定可靠安全的服务端来辅佐客户管理,并且还采用数据库mysql,会通过测试用例来达到测试效果,技术支持会采用轻量级框架struts和hibernate持久化来完成,服务器采用tomcat,通过powerdesigner来设计数据模型为最初业务流程的概念设计阶段和详细设计阶段打好基础1。1.2 本文的研究内容 论文设计选题酒店管理系统,主要研究了:酒店业务的管理(划分为,登陆界面部分,查询界面部分,入住界面部分,退房界面部分)。二 系统分析2.1 需求分析系统需对用户登录进行管理。使用各功能模块时,系统应验证用户身份的有效性,否则要求用户登录。另外,允许用户对自己的密码进行修改。系统应提供客房的分类管理功能,可分类制订客房面积、价格、是否配备空调等客房类型,对不同标准的客房进行有效管理。系统可实现对客房信息的添加、删除以及修改。在进行入住/退房管理时,系统可以根据客房当前的状态自动提示可用服务(入住/退房)。如果客房没有客人入住,则该客房的可用服务为“入住”;否则,可用服务为“退房”。系统的客户端在Windows平台下运行,服务器端可在Windows平台或UNIX平台下运行。系统还需要有较好的安全性和可扩展性8。需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出系统的功能模块,即定义用例。这个步骤是对理解需求的升华,直接关系到该系统的质量。整个系统可以分为2大部分。酒店网站部分(客户服务网站)和酒店管理部分(管理员部分)。本系统只做了有关酒店管理的一部分。三 数据库设计3.1 数据库概念设计3.1.1概念结构在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。概念结构主要特点:(1) 能真是、充分地反映显示世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个只是模型;(2) 易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键。(3) 易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;(4)易于向关系、网状、层次等各种数据模型转换;概念结构时各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。3.2.2 酒店管理系统系统E-R图 3.2 数据库逻辑结构设计3.2.1酒店管理系统逻辑结构设计有了基本的E-R模型就可以进行逻辑结构设计,也就是设计基本的关系模式。设计基本的关系模式主要从E-R模型出发,将其直接转换为关系模式。根据转换规则,这个E-R转换的关系模式为:(1)用户(用户序号,用户名,餐台号,菜品编号,消费单编号),主码为用户序号。(2)消费单(消费单编号,所属餐台号,时间,消费额,操作用户,餐台编号,菜品编号,用户序号),主码为消费单编号。(3)菜品(菜品编号,所属菜系,名称,祝记码,单位,单价,菜品状态,消费单编号,用户序号,菜系序号),主码为菜品编号。(4)菜系(菜系序号,名称,菜品编号),主码为菜系序号。(5) 餐台(餐台编号,人数,消费单编号,用户序号,菜品编号),主码为餐台编号。现在分析一下这些关系模式。由于在设计关系模式时是以现实存在的实体为依据,而且遵守一个基本表只描述现实世界的一个主题的原则,每个关系模式中的每个非主码属性都完全由主码唯一确定,因此上述所有这些关系模式都是第三范式的关系模式。四 详细设计4.1 数据库设计与实现数据库通用类由DAO部分来实现,它是应用程序通过数据池访问数据的基础类,也是应用程序实现上层业务逻辑的基础。该类主要封装了创建访问数据库的一些对象或方法,如数据库连接对象等,以及执行数据库操作的对象或方法。数据库连接是连接数据库的必要对象,在该类定义了连接对象CON,该对象在整个类中都 可以使用。数据库连接代码实现如下: DataSource ds = null;Context context;try context = new InitialContext();ds = (DataSource) context.lookup(java:/comp/env/jdbc/mysqlds); catch (NamingException e) e.printStackTrace();System.out.println(获取数据源错误!);4.2 用户登陆在本次系统中,用户登陆模块与普通应用系统的用户登陆是基本相同的。因此当一个用户登陆管理系统之后,管理员的操作流程如以下图所示。图4-1 管理员登陆操作流程登陆模块主要思想为:当输入用户名和密码提交后到logincheck控制模块进行处理,当输入正确时转到jiemian.jsp;否则回到login.jsp页面重新输入,同时提醒登陆错误。Logincheck代码如下: request.setCharacterEncoding(utf-8);String username=request.getParameter(username);String password=request.getParameter(password);DataSource ds = null;String message=null;Context context;try context = new InitialContext();ds = (DataSource) context.lookup(java:/comp/env/jdbc/mysqlds); catch (NamingException e) e.printStackTrace();System.out.println(获取数据源错误!);try String sql = select username,password from user where username=? and password=?;QueryRunner run = new QueryRunner(ds);String str=username,password;List list = (List) run.query(sql,str, new BeanListHandler(room.class);if(list.isEmpty()message=登陆失败!请重新输入; request.setAttribute(message,message);request.getRequestDispatcher(/login.jsp).forward(request,response);else request.getRequestDispatcher(/jiemian.jsp).forward(request,response); catch (SQLException e) e.printStackTrace();4.3 客户预定模块预定模块有三个子功能实现:预定登记,修改登记和取消登记;各子模块实现如下:在本系统中,预定系统模块主要实现对酒店预定添加,修改,取消的管理,关系如下列图。添加是为预定客户保留预定信息,流程如下:图4-3 “添加”流程 预定登记设计思想:当登记时首先经过getallroom控制块处理,获得还有的空房在roomseachnull.jsp界面显示,然后选择预定的房间进行预定,接着转到addclient.jsp进行客户信息填写,最后经过insertroom到数据库添加。getallroom代码实现如下: request.setCharacterEncoding(utf-8);String leixing=request.getParameter(leixing);String yuding=request.getParameter(yuding);int i=Integer.parseInt(leixing);/i!=1;为预定登记操作 try if(i=1) sql = select roomno,statue,startdate,enddate from room;elsesql = select roomno,statue,startdate,enddate from room where statue=0;QueryRunner run = new QueryRunner(ds);List list = (List) run.query(sql, new BeanListHandler(room.class); request.setAttribute(list,list); if(i=1) request.getRequestDispatcher(/main/roomseach.jsp).forward(request,response); elserequest.setAttribute(yuding,yuding); request.getRequestDispatcher(/main/roomseachnull.jsp).forward(request,response); catch (SQLException e) e.printStackTrace();提交到insertroom对数据库操作:当leixing=0时是预定操作,leixing=1时是入住操作,当leixing=2时是退房操作。Insertroom代码如下: request.setCharacterEncoding(utf-8);ServletContext application = getServletContext();String leixing = (String) application.getAttribute(leixing);String roomno= (String) application.getAttribute(roomno);System.out.println(roomno);System.out.println(leixing); int i=Integer.parseInt(leixing);DataSource ds = null;Context context;try context = new InitialContext();ds = (DataSource) context.lookup(java:/comp/env/jdbc/mysqlds); catch (NamingException e) e.printStackTrace();System.out.println(获取数据源错误!);int result = 0;String message = null;String sql=null;try switch(i)case 0:sql=update room set statue=1 where roomno=?;break;case 1:sql=update room set statue=2,startdate=now() where roomno=?;break;case 2:sql=update room set enddate=now() where roomno=?;break; String sr = roomno;QueryRunner run = new QueryRunner(ds);result = run.update(sql, sr);if(i=1) sql=update client set yuding=2 where roomnumber=?; QueryRunner run1 = new QueryRunner(ds); run1.update(sql, sr);if(i=2)ServletContext application1 = getServletContext();application1.setAttribute(roomno, roomno);RequestDispatcher rs = request.getRequestDispatcher(/servlet/seachall);try rs.forward(request, response);return; catch (Exception e) elseif (result = 1) message = 操作成功!; else message = 操作失败!;request.setAttribute(message, message);request.getRequestDispatcher(/addResult.jsp).forward(request,response); catch (SQLException e) e.printStackTrace();“修改”操作为预定客户提供修改相关信息的功能,流程图如下图4-6 “修改”流程设计思想:输入身份证号后提交经trueroom查找客户信息,在xiugai.Jsp页面显示客户的信息,修改后提交update对数据库进行修改.Truroom代码如下: request.setCharacterEncoding(utf-8);ServletContext application = getServletContext();String leixing= (String) application.getAttribute(leixing);String roomno = (String) application.getAttribute(roomno); DataSource ds = null;Context context;try context = new InitialContext();ds = (DataSource) context.lookup(java:/comp/env/jdbc/mysqlds); catch (NamingException e) e.printStackTrace();System.out.println(获取数据源错误!);try String sql = select * from room where statue=? and roomno=?;QueryRunner run = new QueryRunner(ds);String str=leixing,roomno;List list=(List) run.query(sql,str,new BeanListHandler(room.class);if(list.isEmpty()request.getRequestDispatcher(/servlet/insertroom).forward(request,response);elseServletContext application1= getServletContext(); application1.setAttribute(roomno,roomno);application1.setAttribute(leixing,leixing);RequestDispatcher rs=request.getRequestDispatcher(/servlet/insertroom);tryrs.forward(request,response);return;catch (Exception e) catch (SQLException e) e.printStackTrace();“取消”操作为客户提供取消预定的功能,方便客户改变计划,流程图如下:图4-8 “取消”流程4.4 查询模块 在本系统中,查询系统模块主要实现对酒店房间状态查询,客户查询和所有客户信息查询的管理,查询设计主要包括:房间入住情况查询,客户查询和显示所有客户;关系如下列图。查询房间状态能更好的了解酒店入住情况,为客户修改房间号提供依据,流程如下:图4-9 “房间状态”查询流程房间查询的思想为:先到getallroom控制块对条件进行处理,将满足条件的房间号的数组放到room.Class中,再到Roomseach.Jsp页面将数组显示出来。getallroom代码实现如下:try sql = select roomno,statue,startdate,enddate from room; QueryRunner run = new QueryRunner(ds);List list = (List) run.query(sql, new BeanListHandler(room.class); request.setAttribute(list,list); request.getRequestDispatcher(/main/roomseach.jsp).forward(request,response); catch (SQLException e) e.printStackTrace();客户查询为其他人员查找客户提供方便快捷的功能,提高效率,其流程图如下:图5-11 “客户”查询流程设计思想与gatallroom基本相同,只是SQL语句中的查询表不同。显示所有客户信息是客户查询的进一步扩展,可以查看所有的客户,并提供修改的功能,其流程图如下: 图4-12 “显示所有客户”流程设计思想与gatallroom基本相同,只是SQL语句中的查询表不同。4.5 入住模块 在本系统中,入住系统模块主要实现对预定客户入住和散客登记入住的管理,关系如下列图。 预定入住是为预定客户提供入住手续的模块,为预定客户提供方便,其流程图如下: 图4-14 “预定入住”流程预定入住设计思想为:首先到getclient控制块中查询已经预定的客户信息,到Yudingruzu.Jsp页面显示出来,然后选择客户进行入住。 getclient代码实现如下:try String sql=select clientname,sex,shenfenzheng,roomnumber from client where yuding=1;QueryRunner run = new QueryRunner(ds);List list = (List) run.query(sql, new BeanListHandler(dbcommen.class);request.setAttribute(list,list);request.getRequestDispatcher(/main/yudingruzhu.jsp).forward(request,response);catch(SQLException e) e.printStackTrace();登记入住是为散客提供入住的操作,其流程如下: 图4-16“登记入住”流程4.6 退房模块 在本系统中,退房模块主要实现对入住客户退房的管理,关系如下列图。 图4-17 “退房”操作流程客户退房模块设计是:输入房间号后查询客户信息及消费情况;在输出之前首先要预先查询房间号是否有人入住,再修改数据库信息,最后显示客户的信息及消费情况。退房设计思想为:当输入房间号后到trueroom2控制块中查询该房间是否已经入住,到满足条件时,到insertroom对数据库插入退房时间,然后再到getall控制块查询:客户信息,房间入住,退房时间以及客户消费信息。最后到all.Jsp页面显示所有信息。然后结账,退房。trueroom2预先查询代码如下: request.setCharacterEncoding(utf-8);String roomno = request.getParameter(roomno);String leixing= request.getParameter(leixing);try String sql = select * from room where statue=? and roomno=?;QueryRunner run = new QueryRunner(ds);String str = leixing, roomno ;List list = (List)run.query(sql, str, new BeanListHandler(room.class);ServletContext application1 = getServletContext();application1.setAttribute(roomno, roomno);application1.setAttribute(leixing, leixing);RequestDispatcher rs = request.getRequestDispatcher(/servlet/insertroom);try rs.forward(request, response);return; catch (Exception e) catch (SQLException e) e.printStackTrace();Insertroom的实现如下:request.setCharacterEncoding(utf-8);ServletContext application = getServletContext();String leixing = (String) application.getAttribute(leixing);String roomno= (String) application.getAttribute(roomno);System.out.println(roomno);System.out.println(leixing); int i=Integer.parseInt(leixing);int result = 0;String message = null;String sql=null;try switch(i)case 0:sql=update room set statue=1 where roomno=?;break;case 1:sql=update room set statue=2,startdate=now() where roomno=?;break;case 2:sql=update room set enddate=now() where roomno=?;break; String sr = roomno;QueryRunner run = new QueryRunner(ds);result = run.update(sql, sr);if(i=1) sql=update client set yuding=2 where roomnumber=?; QueryRunner run1 = new QueryRunner(ds); run1.update(sql, sr);if(i=2)ServletContext application1 = getServletContext();application1.setAttribute(roomno, roomno);RequestDispatcher rs = request.getRequestDispatcher(/servlet/seachall);try rs.forward(request, response);return; catch (Exception e) elseif (result = 1) message = 操作成功!; else message = 操作失败!;request.setAttribute(message, message);request.getRequestDispatcher(/addResult.jsp).forward(request,response); catch (SQLException e) e.printStackTrace();Seachall的实现如下:request.setCharacterEncoding(utf-8);ServletContext application = getServletContext();String roomno = (String) application.getAttribute(roomno);String consumerno = 123456;DataSource ds = null;String sql = null;try sql = select clientname,sex,shenfenzheng from client where yuding=2 and roomnumber=?;QueryRunner run = new QueryRunner(ds);String str = roomno ;List list = (List) run.query(sql, str, new BeanListHandler(dbcommen.class);dbcommen bl = (dbcommen) list.get(0);request.setAttribute(bl, bl);sql = select roomno,startdate,enddate,timestampdiff(day,startdate,enddate) as day from room where statue=2 and roomno=?;List list1 = (List) run.query(sql, str, ne

温馨提示

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

评论

0/150

提交评论