《基于JSP的中小型酒店管理系统设计.pdf》由会员分享,可在线阅读,更多相关《基于JSP的中小型酒店管理系统设计.pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录目录一 绪论.4二 开发技术简介.52.1 B/S 系统结构.52.2 MyEclipse 集成开发工具.62.3 Java 简介.62.4 Tomcat 服务器简介.72.5 JavaScropt 简介.82.6 MySQL 数据库简介.82.7 总体设计原则.8三 需求分析.93.1 系统需求分析.93.2 可行性分析.9四 系统设计.114.1 系统设计规划.114.2 系统体系设计.114.3 功能模块设计.12五 功能模块的设计.145.1 系统登录模块.145.2 管理员系统主页面.165.3 注册会员管理模块.175.4 类别信息管理模块.185.5 客房信息管理模块.205
2、.6 预定信息管理.23六 数据库设计.256.1 数据库的概念结构设计.256.2 数据库的表结构设计.286.3 数据库的连接原理.30七 项目效果.337.1 网站首页.337.2 用户注册.337.3 客房信息查看.347.4 系统留言板.35参考文献.36一一 绪论绪论随着改革开放的到来,人们的生活水平与消费观念都发生了翻天覆地的变化,酒店行业也在飞速的发展中,如何提高酒店的行业竞争力,如何提高酒店的经营管理水平,降低酒店的运营成本,这些问题都需要借助计算机技术来解决。根据调查显示,我国的大部分中小型酒店仍然采用传统的人工管理方式,这种管理方式的弊端已经显而易见。第一,上网搜寻旅途中
3、需要的酒店已经成为游客的首选,选择酒店房间,传统人工管理使顾客无法通过互联网第一时间取得酒店的相关信息;第二,手工录入的入住信息,不仅占用顾客时间,也增加管理的时间成本;第三,人工难免出现差错,给酒店带来或大或小的损失;第四,纸质的酒店经营数据无法直观地展现在决策者面前,不利于酒店发展。显然,酒店业传统人工管理方式已无法满足快节奏、高效率的酒店业管理需求。因此,在信息化背景下,如何利用计算机技术与网络技术,探索适用于中小型酒店的经营管理模式,实现中小型酒店管理信息化、自动化与智能化,为酒店顾客提供高效、快捷的酒店业务服务,已经成为中小型酒店必须要解决的重要问题。二二 开发技术简介开发技术简介为
4、了实现酒店的信息化管理,有效地提高酒店的现代化服务水平。利用现在流行的 Web 开发语言(前台使用 HTML、CSS、Javascript 语言实现界面搭建,后台使用 Java 语言开发,数据库采用 MySQL,服务器使用 Tomcat)对系统进行详细的需求分析、合理的设计、高效的代码实现、多角度的系统测试,最终实现该系统。结果构建基于 Web 的酒店管理系统,实现利用计算机网络来管理客户信息、客房信息、洒店预订、入住、账务结算、统计报表等功能,实现中小型酒店信息管理的系统化、规范化和自动化。结论通过应用新技术对系统的再次开发,解决原有系统的功能缺陷,对同类信息管理系统的设计开发有参考价值。本
5、设计主要讨论了酒店管理系统开发中使用的相关技术,本系统采用了 B/S构。B/S 结构分为 Web 浏览器、中间层和后台数据库服务器三个层次。中间层是指运行在服务器中的,联系 Web 浏览器与后台数据库服务器的软件。本系统中间层采用基于 J2EE 的三层结构解决方案,数据库服务器采用了 MySQL 数据.库。中间层和数据库层的通信采用了 JDBC 技术,并使用了数据库缓冲技术。中间层的开发采用了 MVC 模式。为了提供统一的认证界面,本系统附加了一个统-用户认证的功能,即单点登录。在单点登录中,各个应用系统之间的通信采用了 Web Service。2.12.1 B/SB/S 系统结构系统结构B/
6、S 的特征和基本结构:在 B/S 结构中,每个节点都分布在网络上,这些网络节点可以分为浏览器端、服务器端和中间件,通过它们之间的链接和交互来完成系统的功能任务。三个层次的划分是从逻辑上分的,在实际应用中多根据实际物理网络进行不同的物理划分。浏览器端:即用户使用的浏览器,是用户操作系统的接口,用户通过浏览器界面向服务器端提出请求,并对服务器端返回的结果进行处理并展示,通过界面可以将系统的逻辑功能更好的表现出来。服务器端:提供数据服务,操作数据,然后把结果返回中间层,结果显示在系统界面上。中间件:这是运行在浏览器和服务器之间的。这层主要完成系统逻辑,实现具体的功能,接受用户的请求并把这些请求传送给
7、服务器,然后将服务器的结果返回给用户,浏览器端和服务器端需要交互的信息是通过中间件完成的。其三层结构图如图 2-1 所示。图 2-1 三层结构图本系统采用了 B/S 流行框架开发,数据库服务器采用 Windows10 系统,利用Tomcat 服务器以及 MyEclipse 开发工具,并安装了 MySQL 数据库。2.22.2 MyEclipseMyEclipse 集成开发工具集成开发工具MyEclipse,是一个十分优秀的用于开发 Java,J2EE 的 Eclipse 插件集合,MyEcli pse 的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEc1ipse 企业
8、级工作平台(MyEclipse Enterprise Workbench,简称 MyEclipse)是对 EclipseIDE 的扩展,利用它我们可以在数据库和 JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的 JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 HTML,Struts,JSP,CSS,Javascript,SQL,Hi bernate。2.32.3 JavaJava 简介简介随着互联网技术的不断发展,基于浏览器/服务器(Browser/Server 简称B/S)体,系结构的应用程序得到了空前广泛的应用。但是服务
9、器之间的通讯,尤其是在不同平台。上运行的服务器之间的通讯仍然不是一件容易的事情。因为大多数 Internet 应用程序都是以数据库为中心的,方便的访问多种数据源的能力也比以往任何时候都更加重要。JSP 无疑可以轻松地实现这类功能,JSP 技术是一-种服务器端的 HTML 页面中嵌入 JAVA 代码的脚本语言,它比一般脚本语言 的执行速度更快,由于 JSP是基于 JAVA 语言的,所以它可以运行在 UNIX/LINUX 和 WINDOWS 平台上,是种难得的动态网页开发语言。在动态内容的解决问题中,还存在其他的解决方法,但是开发人员要掌握这些技术很难。例如,Java Servlets 这样 的技
10、术就可以使得用 Java 语言编写交互式的应用程序的服务器端的代码变得更加简单。Java Servlets 就是 一个基于 Java 技术的运行在服务器端的程序(与 Applet 不同,后者运行在浏览器端)。开发人员编写出 Servlet 程序,用来接收来自 Web 浏览器的 HTTP 请求,动态地生成响应,然后发送包含 HTML 或 XHL 文档到浏览器。Java 的特点:(1)简单 Java 语言简单是指这门语言既易学又好用。简单并不代表干瘪,Java 是-一门很丰富的语言。(2)面向对象基于对象的编程更符合人们的思维模式,使人更容易编写程序。(3)跨平台 Java 是基于虚拟机运行的程序
11、,它可以实现一处编译多处运行。(4)多线程 Java 实现了内置多线程支持。多线程允许同时完成多个任务。(5)安全 Java 小应用程序被限制在只允许访问 Java 运行环境中,不允许访问计算机其他资源。Java 提供了强类型检查机制,使得程序在开发期间更安全。(6)动态 Java 程序的基本组成单位就是类,有些类是自己编写的,有些类.是从类库引用的,而类又是运行时动态绑定的,这就使得 Java 可以在分布式环境中动态的维护程序和类。2.42.4 TomcatTomcat 服务器简介服务器简介Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开
12、发和调试 JSP 程序的首选。可以这样认为,当在一台机器上配置好 Apahce 服务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。2.52.5 JavaScroptJavaScropt 简介简介JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端 Web 开发的脚本语言,常用来给 HTML 网页添加动态功能,比如响应用户的各种操作。JavaScript 的一个重要功能就是面向对象的功
13、能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在 HTML 基础上,使用 Javascript 可以开发交互式 Web 网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript 技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。2.62.6 MySQLMySQL 数据库简介数据库简介MySQL 使用 C 和 C+编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持 AIX、FreeBSD、HP-UX、Linux、Mac
14、 OS、Nove11Netware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统;为多种编程语言提供了 API;支持多线程,充分利用 CPU 资源;提供 TCP/IP、ODBC 和 JDBC 等多种数据厍连接途径;可以处理拥有上千万条记录的大型数据库。对于一般的个人使用者和中小型企业来说,MySQL 提供的功能已经绰绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。最主要的原因是MySQL是免费开源的,我们可以建立多个MySQL数据库集群,从而更好的优化用户体验,有良好的性价比等。2.72.7 总体设计原则总体设计原则(1)界面友
15、好、操作简单:在页面中要加入提示信息,便于用户操作。(2)实时的页面更新:对用户的操作(包括预订、修改、删除等)、客房的状态(包括已入住、未入住、是否具备入住条件等)实时显示在页面上。(3)功能完善:对酒店管理系统功能需求的实现。(4)可移植性强:系统稍作修改就可适应其它酒店的要求。三三 需求分析需求分析3.13.1 系统需求分析系统需求分析目前,一些中小型酒店的管理仍采用手工管理方式,包括客房的预订、入住、查询、结算、业务报表等。酒店管理系统软件能够提高酒店的服务管理水平,但市面上的酒店管理软件存在以下问题:(1)大部分仍采用 C/S 模式,在国内酒店管理系统软件中 10 大品牌中有 6个采
16、用这种模式,造成客户使用不便,操作繁杂,不便于网上预订等欠缺。(2)软件服务对象偏高,大部分软件适用于三星级以上酒店。(3)价格普遍偏贵,后期维护费用偏高。(4)酒店预订方式单一。目前大部分是电话预订,互连网预订、代理商预订、E-mail 预订等都有待加强,特别是互联网的预订。(5)软件功能过于强大。既包括酒店管理,又包括餐饮、娱乐、洗浴等功(6)需要客户有较高的计算机操作水平,操作比较复杂,需要进行专门的培训,有些功能(如网上预订)十分欠缺。这类系统对中小型酒店非常不适用。3.23.2 可行性分析可行性分析1、技术上的可行性本管理信息系统将采用技术成熟的 IntelliJ IDEA 作为前台
17、开发工具。后台数据库采用阿里巴巴出品的 Navicat Premium 对数据库进行管理,NavicatPremium 功能强大、简单易学、使用方便,只需要看懂文字,只需要点击即可完成简单的操作,因此,系统的软件开发平台己成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。本系统使用 Java 技术进行开发,编程语言使用 Java,Java 语言是公认的易学易用的语言。2、经济上的可行性本系统可以通过 GitHub 等各大论坛免费获取源码,免费使用,操作人员只需要简单的培训即可操作,管理维护也比较简单,外加
18、MySQL 数据库免费使用和部署,完全可以剩下大笔资金,对于中小型酒店在经济上是完全可以接受的。3、操作上的可行性在操作_上对开发人员要求不高,Windows 操作系统已经非常普及了,Java语言也相对容易上手。按以上两个方面进行可行性分析、研究后,我认为该项目在技术上是可行的,在经济_上是可行的,在操作上也是可行的,所以完全可以进行开发。四四 系统设计系统设计4.14.1 系统设计规划系统设计规划酒店管理系统是基于 Web 的中小型酒店管理系统要具备管理客户信息、客房信息、酒店预订、入住、账务结算等功能,实现中小型酒店信息管理的系统化、规范化和自动化。(1)对于旅客:可以登录该酒店网站,了解
19、酒店的基本情况,进行房间的查询、预订。(2)对于酒店管理人员,登录该系统可以进行客户登记、客户信息查询、客房预订、退房、客房管理、用户管理。系统分析模型如图 4-1:图 4-1 系统分析图4.24.2 系统体系设计系统体系设计用户通过注册提交个人信息后才可进行客房的预订等操作。用户在注册过程中需输入个人信息,如姓名、性别、邮箱、手机号和密码等。系统验证用户填写的信息是否符合要求(即合法性),如果输入的数据信息与系统要求的数据类型不一致,则会提示用户重新输入;如果验证的信息通过则可进行下一步操作。注册成功后回到系统主页,用户可在系统中进行预订客房、修改个人信息等操作。酒店管理系统,采用典型的 3
20、 层架构开发模式,围绕前台界面模块设计、功能模块设计、数据库设计,即表示层-业务逻辑层-数据访问层,有利于系统的开发、维护、部署和扩展。系统开发架构分析模型如图 4-2:图 4-2 系统开发架构4.34.3 功能模块设计功能模块设计本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:(1)系统具有简洁大方的页面,使用简便,友好的错误操作提示。(2)管理员用户具有注册用户信息管理、客房类型管理、客房信息管理、预订信息管理、公告及留言管理等功能。(3)具有较强的安全性,避免用户的恶意操作。管理员功能模块图说明:管理员是功能最多的一种用户角色。(1)注册用户管理模块:在该模块中
21、完成注册用户信息管理功能,注册用户信息管理提供注册用户的查询和册除等功能操作。(2)客房类型管理模块:在该模块中定义了对客户类型的管理,其功能包括客房类型的录入、查询、删除等操作。(3)客房信息管理模块:在该模块中定义了对客房信息的管理,其功能包括客房信息的录入、查询、删除等操作。(4)预订信息管理模块:在该模块中定义了客房预订信息的管理,其功能包括客房预订信息的查询、删除等操作。(5)公告信息管理模块:在该模块中定义了公告信息的管理,其功能包括公告信息的录入、查询、删除等操作。(6)留言信息管理模块:在该模块中定义了留言信息的管理,其功能包括留言信息的查询、删除等操作。管理员用户模块 E-R
22、 图如图 4-3 所示:图 4-3 管理员用户模块 E-R 图五五 功能模块的设计功能模块的设计5.15.1 系统登录模块系统登录模块用户登录系统界面,整个界面都是用标签 form 来完成。Form 通过标签 input来做出登录和重置按钮,在登录时 input 的 name 是 subrmit,提交方式是 post,向数据库提交数据进行匹配;重置是 JavaScript 里的一个自带的按钮叫 reset,来实现用户名密码清空。用户注册做的是一个超链接,转到用户注册界面。用户登录界面如图 5-1 所示:图 5-1 用户登录图管理员登录界面:管理员登录界面和用户界面相差无几,但是删除了注册功能,
23、管理员账户只能通过超级管理员账户在系统内部申请然后转给线下工作人员进行登录,为防止暴露破解,在下端加入了加减验证码进行认证,该页面也是一个 form 表单,用 submit 像数据库提交,将数据库中表中的数据内容进行匹配。管理员登录界面如图 5-2 所示。图 5-2 管理员登录图后端登录验证代码:/登录验证public int login(String userName,String password)int result=0;Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;try conn=util.getCo
24、nnection();String sql=select count(*)from users where userName=?andpassword=?;ps=conn.prepareStatement(sql);ps.setString(1,userName);ps.setString(2,password);rs=ps.executeQuery();while(rs.next()result=rs.getInt(count(*);catch(SQLException throwables)throwables.printStackTrace();finally util.close(co
25、nn,ps,rs);return result;5.25.2 管理员系统主页面管理员系统主页面系统主页面:左方页面展示了管理员可操作的四大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。程序运行效果图如图 5-3 所示。图 5-3 程序运行效果图在每个 jsp 页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:if(session.getAttribute(user)=nul1)out.print(alert(请先登录!);window.open(./index.jsp,_self);5.35.3 注册会员
26、管理模块注册会员管理模块管理员点击左侧的菜单“会员信息信息”,页面跳转到会员信息管理界面,调用后台的 action 类查询出所有的普通会员信息,并把这些信息封转到数据集合 List 中,绑定到 request 对象,然后页面跳转到相应的 jsp,显示出普通会员信息。程序效果图如下图 5-4 所示。图 5-4 程序效果图会员管理关键代码:public string userMana_putong()string sql=from TUser where userDel=no and userType=普通会员;List userList=userDAO.getHibernateTemplate(
27、).find(sql);Maprequest=(Map)ServletActionContext.getContext().get(request);request.put(userList,userList);return Actionsupport.SUCCESS;publie string use rMana_vip()stringsql=fromTUserwhereuserDel=noanduserType=vipyonghu;List userList=userDAO.getHibernateTemplate().find(sql);Maprequest=(Map)ServletAc
28、tionContext.getContext().get(request);request.put(userList,userList);return Actionsupport.sUCCESS;public string userto_vip()TUser user=userDAO.findById(userId);user.setUserType(vipyonghu);userDAo.attachDirty(user);Maprequest=(Map)ServletActionContext.getContext().get(request);request.put(msg,操作成功);r
29、eturn msg;public string userDel()TUser user=userDAO.findById(userId);user.setUserDel(yes);userDAO.attachDirty(user);Maprequest=(Map)ServletActionContext.getContext().get(request);request.put(msg,操作成功);return msg;5.45.4 类别信息管理模块类别信息管理模块类别信息的录入:管理员输入类别相关正确信息后点击录入按钮,如果是没有输入完整的类别信息,都会给出相应的错误提示,不能录入成功。输入
30、数据都通 过 form 表 单 中 定 义 的 方 法 onsubmit=return checkForm()来 检 查,checkForm()函数中是各种的校验输入数据的方式。程序效果图如下图 5-5 所示。图 5-5 类别信息的录入效果图类别信息的添加:管理员点击左侧的菜单“类别管理”,页面跳转到客房类别管理界面,调用后台的 action 类查询出所有的客房类别信息,并把这些信息封转到数据集合 List 中,绑定到 request 对象,然后页面跳转到相应的 jsp,显示出客房类别信息。程序效果图如下图 5-6 所示。图 5-6 类别信息添加效果图类别信息管理关键代码:public str
31、ing catelogAdd()TCatelog catelog=new TCatelog();catelog.setcatelogName(catelogName);catelog.setCatelogDel(no);catelog DAO.save(catelog);this.setMessage(操作成功);this.setPath(catelogMana.action);return succeed;public string catelogMana()String sql=from Tcatelog where catelog Del=no;List cateLogList=cate
32、logDAo.getHibernateTemplate().find(sql);Map mrequest=(Map)ServletActionContext.getContext().get(request)request.put(cateLogList,cateLogList);return Actionsupport.sUCCESS;5.55.5 客房信息管理模块客房信息管理模块客房信息的录入:管理员输入客房相关正确信息后点击录入按钮,如果是没有输入完整的客房信息,都会给出相应的错误提示,不能录入成功。输入数据都通 过 form 表 单 中 定 义 的 方 法 onsubmit=retur
33、n checkForm()来 检 查,checkForm()函数中是各种的校验输入数据的方式。程序效果图如下图所示。图 5-7 客房信息的录入效果图客房信息的管理:管理员点击左侧的菜单“客房信息”,页面跳转到客房信息管理界面,调用后台的 action 类查询出所有的客房信息,并把这些信息封转到数据集合 List 中,绑定到 request 对象,然后页面跳转到相应的 jsp,显示出客房信息。程序效果图如下图所示。图 5-8 客房信息的管理效果图客房信息管理关键代码:/从数据库中提取数据展示到页面上public string kefangMana()string sql=from TKefang
34、 where del=no order by catelogId;List kefangList=kefangDAo.getHibernateTemplate().find(sql);for(int i=0;ikefangList.size();i+)TKefang kefang=(TKefang)kefangList.get(i);kefang.setcatelog(catelogDAo.findById(kefang.getCatelogId();Maprequest=(Map)ServletActionContext.getContext().get(request);request.p
35、ut(kefangList,kefangList);return Actionsupport.SUCCESS;/添加客房public string kefangAdd()TKefang kefang=new TKefang();kefang.setFangjianhao(fangjianhao);kefang.setArea(area);kefang.setJieshao(jieshao);kefang.setFujian(fujian);kefang.setQianshu(qianshu);kefang.setCatelogId(catelogId);kefang.setYudingtiao
36、jian(yudingtiaojian);kefang.setDel(no);kefang DAO.save(kefang);this.setMessage(操作成功);this.setPath(kefangMana.action);return succeed;/客房删除public string kefangDel()TKefang kefang=kefangDAO.findById(id);kefang.setDel(yes);kefangDAo.attachDirty(kefang);Maprequest=(Map)ServletActionContext.getContext().g
37、et(request);request.put(msg,操作成功);return msg;/客房编辑public string kefangEdit()TKefang kefang=kefangDAO.findById(id);kefang.setFangjianhao(fangjianhao);kefang.setArea(area);kefang.setJieshao(jieshao);kefang.setFujian(fujian);kefang.setQianshu(qi anshu);kefang.setCatelogId(catelogId);kefang.setYudingtia
38、ojian(yudingtiaojian);kefangDAO.getHibernateTemplate().update(kefang);this.setMessage(操作成功);this.setPath(kefangMana.action);return succeed;5.65.6 预定信息管理预定信息管理预定管理:管理员点击左侧的菜单“预订信息”,页面跳转到预订信息管理界面,调用后台的 action 类查询出所有的预订信息,并把这些信息封转到数据集合 List 中,绑定到 request 对象,然后页面跳转到相应的 jsp,显示出预订信息。预定信息删除:先是点击预订信息管理,页面跳转
39、到预订信息管理界面,浏览所有的预订信息,点击要删除的预订信息,弹出的确定对话框,即可删除该预订信息。程序效果图如下图所示。图 5-9 预定管理效果图预订信息管理关键代码:/从数据库中提取数据public string yudingMana()string sql=from TYuding where del=no;List yudingLis t=yudingDAo.getHibernateTemplate().find(sql);for(int I=0;I yudingList.size();i+)TYuding yuding=(TYuding)yudingList.get(i);yudin
40、g.setuser(userDAo.findById(yuding.getUserId();yuding.setkefang(kefangDAO.findById(yuding.getKefangId();Maprequest=(Map)ServletActionContext.getContext().get(request);request.put(yudingList,yudingList);return ActionSupport.sUCCESS;/删除public string yudingDel()TYuding yuding=yudingDAO.findById(id);yudi
41、ng.setDel(yes);yudingDAO.attachDirty(yuding);Maprequest=(Map)ServletActionContext.getContext().get(request);request.put(msg,操作成功);return msg;六六 数据库设计数据库设计6.16.1 数据库的概念结构设计数据库的概念结构设计概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。数据库的概念结构设计采用实体联系(E-R模型设计方法。E-R 模型法的组成元素有:实体、
42、属性、联系,E-R 模型用 E-R 图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的 DBMS,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立 E-R 模型图。注册用户信息实体 E-R 图如图所示:图 6-1 注册用户信息实体 E-R 图类别信息实体 E-R 图如图 6-2 所示。图 6-2 类别信息实体 E-R 图(1)房间信息实体 E-R 图如图 6-3 所示:图 6-3 房间信息实体 E-R 图(2)预订信
43、息实体 E-R 图如图 6-4 所示:图 6-4 预订信息实体 E-R 图(3)评论信息实体 E-R 图如图 6-5 所示:图 6-5 评论信息实体 E-R 图(4)公告信息 E-R 图如图 6-6 所示:图 6-6 公告信息 E-R 图(5)留言信息 E-R 图如图 6-7 所示:图 6-7 留言信息 E-R 图(6)管理员信息 E-R 图如图 6-8 所示:图 6-8 管理员信息 E-R 图6.26.2 数据库的表结构设计数据库的表结构设计数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R 模型
44、向关系数据库模型转换应遵循下列原则:每一个实体要转换成一个关系所有的主键必须定义非空(NOT NULL),对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定外键。根据 E-R 模型,酒店管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1)会员信息表主要是记录了注册会员基本信息,表结构如表 6-1 所示。表 6-1 会员信息表(t_user)列名数据类型长度允许空是否主键说明user_idInt4否是编号user_realnamevarchar50否否姓名user_sexvarchar50否否性别user_telvarchar50否否联系电话User_emailvarchar
45、50否否邮箱User_qqvarchar50否否QQFujianvarchar50否否用户照片User_typevarchar50否否用户类型User_namevarchar20否否登录名User_pwvarchar20否否登录密码User_addressvarchar50否否地址(2)类别信息表主要记录了客房类别基本信息,表结构如表 6-2 所示。表 6-2 管理员信息表(t_catelog)列名数据类型长度允许空是否主键说明Catalog_idInt4否是编号Catalog_nameVarchar50否否类别名称(3)客房信息表主要是记录了客房的基本信息,表结构如图 6-3 所示。表 6-
46、3 产品信息表(t_kefang)列名数据类型长度允许空是否主键说明IdInt4否是编号Catalog_idInt4否否客房类型FangjianhaoVarchar50否否房间号AreaVarchar50否否面积JieshaoVarchar50否否介绍FujianVarchar50否否图片QianshuVarchar50否否价格yudiangtiaojianVarchar50否否预定条件(4)预订信息表主要记录了客房预订的基本信息,表结构如图 6-4 所示。表 6-4 预订信息表(t_yuding)列名数据类型长度允许空是否主键说明IdInt4否是编号User_idInt4否否预定会员Kefa
47、ngidInt4否否客房信息TianshuVarchar50否否预定天数yudiangzheTelVarchar50否否预定电话ShijianVarchar50否否预定时间(5)评论信息表主要是记录会员对客房的评论信息,表结构如图 6-5 所示。表 6-5 评论信息表(t_pinglun)列名数据类型长度允许空是否主键说明IdInt4否是编号Kefang_idInt4否是客房信息ContentVarchar50否否评论内容ShijianVarchar50否否评论时间(6)公告信息表主要是记录了公告的基本信息,表结构如图 6-6 所示。表 6-6 公告信息表(t_gonggao)列名数据类型长度
48、允许空是否主键说明IdInt4否是编号TitleVarchar50否否标题ContentVarchar255否否内容ShijianVarchar50否否发布时间(7)留言信息表主要是记录了留言的基本信息,表结构如图 6.2-7 所示。表 6-7 留言信息表(t_liuyan)列名数据类型长度允许空是否主键说明IdInt4否是编号TitleVarchar50否否标题ContentVarchar255否否内容ShijianVarchar50否否发布时间User_idVarchar50否否发布人(8)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表 6.2-8 所示。表 6-8
49、管理员信息表(t_admin)列名数据类型长度允许空是否主键说明userIdInt4否是编号userNameVarchar50否否用户名userPwVarchar50否否密码6.36.3 数据库的连接原理数据库的连接原理1 因为我们使用的数据库是 MySQL,所以需要去下载 MySQL 支持 JDBC 的驱动程序,而开发环境是 MyEclipse,将下载得到的驱动程序加载进开发环境中。2、在 Java 程序中加载驱动程序。在 Java 程序中,可以通过反射 Driver方式来加载添加到开发环境中的驱动程序。3、创建数据连接对象:通过 DriverManager 类创建数据库连接对象Connec
50、tion。DriverManager 类作用于 Java 程序和 JDBC 驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的 getConnection 方法,根据数据库的 URL、用户名和密码,创建一个 JDBC Connection 对象。4、创建 Statement 对象:Statement 类的主要是用于执行静态 SQL 语句并返回它所生成结果的对象。通过 Connection 对象的 createStatement()方法可以创建一个 Statement 对象。5、调用 Statement 对象的相关方法执行相对应的SQL 语句:通过execuUpdate()方法