基于SpringBoot的酒店管理系统 毕业设计源码45760

springboot酒店管理系统的设计与实现

摘 要

随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的酒店管理系统来管理酒店信息,会使管理工作系统化、规范化,提高管理效率。

本课题的研究对象是酒店管理系统,该系统实现了新闻数据管理、用户注册管理、客房管理、预订记录、房间类型等功能。本系统在设计上,考虑到系统内容以及系统的受众群体,在系统的美工方面采用了比较正规的设计,同时也提供了友好的页面以及简单的操作,系统采用Java、、MVC、MySQL,这样的组合不但利用上了在大学中所学到的知识,并且能够使系统真正的发布到互联网上,而不是一个单纯的演示系统。

本系统经过测试,运行效果稳定,操作方便、快捷。在具体的应用过程中,有可能会出现一些问题,今后还会对本系统不断地进行完善、更新,使其功能更强大,应用更广泛。

关键词:B/S结构;管理效率;Java;互联网

Design and implementation of spring boot

 hotel management system

Abstract

With the continuous progress of human beings towards the information society, the surging information age is setting off a new revolution. At the same time, with the rapid development of computer network technology, network management has become more and more widely used. Therefore, establishing a hotel management system with B/S structure to manage hotel information will systematize and standardize the management work and improve the management efficiency.

The research object of this subject is the hotel management system, which realizes the functions of news data management, user registration management, room management, reservation record, room type, etc. In the design of the system, taking into account the system content and the audience group of the system, the system adopts a more formal design in the aspect of art design, and also provides a friendly page and simple operation. The system uses Java, MVC, and MySQL. This combination not only makes use of the knowledge learned in the university, but also enables the system to be truly published on the Internet, rather than a simple demonstration system.

The system has been tested and the running effect is stable, and the operation is convenient and fast. In the specific application process, there may be some problems. In the future, the system will continue to be improved and updated to make it more powerful and widely used.

Key words: B/S structure; Management efficiency; Java; internet

目   录

第1章 绪论

1.1 研究背景与意义

1.2 开发现状

1.3论文结构

第2章 主要技术和工具介绍

2.1 开发技术说明

2.2 mysql数据库

2.3 B/S结构

2.4 spring boot框架介绍

2.5 Vue.js 主要功能

第3章 系统分析

3.1可行性分析

3.1.1经济可行性

3.1.2技术可行性

3.1.3操作可行性

3.2需求分析

3.3业务流程分析

3.4数据流程分析

第4章 系统设计

4.1开发环境

4.2系统结构设计

4.3主要功能模块设计

4.5数据库设计

4.5.1数据库设计概述

4.5.2概念设计

4.5.3表设计

第5章  系统实现

5.1登录模块的实现

5.2用户子系统模块的实现

5.2.1用户首页的实现

5.2.2注册模块的实现

5.2.4评论模块的实现

5.2.5预订模块的实现

5.3管理员子系统模块的实现

5.3.1用户管理模块的实现

5.3.2密码修改模块的实现

5.3.3客房管理模块的实现

5.3.4资讯管理模块的实现

5.3.5客房预订管理模块的实现

第6章  系统测试

6.1软件测试

6.2功能测试

6.3测试结果

第7章  总结

致  谢

参考文献

第1章 绪论

    1. 研究背景与意义

近几年随着社会的发展,各地旅客数量不断增加,酒店数量也随之增加,导致酒店客房的管理方面的各种信息量也在不断成倍增长,因此,传统的酒店信息管理方式暴露出越来越多的问题,耗费人力,效率低下。这时,酒店就急需各种各样能使酒店工作人员对庞大的信息量进行更快更方便更准确进行管理的系统。

在互联网技术无处不在的今天,人们的生活已经离不开计算机,利用其工作、学习乃至购物。例如:人们去外地旅游或出差,通常会根据自己的需求选择在网上事先预订好客房,大大节约了找房的时间。此时,酒店就需要相应的客房预订管理系统对客房和预订信息进行管理。

对于客房数量较多的酒店来说,利用一套酒店系统来管理客房信息和预订信息显得尤为重要,这个系统不仅方便了客户进行预订,同时也方便了工作人员,大大节省了时间。所以开发一个酒店预订系统是很有必要的。

    1. 开发现状

1、国内研究现状:

我国酒店业很早就利用计算机管理系统来加强管理、提高服务水平。我国酒店的IT的发展阶段主要是以电脑系统的运用为标志的,电话通讯系统实际上也是从程控交换技术出现才获得质的飞跃。随着计算机的普及应用,计算机技术的不断发展,同时也使酒店管理系统发展到了一个新的时期,趋于更加完善。酒店管理系统实现了酒店宾馆订房、入住、退房流程的智能化、自动化,节约了酒店的人工成本,较少了客人的等候时间,具有时尚、便捷、私密的特点。

