项目报告
酒店管理系统的设计与实现
摘 要
中国经济近几年来取得蓬勃飞速发展,使得人民生活水平的要求和生活的质量有了很高的要求。因此人们对外出旅游和就餐的需求也越来越大。同时,随着我国科技水平的兴起和对互联网+新时代的大力支持,酒店管理系统在现代人们的生活中扮演着不可或缺的角色。
酒店管理系统,不仅能够加大对酒店的有效管理,而且能够使顾客享受到更优质服务。这个酒店管理系统从实际的需求出发实现了管理员权限管理模块,餐饮信息管理模块,客房信息管理和餐饮预订模块,顾客消费情况管理,客房预订操作模块。
这个系统以jsp风格为主要的开发语言,使用现在比较流行的MVC框架作为辅助手段,运用于开源免费的小型tomcat服务器来进行对MYSQL操作,在Myeclipse企业版开发环境软件上运行,完成了一个酒店管理系统。本系统具有简单易懂的操作方式和显示详细的房间信息,用户可以方便的了解到本酒店的全面信息,节约时间和成本。
关键字:酒店管理, JSP, MYSQL, tomcat
目 录
3.2.1 数据库的概念结构设计.............................................................................. 8
3.2.2数据库的逻辑结构设计............................................................................... 9
3.2.2数据库的连接原理.................................................................................... 11
3.4.2客房管理模块设计.................................................................................... 12
3.4.4 特色菜品介绍模块设计............................................................................ 13
3.4.5餐桌预订模块设计.................................................................................... 14
3.4.6餐饮消费管理模块设计............................................................................. 14
4.2.4客房预订信息管理................................................................................ 22
5.1系统测试的目的和意义....................................................................................... 29
5.5.1主页面的登录模块测试............................................................................. 30
5.5.4客房预订添加测试................................................................................ 33
5.5.5客户信息查询测试................................................................................ 33
1 绪论
1.1课题背景
中国改革开放以后,我国大力发展经济、教育、旅游等等先进产业链,人们对于外出旅游和群体聚餐的需求越来越大。而且我国的良好的科学教育水平和人民文化素质的提高,为酒店管理系统提供了良好的机遇和前景。
采用现代化开发模式,能够方便快捷的对酒店进行有效的管理了解酒店的具体情况,同时提供令顾客满意的服务,提高了效率。顾客可以方便地了解酒店的客房情况和餐饮情况,进行提前预订消费。目前,由于中小型酒店缺少必要的资金和人员,仍采用手工记录和打电话咨询的方式,对酒店管理和顾客预订都很不方便,而且极其容易出错。所以开发一套适合的用于中小酒店的酒店管理系统是非常符合当代的条件,既可以节约软件开发成本预算,也可以提高酒店服务水平。
1.2目的和意义
人们现在越来越注重精神上的满足,排除了学习读书等消遣方式之外,外出参加旅游和组织聚餐也成为当下放松心情,缓解压力的重要环节。因此对酒店的入住情况和餐饮服务质量的及时了解是十分有必要的。而且随着顾客对酒店的需求越来大,和酒店有关的信息也就越来越多,单靠人力已经无法完成必要的信息记忆和信息整理,由此得出,我们必须要一套完善的酒店管理系统满足顾客的需求,提供对酒店管理的效率。酒店管理系统可以帮助我们完成对信息的有效存储和永不丢失,也能对信息进行有效整理,极大缓解了人员的工作负担。而且能够知道所需要的具体信息,执行效率也是非常方便快捷,几乎不会出错。以上种种可以看出来,通过使用酒店管理系统能够更加有效的对酒店进行管理和有效的进行信息处理,这样就可以达到员工福利的目的,缓解了雇职人员之间的矛盾,减少了酒店管理的成本。
1.3开发工具及技术
1.3.1开发工具
这个项目采用的是MyEclipse+tomcat+Mysql+JSP开发。以下分别介绍这次开发的主要技术方法和应用方式。
MyEclipse
Myeclipse是在面向对象的开发过程中还是很有用的。实在eclipse的基础之上有增加了一系列有利于开发人员编程的插件的集合,另外自己还可以根据自己的具体需求来进行私人订制,增加一些具有特色的功能。Myeclipse对我们软件开发人员来说确实是一个功能齐全的企业级应用开发环境。
Tomcat
Tomcat是由一些知名软件公司开发的,例如Apache和sun等等公司。首先要明确,tomcat的开发者很人性,不收取费用,而且还给我们提供了其制作原理。是属于服务器,而且是轻量级的对设备的要求低,我们可以从tomcat的实际原理进行参考,对自己分析研究服务器设计具有重大意义。为什么要选择tomcat是因为它在占用很少的资源的情况下能够独立运行一些应用,而且扩展性能也是非常好的。
MySQL
MYSQL是一项公益性的,供编程人员模仿学习,它的存在一直对我们研究学习工作意义非凡,不仅能够降低我们的开发成本,减少投入资金,而且我们可以欣赏到大师级的代码技术和代码风格,最主要的是能够学到他们的设计理念和设计思想。另一方面,MYSQL使用了各种各样的不同风格的编译器和开发工具的测试,使得我们的源代码能够轻松移植到其他平台上,减轻我们的开发。
1.3.2 JSP
JSP,ASP,PHP是现代流行的动态网页技术标准,是有一些十分优秀的大公司结合实际需求制定的一个标准。在以前众所周知的HTML程序段中添加一些具有特殊意义的java程序段以及自己特定的jsp标签属性,由此形成了JSP文件。当然,jsp完全继承了Java的一些优秀的特点,能够应用与各种不同的平台之上。
为了满足我们对动态网站迅速开发的目标,到达编程人员的身心需求,缓解人员的工作状态,JSP进一步改进优化:
将具体所需的内容与所要显示的界面进行分离:web开发工程师在进行网站设计的时候,可以采用HTML或者是XML来确定最终页面的具体情况到底是什么界面。通过使用JSP来实现动态页面的制作,其中具体的逻辑过程被封装起来。这样的话,对我们所写的代码具有一定的保护作用,又能保证在任何其他浏览器上都具有一定的可用性。
可重复使用组件:开发人员及软件工程师能够共享和重复使用经常使用的组件。
可以跨平台实现:在市面上的几乎所有平台都支持JSP+servlet+JavaBean,不需要考虑不同平台之间的移植问题。
为了方便与数据库相连接,专业人员开发了JDBC驱动程序来供我们使用。除此之外,sun公司还有许多关于数据库的技术供我们使用参考。这里就不一一介绍,希望在后期学习中在做介绍。
1.3.3 MVC简介
MVC是一种编程思想,是一种将代码中的输入部分,输出部分和程序的逻辑处理部分分开进行代码设计。这种编程方法主要将代码分成三部分:模型,视图和控制器三个核心部分。
视图
主要是指用户主管视觉上能够欣赏的界面。在以前的网站中,视图主要是有HTML来扮演主要的角色。但随着世界上计算机科学与技术水平的不断革新,新的技术水平不断出现,主要有xml,flash等等。
视图仅仅是允许数据输出和用户能够就行操作等简单界面,并没有进行真正的逻辑处理。
模型
模型表示系统的逻辑处理部分,主要指在数据库中处理数据。一个视图可以对应多个模型,因此大大减少了代码的数量和代码的重复量。
控制器
控制器是指在知晓用户输入的情况下,通过使用模型和调用视图来满足用户的具体需求。
MVC工作过程是:首先让用户输入信息并使用控制器来得到用户输入的结果。接下来根据用户的具体请求,用具体模块来处理用户的信息请求并返回最终结果。最后,控制器用具体的视图来显示来返回请求数据。
1.4软硬件需求
本系统开发机器的配置:
处理器:Intel(R)Core(TM) i5-3230M CPU @2.60GHz 2.60GHz
RAM: 4.00GB
软件需求:
操作系统版本:Win7
开发工具:MyEclipse 10
后台服务器:jdk1.8.0_05 Apache Tomcat 6.0
开发语言:Java
浏览器:360安全浏览器8.1
1.5本章小结
本章主要介绍了本文研究的课题所涉及背景以及研究所的目的及其意义。表明研究是十分有必要的。同时,也简单介绍了本课题所研究的一些关键技术,表达了为什么要用这些技术以及这些技术的优势。最后也简单介绍了本次研究所需要准备的软硬件条件和设施。
2 需求分析
需求分析可以认为是软件开发的重中之重。对于软件的后期开发和测试起到了关键性的作用。从历史的经验中我们可以看出,需求分析的成功与失败决定了后期软件制作所要花费的代价。一个好的需求就是成功的一半,能够大大降低软件开发的成本。反言之,一个失败的软件需求,不能正确反映客户的需求,将会给后期软件开发和维护带来极大的困难。
本系统在进行需求分析时,严格按照客户的实际需求来进行。减少后期因需求不足导致额外的花费。
2.1需求调研
现阶段,我们国家经济状况良好而且国家对旅游政策的大力支持,人民对酒店的性能、服务设施等条件要求十分严格。这样会带来酒店的极大的扩张,管理也越来越困难,面对顾客各种复杂而且膨大的信息量和信息资源,单单靠人力无法单独完成。因此利用计算机的优势所在,采用现代化管理技术,减少不必要的人力消耗至关重要。通过酒店管理系统,可以实现有效系统管理,方便对酒店的各种操作,降低各种复杂工作的量,提供员工的工作效率。根据实际需求和各种技术支持发现,对酒店采用现代化,专业化,系统化管理方式是非常有必要也是十分可行的。综上所述,本文的酒店管理系统使十分值得研究和发展的。
2.2可行性分析
开发酒店管理系统可能会受到现实生活中的各种各样的限制,比如:开发的时间,技术水平和资源有效分配等等问题。由此可见,在开发系统之前,可行性研究的实行显得十分重要和有必要。可以减少不必要的人力的消耗和财力的损失,减少这个系统开发的风险投资。这里从以下几个方面进行研究和分析,本系统是否真正的具有可行性、可研究性
2.2.1技术的可行性
主要用Myeclipse进行本系统的发布,在eclipse不能运行,运用主流的tomcat开源免费的服务器,数据库也是开源免费的Mysql数据库。主要开发语言还是面向对象的开发语言Java。这个系统主要完成一些简单业务,如客房信息管理和客房预订操作模块,餐饮信息管理模块和餐饮预订操作模块。前端界面采用html+css等技术进行页面设计,后台采用java来操作数据库进行增删改查和用Java实现图片上传等操作。同时java也是开源的,为系统开发也提供了一些系统架包。由此可以看出,现有的技术是完全可以支撑起本系统的开发。
2.2.2经济的可行性
根据技术可行性可以看出,酒店管理系统主要采用免费开源的软件进行开发,通过这样做,我们的开发成本得到了有效的管理,节约了大量开发工具的费用,不需要大量的软件开发成本需求。采用免费开源的软件还可以根据自己的需求对其进行改造适应自己的需求和发展,因此可以看出,从经济的角度对酒店管理系统分析可以得出酒店管理系统在经济方面也是可行的。
2.2.3操作可行性
酒店管理系统操作简单方便,大多都是通过鼠标进行操作和管理。而且由于现在电脑技术的迅速普及,基本每个人都具备基本的电脑操作技巧,因此在用户具备一定的操作技巧的基础之上进行简单的培训就可以使用酒店管理系统对酒店进行全面细致的管理。
2.2.4法律的可行性
本酒店是自己进行独立开发和测试完善的,具有很强的实际操作意义。另外,开发所使用的软件大多数是开源免费的,因此不存在侵犯版权之类的问题,是在法律允许的范围之类进行开发和测试的。因此,在法律上是可行的。
根据以上的种种条件,可以判断出酒店管理系统在当今社会上对酒店管理和发展具有很大的帮助和发展,因此可以看出,酒店管理系统的开发和应用是大势所趋,是非常适合当今时代的发展。
2.3系统用户用例图
2.3.1管理员用例图
管理员是酒店管理系统的主要管理权限用户,主要有以下四大功能,管理人员对使用本系统用户人员管理,对客房信息进行管理,对餐厅餐饮和菜色进行管理,对顾客消费情况进行管理。
管理员用例图
2.4功能模块需求分析
本酒店管理系统与现代开发软件的特点完美结合,界面友好,观赏性强。下面依次介绍本系统的功能:
(1)本系统界面友好,且具有良好的健壮性,能预防各种出现的错误提示操作。
(2)管理人员对使用本系统用户人员管理,对客房信息进行管理,对餐厅餐饮和菜色进行管理,对顾客消费情况进行管理。
(3)本着对用户和酒店负责的态度,对酒店信息和用户信息起到一定安全作用,防止信息泄露,对用户和酒店造成困扰。
管理员功能模块说明:
(1)用户人员管理:这个功能主要包括对系统人员就行删除增加和密码修改等基本操作等。
(2)客房信息管理,主要有以下几部分组成:
客房类型的增加和删除:现在有单人间,双人间和豪华间等等。
客房信息的补充和修改:主要指房间号,房间面积,价格以及房间的真实图片等必要的信息。
客房预订的增加和删除:主要是指客户对酒店的预订情况,包括客房的房间号,预订天数,预定时间和客户信息等。
(3)客户信息的增加修改和删除和查看:主要用于完成对客户信息的修改和删除,当然也可以进行客户信息的增加和查看。
(4)餐饮管理,主要有以下几部分组成:
特色菜品的介绍:对特色菜品进行及时增加,过时的菜品进行删除和不合理的菜品进行修改,查看本店特色菜品操作,特色菜的名称,价格,和真实图片等操作进行管理。也能增加和删除特色菜品。
餐桌预订管理: 对已经预订了的餐桌消费人员进行修改,查看预订信息进行就餐和删除一些已经就餐完成或就餐预订取消的信息。
餐桌预订添加:将顾客要求的预订信息添加到本系统。
(5)消费管理:主要指住房消费和餐饮消费两部分,用于对顾客消费情况进行登记和查看,以便对酒店收入情况进行管理。
2.5性能需求
2.5.1系统的安全性
本文设计的这个酒店管理系统具有严格的执行权限要求,只有符合管理员身份的人员才可以对其进行操作管理,对已经取消管理员资格的人员也可以手动对其进行删除管理,提高系统的安全性。
2.5.2数据的完整性
1.对数据的记录要求精确,信息不能出现空白信息,否则显示错误。
2.各个数据项的记录必须要求是正确的,不能出现虚假信息,造成错误。
3.不同界面显示的相同信息的数据也必须保持一致,不能出现相同信息不同数据的现象。
2.6 本章小结
本章主要是对软件的需求进行分析。不过在其分析之前,简单的从经济,技术,操作,法律等方面研究了本系统是否值得分析设计。其次,本文采用用例图来分析软件在功能方面的实际需求。都软件的性能需求也进行了评价分析。
3 系统分析与设计
系统分析与设计分析与设计时系统开发过程中最重要的一个环节部件。它会影响到后续代码编写的实施。尽管不同系统具体的实施过程不同,但都有异曲同工之妙。在实际的工作和学习中可以看出,系统分析与设计的质量与系统的成败有巨大的联系。
管理系统分析的任务是:在充分认识原有系统的基础上,通过查询可行信息、定义问题识别、规划详细调查、通过系统化分析,最后完成了新系统的逻辑方案设计,或称逻辑原型设计[2]。
3.1.1 总体设计框架
在上述对系统的分析的基础上,现在对系统进行总体设计,总体设计功能的模块如图 3.1所示。
图3.1 总体设计功能的模块图
3.1.2 总体设计具体模块
按照总体设计的功能模块和需求分析,酒店管理系统的各个模块的数据字典:
1、系统管理员数据:包含的数据项用户名,密码。
2、客房类型数据:包含的数据项有id号,类型名称。
3、客房信息数据:包含的数据项有房间号,房间面积,房间简介,房间图片,房间类型。
4、房间预订数据:包含的数据项有预订客房,预订时间,预订用户的名字及电话,预订天数。
5、入住消费数据:包含的数据项有入住客房,入住时间,客户姓名及联系方式,预订天数和消费金额。
6、客户信息数据:包含的数据项有客户名字,地址,电话,E-mail。
7、特色餐品数据:包含的数据项有名称,描述,图片,价格。
8、餐桌预订数据:包含的数据项有预订时间,预订餐桌号,预订人。
9、餐饮消费数据:包含的数据项有消费时间,消费金额,消费者姓名。
3.2数据库的分析与设计
当代的计算机软件系统已将不单单是运用计算机来静态的处理解决问题,而是利用具体数据,具体情况具体分析动态解决实际问题。因此数据就显得尤其至关重要。而数据都是在数据库中进行各种操作实现完成的。运用数据库管理系统的优势和特点,来对数据信息进行有效的管理、合理的分析、灵活的运用等的。数据库的巨大优势使得数据库已经作为了现在信息系统等计算机系统的主要部件。对数据库设计是否合理直接影响到整体系统的质量问题。
本系统建立抽象的概念数据模型主要是选用(1)集中式模式设计法:根据全局数据模式为各个用户组或应用定义外模式。对用户要求描述的逻辑结构分类、二维表的形式表示实体间数据模型,并建立抽象的概念数据模型[1]。(2)视图集成法:以个别部分的为基础,分别设计局部模式,然后在以这些视图为基础,集成为一个全部模式[1]。
3.2.1数据库的概念结构设计
概念设计时,要先进行数据分析,然后在从下往上依次建立数据库整体概念结构,
从用户的角度出发看问题,进行视图的整合设计,最后对整合的设计进一步分析优化得到最后结果。
本文中数据库的概念结构设计采用实体联系属性的E-R模型。E-R模型都是包括实体,联系(不同实体之间的关系),属性(实体具有的特征)三部分内容,本文通过绘制E-R图来描述E-R模型。
概念设计最终要能够正确表达酒店对数据的实际需求,也就是要能够完成酒店的所有功能。概念模式是独立存在的,与数据库逻辑结构基本上无关。当然了,它也与数据库的物理结构无关。
通过对酒店管理系统的需求分析和系统所需的概念结构,结合自己对E-R图的理解,下面是建立的E-R模型图
属性 |
实体间关系 |
实体 |
酒店管理系统的数据库E—R图如图3.2所示:
3.2酒店管理系统的数据库E—R图
3.2.2数据库的逻辑结构设计
众所周知,数据库的概念模型与某个具体的数据库是没有关系的,因此,我们需要结合实际所使用的数据库的特征来进行具体变化,也就是转化成逻辑关系模型,来让计算机进行处理加工。概念模型向数据库的逻辑模型进行转化需要遵守的规则:
*每一个实体要转换成一个关系
*所有的主键必须定义非空(NOT NULL)
*对于有多个联系的实体要区分主次,按照一对多,一对一和多对多的顺序来依次建立外键。
通过以上的分析,我们现在建立了相应的逻辑结构,下面逻辑结构的详细说明部分。
- 用户信息表主要是记录了住房客户基本信息,表结构如表3.3所示。
表3.3用户信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
user_id | int | 4 | 否 | 是 | 编号 |
user_realname | varchar | 50 | 否 | 否 | 姓名 |
user_address | varchar | 50 | 否 | 否 | 地址 |
user_tel | varchar | 50 | 否 | 否 | 联系电话 |
user_email | varchar | 50 | 是 | 否 | 邮箱 |
user_post | varchar | 50 | 是 | 否 | 邮编 |
user_fax | varchar | 50 | 是 | 否 | 传真 |
(2)管理员信息表主要记录了管理员基本信息,表结构如表3.4所示。
表3.4管理员信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
userId | int | 4 | 否 | 是 | 编号 |
userName | varchar | 50 | 否 | 否 | 用户名 |
userPw | varchar | 50 | 否 | 否 | 密码 |
(3)客房信息表主要是记录了客房的基本信息,表结构如图3.5所示。
表3.5客房信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
fangjianhao | Int | 4 | 否 | 是 | 编号 |
catelog_id | varchar | 50 | 否 | 否 | 客房类别 |
area | varchar | 50 | 否 | 否 | 面积 |
jieshao | varchar | 50 | 否 | 否 | 介绍 |
fujian | varchar | 50 | 否 | 否 | 图片 |
(4)客房预订信息表主要是记录了客房预订的基本信息,表结构如图3.6所示。
表3.6客房预订信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 编号 |
user_id | varchar | 50 | 否 | 否 | 预订用户 |
kefangid | Int | 4 | 否 | 否 | 客房号 |
tianshu | varchar | 50 | 否 | 否 | 预订天数 |
yudingzheTel | varchar | 50 | 否 | 否 | 联系电话 |
shijian | varchar | 50 | 否 | 否 | 预订时间 |
(5)客房类别信息表主要是记录了客房类别的基本信息,表结构如图3.7所示。
表3.7客房类别信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 房间号 |
Kefang_leixing | varchar | 50 | 否 | 否 | 客房类型 |
(6)餐饮信息表主要是记录了餐饮的基本信息,表结构如图3.8所示。
表3.8餐饮信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
canyin_key | Int | 4 | 否 | 是 | 编号 |
canyin_name | varchar | 50 | 否 | 否 | 名称 |
jiage | varchar | 50 | 否 | 否 | 价格 |
jieshao | varchar | 50 | 否 | 否 | 介绍 |
fujian | varchar | 50 | 否 | 否 | 图片 |
(7)餐饮预订信息表主要是记录了用户餐饮预订的基本信息,表结构如图3.9所示。
表3.9餐饮预订信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 编号 |
name | varchar | 50 | 否 | 否 | 预订人 |
canzuo_number | varchar | 50 | 否 | 否 | 预定餐桌号 |
shijian | varchar | 50 | 否 | 否 | 预订时间 |
(8)入住消费信息表主要是记录了用户入住消费的基本信息,表结构如图3.10所示。
表3.10入住消费信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 入住人身份证号 |
name | varchar | 50 | 否 | 否 | 预订人 |
Name_cost | varchar | 50 | 否 | 否 | 消费 |
shijian | varchar | 50 | 否 | 否 | 入住天数 |
(9)餐饮消费信息表主要是记录了用户餐饮消费的基本信息,表结构如图3.11所示。
表3.11餐饮消费信息表
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 用餐人的身份证号 |
name | varchar | 50 | 否 | 否 | 用餐人名字 |
Name_cost | varchar | 50 | 否 | 否 | 消费 |
3.2.3数据库的连接原理
Hibernate是由专业人员设计的一种对酒店管理系统进行有效管理的系统框架,本文就采用了这种框架。Hibernate 是一种开源的,并且能够将对象关系进行映射的一种框架,它通过对JDBC部分对象的进行了封装设计,因此,我们程序员在编程设计时,可以根据自己喜好使用面向对象的编程思想来进行数据库的各种操作。它可以完成具体的Java类与其相应的数据库表来进行映射,也能够对数据进行查询和对数据进行恢复。与JDBC连接数据库的传统方式相比较来看,Hibernate在很大程度上已经可以减少工作量的操作。另一方面,Hibernate提供了代理模式,它可以对需要载入的具体类进行简化操作。使用代理模式的目的主要是减少从数据库提取数据所需的代码工作量,这样我们的开发时间和开发成本也就得到了有效的缓解和降低。 由于Hibernate具有众多优点,受到了技术人员的青睐,现在市面上流行的服务器都是可以与Hibernate进行良好的集成。
Hibernate 的运行过程如图3.5所示:
图3.1 Hibernate的运行过程如下图
图3.1给出了 Hibernate 的具体运行过程,它可以与应用程序之间建立持久性服务的主要原因是使用了数据库和利用了配置文件。
3.3 设计思想
1.采用良好的交互界面,减少键盘输入,尽可能多的使用鼠标操作。
2.采用B/S架构。使用浏览器/服务器模式这种开发方式不需要用户下载特定的软件,只要在具有浏览器的计算机上基本都可以进行操作,符合大众心理。
3.功能模块化设计原则。将不同的功能作为一个模块来进行划分设计,这样思路清晰,逻辑清楚,有利于后期的编码,测试和调试。
4.使用了面向对象分析方法。按照不同功能的模块划分,使用面向对象分析方法学来分析各个模块中所需要的类包括类中的属性和方法,以及不同类之间的关系等等。采用面向对象方法学来提高程序的质量,有利于后期的开发维护。
3.4 详细设计
3.4.1 登录模块设计
- 在登录界面,包含用户名,密码信息,输入之后点击登录进入酒店管理系统。
- 用户名和密码都不能为空,否则会弹出对话框进行提醒。
- 后端也会进行验证。如果验证不通过,弹出对话框提示用户名或密码错误。后端验证成功,提示登录成功,跳转到系统页面。
3.4.2 客房管理模块设计
3.4.2.1 客房类型模块
- 客房类型界面主要包括类型的id号,类型名称,操作和添加。
- 可以查看客房类型的具体信息,每项都有具体的值都不可以是空的。
- 通过操作下方编辑和删除按钮可以对客房类型信息进行操作。
- 点击下方添加按钮可以进行客房类型进行添加。
3.4.2.2 客房信息模块
- 客房信息界面主要包括房间号,房间面积,房间简介,房间图片和房间类型和操作。
- 可以了解房间的具体信息,若有一项的值为空的话是不合法的。
- 点击操作下方的删除按钮可以删除某个特定房间。
- 点击本页面上的添加按钮,跳转到客房添加界面进行客房信息添加。添加的信息同(1),并且要上传房间图片。
3.4.2.3 客房预订模块
(1)在这个模块中,主要有预订的客房号,预订时间,预订天数,预订人的名字和电话和操作。
(2)主要用于管理用户的预订信息,其中房间号必须和客房信息里面的房间号相一致,不会出现不存在的房间号。预订时间也一定在今天及其以后的时间,不会出现已经过去的时间。预订人和联系方式已经预订天数都不允许空,都有具体值。
(3)使用鼠标点击特定预订信息后面的删除按钮,可以删除此条预订信息。
(4)通过添加按钮出现客房预订信息界面,可以进行客房预订信息的添加。
3.4.2.3 入住消费模块
- 入住消费模块主要信息是入住的房间号,入住时间及天数,入住者的名字及其联系电话和消费金额。
- 主要是用于记录用户的消费记录情况,入住的房间号一定是存在的房间号,入住时间也必须符合现实,联系电话是11位阿拉伯数字,这些信息参数值也必须不为空。
- 对已经付过账要离开的顾客可以点击对应后面的删除按钮进行删除操作,去除记录。
- 对于将要入住和正在入住的顾客点击添加按钮进行消费信息的添加。
3.4.3 客户模块设计
3.4.3.1 客户信息模块
(1)客户信息模块主要用于显示客户信息和根据顾客名查询特定入住者。
(2)客户信息模块主要有查询框和查询按钮,以及一些顾客基本信息比如:用户名字和联系方式,住所等等信息。
(3)对已经离开和将要离开的用户,通过其信息后面对应的删除按钮进行删除,完成住宿。
3.4.3.2 添加客户模块
(1)添加客户模块对于已经入住的顾客进行信息添加完善。
(2)添加客户模块主要包含多个文本框,比如客户名字,联系方式和地址等等一些必要信息,还有一个提交和重置按钮。
(3)当填写完用户信息,点击提交按钮时,弹出对话框提示操作成功。这时,客户信息界面上就会显示刚才添加的用户信息。
3.4.4 特色菜品介绍模块设计
3.4.4.1 特色菜品模块
(1)特色菜品模块所显示的信息可供顾客选择菜单上的菜品,提供餐饮服务,方便顾客选菜。
(2)特色菜品模块显示一些菜品的名称,菜品的描述和图片以及价格等必要的信息和删除操作。
3.4.4.2 添加特色菜品模块
(1)添加特色菜品界面上包含几个文本框信息和提交,重置按钮。
(2)这几个文本框所要填写的信息与特色菜单模块上的信息必须一一相对应,不能出现不相符的状况。
(3)当填写完特色菜品信息进行提交后,弹出提示框显示操作成功,并且在特色菜品界面上会显示刚才所添加的菜品信息。
3.4.5 餐桌预订管理模块设计
3.4.5.1 餐饮预订模块
- 餐饮预订界面主要是显示餐桌预订的相关信息,包括预订时间,预订餐桌和预订人以及删除操作。
- 预订时间也是需要符合当前时间,不能是已经过去的时间,预订时间和预订人不能为空。
(3)当顾客已经就过餐或者不在就餐时,点击删除按钮可以取消预订的信息。
3.4.5.2 添加餐饮预订模块
(1)餐饮预订添加界面包含预订的时间,预订人的名字和预订的餐桌号三个文本框信息,以及重置和提交按钮。
(2)添加餐饮预订界面上的信息和餐饮预订界面上的信息是完全吻合的,需要将添加的信息显示到餐饮预订界面上。
3.4.6 餐饮消费管理模块设计
(1)餐饮消费管理界面主要是保存了用户消费的相关内容,比如消费时间,金额和消费者名字和删除信息操作。
(2)当本次消费已经完成时,就可以点击删除按钮就可以删除此条所要删除的信息记录。
3.5 本章小结
本章主要是进行系统设计。首先进行系统的总体设计,确定系统的主要功能模块。其次我们根据系统所需要完成的功能模块来进行ER图的分析和建立。再根据E-R图来确定数据库的逻辑模型,建立数据库的逻辑模型结构。最后是系统的详细设计阶段,确定各个模块的具体细节,为下一阶段的系统实现做充分的准备。
4 系统功能实现
前面我们已经明白了用户的具体需求,也经过了系统的分析和设计阶段,本章是进行系统的实现。根据前面对系统的分析和设计,我们现在对系统进行具体的代码实现。通过前面的对系统的逻辑分析,现在要正真转化成能够在机器上运行的物理系统,是对前面所做工作的总结和肯定。
4.1系统登陆页面实现
1.描述:每个系统都需要相应的账号和密码进行登录。这样,不会因为随意登录操作系统而造成系统混乱。在系统设计之初,给出了管理员账号。
2.下面展示了程序的运行效果如图4.1所示:
图4.1 系统登录页面设计
- 进行登录时,输入本人自己的用户名和密码进行登录。然后点击登录按钮进行信息的提交。然后我们的后台会寻找相应的service来进行用户名和密码的匹配操作。根据用户名和密码的具体情况,返回具体的结果。
public String login(String userName,String userPw,int userType)
{
String result="no";
String sql="from TAdmin where userName=? and userPw=?";
Object[] con={userName,userPw};
List adminList=adminDAO.getHibernateTemplate().find(sql,con);
if(adminList.size()==0)
{
result="no";
}
else
{
WebContext ctx = WebContextFactory.get();
HttpSession session=ctx.getSession();
TAdmin admin=(TAdmin)adminList.get(0);
session.setAttribute("userType", 0);
session.setAttribute("admin", admin);
result="yes";
}
return result;
}
4.2总体功能模块
1.描述:我们登录到系统后,可以看到可供我们操作的六大功能模块。这时,只需要点击相应的菜单来运用相应的功能。
2.我们的效果图如图4.2所示:
图4.2管理员主页面
在本文具体设计过程中,本系统的每个页面都进行了系统性的拦截,防止不法分子不需要登录来进行恶意操作。
if(session.getAttribute("user")==null)
{
out.print("");
}
4.2.1管理员管理
4.2.1.1系统管理员信息管理
1.描述:登录人员进入管理员操作界面后,后天根据用户的具体操作来寻找具体的action类来进行系统响应。本文中主要是利用了List对象集合,通过request来显示出具体的信息。
2.程序效果图如下图4.3所示
图4.3 系统管理员管理
3.系统管理员管理关键代码:
/**
添加系统管理员
/
public void adminAdd(HttpServletRequest req,HttpServletResponse res)
{
String userName=req.getParameter("userName");//获取填写用户名
String userPw=req.getParameter("userPw");/获取密码
String sql="insert into t_admin(userName,userPw) values(?,?)";//数据添加到数据库中
Object[] params={userName,userPw};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "admin?type=adminMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
/**
系统管理员删除
/
public void adminDel(HttpServletRequest req,HttpServletResponse res)
{
String sql="delete from t_admin where userId="+Integer.parseInt(req.getParameter("userId"));//在数据库中查找满足userId的数据
Object[] params={};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "admin?type=adminMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
4.2.1.2系统管理员密码修改界面
描述:管理员点击左侧的菜单“密码修改”,系统显示出密码修改的界面。修改时,必须要输入正确的原密码。否则,会弹出对话框提示原密码错误。其次,新密码和确认密码保持一致。不然会弹出对话框两次输入的密码不一致。
- 程序效果图如下图4.4所示
图4.4 系统管理员密码修改
4.2.2客房类别管理
4.2.2.1客房类别信息录入
- 描述:本功能需要操作人员输入正确的客房类型。如果操作人员出现失误信息填写错误,系统都会给相应的出错信息。本文在后台也设置了相应的函数来进行信息的处理。要能够将管理员填写的信息正确反映到客房信息界面上,信息的提交以及信息的交互都具有及时性。
2.本文程序的实际效果如下图4.5所示:
图4.5客房类别信息录入
4.2.2.2客房类别信息管理
1.描述:本文这个功能主要是显示本酒店所有的客房类别信息供顾客选择和对酒店客房进行更好的分类。这些客房类别信息都保存在list对象里面,并通过request对象来进行显示输出。
2.程序效果图如下图4.6所示
图4.6类别信息管理页面
4.2.2.3客房类别信息删除
1.描述:本功能可以对已经过时货已经不存在的客房类别进行去除操作,能够及时反映本酒店的真实信息。删除时,给出了提示,为了防止出现误删除。
2.程序效果图如下图4.7所示
图4.7类别信息删除页面
3.客房类别信息删除删除代码
public void kefangleixingDel(HttpServletRequest req,HttpServletResponse res)
{
String sql="update t_kefangleixing set del='yes' where id="+Integer.parseInt(req.getParameter("id"));
Object[] params={};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "kefangleixing?type=kefangleixingMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
4.2.2.4客房类别信息修改
- 描述:设置这个功能的主要目的是为了修改录入客房类别时出现的错误,或者对已经不符合酒店实际情况的信息进行修改。
4.2.3客房信息管理
4.2.3.1客房信息添加录入
- 描述:当我们的酒店进行进一步扩张和发展的时候,我们就需要运用这个功能。这个要求使用人员要输入不存在的房间号和已经存在的房间类型,否则给出相应的信息提示,录入信息失败。这个功能所填写的信息通过后台的service及时反映到客房信息界面上。
2.程序效果图如下图4.8所示:
图4.8客房信息增加录入
3.客房信息添加关键代码:
String fangjianhao=req.getParameter("fangjianhao");
String fangjianmianji=req.getParameter("fangjianmianji");
String fangjianjianjie=req.getParameter("fangjianjianjie");
String fujian=req.getParameter("fujian");
String fujianYuanshiming=req.getParameter("fujianYuanshiming");
String kefangleixingId=req.getParameter("kefangleixingId");
String del="no";
String sql="insert into t_kefang(fangjianhao,fangjianmianji,fangjianjianjie,fujian,fujianYuanshiming,kefangleixingId,del) values(?,?,?,?,?,?,?)";
Object[] params={fangjianhao,fangjianmianji,fangjianjianjie,fujian,fujianYuanshiming,Integer.parseInt(kefangleixingId),del};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "kefang?type=kefangMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
4.2.3.2客房信息管理
1.描述:客房信息管理方便入住人员对房间的信息有一个大致的了解,节约了顾客寻找房间的时间。相应的list对象来保存相应客房信息,然后利用系统提供的request对象来进行显示。
2.程序效果图如下图4.9所示
图4.9 客房信息管理页面
4.2.3.3客房信息修改
- 描述:本文通过使用这个功能对房间的真实信息已经改变了的状况进行修改,让顾客第一时间来反映本酒店客房的真实信息。
2.程序效果图如下图4.10所示
图4.10 客房信息修改
4.2.3.4客房信息删除
- 描述:主要是对已经不存在的客房进行去除操作,当本酒店对某个特定的客房进行去除时,就需要用此功能进行客房的删除。删除后,客房信息界面上也就不再显示本客房的具体情况。
2.客房信息管理关键代码:
TKefang kefang=kefangDAO.findById(id);
kefang.setDel("yes");
kefangDAO.attachDirty(kefang);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("msg", "操作成功");
return "msg";
4.2.4客房预订信息管理
4.2.4.1客房预订信息管理
1.描述:客房预订这个功能的需求性非常高,顾客可以提前寻找酒店进行入住,不需要因无法找到二无法入住。它显示了顾客的预订信息,顾客可以凭借这些信息来进行入住。
2.程序效果图如下图4.12所示
图4.12 客房预订信息管理页面
预订信息管理关键代码:
public String yudingMana()
{
String sql="from TYuding where del='no'";
List yudingList=yudingDAO.getHibernateTemplate().find(sql);
for(int i=0;i
{
TYuding yuding=(TYuding)yudingList.get(i);
yuding.setUser(userDAO.findById(yuding.getUserId()));
yuding.setKefang(kefangDAO.findById(yuding.getKefangId()));
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("yudingList", yudingList);
return ActionSupport.SUCCESS;
}
4.2.4.2客房预订信息删除
- 描述:当顾客因意外无法入住或者已经入住完,我们就可以使用客房预订删除功能来进行处理。当删除了预订信息后,后台会将预订信息界面上的删除的信息进行去除,不在显示。
- 客房预订信息删除代码
public String yudingDel()
{
TYuding yuding=yudingDAO.findById(id);
yuding.setDel("yes");
yudingDAO.attachDirty(yuding);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("msg", "操作成功");
return "msg";
}
4.2.4.3客房预订信息添加
- 描述:当顾客计划将要在本酒店入住时,我们就可以记录下预订顾客的信息为后期顾客入住提供证明。本界面上客房必须是现存的房间号,不存在的房间号不会显示出来供选择。
2.程序效果图如下图4.13所示:
图4.13 客房预订信息添加管理页面
4.2.5客户信息管理
4.2.5.1客户信息管理
1.描述:我们需要记录客户的信息来进行客户管理,我们可以方便查询客户信息,为客户提供服务。这些客户信息都是运用了list对象进行处理的,在需要的时候,调用request对象来进行显示供参考。当客户信息过多时,管理人员可以输入客户的名称进行特定客户查询。
2.程序真实表达他如下图4.14所示:
图4.14客户信息查询页面
4.2.5.2客户信息添加
- 描述:客户来进行入住登记的时候,就可以利用本系统的这个功能将特定的客户添加到本系统中。
2.下面就是本文中的现实的图如图4.15所示:
图4.15客户信息添加页面
4.2.6特色餐饮管理
4.2.6.1特色菜品介绍
- 描述:本功能主要展示本酒店提供的餐饮服务有哪些。当顾客需要聚会就餐时,可以参考本页面上的餐品信息的具体介绍并根据自己的口味爱好来进行选择,方便就餐人员的选择。
2.菜品介绍功能真实图如下图4.16所示:
图4.16特色菜品介绍页面
4.2.6.2特色菜品添加
1.描述:管理员点击左侧的菜单“特色菜品添加”,就可以添加特定菜品
2.菜品添加界面如下图4.17所示:
图4.17特色菜品添加页面
4.2.7餐桌预订管理
4.2.7.1餐桌预订管理
1.描述:当顾客想在本酒店进行餐饮服务,而现在不在本酒店的时候,就可以运行此功能。它显示了所有就餐人员的时间,信息等等。当具体进行餐饮服务时,可以利用本界面的信息进行对比。
- 餐桌预订的效果图如下图4.18所示:
图4.18餐桌预订管理页面
4.2.7.2餐桌预订信息添加
1.描述:当有顾客有要预订餐饮的需求的时候就要使用本界面上的信息,并且将本界面填写的信息正确反映到餐桌预订的界面上。
2.餐桌预订信息添加效果图如下图4.19所示:
图4.19餐桌预订添加页面
4.2.8客户消费管理
4.2.8.1客户入住消费管理
1.描述:当顾客入住时,需要对其的消费情况做一个记录信息。一方面顾客可以对自己的消费的情况有一个真实的的了解。同时,也可以对了解本酒店的经营状况,确定是否需要改进。
2.客户入住消费图如下图4.20所示:
图4.20客户入住消费管理页面
4.2.8.2客户入住消费删除
1.描述:当顾客的消费记录已经过去很久了,为了节约存储空间,就可以对其进行删除处理。
2.客户入住消费删除图如下图4.21所示:
图4.21客户入住消费删除页面
4.2.8.3客户入住消费添加
1.描述:当顾客办理入住手续的时候,需要对其消费情况进行添加。并且其添加的信息显示到客户入住消费的界面上。
2.客户入住消费添加图如下图4.22所示:
图4.22客户入住消费添加页面
4.2.8.4客户餐饮消费管理
1.描述:这里真实的记录了某个特定人的真实消费情况,顾客可以查询自己的消费情况,并进行支付。酒店也可以知道餐饮服务这块业务的收入情况,并进行适当的调整和完善。
2.客户餐饮消费运行图如下图4.23所示:
图4.23客户餐饮消费管理页面
4.2.8.5客户餐饮消费删除
1.描述:对已经结过餐饮费用且对消费金额无异议的顾客。按照实际情况,将结账记录久远的信息去掉。
2.客户餐饮消费删除执行图如下图4.24所示:
图4.24客户餐饮消费删除页面
4.2.8.6客户餐饮消费添加
1.描述:当顾客就餐结账的时候,需要对顾客就餐消费情况进行统计管理。在本页面上添加的信息会体现到客户餐饮消费界面上。
2.下图4.25就是其运行结果:
图4.25客户餐饮消费添加页面
4.3 本章小结
本章主要用来说明系统设计开发的情况。也就是说,向用户展现的系统概貌。这一章已经可以看出对对上一章中总体设计和详细设计中所展现的功能模块都已经实现完成了,也达到了需求分析中用户的实际需求。通过本章节对系统的介绍,相信会对本系统有一个多方面的客观认识。
5 系统测试
5.1系统测试目的与意义
为了发现代码中存在的错误和减轻后期代码维护工作量,我们需要对酒店管理系统进行测试。软件测试是通过输入特定值并将输出结果与预定的输出结果结果进行对比,找出程序中存在的错误。软件测试的根本目的是尽可能多的发现现在程序中存在的错误和潜在错误,通过后期调试改正程序中存在的错误。通过测试,提高软件的质量,给客户一个满意的答案。
测试一般分为三个阶段完成:模块测试,主要用于发现编码和详细设计中存在的错误。将一个个单个模块作为一个测试对象进行测试。系统测试,我们也可以称之为集成测试。主要是验证系统的功能与需求分析中指定的功能是否相一致,验证各个模块之间的是否能够进行组装。验收测试也就是通常说的集成测试,将整个系统作为一个整体来进行测试。本文主要是采用黑盒测试,验证已经设计完成的功能是否能够正常运行和是否缺少必要的功能。
5.2 测试原则
1.测试应该在早期就要开始实施,因为越早发现错误就越能够减少后期的工作量,降低成本。
2.自己设计的程序一般由其他专业人员来进行测试。
3.设计测试用例也要尽可能合理全面,既要测试合法的数据,也要想到不合法的数据以及测试数据的边界等等。
4.选择尽可能会出错的测试用例进行测试。
5.3 测试目标
1.发现一些可以通过测试避免的开发风险
2.实施测试来降低所发现的风险
3.确定测试何时可以结束
4.注重测试,将测试作为软件开发的一个重要环节。
5.测试的其目的是发现程序中的错误并调试,使系统符合客户的需求,达到预期值。
5.4 测试用例设计的原则
全面性
1 .应尽可能覆盖程序的各种路径。
2. 应考虑存在跨年、跨月的数据。
3. 大量数据并发测试的准备。
正确性。
1. 输入界面后的数据应与测试文档所记录的数据一致。
2. 预期结果应与测试数据发生的业务吻合。
符合正常业务惯例
1. 测试数据应符合用户实际工作业务流程。
2. 兼顾各种业务变化的可能。
可操作性
测试用例中应写清测试的操作步骤,不同的操作步骤相对应的操作结果
5.5.1主页面的登录模块测试
测试流程: 1.打开系统首页,输入错误的登录信息
2.登录
3.输入正确的登录信息
4.登录
5.测试结果
(1)登录模块的测试记录表,测试过程如5-1所示
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:null 密码:null | 弹出错误提示,请输入用户名 | 失败,提示请输入用户名如图5.1所示 | 通过 |
登录模块 | 用户名:m1 密码:null | 弹出错误提示,请输入密码 | 失败,提示输入密码 如图5.2所示 | 通过 |
登录模块 | 用户名:m1 密码:1 | 弹出错误提示,用户名或者密码错误 | 失败,提示用户名或者密码错误 如图5.3所示 | 通过 |
登录模块 | 用户名:root 密码:root | 弹出提示, 通过验证,系统登录成功。 | 登录成功,提示 通过验证,系统登录成功。 如图5.4所示 | 通过 |
表5-1登录模块的测试记录表
图5.1用户名和密码为空 图5.2 用户名:ml 密码为空
图5.3 用户名:ml和密码:l 图5.4 用户名和密码都为root
5.5.2 修改密码测试
测试步骤: 1.登录系统后,点击“密码修改”
2.输入原密码,新密码和确认密码
3.点击提交按钮
4.测试结果鉴定
(2)管理员模块的测试信息表,测试过程如5-2所示
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
管理员模块 | 原密码:null 新密码:null 确认密码:null | 弹出错误提示: 原密码不正确 | 失败,提示原密码不正确 如图5.5所示 | 通过 |
管理员模块 | 原密码:xls 新密码:null 确认密码:null | 弹出错误提示,原密码不正确 | 失败,提示输入密码 如图5.6所示 | 通过 |
管理员模块 | 原密码:root 新密码:null 确认密码:null | 弹出错误提示,新密码不能为空 | 失败,提示新密码不能为空 如图5.7所示 | 通过 |
管理员模块 | 原密码:root 新密码:root01 确认密码:root02 | 弹出错误提示, 两次输入的密码不一致 | 失败,提示 两次输入的密码不一致 如图5.8所示 | 通过 |
管理员模块 | 原密码:root 新密码:root01 确认密码:root01 | 弹出提示, 修改成功,并且重新登录时,只能使用新密码。 | 成功,提示 修改成功,并且重新登录时,只能使用新密码。 如图5.9,5.10,5.11所示 |
表5-2管理员模块的测试信息表
图5.5原密码新密码确认密码:null 图5.6原密码xls 新密码确认密码:null
图5.7原密码root 新密码确认密码:null
图5.8原密码:root新密码:root01 确认密码:root02
图5.9原密码:root新密码:root01 确认密码:root01
图5.10用户名和密码都为root不能登录 图5.11用户名root密码都为root01能登录
5.5.3 客房添加测试
测试步骤: 1.登录系统后,点击“客房信息”页面上的添加按钮
2.在文本框中输入数据
3.点击提交按钮
4.对比测试结果
(3)客房添加测试信息表,测试过程如5-3所示
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
客房管理模块 | 房间号:111 房间面积:100 房间简介:干净整洁 房间图片:1492489628424.jpg 房间类型(下拉框,只显示已经添加的客房类型):单人间 | 在客房信息界面上能正确显示填写信息。 | 所填写的信息在客房信息界面上显示出来了 如图5.12,5.13所示 | 通过 |
表5-3客房添加测试信息表
图5.12 测试用例信息
图5.13 在客房信息界面上显示的信息
5.5.4 客房预订添加测试
测试步骤: 1.登录系统后,点击“客房预订”。
2.点击添加按钮,进入客房添加界面。
3.点击提交按钮
4.对比测试结果
(4)客房预订添加测试信息表,测试过程如5-4所示
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
客房预订添加模块 | 现存的房间号只有110和111 | 在客房预订添加界面上的房间号只显示110,111。(注:房间号是下拉框) | 房间号确实只显示现在已存在的房间号 如图5.14所示 | 通过 |
表5-4客房添加测试信息表
5.14 房间号测试
5.5.5客户信息查询测试
测试步骤: 1.登录系统后,点击“客户信息”。
2在查询的文本框中输入要查询的顾客名
3.点击提交查询按钮
4.分析显示结果
(5)客房预订添加测试信息表,测试过程如5-5所示
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
客户信息模块 | 查询小兰的信息 | 在多个客户信息中只显示出了小兰的信息 | 确实只显示出顾客小兰的信息如图5.15,5.16所示 | 通过 |
5-5客房预订添加测试信息表
5.15没有点击查询按钮以前客户全部信息 5.16点击查询按钮后只显示小兰信息
5.5.6其余模块测试
剩余模块与已经列出了的模块测试都是大同小异,本文就不在这里一一列举。但是在实际的测试中所有的模块都是经过严格的测试。
5.6中文乱码问题处理
在web.xml中配置:
<param-name>encodingparam-name>
<param-value>gb2312param-value>
对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
}
try{
byte[] tempByte = gbStr.getBytes("GB2312");
uniStr = new String(tempByte,"ISO8859_1");
}catch(Exception ex){
}
return uniStr;
}
5.7其他错误
本文在程序开发阶段,由于自己不够细心和代码量庞大的缘故,难免会出现一些传值得名字不一致无法找到、传值参数的类型不同而无法识别和传值得个数不同而无法运行等等情况。下图5.17就是因为路径问题而导致的错误。
图 5.17由于servlet路径配置错误,运行时的提示
5.8本章小结
本章主要对各个模块进行单元测试,当然也对本系统进行了集成测试。主要采用黑盒测试的方法学,找出程序功能上的不足,并通过调试来进一步完善系统。测试中发现了一些不足,比如中文乱码,信息没有及时传递等等问题。由此可以看出,系统测试也是我们软件开发过程中的不可或缺的一环,对我们系统的完善性和健壮性有很大的帮助。所以,在以后要注重系统测试环节。
结 论
通过这次对酒店管理系统的设计,我收获良多。首先利用MVC模型。通过使用MVC模型可以达到界面和逻辑部件分离。换言之,当我们需要修改界面风格时,不需要再改变系统的逻辑部件。这样有利于后期的系统维护。代码的复杂度相对应的也就减轻了,有利于系统的实现。
在系统的开发和设计中,我运用B/S三层开发结构技术和自己平时学习积累的知识水平,完成这个酒店系统的开发。通过开发这个酒店管理系统我也明白了软件开发不单单是完成代码编写,而是具有一整套完整的体系,代码只是其中占据很少一部分,前期准备才至关重要。另外,测试对我们的帮助也很大。测试也要在早期进行,越早发现系统中的错误,所要花费的代价也就越少,对我们也就越有利。如果后期发现错误,尤其是在维护时期,那么有可能付出比开发这个系统还要大的代价,得不偿失。
这个系统可以帮助酒店工作人员刚好的管理酒店,本系统主要实现了一下几个功能:
- 客房管理功能。在这个模块中,我们可以查看,增加和删除客房的类型。也可以查看客房的信息和预订客房并记录消费情况。
- 客户管理功能。我们可以利用此功能查询特定客户的信息情况,了解客户的实际情况,也可以增加新的顾客。
- 特色菜品功能。在这个功能下,详细的记录了本酒店的餐饮服务,顾客可以根据自己的喜好来选择餐饮服务,也可以添加新的菜色。
- 餐饮预订功能。顾客可以根据自己的实际情况来进行就餐时间,就餐地点的选择,方便顾客的实际用餐。
- 餐饮消费功能。记录了顾客的餐饮消费金额,方便顾客查阅,了解自己的消费细节。
希望在以后中,进一步完善。可以分析出不同职业,不同性别,不同年龄段的的人对房间类型的需求,对餐饮不同菜色的喜爱程度。
通过这次对酒店管理系统的设计,也让我完整的体验了一次软件开发的全过程。获益良多。锻炼了自我学习,自我研究的能力。同时,也为自己以后的工作学习甚至生活都起到了关键的作用。也锻炼了我的耐心和查找错误并分析错误的能力。
当然,由于技术和时间的关系,这个系统也存在一些问题。比如对酒店的收入和消费人群没有系统的统计和分析。希望在以后的学习中,继续提高自己的专业水平和技能素养。不断完善自己的系统。
参考文献
- 黄剑.基于移动互联网酒店管理系统的设计与实现[D]. 电子科技大学,2014(11):21-25
- 杨玉平.基于WEB的酒店管理系统的设计[D].吉林:吉林大学 , 2012,(21):21-38
- 宣振国.基于Mysql的数据库集群设计与实现[D].北京:北京邮电大学,2013:25-28
- 莫祖英,马费成. 数据库信息资源内容质量用户满意度模型及实证研究[J]. 中国图书馆学报,2013,(10):113-115
- 杨宏. 大数据与智慧酒店管理[J].科技创新与应用,2015 ,(32):76+102
- 陈娅玲. 新形势下酒店管理如何实现创新[J].黑龙江教育学院学报, 2014,(22):174-203
- 陈世敏.大数据分析与高速数据更新[J].计算机研究与发展, 2015, (74):115+168
- Michael J.A.Berry,LinoffGordonS.Mastering Data mining,The art and science of customer management [C].America,2004,11-34
- MarkAllenWeiss.Data structure and algorithm analysisin C[J].America.2004,12+97
- Thomas M.Cover,Joy A.Thomas.Elements of Information Theory[J]America.2011,27-86
翻译
数据库(有时拼成database)也称为电子数据库,是指由计算机特别组织的快速查找和检索的任意的数据或信息集合。数据库与其它数据处理操作协同工作,其结构要有助于数据的存储、检索、修改和删除。数据库可存储在磁盘或磁带、光盘或某些辅助存储设备上。
一个数据库由一个文件或文件集合组成。这些文件中的信息可分解成一个个记录,每个记录有一个或多个域。域是数据库存储的基本单位,每个域一般含有由数据库描述的属于实体的一个方面或一个特性的信息。用户使用关键字和各种排序命令,能够快速查找、重排、分组并在查找的许多记录中选择相应的域,获得或建立特定集上的报表。
数据库记录和文件的组织必须确保能对信息进行检索。早期的系统是顺序组织的(如:字母顺序、数字顺序或时间顺序);直接访问存储设备的研制成功使得通过索引随机访问数据成为可能。用户检索数据库信息的主要方法是query(查询)。通常情况下,用户提供一个字符串,计算机在数据库中寻找相应的字符序列,并且给出字符串在何处出现。比如,用户可以请求所有姓的字段内容中带有Smith的全部记录。
在非结构化的数据库中,按照实体的一个简单列表组织记录;很多个人计算机的简易数据库是非结构的。层次型数据库按树型组织记录,每一层的记录分解成更小的属性集。层次型数据库在不同层的记录集之间提供一个单一链接。与此不同,网络型数据库在不同记录集之间提供多个链接,这是通过设置指向其它记录集的链或指针来实现的。网络型数据库的速度及多样性使其在企业中得到广泛应用。当文件或记录间的关系不能用链表达时,使用关系型数据库。一个表或一个“关系”,就是一个简单的非结构列表。多个关系可通过数学关系提供所需信息。面向对象的数据库存储并处理更复杂的称为对象的数据结构,可组织成有层次的类,其中的每个类可以继承层次链中更高一级类的特性,这种数据库结构最灵活,最具适应性。
很多数据库包含自然语言文本信息;小型的数据库可由个人在家中使用。小型及稍大的数据库在商业领域中占有越来越重要的地位。典型的商业应用包括航班预订、产品管理、医院的医疗记录以及保险公司的合法记录。最大型的数据库通常用于政府部门、企业、大专院校等。这些数据库存有诸如摘要、报表、成文的法规、通讯录、报纸、杂志、百科全书、各式目录等资料。索引数据库包含参考书目或用于找到相关书籍、期刊及其它参考文献的索引。目前有上万种可公开访问的数据库,内容包罗万象,从法律、医学、工程到新闻、时事、游戏、分类广告、指南等。科学家、医生、律师、财经分析师、股票经纪人等专家和各类研究者越来越依赖这些数据库,因为可以利用它从大量的信息中做快速的查找访问。
数据库管理系统的组织技术
顺序的、直接的以及其他的文件处理方式常用于单个文件中数据的组织和构造,而DBMS可综合几个文件的数据项以回答用户对信息的查询,即DBMS能够将几个大文件夹中逻辑相关的数据组织并连接在一起。
逻辑结构。确定这些逻辑关系是数据管理者的任务,由数据定义语言完成。DBMS在存储、访问和检索操作过程中可选用以下逻辑构造技术:
链表结构。在该逻辑方式中,记录通过指针链接在一起。指针是记录本中的一项数据项,它指出另一个逻辑相关的记录的存储位置,例如,顾客主文件中的记录将包含每个顾客的姓名和地址,而且该文件中的每个记录都由一个账号标识。在记账期间,顾客可在不同时间购买许多东西。公司保存一个发票文件以反映这些交易,这种情况下可使用链表结构,以显示给定时间内未支付的发票。顾客文件中的每个记录都包含这样一个字段,该字段指向发票文件中该顾客的第一个发票的记录位置,该发票记录又依次与该顾客的下一个发票记录相连,此链接的最后一个发票记录由一个作为指针的特殊字符标识。
层次(树型)结构。该逻辑方式中,数据单元的多级结构类似一棵“倒立”的树,该树的树根在顶部,而树枝向下延伸。在层次(树型)结构中存在主-从关系,惟一的根数据下是从属的元或节点,而每个元或树枝都只有一个所有者,这样,一个customer(顾客)拥有一个invoice(发票),而invoice(发票)又有从属项。在树型结构中,树枝不能相连。
网状结构。网状结构不像树型结构那样不允许树枝相连,它允许节点间多个方向连接,这样,每个节点都可能有几个所有者,而且它又可能拥有任意多个其他数据单元。数据管理软件允许从文件的任一记录开始提取该结构中的所需信息。
关系型结构。关系型结构由许多表格组成,数据则以“关系”的形式存储在这些表中。这是一个相当新颖的数据库组织技术,将来有望得到广泛应用。
物理结构。人们总是为了各自的目的,按逻辑方式设想或组织数据。因此,在一个具体应用中,记录R1和R2是逻辑相连且顺序处理的,但是,在计算机系统中,这些在一个应用中逻辑相邻的记录,物理位置完全可能不在一起。记录在介质和硬件中的物理结构不仅取决于所采用的I/O设备、存储设备及存储技术,而且还取决于用户定义的R1和R2中数据的逻辑关系。例如,R1和R2可能是持有信用卡的顾客记录,而顾客要求每两周将货物运送到同一个城市的同一个街区,而从运输部门的管理者看,R1和R2是按地理位置组织的运输记录的顺序项,但是在A/R应用中,可找到用R1R2表示的顾客,并且可根据其完全不同的账号处理他们的账目。简言之,在许多计算机化的信息记录中,存储记录的物理位置用户是看不见的。
MySQL的数据库管理功能
MySQL 包括许多使数据库易于管理的功能,分三部分讨论:MySQL 企业管理器、附加包、备份和恢复。
- MySQL 企业管理器
作为数据库服务器的一部分,MySQL 包括以下部分:MySQL 企业管理器(IM)、一个带有图形接口的用于管理数据库用户、实例和提供MySQL 环境等附加信息功能(如:复制)的数据库管理工具框架。
在MySQL8i数据库之前,EM 软件必须安装在Windows95/98或者基于NT 的系统中,而且每个库每次只能由一个数据库管理者访问。如今你可以通过浏览器或者把EM 装入Window95/98/2000 或基于NT 的系统中来使用EM。多个数据库管理员可以同时访问EM库。在MySQL9i的EM版中,超级管理员可以定义在普通管理员的控制台上显示的服务,并能建立管理区域。
2.附加包
正如下面所描述的那样,MySQL可使用一些可选的附加包,除了这些管理包之外,还有用于MySQL应用程序和SAP R/3的管理包。
(1)标准管理包
MySQL的标准管理包提供了用于小型MySQL数据库的管理工具(如:MySQL服务器/标准版)。功能包括:对数据库连接性能、输入/输出、装载、内存使用和实例、对话分析、索引调整进行监控,并改变调查和跟踪。
(2)诊断包
利用诊断包,可以监控、诊断及维护企业版数据库、操作系统和应用程序的安全。用有关历史和实时的分析,可自动的在问题发生前将其消除。诊断包还提供空间管理功能,有助于对未来系统资源需要的计划和跟踪。
(3)调整包
利用调整包,可确定并调整企业版数据库和应用系统的瓶颈,如效率低的SQL、很差的数据设计、系统资源的不当使用,从而优化系统性能。调整包能提前发现调整时机,并自动生成分析和需求变化来调整系统。
(4)变化管理包
变化管理包在升级企业版数据库时帮助排错和避免丢失数据,以达到支持新的应用程序的目的。该包能分析与应用程序变动有关的影响和复杂依赖关系并自动升级数据库。用户可使用一种简单的向导按必要的步骤来升级。
(5)可用性
MySQL 企业管理器可用管理MySQL标准版或企业版。对于企业版,这些附加的功能由单独的诊断包、调整包和变化管理包提供。
3.备份和恢复
正如每个数据库管理者所熟知的,对数据库做备份是一件很普通但又必要的工作。一次不当的备份会使数据库难于恢复甚至不可恢复。不幸的是,人们往往在相关系统发生故障而丢失了重要的业务数据后才认识到这项日常工作的重要。
下面介绍一些实现数据库备份操作的产品技术。
- 恢复管理者
典型的备份包括完整的数据库备份(最普通的类型),控件备份等。以前Mysql的企业备份工具(EBU)在一些平台上提供了相似的解决方案。然而,RMAN及其存储在MYSQL数据库中的恢复目录提供了更完整的解决方案。RMAN可以自动定位,备份,存储并恢复数据文件,控制文件和存档记录注册。当备份到期时,MYSQL9i的RMAN可以重新启动备份和恢复来实现恢复窗口任务。MYSQL企业管理器的备份管理器曾RMAN提供基于图形用户界面的接口。
(2)附件备份和恢复
RMAN能够执行企业版数据库的附件备份。附件备份仅备份上一次备份后改变了的数据文件,桌面空间或数据库块,因此,它比完整备份占用时间短而且速度快。RMAN也能执行及时指向的恢复,这种恢复能在一个不期望发生的事件之前恢复数据。
(3)连续存储管理器
许多媒体软件商支持RMAN。MYSQL捆绑了连续存储器来提供媒体管理服务,包括为至多四台设备提供磁带容量跟踪的服务。RMAN界面自动地与媒体管理软件一起来管理备份和恢复操作必须的磁带设备。
(4)可用性
尽管标准版和企业版的MYSQL都是基于基本的恢复机制,单附加备份仅限于企业版
参考资料
Java毕业设计——基于ssm的酒店管理系统设计与实现(源码+数据库).7z
Java毕业设计——酒店管理系统的设计与实现(论文+答辩PPT+源代码+数据库).zip
基于jsp的酒店管理系统毕业设计(项目报告+答辩PPT+源代码+数据库+部署视频)
来源地址:https://blog.csdn.net/2301_78287784/article/details/130876760