基于SpringBoot的在线旅游预订系统设计与实现-计算机毕业设计源码77207

摘  要

随着互联网技术的迅猛发展,旅游行业逐渐向数字化、智能化转型,在线旅游预订系统作为现代旅游产业的重要组成部分,已经成为用户获取信息、选择旅游产品、完成预订的重要工具。在线旅游预订系统基于Java语言、Spring Boot框架及MySQL数据库设计,旨在构建一个高效、灵活且易于扩展的在线旅游预订平台。该平台不仅支持普通用户进行景点查询、酒店预订、机票购买等操作,还为管理员提供强大的后台管理功能,包括用户管理、订单管理、旅游产品更新等。

系统功能设计分为两大部分,一是面向普通用户的功能,主要包括首页展示、旅游景点推荐、酒店与机票查询与预订、订单管理、个人中心等;二是面向管理员的功能,涵盖用户权限管理、旅游产品管理、订单管理、公告发布等。系统通过智能推荐、个性化服务等方式提高用户体验,并通过数据分析优化运营。技术方案方面,系统采用Java编程语言和Spring Boot框架,具有良好的模块化设计和高扩展性,能够轻松处理高并发和大规模数据。同时,数据库采用MySQL,确保数据的可靠性与高效查询。

在线旅游预订系统不仅能够提升用户的预订效率与体验,还能为平台提供更为精确的用户行为分析,优化资源分配与产品推荐。通过技术创新与数据分析,平台能够更好地满足用户需求,提升平台竞争力,推动旅游行业的数字化转型。 

关键词在线旅游预订系统;Java语言;Spring Boot框架;MySQL数据库

Design and Implementation of Online Travel Booking System Based on SpringBoot

Abstract:With the rapid development of Internet technology, the tourism industry is gradually transforming to digital and intelligent. As an important part of modern tourism industry, online travel booking system has become an important tool for users to obtain information, select tourism products and complete reservations. The online travel booking system is designed based on Java language, Spring Boot framework, and MySQL database, aiming to build an efficient, flexible, and easily scalable online travel booking platform. This platform not only supports ordinary users to search for scenic spots, book hotels, purchase air tickets and other operations, but also provides powerful backend management functions for administrators, including user management, order management, and tourism product updates.

The system function design is divided into two parts. The first part is the functions aimed at ordinary users, mainly including homepage display, tourist attraction recommendation, hotel and flight ticket inquiry and booking, order management, personal center, etc; The second is the functions for administrators, covering user permission management, tourism product management, order management, announcement publishing, etc. The system improves user experience through intelligent recommendations, personalized services, and optimizes operations through data analysis. In terms of technical solutions, the system adopts Java programming language and Spring Boot framework, with good modular design and high scalability, which can easily handle high concurrency and large-scale data. Meanwhile, MySQL is used as the database to ensure the reliability and efficient querying of data.

The online travel booking system can not only improve users' booking efficiency and experience, but also provide more accurate user behavior analysis, optimize resource allocation and product recommendation for the platform. Through technological innovation and data analysis, the platform can better meet user needs, enhance its competitiveness, and promote the digital transformation of the tourism industry.

Keywords: online travel booking system; Java language; Spring Boot framework; MySQL database

目 录

摘  要

1绪论

1.1课题研究背景及意义

1.2国内外发展现状分析

1.3主要研究内容

2相关技术简介

2.1  Java语言

2.2  SpringBoot 框架

2.3  Vue框架

2.4  MySQL数据库

3系统需求分析

3.1系统功能需求分析

3.1.1 普通用户功能

3.1.2 管理员用户功能

3.2系统非功能性分析

3.3系统可行性分析

3.3.1技术可行性

3.3.2经济可行性

3.3.3操作可行性

3.3.4社会可行性

3.4系统用例分析

3.4.1普通用户用例分析

3.4.2管理员用例分析

4系统设计

4.1系统总体设计思路

4.2系统结构设计

4.3系统功能设计

4.3.1用户登录流程

4.3.2系统操作流程

4.4系统核心代码设计

4.4.1用户注册

4.4.2用户登录

4.4.3修改密码

4.4.4修改数据

4.4.5删除数据

4.4.6获取数据

4.4.7图片上传

4.5数据库设计

4.5.1数据库设计原则

4.5.2数据库实体

4.5.3数据库表设计

5系统实现

5.1普通用户功能实现

5.1.1前台首页

5.1.2用户注册

5.1.3用户登录

5.1.4旅游景点

5.1.5酒店信息

5.1.6机票信息

5.1.7个人中心

5.2管理员功能实现

5.2.1用户管理

5.2.2旅游景点管理

5.2.3景点订单管理

5.2.4通知公告管理

5.2.5旅游资讯管理

6系统测试

6.1系统测试目标

6.2系统功能测试

6.3测试结果总结

结 论

参考文献

致 谢

1绪论

1.1课题研究背景及意义

随着全球经济的不断发展和人民生活水平的提高,旅游已成为现代社会中不可或缺的一部分。尤其在中国,随着消费水平的提升以及人们对生活质量要求的增加,旅游市场迎来了蓬勃发展。根据国家统计局数据,近年来中国旅游业持续增长,旅游消费已成为居民支出的重要组成部分。同时,随着科技的进步,尤其是互联网和移动设备的普及,传统的旅游服务模式正逐渐向在线化、智能化转型。在线旅游市场的发展,使得旅游信息的获取、产品的购买及行程的安排更加高效便捷。人们可以通过各类旅游预订平台,在线选择景点、酒店、机票等服务,并完成支付。与此同时,随着旅游业市场的竞争加剧,用户对旅游预订系统的体验要求越来越高,包括更加个性化的产品推荐、便捷的支付方式和精准的旅行服务。

在这一背景下,在线旅游预订系统的研究应运而生。通过深入研究该系统的设计与实现,能够更好地满足用户在旅游过程中的多样化需求,提升旅游服务的质量和效率。与此同时,系统的创新与优化不仅为用户提供了更加智能化和便捷的服务,还能推动旅游行业的数字化转型。通过构建更加科学、完善的系统架构,提升平台的数据处理能力和用户体验,在线旅游平台能够在竞争激烈的市场中脱颖而出。因此,研究在线旅游预订系统的设计与发展,具有重要的理论和实践意义。