2、国外研究现状:

国外的酒店业发展较为国内早了好多年,同事在多年的发展探索中,酒店的功能发展更加全面和多样化。酒店由一开始的建安住宿到现在的休闲娱乐以及商务旅游等,向着更复杂功能更齐全的方向发展。随着这些酒店的全面发展,其对酒店的管理要求也随着提高,为了更方便地管理酒店,在计算机迅速发展的背景下,产生了酒店管理系统软件,在很大成程度上减少了人力物力和财力,也同时使酒店的经营更加规范化,提高了服务的标准。

1.3论文结构

第一章是论文的绪论部分,主要介绍了课题的研究背景以及研究目的和意义。

第二章研究了酒店管理系统的所采用的开发技术和开发工具。

第三章研究了酒店管理系统的需求分析,根据系统的特点,分析系统采用的体系结构及开发方法,以及该系统的运行环境,并分析了业务流程,绘制了业务流程以及数据流程。

第四章是对系统的详细设计进行说明。

第五章是系统的具体实现,介绍系统的各个模块的具体实现。

第六章在前几章的基础上对系统进行测试和运行。

最后对系统进行了认真的总结,以此对未来有一个新的展望。

第2章 主要技术和工具介绍

2.1 开发技术说明

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。

2.2 mysql数据库

MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。因为其自身的功能相当强大,目前已成为最为流行的数据库软件之一[7]。

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[8]。

2.3 B/S结构

系统计划采用BS模式,是因为比传统的C/S结构具有明显的优越性。B/S模式也就是浏览器/服务器模式,它的界面部分是在浏览器端展示,而主要工作是由服务器端进行实现的,用户的请求由浏览器端提交给服务器端进行处理,而服务器将处理结果反馈给浏览器端,在浏览器端界面描画给用户查看。采用B/S模式不仅可以避免用户必须安装专业软件才能开发系统或者访问系统的局限性,而且更加便利。

2.spring boot框架介绍

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

2.5 Vue.js 主要功能

Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。

第3章 系统分析

3.1可行性分析

分析用户需求和数据需求,得到一个方案,然后设定系统的开发方案,为每个功能模块设计出物理设计方案,开发本系统的是否可行?本文从技术上、操作上和经济上对本系统的开发进行可行性分析。

3.1.1经济可行性

酒店管理系统属于一个工具型的系统,它可以节省工作人员大量数据收集、方便快捷,能够极大地提高工作效率,最大限度的降低管理员的工作量,使管理尽量简便,同时促进酒店管理的信息化、现代化,及时提供必要的信息统计。因为整个系统采用Tomcat+MySQL+Java组合,这几个软件都是免费开源的,系统开发所需的费用是比较低的,由于系统并不复杂,其运行与培训费用也不会占用很多资金,可以预见系统完成后可以带来较大的经济效益。

3.1.2技术可行性

本系统采用windows 7作为操作平台。数据库开发平台选用MySQL,该数据库管理系统在windows7和windows 8/10上都能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,。本系统的应用软件开发平台选用Myeclipse

3.1.3操作可行性

本系统使用的是现流行的开发语言,即jsp技术。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统。系统布局较简单,功能操作不复杂,完全符合现代市场需求。

3.2需求分析

针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的酒店管理系统。

本系统主要包含了首页、个人资料、公共管理(轮播图、酒店公告)用户管理(管理员、注册用户)信息管理(酒店资讯、资讯分类)房型管理、酒店客房、房间预订、预订入住、结账退房等多个功能模块。下面分别简单阐述一下这几个功能模块需求。

表3-1功能需求表

编号

功能名称

功能描述

用户登录

保证用户通过身份验证进入系统进行操作

用户注册

没有账号并想使用系统的用户可以使用用户注册,检测用户的注册内容,信息通过检测之后成为本系统的用户

站内搜索

用户可以通过各种各样的关键字模糊搜索站内信息

评论添加

普通用户选择要评论的信息进行添加评论

评论管理

管理员对用户的评论信息进行管理,包括删除、修改

添加收藏

普通用户可以选择信息添加收藏

收藏管理

个人用户可以对自己的收藏记录进行管理包括删除、修改

修改个人信息

用户可以根据自己当前的情况修改个人的信息

后台登录

仅管理员能够登录后台

添加预订记录

用户添加预订记录

编辑预订记录

用户修改预订记录信息