从用户角度出发,设计一个智能化、个性化的旅游预订系统,能够满足不断变化的旅游需求。通过分析用户的偏好、行为和兴趣,系统能够提供精准的产品推荐,从而提升用户的满意度和忠诚度。其次,随着人工智能和大数据技术的不断发展,旅游预订系统可以利用这些技术对用户行为进行深度分析,优化产品推荐和价格策略,提升用户体验的同时提高平台的盈利能力。这不仅能够推动旅游平台的技术创新,还能带动整个行业的信息化、智能化进程。

从社会层面来看,在线旅游预订系统的优化不仅为消费者提供便捷的旅游服务,还能有效推动旅游产业链的整合与发展。平台能够通过与景区、酒店、航空公司等各方的深度合作,整合资源,优化供应链,提高旅游服务的整体效率。此外,系统通过数据收集和分析,可以为政府和企业提供重要的市场趋势和消费者行为数据,有助于决策制定和政策优化。总之,研究在线旅游预订系统的设计与发展,不仅是提升用户体验和商业效益的重要途径,也是推动旅游行业创新和发展的关键因素。

1.2国内外发展现状分析

在国内,随着旅游行业的迅速发展,在线旅游预订系统得到了广泛的关注和研究。近年来,国内研究主要集中在如何提升用户体验、优化系统功能、以及提高平台竞争力等方面。许多学者围绕用户行为分析、个性化推荐系统和大数据技术在旅游预订中的应用展开了深入的研究。通过利用大数据、人工智能和机器学习技术,国内的旅游预订平台逐渐能够根据用户的兴趣、历史数据和社会化媒体信息,为用户提供更加精准的旅游产品推荐。此外,基于移动互联网技术的兴起,移动端旅游预订系统成为国内研究的一个重要方向。研究者通过分析用户在移动端的交互行为,提出了如何优化界面设计、提高操作便捷性等问题。

同时,随着“智慧旅游”概念的兴起,国内研究者对旅游数据的挖掘、景点管理、路径规划等方面的研究逐渐深入。许多高校和科研机构在如何通过技术手段提升旅游产业的服务水平、促进各类旅游产品的精准匹配等方面,进行了大量的探索。近年来,越来越多的国内旅游平台开始重视与景区、酒店、机票等多个环节的整合,通过平台的统一调度,优化旅游资源配置,以提高用户的整体满意度。

在国际上,在线旅游预订系统已经经历了多年的发展,并且逐步形成了一些成熟的研究成果。国外的研究较早关注到旅游产品的个性化推荐,尤其是利用推荐算法和用户行为数据,优化系统推荐的精确度。例如,基于协同过滤、内容推荐等技术,国外的一些研究重点在于如何提高用户的选择效率和平台的匹配度。通过分析大量的旅游数据,系统可以在不同层次上对用户进行个性化推荐,从而提升其旅游体验。此外,国外研究还涉及到人工智能、大数据、虚拟现实等新兴技术在旅游行业中的应用。通过虚拟现实技术,许多旅游平台提供了“沉浸式”的景点预览服务,这为用户提供了更为直观和生动的体验。而大数据分析在旅游市场中的应用,帮助平台预测市场趋势、优化定价策略,并提升用户需求的精准度。

总体而言,国内外的在线旅游预订系统研究均侧重于个性化推荐、大数据分析、人工智能和系统优化等方面。国内的研究较为关注移动互联网应用和智慧旅游的结合,强调平台资源的整合和优化。而国外则更多关注如何利用先进技术(如虚拟现实、人工智能)提升用户体验,以及如何通过大数据预测市场需求、优化系统功能。未来,随着技术的进一步发展,国内外在线旅游预订系统的研究将更加深入,注重跨领域的创新与整合。

1.3主要研究内容

研究的主要内容包括需求分析、技术方案设计、功能设计和数据库设计,旨在构建一个基于Java语言、Spring Boot框架及MySQL数据库的高效在线旅游预订系统。

(1)需求分析:在需求分析阶段,首先明确系统的目标用户群体,包括普通用户和管理员。系统需要满足普通用户在线查询、预订景点门票、酒店、机票等功能,同时提供订单管理、个人信息维护等服务。管理员需要具备管理用户权限、旅游产品信息、订单处理、发布公告等后台管理功能。此外,还需支持系统的高并发处理、数据安全和用户隐私保护等基本需求。

(2)技术方案设计:系统采用Java语言作为开发语言,Spring Boot框架用于构建后台应用,具备高效的开发效率和灵活的扩展性。采用MySQL数据库存储系统的用户数据、订单信息、旅游产品等关键数据,具备高效的查询与数据一致性保障。

(3)功能设计:系统的功能设计包括用户功能和管理员功能两大模块。用户功能包括首页景点推荐、搜索查询、产品预订、订单管理、用户信息管理等。管理员功能包括用户管理、产品信息管理、订单审核与处理、公告发布等。系统还会集成智能推荐功能,根据用户行为和偏好提供个性化服务。

(4)数据库设计:数据库设计采用MySQL,设计多个表格来管理用户信息、订单、景点、酒店、机票等数据。合理的表结构与外键关联将确保数据的一致性和完整性。系统还设计了高效的查询方案,以满足用户查询时的快速响应需求,并保证大规模数据处理的高效性。

2相关技术简介

2.1  Java语言

在线旅游预订系统采用了Java语言作为后端开发的核心技术。Java语言因其跨平台特性和高度灵活性而备受青睐,使系统能够在不同操作系统上稳定运行,并为未来功能的拓展提供可靠的技术支持。同时,采用Spring Boot框架简化了配置,提升了开发效率和系统的稳定性。Java的选择确保了平台具有良好的可扩展性和稳定性,在为在线旅游预订系统提供技术支持的同时,也为用户提供畅顺的体验。

2.2  SpringBoot 框架