删除预订记录

用户删除预订记录

预订审核

管理员给用户添加的预订进行审核

添加客房信息

管理员添加客房信息

编辑客房信息

管理员修改客房信息

删除客房信息

管理员删除客房信息

添加资讯信息

管理员添加资讯信息

编辑资讯信息

管理员修改资讯信息

删除资讯信息

管理员删除资讯信息

3.3业务流程分析

经过对系统功能的分析,调查,研究,总结出酒店管理系统主要实现的是对¥留言信息、用户信息等管理功能。这样,可以对该系统绘制业务流程图。

如下为业务流程图图例。

3-1业务流程图图例

系统的业务流程如下图所示。

图3-2系统业务流程图

3.4数据流程分析

根据上文所述的业务流程特点,首先对各个方面总的数据处理环节和外部实体进行了描述, 根据自顶向下原则,逐层分解功能,这个过程产生DFD图。

以下是本文当中使用的数据流图图例,见下图所示。

图3-3系统数据流图(0层)

零层数据流程是流程中最抽象的一层,它包括了注册与登录管理、用户功能管理和检索维护管理等功能模块,在登录注册模块使用到的数据存储有用户账户信息文档、用户信息文档,用户功能管理模块需要的存储是用户动态信息文档、留言信息文档、图片信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。

系统的0层数据流图如下图所示。

图3-4系统数据流图(0层)

一层数据流程图是对零层数据流程图的细化,将登录与注册细分为填制登录注册信息和完善信息,用户功能管理细分为用户基本功能管理和用户特色功能管理。

系统的1层数据流图如下图所示。

图3-5系统数据流图(1层)

二层数据流程是对一层数据流层图中填写登录注册信息、用户基本功能和用户特色功能的细化。即:填写登录注册信息细化为填制信息、后台审核,用户基本功能细化为新闻浏览、客房评论、收藏客房、在线预订操作,用户特色功能细化为订单查询、结账退房操作。

系统的2层数据流图如下图所示。

图3-6系统数据流图(2层)

第4章 系统设计

4.1开发环境

  1. 软件体系结构方案:采用B/S模式,B/S代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。B/S结构可以由web服务器能够解释的脚本语言如jsp。
  2. 操作系统方案:Windows 7(旗舰版)操作系统,该系统可以兼容需要的软件,并且具有良好的运行速度,界面良好。
  3. 后台数据库:选用MySQL。MySQL旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。
  4. 开发工具:前台网页使用dreamweaver工具,后台逻辑选用Meclipse10。
  5. 开发语言:Java语言。
  6. 开发技术:jsp+MVC +html+css+js技术

4.2系统结构设计

本系统使用的角色主要有系统管理员、普通用户,本系统分为系统前台和系统后台,首先在系统前台,游客用户可以经过账号注册,管理员审核通过后,用账号密码登录系统前台,查看首页、酒店公告、酒店资讯、酒店客房等栏目信息,进行客房评论、收藏客房、在线预订,在前台用户可以通过标题和类别进行前台信息的搜索,普通用户可以登录个人中心进行个人资料修改、预订查询等功能。

后台主要由管理员使用,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用新闻数据管理、用户注册管理、客房管理、订单管理、系统管理等功能操作。同时管理员可以通过关键字搜索可以搜索相应的信息,打印各种详细信息,导出各类信息列表至excel中。

系统的功能结构图如下图所示。

图4-1系统功能结构图

4.3主要功能模块设计

  1. 用户管理模块

该模块包括普通用户管理和系统用户管理,系统用户主要是普通管理员,对用户信息进行管理,只有普通用户才可在该系统上进行相应的操作。用户对个人信息可进行修改;管理员可对自己的个人信息进行维护,同时可对用户的密码信息进行修改,也可删除系统中的用户

  1. 登录模块

根据用户输入的 Id 和密码到数据库中查找该用户,如果未能找到该用户则做出 提醒“用户名或密码错误”,如果找到该用户,则要判断用户的类别然后根据用户类别进入相应的页面。

  1. 注册模块

当新用户第一次登陆时,要求注册账号。在登陆页点击注册后进入用户注册界面,新用户需要填写本人的手机号、用户名、设置登录密码,之后单击注册,则完成了初步信息的填写

  1. 客房信息管理模块

(1)客房添加:必须填写客房名称、客房类型、客房押金、每日租金、客房照片,客房编号必须是唯一的, 提交后判断某一项是否为填写, 如果是则做出提醒, 填写符合规则后方可添加到数据库。

(2)客房查询:可以根据客房编号等信息对客房进 行查询,查询结果可能有多个。