Spring Boot,作为Spring生态系统中一颗璀璨的明星,以其“约定优于配置”的核心理念,极大地简化了Java应用的开发、部署与管理流程。它并非是对Spring框架的颠覆,而是在其基础上进行了深度封装与优化,旨在快速搭建独立的、生产级别的Spring应用。Spring Boot通过自动配置功能,减少了大量繁琐的配置工作,让开发者能够更加专注于业务逻辑的实现。同时,它集成了众多常用库,如数据库连接池、缓存、消息队列等,为系统开发提供了一站式的解决方案。此外,Spring Boot还支持多种部署方式,无论是传统的WAR包部署,还是现代的容器化部署,都能轻松应对。因此,选择Spring Boot作为在线旅游预订系统的开发框架,不仅能够提升开发效率,还能确保系统的稳定性和可维护性。

2.3  Vue框架

Vue框架,作为一款风靡前端的JavaScript框架,以其渐进式、组件化的设计理念,为开发者构建高效、灵活的Web界面提供了强大支持。Vue不仅轻量且易于上手,其核心库专注于视图层,能够轻松地将Vue集成到现有项目中,实现前后端分离的现代Web应用开发。同时Vue丰富的生态系统也提供了众多插件和工具,进一步提升了开发效率和应用的性能。在在线旅游预订系统中引入Vue作为前端框架,不仅可以优化用户界面的渲染和交互体验,还能通过前后端分离的架构提升系统的可维护性和可扩展性,是构建现代、高效的在线旅游预订系统的理想选择。

2.4  MySQL数据库

MySQL数据库,作为开源关系型数据库管理系统的佼佼者,以其高性能、可靠性、易用性和灵活性,在全球范围内被广泛应用于各类企业级应用中。MySQL采用SQL(结构化查询语言)作为数据操作的标准语言,支持复杂的查询、数据更新、索引优化等功能,确保数据的高效存取和完整性。其强大的事务处理能力,为业务逻辑的原子性、一致性、隔离性和持久性提供了坚实保障。此外,MySQL还具备高度的可配置性和可扩展性,通过优化存储引擎、调整配置参数等手段,可以轻松应对高并发、大数据量的应用场景。在在线旅游预订系统中,MySQL作为后端数据存储的核心,不仅为系统提供了稳定可靠的数据支持,还通过其丰富的数据操作功能,助力系统实现复杂的业务逻辑和高效的数据管理。

3系统需求分析

3.1系统功能需求分析

在线旅游预订系统的功能包括普通用户和管理员两大部分。普通用户可以通过首页查看景点和产品推荐,获取旅游资讯,查询并预订景点门票、酒店和机票,同时管理个人订单和收藏。管理员则负责后台管理,包括用户权限、景点、酒店和机票信息的更新与管理,以及订单处理、公告发布和旅游资讯维护等。该系统旨在提供便捷的旅游预订服务和高效的后台管理,满足不同用户的需求。

3.1.1 普通用户功能

  1. 首页:用户进入首页后,能够看到热门旅游景点和个性化推荐的旅游产品。根据用户和其他游客的点击偏好,系统推荐最受欢迎的景点,帮助用户发现热门旅游目的地。根据用户浏览历史,系统优先展示相关类型的旅游产品,确保推荐内容更贴近用户需求。
  2. 通知公告:发布平台的最新通知和公告,确保用户及时了解重要信息,如活动更新和服务变动。
  3. 旅游资讯:提供最新的旅游新闻、目的地指南和旅游趋势,帮助用户掌握最新的旅游动态。
  4. 旅游景点:用户可以查看详细的景点信息、图片和地图,甚至可以通过地图搜索到附近的旅游景点。
  5. 景点购票功能:用户可以直接在线购买景点门票,选择日期和票种,简便快速地完成购票。
  6. 酒店信息:提供多种类型的酒店信息,用户可以查看酒店的设施、位置和价格等,帮助选择适合的住宿。
  7. 酒店订房功能:用户可以根据筛选条件选择合适的酒店,进行在线预订并支付。
  8. 机票信息:展示航班信息,包括航班时间、价格、航空公司等,用户可以根据需求选择航班。
  9. 机票购票功能:提供机票的在线购买功能,用户可以直接通过平台选择航班并完成支付。
  10. 旅游产品:平台展示各类旅游产品,如旅游套餐、短途游等,满足不同用户的旅行需求。
  11. 个人中心:用户可以在个人中心查看个人订单、管理收藏的景点和产品,并方便地进行历史订单的查询和操作。

3.1.2 管理员用户功能

  1. 后台首页:管理员进入后台后,会看到系统概览,包括网站的基本运营信息、订单数据和其他重要指标。
  2. 用户管理:管理员可以管理平台上的用户,包括普通用户和管理员角色的分配,进行权限管理和用户审核。
  3. 旅游景点管理:管理员可以更新、删除或添加景点信息,确保平台展示的景点数据始终是最新的。
  4. 景点订单管理:管理员查看和管理所有用户的景点门票订单,处理支付、退款等操作。
  5. 酒店信息管理:管理员负责更新和管理酒店的详细信息,如价格、房型和可预订情况,确保酒店数据准确无误。
  6. 酒店订单管理:管理员查看用户的酒店订单,确认订单状态,处理取消、修改等请求。
  7. 机票信息管理:管理员维护机票信息,确保平台显示的航班和票价信息是实时更新的。
  8. 机票订单管理:管理员处理用户的机票订单,跟踪支付状态,处理退款、修改等事宜。
  9. 旅游产品管理:管理员可新增或修改旅游产品的信息,包括套餐、旅游路线等,保证内容丰富且准确。
  10. 轮播图管理:管理员管理网站首页的轮播图内容,包括图片的上传、修改和链接设置,以确保页面内容及时更新。
  11. 通知公告管理:管理员负责发布和管理平台通知公告,确保所有重要信息及时传达给用户。
  12. 旅游资讯管理:管理员更新旅游资讯板块,发布关于旅游目的地、旅游活动等方面的最新信息。

3.2系统非功能性分析

在研究在线旅游预订系统时,非功能性需求分析是一个重要的部分。非功能性需求主要关注的是系统如何运行,而不是它具体完成什么功能。这些需求包括性能、可用性、安全性、可维护性、可扩展性、易用性等方面。以下是一个关于在线旅游预订系统非功能性需求分析的概要。

性能需求:系统需确保快速响应和高吞吐量,以支持大量用户同时访问,即使在高峰时段也能保持流畅的操作体验,避免因延迟或卡顿影响用户体验。