(3)客房修改:除了客房编号外,其他信息均可以修改。

(4)客房删除:首先找到要删除的客房(一个或多个),然后删除即可。

  1. 资讯信息管理模块

(1)资讯添加:必须填写标题、类别、内容,且编号必须是唯一的,各项都不能为空。

(2)资讯查询:该功能能够显示资讯的基本信息,可以根据资讯的编号等信息对资讯做出查询。

(3)资讯修改:如果资讯信息需要被修改,可修改的信息包括资讯内容等基本信息,但是编号是唯一、固定 的,不能被修改。

(4)资讯删除:首先找到要删除的资讯(一个或多个),然后删除即可。

  1. 预订模块

用户查询客房信息,选择客房进入该客房的详细页面,点击预订按钮,填写预订表单,添加预订记录。

  1. 预订管理模块

用户预订客房模块主要实现的是对客房的预订功能,同时可查看自己的预订记录,并对预订可进行取消预订操作。管理员登录系统后,可查看用户的预订信息,也可搜索预订信息,同时可对预订信息进行确认或删除的操作。

  1. 评论信息管理模块

评论模块分为用户评论和管理员管理评论信息,用户登录系统后,选择想要评论的客房,添加评论,管理员查询该评论信息,并有权对其管理,包括删除。

4.5数据库设计

4.5.1数据库设计概述

为了实现系统的功能设计,就要有相应的数据库表设计。根据系统的功能设计要求为各个数据库表设计字段、数据类型、是否为空等的相关信息。在实际调研和需求分析的基础上,对该系统设计数据库。再有系统的需求分析可以看出,本系统有两个角色:普通用户和管理员,他们分别在系统的运行和使用中起着不同的作用。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。数据库中表的设计主要考虑两个方面:一是整个管理系统的所有表中的数据要共享性高、冗余度小、占用最可能小的存储空间。

4.5.2概念设计

概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解。

系统总体ER图如下图所示。

图4-10系统总体ER图

4.5.3表设计

概念模型是独立于任何一种数据模型的信息结构。将概念模型转换成逻辑模型,转换的一般原则如下:

(1)一个实体性转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。

(2)一个1:1联系可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

(3)一个1:n联系可以转化为一个独立的关系模式,也可以与n端对应的关系模式合并。

(4)一个m:n联系转化为一个关系模式。

本系统设计如下多个表,包括客房表、订单表、评论表。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表book_your_stay (预订入住)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

book_your_stay_id

int

10

0

N

Y

预订入住ID

2

order_number

varchar

64

0

Y

N

订单号

3

title

varchar

64

0

Y

N

标题

4

layout_of_a_house_or_an_apartment

varchar

64

0

Y

N

房型

5

price

varchar

64

0

Y

N

价格

6

booking_quantity

varchar

64

0

Y

N

预订数量

7

booking_days

varchar

64

0

Y

N

预订天数

8

total_price

varchar

64

0

Y

N

总价格

9

user

int

10

0

Y

N

0

用户

10

room_number

varchar

64

0

Y

N

房号

11

name_of_occupant

varchar

64

0

Y

N

入住人姓名

12

id_number

varchar

64

0

Y

N

身份证号

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表check_out (结账退房)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

check_out_id

int

10

0

N

Y

结账退房ID

2

order_number

varchar

64

0

Y

N

订单号

3

room_number

varchar

64

0

Y

N

房号

4

layout_of_a_house_or_an_apartment

varchar

64

0

Y

N

房型

5

user

int

10

0

Y

N

0

用户

6

days_of_stay

int

10

0

Y

N

0

入住天数

7

check_out_time

date

10

0

Y

N

退房时间

8

consumption_amount

int

10

0

Y

N

0

消费金额

9

consumption_details

text

65535

0

Y

N

消费明细

10

pay_state

varchar

16

0

N

N

未支付

支付状态

11

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

12

recommend

int

10

0

N

N

0

智能推荐

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表hotel_rooms (酒店客房)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_rooms_id

int

10

0

N

Y

酒店客房ID

2

title

varchar

64

0

Y

N

标题

3

layout_of_a_house_or_an_apartment

varchar

64

0

Y

N

房型

4

photo

varchar

255

0

Y

N

照片

5

price

int

10

0

Y

N

0

价格

6

number_of_rooms

int

10

0

Y

N

0

客房数量

7

occupancy

varchar

64

0

Y

N

可入住人数

8

room_facilities

text

65535

0

Y

N

房间设施

9

details

text

65535

0

Y

N

详情

10

hits

int

10

0

N

N

0

点击数

11

praise_len

int

10

0

N

N

0

点赞数

12

recommend

int

10

0

N

N

0

智能推荐

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

gender

varchar

64

0

Y

N

性别

3

age

varchar

64

0

Y

N

年龄

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

recommend

int

10

0

N

N

0

智能推荐

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表room_reservation (房间预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

room_reservation_id

int

10

0

N

Y

房间预订ID

2

order_number

varchar

64

0

Y

N

订单号

3

title

varchar

64

0

Y

N

标题

4

layout_of_a_house_or_an_apartment

varchar

64

0

Y

N

房型

5

price

varchar

64

0

Y

N

价格

6

booking_quantity

int

10

0

Y

N

0

预订数量

7

booking_days

int

10

0

Y

N

0

预订天数

8

total_price

varchar

64

0

Y

N

总价格

9

user

int

10

0

Y

N

0

用户

10

check_in_date

date

10

0

Y

N

入住日期

11

contact_number

varchar

64

0

Y

N

联系电话

12

examine_state

varchar

16

0

N

N

未审核

审核状态

13

examine_reply

varchar

16

0

Y

N

审核回复

14

pay_state

varchar

16

0

N

N

未支付

支付状态

15

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

16

recommend

int

10

0

N

N

0

智能推荐

17

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表room_type_management (房型管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

room_type_management_id

int

10

0

N

Y

房型管理ID

2

layout_of_a_house_or_an_apartment

varchar

64

0

Y

N

房型

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

第5章  系统实现

5.1登录模块的实现

酒店管理系统的系统入口就是用户登录功能,在浏览器输系统地址跳转至系统前台首页,系统前台的登录窗口在首页左面,包括用户名、密码、权限、验证码,除了权限框使用下拉列表,其他使用文本框,验证码下方为登录和重置两个按钮,用户点击登录按钮,则进行登录验证。

登录流程图如下所示。

图5-1登录流程图

系统登录界面如下所示。

图5-2系统登录

用户登录的逻辑代码如下:

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

5.2用户子系统模块的实现

5.2.1用户首页的实现

在酒店管理系统的用户首页,主要有用户登录页面,以及首页、公告、酒店资讯、客房信息、随机抽房的展示等,在首页的导航栏中可看出,该系统主要有首页、公告、酒店资讯、客房信息、随机抽房等主要模块。

如下图所示为系统的用户首页界面。

图5-3用户首页

其中载入用户页面的主要代码如下:

server:

  port: 5000

  servlet:

    context-path: /api

spring:

  datasource:

    url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8

    username: root

    password: root

    driver-class-name: com.mysql.cj.jdbc.Driver

  jackson:

    property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES

    default-property-inclusion: ALWAYS

    time-zone: GMT+8

    date-format: yyyy-MM-dd HH:mm:ss

  servlet:

    multipart:

      max-file-size: 100MB

      max-request-size: 100MB

5.2.2注册模块的实现

这块程序首先根据所取得的表单中的用户名查询数据库中是否有相同用户名的记录,如果数据库存在相同的用户名,则提示用户名已存在,否则,打开记录集并添加一条新的记录,然后系统默认要给用户发送注册成功的提醒。

用户注册流程图如下所示。

图5-4用户注册流程图

用户注册界面如下图所示。

图5-5用户注册

用户注册关键代码为:

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

5.2.4评论模块的实现

用户点击某个客房点进入客房详细页,点击评论按钮进入评论页,提交评论信息,成功发布评论,管理员管理用户的评论信息。

用户评论流程图如下所示。

图5-6用户评论流程图

用户评论界面如图所示。

图5-7用户评论

评论添加关键代码为:

@RequestMapping(value = {"/sum_group", "/sum"})

    public Map<String, Object> sum(HttpServletRequest request) {

        Query count = service.sum(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

5.2.5预订模块的实现

用户点击某个客房点进入客房详细页,点击预订按钮进入预订页,提交预订信息,成功预订后,管理员管理用户的预订信息,审核预订信息。

用户预订流程图如下所示。

图5-8用户预订流程图

客房预订界面如图所示。

图5-9客房预订

预订管理界面如图所示。

图5-10预订管理

预订添加关键代码为:

 @RequestMapping(value = {"/count_group", "/count"})

    public Map<String, Object> count(HttpServletRequest request) {

        Query count = service.count(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

5.3管理员子系统模块的实现

5.3.1用户管理模块的实现

系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。

系统用户管理界面如下图所示。

图5-11系统用户管理

系统用户管理关键代码为:

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

}

5.3.2密码修改模块的实现

密码修改是对当前登录用户的密码进行修改,在用户登录后右上方也能进行密码修改。

密码修改流程图如下所示。

图5-12密码修改流程图

密码修改关键代码为:

i  /**

     * 修改密码

     * @param data

     * @param request

     * @return

     */

    @PostMapping("change_password")

    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

        // 根据Token获取UserId

        String token = request.getHeader("x-auth-token");

        Integer userId = tokenGetUserId(token);

        // 根据UserId和旧密码获取用户

        Map<String, String> query = new HashMap<>();

        String o_password = data.get("o_password");

        query.put("user_id" ,String.valueOf(userId));

        query.put("password" ,service.encryption(o_password));

        Query ret = service.count(query, service.readConfig(request));

        List list = ret.getResultList();

        Object s = list.get(0);

        int count = Integer.parseInt(list.get(0).toString());

        if(count > 0){

            // 修改密码

            Map<String,Object> form = new HashMap<>();

            form.put("password",service.encryption(data.get("password")));

            service.update(query,service.readConfig(request),form);

            return success(1);

        }

        return error(10000,"密码修改失败!");

    }

5.3.3客房管理模块的实现

客房信息添加功能主要指对其客房名称、客房类型、客房押金、每日租金、客房照片等一些基本信息的添加、删除和修改。客房查询能根据客房id、名称等多种条件对客房信息进行查询。

客房管理流程图如下所示。

图5-13客房管理流程图

客房添加如下图所示:

图5-14客房添加

客房查询如下图所示:

图5-15客房查询

客房信息添加关键代码为:

  @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

    @Transactional

    public void delete(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

        log.info("[{}] - 删除操作:{}",table,sql);

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

    }

5.3.4资讯管理模块的实现

管理员发布新的资讯信息,系统前台显示资讯信息,资讯信息添加功能主要指对其标题、内容等一些基本信息的添加、删除和修改。资讯查询能根据资讯id、名称、标题等多种条件对资讯信息进行查询。

资讯管理流程图如下所示。

图5-16资讯管理流程图

资讯添加如下图所示:

图5-17资讯添加

资讯查询如下图所示:

图5-18资讯查询

资讯信息添加关键代码为:

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

    /**

     * 服务对象

     */

    @Autowired

    public AuthController(AuthService service) {

        setService(service);

    }

}

5.3.5客房预订管理模块的实现

用户选择客房添加客房订单记录,管理员审核客房订单信息,管理员所以用户的客房订单记录。

客房订单查管理流程图如下所示。

图5-19客房订单管理流程图

客房订单审核如下图所示。

图5-20客房订单审核

客房订单审核关键代码为:

private void setHeader(HttpServletRequest request, HttpServletResponse response) {

        //跨域的header设置

        response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin"));

        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");

        response.setHeader("Access-Control-Allow-Credentials", "true");

        response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers"));

        response.setHeader("Access-Control-Max-Age", "1800");

        //防止乱码,适用于传输JSON数据

        response.setHeader("Content-Type", "application/json;charset=UTF-8");

        response.setStatus(HttpStatus.OK.value());

  

第6章  系统测试

6.1软件测试

在设计系统的过程中,存在一些错误是不可避免的。For语句语法错误,运行的提示,并要求立即纠正,因此,容易发现和纠正错误等。但另一种类型的错误是程序执行时由于不正确的操作或对某些数据计算公式的逻辑错误导致错误的结果。这种错误的隐蔽性强,有时会出现,有时不出现,因此,这种误差动态屏幕耗时。

6.2功能测试

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项检测,检查产品是否达到用户要求的功能。下面列出的测试用例是基于需求分析阶段的用例描述而进行的设计。

下面将通过表格的形式介绍针对本系统每个功能模块所进行的功能测试。

1.注册模块功能测试,如下表所示。

表6-1注册测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

用户注册

用户打开注册界面

输入合适的用户名,密码为空

无法注册

提示密码不得为空,无法注册

正常

用户注册

用户打开注册界面

输入不合适的用户名、2次相同的密码

无法注册

提示用户注册失败

正常

用户注册

用户打开注册界面

输入合适的用户名,两次密码不一致

无法注册

提示用户名不得为空,无法注册

正常

用户注册

用户打开注册界面

输入的用户名为空

无法注册

提示用户名不能为空

正常

用户注册

用户打开注册界面

输入合适的用户名和两次相同的密码

正常注册

注册成功

正常

2.登录模块功能测试,如下表所示。

表6-2登录测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

登录系统

用户打开登录界面

输入正确的用户名,密码为空

无法登录

提示密码不得为空,无法登录

正常

登录系统

用户打开登录界面

输入正确的用户名,输入错误密码

无法登录

提示密码不正确,无法登录

正常

登录系统

用户打开登录界面

输入正确的密码,用户名为空

无法登录

提示用户名不得为空,无法登录

正常

登录系统

用户打开登录界面

输入正确的密码,错误的用户名

无法登陆

提示用户名不正确,无法登录

正常

登录系统

用户打开登录界面

用户名及密码都为空

无法登录

提示用户名和密码不得为空,无法登录

正常

登录系统

用户打开登录界面

用户名及密码都输入错误

无法登录

提示用户名和密码正确,无法登录

正常

登录系统

用户打开登录界面

输入正确的用户名和密码

正常登录

进入主界面

正常

3.修改密码模块功能测试,如下表所示。

表6-3修改密码测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

修改密码

用户打开修改密码界面

输入正确初始密码和2次相同的新密码

密码修改成功

密码修改成功

正常

修改密码

用户打开修改密码界面

输入错误的原始密码

密码修改失败

密码修改失败

正常

修改密码

用户打开修改密码界面

输入正确初始密码和2次不相同的新密码

密码修改失败

密码修改失败

正常

4.客房管理功能测试,如下表所示。

表6-7客房管理测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

客房信息添加

用户已登录,打开客房添加界面

输入客房标题、内容等信息

客房添加成功

客房添加成功,新客房成功显示

正常

客房信息添加

用户已登录,打开客房添加界面

用户未输入客房标题和内容

客房添加失败

客房添加失败

正常

5.客房预订功能测试,如下表所示。

表6-8客房预订测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

客房预订

用户已登录,打开客房预订界面

输入客房标题、内容等信息

客房预订成功

客房预订成功

正常

客房预订

用户已登录,打开客房预订界面

用户未输入客房标题和内容

客房预订失败

客房预订失败

正常

6.3测试结果

通过对酒店管理系统整个流程管理的测试,发现了许多无法实现的功能并及时得到改正和实现,为酒店管理系统的发布奠定了基础。此系统中各模块的功能都基本实现,不过还存在着许多不足,在以后的学习中通过测试还需加强和完善。

第7章  总结

本文主要研究了酒店管理系统的设计与实现。本次论文主要研究的内容主要包括:

(1)分析研究了本课题的开发背景和课题的研究意义。

(2)对此次毕业设计进行了详尽的需求分析,并根据实际需求,分析了其数据字典。

(3)概要设计了系统的功能模块,详细设计了系统所使用的数据库表,并研究了该系统的ER图。

(4)详细介绍了该平台要实现的功能,构建了此系统。

从技术上来说,整个系统的基本实现环境是Win7操作系统搭配myeclipse下的java环境,数据库的建立使用MySQL软件,系统开发使用myeclipse软件,用java语言进行系统的设计和开发,图片采用Photoshop CS6处理,使整个系统在视觉上和功能上尽量做到完整和美观。系统界面设计美观大方,功能较为完整,技术较先进且具有一定现实意义。

在摸索中前进。对MySQL数据库的使用,如何设计后台表结构,使得系统更加合理,健壮,是面临的又一个难题,通过查找相关资料,以及在充分的需求分析基础上,解决了以上问题。若条件允许,系统的功能模块能够更丰富,某些模块的功能也能更完善,用户之间权限的处理逻辑性也能更强。今后在改善客观条件的情况下,本系统还需要进一步进行研究开发。

致  谢

经历了几个月的毕业设计之旅,遭遇了无数难题与挑战,几经波折后,近乎要摧毁我当初选择这个题目的信心。好在我的导师一直坚持对我悉心支持,并对此套系统提出了诸多改善意见,解决了我所遇到的众多难题,酒店管理系统也得以在这样的境况下圆满完成。老师给予了我正确的指导和极大的帮助,这不仅仅使我获得了足够多的开发经验,更使我在系统设计过程中少走了许多的弯路,巩固了以前所学的知识,提高了应用能力,这使我对以后的工作也信心满满。

敬业的工作态度都给予了我极大的鼓励与帮助。对于提出的问题和遇到的困难都给予细心的解答和真诚的帮助,再次表示衷心的感谢。我还要对学院及系里的各位领导、老师们表示谢意,在这次毕业论文期间给我们提供了良好的学习和生活环境,并给予软硬件的支持,使得我的系统设计工作及论文撰写工作更加顺畅、便利。最后我还要感谢所有为我的毕业设计提出指导意见的各位老师、同学。

参考文献

[1]陈文玲,余慧玲.大数据技术在酒店管理中的应用[J].景德镇学院学报,2021,36(06):71-74+82.

[2]陈丽芳.酒店管理专业教育中现代学徒制的实践应用研究[J].辽宁经济职业技术学院.辽宁经济管理干部学院学报,2021(06):92-94.

[3]曾瑭,张媛.“互联网+”时代酒店管理混合式教学模式的应用策略探究[J].中国新通信,2021,23(23):163-164.

[4]李斌.探讨信息化技术在酒店管理专业教学中的应用[J].当代农机,2021(11):68-70.

[5]申松姿.新时期酒店管理的创新发展探究[J].质量与市场,2021(21):79-81.

[6]刘倩宇.酒店管理中的市场营销策略与应用前景分析[J].中国市场,2021(31):141-142.

[7]郝一鸣.基于共享经济背景下酒店管理发展战略和模式分析[J].上海商业,2021(10):98-99.

[8]何奕霏.应用型本科酒店管理专业实践教学体系构建与实践[J].湖北开放职业学院学报,2021,34(17):142-144.

[9]岳颖颖.基于Web酒店管理系统设计分析[J].电子技术与软件工程,2021(17):196-197.

[10]冯晓春,陈艳.基于web开发的学生公寓管理系统设计与实现[J].科技创新与应用,2020(31):77-78.

[11]宋琦,莫淇,黄柳婷,张卉盈,郭文麒.基于RFID模块的智慧酒店管理系统设计与研究[J].时代汽车,2020(17):114-115.

[12]廖姝姝.浅谈互联网环境下酒店管理系统的新特点与发展趋势[J].中国管理信息化,2020,23(12):77-78.

[13]乐思翔,甘家城,刘顺,蒋寒琼,王婷婷,王小军.互联网+高校公寓信息化管理系统研究与开发[J].大众科技,2018,19(10):7-9.

[14]MartinM,LamMS.AutomaticGenerationofXSSandSQLInjectionAttackswithGoal-directedModelCheckingUsenixSecuritySymposium,July28-August1,2008,SanJose,Ca,Usa.2018:31-44.

[15]闫新.基于WEB的酒店信息管理系统设计与实现.电子科技大学,2018.

[16]BeckK,GammaE.Test-infected:programmerslovewritingtestsMoreJavagems.CambridgeUniversityPress,2018:357-376.

[17]GuptaP,GovilMC.SpringWebMVCFrameworkforrapidopensourceJ2EEapplicationdevelopment:acasestudy.InternationalJournalofEngineeringScience&Technology,2015,2(6).

[18]BruceRich;TheoderJ.Shrader;AthonyJ.Nadalin,JavaandInternet[J].IntelligentInformation Management.,2018,(10):210-230

[19]ElizabethAWilliamson,DavidKHarrison,MikeJordan.Informationsystemsdevelopmentwithinsupplychainmanagement[J].InternationalJournalofInformationManagement,2018,(5):25-32.

点赞+收藏+关注 → 私信领取本源代码、数据库

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在线考试系统是一个基于Spring Boot框架的Java毕业设计项目,主要实现了学生在线考试的功能。该系统具有以下特点和功能: 1. 用户管理系统包括学生、教师和管理员三种用户角色,每个角色具有不同的权限和功能。学生可以注册账号、登录系统、查看考试信息、参加考试、查看成绩等;教师可以发布考试信息、查看学生答题情况、批改试卷等;管理员可以管理用户账号、权限设置等。 2. 考试管理:教师可以在系统中创建考试,设置考试开始时间、结束时间、考试时长、题目数量等信息。学生在考试开始后可以在线答题,系统会自动计时并提交试卷。教师可以及时查看学生答题情况和考试结果,并进行试卷批改。 3. 题库管理:教师可以添加、编辑和删除题目,包括单选题、多选题和填空题等不同类型的题目。每个题目都有对应的分值和答案,方便系统自动计算学生的成绩。 4. 成绩统计:系统会根据学生的答题情况和教师的批改结果自动计算学生的成绩,并展示给学生和教师查看。学生可以查看自己的考试成绩和排名,教师可以查看整个班级的成绩分布和平均分等统计数据。 5. 数据库管理系统使用MySQL数据库储存用户信息、考试信息、题目信息和成绩信息等。可以通过数据库管理工具对相关数据进行备份、还原和管理。 通过使用Spring Boot框架,系统具有良好的搭建和扩展性,可以实现高效的功能开发和维护。同时,使用Java语言编写,代码结构清晰,易于阅读和维护。在线考试系统码可以帮助毕业设计的学生了解和学习Spring Boot框架在实际项目中的应用,提高项目的开发水平和能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值