可用性:安系统必须具备高可用性,采用冗余部署、负载均衡等策略,确保即使部分组件故障也能迅速恢复服务,减少服务中断时间,保障用户业务的连续性。

安全性:鉴于系统处理用户敏感信息,如个人信息等,必须实施严格的安全措施,包括数据加密、访问控制、防攻击机制等,以保护用户数据免受未授权访问或泄露。

可维护性:系统设计应注重可维护性,采用模块化、标准化的架构,提供详尽的开发文档和用户手册,确保系统易于理解和维护,降低长期运维成本。

可扩展性:随着业务的发展,系统可能需要扩展功能或提升性能。因此,系统需具备灵活的可扩展性,能够轻松添加新模块、优化性能,以应对未来增长的需求。

易用性:用户界面应直观易用,符合用户习惯,提供清晰的导航和友好的操作反馈,帮助用户快速上手并高效完成任务,提升整体用户满意度。


3.3系统可行性分析

通过在线旅游预订系统的可行性分析,从技术可行性、经济可行性、操作可行性以及社会可行性四个维度进行深入探讨,以确保系统的开发与应用具有坚实的可行性基础。

3.3.1技术可行性

SpringBoot作为目前流行的Java企业级应用开发框架,以其“约定优于配置”的原则,极大地简化了开发流程,降低了技术门槛。前端采用Vue框架,不仅提升了用户界面的交互体验,也实现了前后端分离的现代Web架构。MySQL数据库作为后端数据存储,以其高性能和稳定性为系统提供了可靠的数据支持。综上所述,从技术角度来看,该系统的开发具备高度可行性。

3.3.2经济可行性

考虑到SpringBoot、Vue、及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著提升系统管理的效率和用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。

3.3.3操作可行性

系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。

3.3.4社会可行性

在线旅游预订系统具有较高的社会可行性。随着人们旅游需求的增长和互联网技术的发展,在线旅游市场逐渐成为主流。系统通过便捷的功能和智能化服务,满足用户个性化需求,提高了用户的预订效率和体验。同时,平台整合旅游资源,优化供应链,有助于推动旅游行业的数字化转型与发展。系统的高可扩展性和易用性为其在未来的推广与运营提供了坚实的基础,具有广阔的市场前景和社会价值。

从技术、经济、操作和社会四个维度来看,在线旅游预订系统的开发均具备高度的可行性。

3.4系统用例分析

在线旅游预订系统用例分析主要从普通用户、管理员这些实体展开描述。

3.4.1普通用户用例分析

普通用户是系统的核心用户,用户可以通过系统首页查询旅游景点、酒店、机票等信息,并根据需求筛选与排序;用户可选择并预订景点门票、酒店和机票,完成订单支付;用户还可以查看个人订单记录、管理个人信息;系统也将根据用户行为提供个性化推荐,提升用户体验。所有操作均通过简洁的界面设计和流畅的交互方式实现,确保用户的便捷性与高效性。详细用例图如图3.1所示。

图3.1普通用户用例图

3.4.2管理员用例分析

管理员登录后台系统,进行用户管理,查看、编辑或删除用户信息;管理旅游产品(景点、酒店、机票等),可新增、编辑或删除产品信息;管理员审核并处理用户的订单,管理订单状态;此外管理员可发布公告或更新系统通知;所有操作需具备权限控制,确保系统安全性。详细用例图如图3.2所示。

图3.2管理员用例图

4系统设计

4.1系统总体设计思路

在线旅游预订系统采用Browser/Server结构,(浏览器/服务器)和基于Web服务前后台交互的模式,是一个适用于Windows体系环境下的模型结构。只要用户有符合程序运行的硬件系统,并连上互联网,便可以在任何时间、任何地点使用。系统工作原理图如图4.1所示:

图4.1系统工作原理图

其最终前后台交互原理如图4.2所示。

图4.2前后台交互原理

具体交互流程为:浏览器中执行具体操作,操作命令将生成一个do方法。该方法使得浏览器能够访问后台中的Controller层,Controller层由于业务上的需要执行进而访问Service层。Service层收到指令后将会去调用内部DAO层的接口。接口将会和MyBatis层下的一个SQL语句相对接。对接好之后进而访问MySql数据库。更新底层数据,然后将数据同步回MyBatis层,同步变化后的数据将通过DAO层接口,Service层和后台Controller层,直观反映到浏览器页面上。

4.2系统结构设计

在线旅游预订系统的整体结构设计如图4.3所示。

图4.3整体功能结构设计图

4.3系统功能设计

4.3.1用户登录流程

当用户进入登录页面时,当其在浏览器执行具体操作的时候,后端会同步显示,如图4.4所示。

图4.4登录流程图

4.3.2系统操作流程

用户通过注册或登录进入平台,浏览首页推荐的旅游产品或使用搜索功能查找具体景点、酒店或机票;然后选择心仪的产品并进行预订,填写相关信息并完成支付;支付成功后,用户可在个人中心查看订单详情,管理个人信息;此外,系统根据用户历史行为推荐个性化内容,提升用户体验。整个操作流程简单流畅,确保用户能够高效完成旅游预订并享受个性化服务。操作流程如图4.5所示。

图4.5系统操作流程图

4.4系统核心代码设计

在线旅游预订系统的核心代码设计如下:

4.4.1用户注册

       注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下所示。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

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

        // 查询用户

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

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

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

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

        if (list.size()>0){

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

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

4.4.2用户登录

      登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,代码如下所示。

/**

     * 登录

     * @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.selectBaseList(service.select(map, new HashMap<>()));

        }

4.4.3修改密码

修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如下所示。

/**

     * 修改密码

     * @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));

        int count = service.selectBaseCount(service.count(query, service.readConfig(request)));

        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,"密码修改失败!");

4.4.4修改数据

修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下所示。

@PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

    }

4.4.5删除数据

删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下所示。

@RequestMapping(value = "/del")

    @Transactional

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

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

        return success(1);

    }

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

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] . 删除操作:{}",wrapper.getSqlSelect());

    }

4.4.6获取数据

通过请求的参数获取列表数据,代码如下所示。

@RequestMapping("/get_obj")

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

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

4.4.7图片上传

通过请求的参数获取列表数据,代码如下所示。

@PostMapping("/upload")

    public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

        log.info("进入方法");

        if (file.isEmpty()) {

            return error(30000, "没有选择文件");

        }

        try {

            //判断有没路径,没有则创建

            String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

            File targetDir = new File(filePath);

            if (!targetDir.exists() && !targetDir.isDirectory()) {

                if (targetDir.mkdirs()) {

                    log.info("创建目录成功");

                } else {

                    log.error("创建目录失败");

                }

            }

4.5数据库设计

4.5.1数据库设计原则

在线旅游预订系统在进行数据库设计时,考虑到个人能力与数据库选择,选择了数据库Mysql。以下将使用E.R展示数据库中设计的实体及主要的字段和类型及数据库的描述。

4.5.2数据库实体

通过建立在线旅游预订系统的E.R模型图。以此来设计详细的数据库资料实体,以下为具体图例:

(1)普通用户实体图如下图所示;

图4.6普通用户实体图

(2)旅游景点信息实体图如下图所示;

图4.7旅游景点信息实体图

(3)机票信息实体E.R图如下图所示;

图4.8机票产品信息实体E.R图

(4)旅游产品信息实体E.R图如下图所示;

图4.9旅游产品信息实体E.R图

(4)整体数据库实体E.R图如下图所示:

图4.10数据库E.R图

4.5.3数据库表设计

以下为系统开发过程中所使用的数据表如下所示:

表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

用户编号:

表airline_ticket_order (机票订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

airline_ticket_order_id

int

10

0

N

Y

机票订单ID

2

departure_location

varchar

64

0

Y

N

出发地点

3

destination_location

varchar

64

0

Y

N

目的地点

4

ticket_prices

double

9

2

Y

N

0.00

机票价格

5

ordinary_users

int

10

0

Y

N

0

普通用户

6

user_name

varchar

64

0

Y

N

用户姓名

7

user_phone_number

varchar

64

0

Y

N

用户电话

8

ticket_booking_quantity

double

9

2

Y

N

0.00

订票数量

9

total_price

double

9

2

Y

N

0.00

合计总价

10

pay_state

varchar

16

0

N

N

未支付

支付状态

11

pay_type

varchar

16

0

Y

N

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

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

14

source_table

varchar

255

0

Y

N

来源表

15

source_id

int

10

0

Y

N

来源ID

16

source_user_id

int

10

0

Y

N

来源用户

表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

parent

varchar

64

0

Y

N

父级菜单

8

parent_sort

int

10

0

N

N

0

父级菜单排序

9

position

varchar

32

0

Y

N

位置:

10

mode

varchar

32

0

N

N

_blank

跳转方式:

11

add

tinyint

3

0

N

N

1

是否可增加:

12

del

tinyint

3

0

N

N

1

是否可删除:

13

set

tinyint

3

0

N

N

1

是否可修改:

14

get

tinyint

3

0

N

N

1

是否可查看:

15

field_add

text

65535

0

Y

N

添加字段:

16

field_set

text

65535

0

Y

N

修改字段:

17

field_get

text

65535

0

Y

N

查询字段:

18

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

19

table_nav

varchar

500

0

Y

N

跨表导航:

20

option

text

65535

0

Y

N

配置:

21

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

22

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表code_token

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

code_token_id

int

10

0

N

Y

2

token

varchar

255

0

Y

N

3

code

varchar

255

0

Y

N

验证码

4

expire_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

失效时间

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

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_information (酒店信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_information_id

int

10

0

N

Y

酒店信息ID

2

hotel_name

varchar

64

0

Y

N

酒店名称

3

hotel_city

varchar

64

0

Y

N

酒店城市

4

hotels_address

varchar

64

0

Y

N

酒店地址

5

hotel_room_rates

double

9

2

Y

N

0.00

酒店房价

6

hotel_pictures

varchar

255

0

Y

N

酒店图片

7

hotel_introduction

longtext

2147483647

0

Y

N

酒店简介

8

praise_len

int

10

0

N

N

0

点赞数

9

hotel_orders_limit_times

int

10

0

N

N

0

订房限制次数

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hotel_orders (酒店订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_orders_id

int

10

0

N

Y

酒店订单ID

2

hotel_name

varchar

64

0

Y

N

酒店名称

3

hotels_address

varchar

64

0

Y

N

酒店地址

4

hotel_room_rates

double

9

2

Y

N

0.00

酒店房价

5

ordinary_users

int

10

0

Y

N

0

普通用户

6

user_name

varchar

64

0

Y

N

用户姓名

7

user_phone_number

varchar

64

0

Y

N

用户电话

8

number_of_reservations

double

9

2

Y

N

0.00

订房数量

9

total_price

double

9

2

Y

N

0.00

合计总价

10

pay_state

varchar

16

0

N

N

未支付

支付状态

11

pay_type

varchar

16

0

Y

N

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

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

14

source_table

varchar

255

0

Y

N

来源表

15

source_id

int

10

0

Y

N

来源ID

16

source_user_id

int

10

0

Y

N

来源用户

表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

更新时间:

表ordinary_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ordinary_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

user_phone_number

varchar

64

0

Y

N

用户电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

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

更新时间

表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已取消

表product_type (产品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

product_type_id

int

10

0

N

Y

产品类型ID

2

product_type

varchar

64

0

Y

N

产品类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表scenic_spot (旅游景点)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

scenic_spot_id

int

10

0

N

Y

旅游景点ID

2

scenic_spot_name

varchar

64

0

Y

N

景点名称

3

types_of_tourist_attractions

varchar

64

0

Y

N

景点类型

4

scenic_area

varchar

64

0

Y

N

景点地区

5

detailed_address

varchar

64

0

Y

N

详细地址

6

scenic_spot_specialties

varchar

64

0

Y

N

景点特产

7

scenic_spot_tickets

double

9

2

Y

N

0.00

景点门票

8

scenic_spot_pictures

varchar

255

0

Y

N

景点图片

9

introduction_to_scenic_spots

longtext

2147483647

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

scenic_spot_orders_limit_times

int

10

0

N

N

0

购票限制次数

14

tourism_products_limit_times

int

10

0

N

N

0

产品限制次数

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表scenic_spot_orders (景点订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

scenic_spot_orders_id

int

10

0

N

Y

景点订单ID

2

scenic_spot_name

varchar

64

0

Y

N

景点名称

3

scenic_area

varchar

64

0

Y

N

景点地区

4

detailed_address

varchar

64

0

Y

N

详细地址

5

scenic_spot_tickets

double

9

2

Y

N

0.00

景点门票

6

ordinary_users

int

10

0

Y

N

0

普通用户

7

user_name

varchar

64

0

Y

N

用户姓名

8

user_phone_number

varchar

64

0

Y

N

用户电话

9

quantity_of_tickets_purchased

double

9

2

Y

N

0.00

购票数量

10

total_price

double

9

2

Y

N

0.00

合计总价

11

pay_state

varchar

16

0

N

N

未支付

支付状态

12

pay_type

varchar

16

0

Y

N

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

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

15

source_table

varchar

255

0

Y

N

来源表

16

source_id

int

10

0

Y

N

来源ID

17

source_user_id

int

10

0

Y

N

来源用户

表schedule (日程管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

schedule_id

smallint

5

0

N

Y

日程ID:[0,32767]

2

content

varchar

255

0

Y

N

日程内容

3

scheduled_time

datetime

19

0

Y

N

计划时间

4

user_id

int

10

0

N

N

用户id

5

create_time

datetime

19

0

Y

N

创建时间

6

update_time

datetime

19

0

Y

N

更新时间

表score (评分)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

score_id

int

10

0

N

Y

评分ID:

2

user_id

int

10

0

N

N

0

评分人:

3

nickname

varchar

64

0

Y

N

昵称:

4

score_num

double

5

2

N

N

0.00

评分:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

source_table

varchar

255

0

Y

N

来源表:

8

source_field

varchar

255

0

Y

N

来源字段:

9

source_id

int

10

0

N

N

0

来源ID:

表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

更新时间:

表ticket_information (机票信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_information_id

int

10

0

N

Y

机票信息ID

2

departure_location

varchar

64

0

Y

N

出发地点

3

destination_location

varchar

64

0

Y

N

目的地点

4

ticket_type

varchar

64

0

Y

N

机票类型

5

departure_time

datetime

19

0

Y

N

出发时间

6

ticket_prices

double

9

2

Y

N

0.00

机票价格

7

cover_photo

varchar

255

0

Y

N

封面图片

8

ticket_details

longtext

2147483647

0

Y

N

机票详情

9

airline_ticket_order_limit_times

int

10

0

N

N

0

购票限制次数

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表ticket_type (机票类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_type_id

int

10

0

N

Y

机票类型ID

2

ticket_type

varchar

64

0

Y

N

机票类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表tourism_products (旅游产品)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

tourism_products_id

int

10

0

N

Y

旅游产品ID

2

scenic_spot_name

varchar

64

0

Y

N

景点名称

3

scenic_area

varchar

64

0

Y

N

景点地区

4

product_name

varchar

64

0

Y

N

产品名称

5

product_type

varchar

64

0

Y

N

产品类型

6

product_average_price

double

9

2

Y

N

0.00

产品均价

7

product_images

varchar

255

0

Y

N

产品图片

8

product_introduction

longtext

2147483647

0

Y

N

产品简介

9

hits

int

10

0

N

N

0

点击数

10

praise_len

int

10

0

N

N

0

点赞数

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

14

source_table

varchar

255

0

Y

N

来源表

15

source_id

int

10

0

Y

N

来源ID

16

source_user_id

int

10

0

Y

N

来源用户

表types_of_tourist_attractions (景点类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

types_of_tourist_attractions_id

int

10

0

N

Y

景点类型ID

2

types_of_tourist_attractions

varchar

64

0

Y

N

景点类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

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

int

10

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

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

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.1前台首页

用户在首页可以查看通知公告,旅游景点推荐和旅游产品推荐。通知公告展示平台的最新动态或重要通知,确保用户及时了解相关信息;旅游景点推荐通过全站点击量进行热点排序,将用户关注度较高的景点优先展示;旅游产品推荐则基于用户个人的历史点击和浏览记录,智能推荐相似类型的产品,提升个性化体验。这些功能结合智能推荐,帮助用户高效浏览,提升预订的便捷性与满意度。如下图所示。

图5.1首页界面图

5.1.2用户注册

用户在平台首页点击“注册”按钮,填写必要的个人信息,如用户名、密码、联系方式等。系统对输入的用户名进行唯一性校验,防止重复注册。用户提供的邮箱或手机号将用于身份验证和账户安全保护。用户完成注册并可以登录平台,享受个性化服务与旅游预订功能。如下图所示。

图5.2用户注册界面图

5.1.3用户登录

用户在平台首页点击“登录”按钮,输入注册时的用户名和密码。系统验证输入的用户名和密码是否匹配,如果匹配,用户将成功登录并进入个人主页,获取个性化推荐和预订功能。如果密码错误,系统提示用户重新输入,提供找回密码的功能。登录成功后,用户可以管理个人信息、查看订单和享受定制化服务。如下图所示。

图5.3用户登录界面图

5.1.4旅游景点

旅游景点功能实现包括景点信息展示、图片与地图搜索、路线规划及购票功能。用户可以浏览每个景点的详细信息,包括名称、简介、开放时间、交通方式等;同时,景点的高清图片和地图展示帮助用户更好地了解景点的实际情况。通过地图搜索,用户可以轻松定位并查看周边景点或交通路线。用户还可以直接在景点页面上选择购票,完成门票预订及支付,方便快捷地完成旅游行程安排。如下图所示。

图5.4旅游景点查看界面图

图5.5景点购票界面图

5.1.5酒店信息

用户可以查看每家酒店的基本信息,包括酒店名称、位置、房型、设施、价格及客户评价等。每个酒店页面展示详细的图片和房间布局,让用户更直观地了解住宿环境。系统提供智能筛选功能,用户可以根据需求如价格范围、星级、入住日期等条件筛选合适的酒店。用户选择满意的房间后,可以直接进行订房操作,填写入住和支付信息,完成酒店预订,确保顺利完成旅行的住宿安排。如下图所示。

图5.6酒店信息查看界面图

图5.7订房界面图

5.1.6机票信息

用户可以查看各大航空公司提供的航班信息,包括航班号、起降时间、票价、航空公司等。系统支持按用户需求筛选航班,如出发地、目的地、出发时间等,帮助用户找到最合适的航班。用户选择理想航班后,可以查看座位和票价情况,进行座位选择。完成填写个人信息和支付。如下图所示。

图5.8机票信息查看界面图

图5.9购票界面图

5.1.7个人中心

个人中心模块包括个人首页、景点订单、酒店订单、机票订单和收藏功能。用户进入个人首页,查看个人信息、订单记录以及个性化推荐内容。在景点订单、酒店订单和机票订单模块中,用户可以查看和管理自己已预订的景点、酒店和机票订单,包括订单状态、支付信息、取消和修改功能。收藏功能允许用户将感兴趣的景点、酒店或航班等信息保存至收藏夹,方便后续查看和预订。整体功能帮助用户便捷地管理旅行安排和个人数据,提升旅行体验。如下图所示。

图5.10个人中心界面图

5.2管理员功能实现

5.2.1用户管理

管理员可以查看用户的基本信息,如用户名、注册时间、联系方式、订单记录等。管理员有权限对用户账户进行操作,包括冻结、解冻、删除或禁用账户。对于存在违规行为的用户,管理员可以根据平台规定进行处罚,保障平台的正常运营。如下图所示。

图5.11用户管理界面

5.2.2旅游景点管理

管理员添加、修改和删除平台上的旅游景点数据。管理员可以更新景点的基本信息,如名称、地址、开放时间、票价等,并上传景点的图片和位置标注。同时,管理员还可以管理景点的分类和标签,方便用户查找与筛选。对于发布的景点,管理员可以进行审核,确保信息准确无误。如下图所示。

图5.12旅游景点添加界面

5.2.3景点订单管理

管理员对用户的景点预订进行全面管理。管理员可以查看、修改和取消所有景点订单,跟踪订单的状态,如待支付、已支付、已取消等。对于用户的订单信息,管理员可以查询订单详情,包括用户信息、预订时间、支付金额和所选景点。系统支持批量处理功能。如下图所示。

图5.13景点订单管理界面

5.2.4通知公告管理

管理员发布、修改和删除平台上的各类通知和公告。管理员可以通过该功能向用户传达重要信息,如系统维护、节假日营业安排、优惠活动等。所有发布的公告可以按类别进行分类管理,帮助用户快速找到相关信息。管理员还可以设置公告的显示时间和范围,确保信息的及时性和针对性。如下图所示。

图5.14通知公告添加界面

5.2.5旅游资讯管理

管理员对平台上的旅游相关信息进行编辑和维护。管理员可以发布、修改和删除旅游新闻、旅行指南、景点推荐等内容,确保资讯的时效性和准确性。系统支持分类管理,管理员可以根据不同主题(如旅游攻略、旅游活动、旅行安全等)对资讯进行分类和标签管理,便于用户快速查找和获取相关信息。如下图所示。

图5.15旅游资讯发布界面

6系统测试

6.1系统测试目标

为了保证在线旅游预订系统的质量,使其能够稳定的运行,并排除其可能存在的未知隐患。解除软件可能存在的故障,理清楚测试与纠错的关系,如下图所示。

图6.1测试与纠错信息流程

6.2系统功能测试

通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试表:

表6.1用户注册登录测试表

测试用例编号

功能模块

测试用例描述

测试结果

TC001

用户注册

输入正确的用户名和密码

注册成功,提示注册完成

TC002

用户注册

输入已存在的用户名

注册失败,提示用户名已存在

TC003

用户注册

输入格式错误的邮箱地址

注册失败,提示邮箱格式错误

TC004

用户注册

不输入密码

注册失败,提示密码不能为空

TC005

用户注册

输入弱密码(如123456)

注册失败,提示密码强度不足

表6.2用户登录测试表

测试用例编号

功能模块

测试用例描述

测试结果

TC001

用户登录

输入正确的用户名和密码

登录成功,进入主页

TC002

用户登录

输入错误的用户名

登录失败,提示用户名不存在

TC003

用户登录

输入错误的密码

登录失败,提示密码错误

TC004

用户登录

未输入用户名或密码

登录失败,提示用户名或密码不能为空

TC005

用户登录

多次输入错误密码

登录失败,提示账户已被锁定

表6.3旅游景点查看测试表

测试用例编号

功能模块

测试用例描述

测试结果

TC001

旅游景点查看

浏览有效的景点信息

展示景点详细信息

TC002

旅游景点查看

浏览不存在的景点信息

提示景点未找到

TC003

旅游景点查看

查看景点的开放时间

展示该景点的开放时间和限制信息

TC004

旅游景点查看

查看景点的票价信息

展示景点票价和购票方式

TC005

旅游景点查看

查看景点的评价和评分

展示景点的用户评价和评分信息

表6.4旅游景点购票测试表

测试用例编号

功能模块

测试用例描述

测试结果

TC001

旅游景点购票

选择有效景点和票种,成功进行购票

购票成功,生成订单号

TC002

旅游景点购票

选择无效景点或票种

购票失败,提示景点或票种无效

TC003

旅游景点购票

输入不合法的购票数量(如负数、零)

购票失败,提示购票数量无效

TC004

旅游景点购票

选择景点票价高于账户余额进行购票

购票失败,提示余额不足

TC005

旅游景点购票

选择景点并完成支付(支付宝、微信等)

支付成功,生成订单信息

表6.5景点订单管理测试表

测试用例编号

功能模块

测试用例描述

测试结果

TC001

景点订单查看

查看已完成订单详情

展示订单详细信息,包括景点名称、数量等

TC002

景点订单查看

查看待支付订单详情

展示订单状态为“待支付”,无法退款

TC003

景点订单查看

查看已取消订单详情

展示订单状态为“已取消”,无法修改

TC004

景点订单查看

查询无效订单号

提示无效订单号,无法查询

TC005

景点订单查看

查看某一景点的所有订单列表

展示该景点下的所有订单信息

6.3测试结果总结

在本次测试中,针对用户注册、登录、旅游景点查看、购票及景点订单查看功能,进行了全面的验证。结果表明整体系统表现良好,大部分功能都能够按照预期运行。在用户注册功能的测试中,系统能够有效处理正常的注册流程。输入有效的用户名、密码和邮箱时,系统能够顺利完成注册并提示用户注册成功。在用户登录方面,系统能够有效处理正确和错误的用户名、密码组合,能够准确提示错误信息,并且防止不合法的登录行为发生。在旅游景点查看功能中,系统能够展示有效景点的详细信息,包括开放时间、票价、评价等内容,对于不存在的景点能够及时给出错误提示。在旅游景点购票测试中,系统能够处理正常的购票流程,支持多种支付方式,并且对无效景点、票种和数量做出准确的反馈。景点订单查看功能方面,用户可以轻松查看自己的订单详情,系统能够正确展示订单状态,如已完成、待支付或已取消,并且处理无效订单号的查询请求。

总体来说,测试结果符合预期,系统能够有效应对用户操作中的常见情况及异常情况,提供了良好的用户体验。然而,仍需针对少数极端输入情况进行进一步优化,以确保系统的健壮性和稳定性。

结 论

随着互联网技术的不断进步和旅游行业的快速发展,传统的旅游服务模式已经难以满足现代用户对便捷、高效、个性化服务的需求。为此,本研究设计并实现了一个在线旅游预订系统,旨在通过信息化手段提升旅游服务的效率,优化资源配置,满足不同用户群体的需求。

系统的设计充分考虑了普通用户和管理员的不同需求,分别提供了多元化的功能模块。对于普通用户,系统支持景点查询、酒店预订、机票购买、订单管理、个人信息管理等操作,并结合智能推荐和个性化服务,极大地提升了用户体验。管理员则可以通过后台管理系统进行用户权限管理、旅游产品更新、订单管理等操作,优化平台运营和提升管理效率。

在技术实现上,系统采用了基于Java语言和Spring Boot框架的技术架构,具备高效的模块化设计和良好的扩展性,能够支持大规模数据处理和高并发请求。数据库采用MySQL,确保了数据存储的可靠性和查询效率。前后端分离的设计方式使得系统的维护和扩展更加灵活,RESTful API的应用进一步增强了数据交互的效率和系统的可扩展性。

总体而言,在线旅游预订系统有效解决了传统旅游服务模式中的信息不对称问题,为用户提供了更加便捷、高效的预订体验,同时为平台提供了精确的用户行为分析和运营决策支持。未来,随着大数据分析、人工智能等技术的发展,系统有望进一步提升智能化水平,满足用户更加多样化的需求,并推动旅游行业的数字化转型进程。

参考文献

  1. Wenjuan Shao, Kun Liu. Design and Implementation of Online Ordering System Based on SpringBoot[J]. Journal of Big Data and Computing, 2024, 2 (3):
  2. 曹浩, 黎杰, 谢彬. 基于SpringBoot+Vue的桂林龙胜各族自治县的旅游信息系统设计[J]. 现代信息科技, 2024, 8 (16): 102-106.
  3. 孙文婧. 基于去偏推荐的个性化旅游推荐系统的设计与实现[D]. 北京邮电大学, 2024.
  4. 孙俊玲, 王高平, 胡永坤. 协同过滤推荐算法在大数据旅游推荐系统中的应用[J]. 电脑知识与技术, 2024, 20 (16): 89-91.
  5. 宁毅, 陈金龙, 罗德明, 赵仲达. 基于SpringBoot+Spark+Vue的旅游大数据分析平台的设计与实现[J]. 无线互联科技, 2024, 21 (07): 60-67.
  6. 王茸, 李强, 何颖, 郭娅, 吴小敏, 杨政林, 黄贻望. 个性化旅游推荐系统的设计与实现[J]. 福建电脑, 2023, 39 (09): 95-99.
  7. 张恒勋. 个性化旅游路线推荐技术的研究与实现[D]. 华中科技大学, 2023.
  8. 李晟曈, 刘哲, 俞定国, 方申国, 孙学敏. 基于Vue和SpringBoot的乡村文旅平台设计与实现[J]. 现代计算机, 2023, 29 (08): 98-103.
  9. 李恩. 基于用户推荐算法的武汉市红色旅游平台设计与实现[D]. 长江大学, 2023.
  10. Yu Yang. Design and Implementation of Student Information Management System Based on Springboot[J]. Advances in Computer, Signals and Systems, 2022, 6 (6):
  11. Wu Hejing. Commerce Middle Office Management System Based on Springboot[J]. International Journal of Advanced Network, Monitoring and Controls, 2022, 7 (2): 32-45.
  12. 黄文翔, 潘晓衡. 基于SpringBoot的旅游平台构建[J]. 电子测试, 2021, (11): 71-72+132.
  13. Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology, 2021, 5 (2):
  14. 孙岩, 李晶. 基于SpringBoot的旅游资源管理网站的设计与实现[J]. 信息技术与信息化, 2021, (01): 37-39.
  15. Guanhong Chen, Jiangming Xu. Design and implementation of efficient Learning platform based on SpringBoot Framework[J]. Journal of Electronics and Information Science, 2020, 6 (1):

致 谢

在本论文的撰写和系统开发过程中,我深刻体会到个人独立完成一项系统开发工作的挑战与成就感。首先,我要感谢我的导师,在整个研究和开发过程中给予了我无私的指导与建议。无论是在技术细节还是研究思路上,他都为我提供了宝贵的方向性指导,帮助我克服了许多难题。虽然整个开发过程是由我独立完成的,但导师的意见使我在遇到瓶颈时有了清晰的解决思路。

在开发过程中,我经历了从系统需求分析、架构设计到功能实现的完整过程。这不仅锻炼了我的编码能力,也让我在项目管理、时间安排和问题解决等方面有了长足的进步。我独立完成了系统的每一行代码,并通过反复测试和优化确保了系统的稳定性和性能。在遇到技术难题时,我通过查阅大量文献、技术文档和社区讨论,自主解决了各类问题,这个过程让我更加理解了技术的深度与广度。

同时,我也要感谢我的家人和朋友,他们在开发的整个过程中给予了我莫大的支持和鼓励,成为我坚持完成这项工作的动力。正是在这些力量的支持下,我才能独立完成这项系统开发并顺利完成论文的撰写。

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值