基于Spring Boot的黔山秀水游平台设计与实现
本文仅作为研究方法、系统设计或工程流程的资料整理与复盘,重点保留可检索的分析框架、实现步骤、图表数据和验证过程,不包含联系方式、价格信息或商业推广内容。
本文按原文结构整理核心方法、设计过程、数据图表与验证内容,保留关键章节层次,便于在 CSDN 中阅读、检索与复盘。
摘 要I
AbstractII
第1章 需求分析1
1.1 可行性分析1
1.1.1 技术可行性1
1.1.2 经济可行性1
1.1.3 社会可行性1
1.2 系统功能性需求分析2
1.2.1 用户登录注册及基本信息维护2
1.2.2 用户充值2
1.2.3 用户景点浏览与购票3
1.2.4 用户景点评价与地图展示4
1.2.5 用户旅游搭子推荐5
1.2.6 管理员景点信息维护5
1.3 系统非功能性需求分析6
1.3.1 性能分析6
1.3.2 可靠性分析6
1.3.3 可维护性分析6
第2章 系统设计7
2.1 系统总体设计7
2.2 系统功能模块设计8
2.2.1 用户信息维护模块设计8
2.2.2 用户购票模块设计9
2.2.3 充值模块设计10
2.2.4 评论模块设计11
2.2.5 交友模块设计12
2.3 数据库设计13
2.3.1 数据库的概念设计13
2.3.2 数据库表的设计13
第3章 系统实现17
3.1 环境搭建17
3.1.1软件环境17
3.1.2硬件环境17
3.2 功能模块的实现17
3.2.1 用户信息维护模块17
3.2.2 用户购票模块22
3.2.3 充值模块实现26
3.2.4 用户评论功能28
3.2.5 聊天交友实现30
第4章 系统测试32
4.1 测试目的32
4.2 测试方法32
4.3 系统功能测试33
4.3.1 购票流程测试33
4.3.2 评论流程测试34
4.3.3 充值流程测试34
4.4 系统测试结论35
第5章 总结与展望37
5.1 总结37
5.2 展望37
参考文献38
致 谢40
基于Spring Boot的黔山秀水游平台的设计与开发
摘 要
智能旅游是如今旅游业重要的一部分。为解决线上旅游事务中出现的相关问题,并提升相关统计工作的效率与质量。本系统开发了一个贵州集景点信息查询、在线购票、社交互动等功能于一体的综合旅游服务平台。
本系统采用以Spring Boot框架技术为基础的B/S模式,在IDEA平台上采用Java语言进行开发,使用ElasticSearch提升检索效率;数据库采用MySQL并使用MyBatisPlus提高开发效率,同时利用非关系型数据库Redis作为缓存,提升了系统的整体性能并使用RabbitMQ来实现异步信息;前端页面设计采用了Vue3,ElementPlus进行搭建,实现美观统一的风格。
关键词:智能旅游;聊天交友;推荐旅游搭子;Spring Boot框架
Design and development of Qianshan Xiushui Tour Platform based on Spring Boot
Abstract
Smart tourism is an important part of the tourism industry today. To solve the relevant problems in online tourism affairs and improve the efficiency and quality of relevant statistical work. This system has developed a comprehensive tourism service platform that integrates functions such as attraction information inquiry, online ticket purchase, and social interaction.This system adopts B/S mode based on Spring Boot framework technology, and is developed in Java language on the IDEA platform, using ElasticSearch to improve retrieval efficiency; The database uses MySQL and MyBatisPlus to improve development efficiency, while using non-relational database Redis as a cache to enhance the overall performance of the system and using RabbitMQ to implement asynchronous messaging; The front-end page design uses Vue3 and ElementPlus to build a beautiful and unified style.The system is divided into two primary modules. One is the tourist module, whose main functions include maintaining tourist basic information, browsing and purchasing tickets for relevant attractions in Guizhou, and rating and reviewing these attractions after ticket purchase. It also recommends highly matched travel companions for users based on the Levenshtein Distance algorithm and provides users with detailed map displays. The other module is for administrators, primarily responsible for maintaining basic information about scenic spots and user comments. Testing has shown that the system operates stably, fulfilling basic functions such as scenic spot browsing and ticket purchasing, commenting and rating, top-up, and map display, meeting design objectives and possessing certain practical value.
Key words: Smart Tourism; Chat and Socialize; Travel Buddy Recommendations; Spring Boot Framework
需求分析
可行性分析
技术可行性
本系统采用Spring Boot作为核心框架,自动化配置机制简化了传统Spring MVC的复杂流程,其稳定性与扩展性已在电商、金融等领域得到充分验证,能够有效支撑智能旅游1系统的业务需求。组件化开发支持UI模块复用。同时编辑距离算法2递推公式已被严格证明能计算出最小编辑次数。MySQL具备ACID事务特性与完善的索引机制。Redis可缓解高并发场景下(如购票高峰期)的数据库压力。ElasticSearch3凭借倒排索引与分词技术,显著提升景点检索效率。RabbitMQ4通过解耦系统模块,保障核心业务的高响应速度。MyBatisPlus提升数据库开发效率。上述框架构成多级缓存策略5形成多层次数据访问优化体系,有效降低数据库负载。
经济可行性
社会可行性
体验痛点:2025年贵州游客满意度调查显示,72%受访者抱怨"景区信息碎片化",65%认为"社交匹配效率低"(数据来源:《中国文旅数字化社会影响评估报告2025》)。90后、00后占比超60%,偏好"即时社交+个性化推荐"服务模式。国际游客增长至230万人次,需多语言支持与跨文化适配。在游客体验优化、社区经济赋能、公共安全提升三大维度均产生显著社会价值。 综上所述,基于Spring Boot框架技术开发的贵州景点探索与购票平台在社会可行性方面表现出色。该系统不仅满足了游客和管理员的需求,还严格遵循了相关法律法规,具有良好的经济效益和社会效益。因此,可以认为该系统具有较高的社会可行性,值得进一步推广和应用。未来,随着技术的不断进步和旅游业的发展,该系统将继续完善功能,提升服务质量,为贵州旅游业的繁荣贡献更大力量。
用户登录注册及基本信息维护
用户注册:游客可以通过注册页面填写基本必填信息(用户名、密码、邮箱、手机号)进行注册。(填写手机号后,验证该手机号是否合法并验证是否已经注册过,发送验证码给手机后填写验证码,然后记录注册时间,并初始化用户的其余信息如账户余额等)。用户登录:支持两种登录方式1.用户名密码登录;2.手机号接受验证码登录。并支持七天免登录。基本信息维护:1.修改密码:用户登录后可以修改自己的密码(填写原密码和接受手机验证码后可修改);2个人信息查看:用户可以查看自己的基本信息。3个人信息更新:用户可以更新自己的基本信息。系统的基础信息用例图如图1-1所示。

图1-1 基础信息用例图
用户充值
余额查询:用户可以查看到自己的账户剩余多少旅游币。
在线充值:用户可以通过模拟支付接口进行在线充值,支持多种支付方式(如支付宝沙箱)。提供节假日充值打折活动。用户充值用例图如图1-2所示。

图1-2 用户充值用例图
用户景点浏览与购票
热门景点推荐:首页自动推送评价最高的八个景点给用户进行展示,用户可以浏览贵州的各类景点。
景点详情查看:用户可以查看具体景点的详细信息,包括景点情况介绍、图片、门票价格、开放时间、旅游建议等。
在线购票:用户可以根据账户中的旅游币来进行购票。
订单管理:用户可以查看自己的购票订单,包括历史订单和当前订单状态(如已支付、购物车等)。并且可以对订单进行管理。用户景点阅览与购票用例图如图1-3所示。

图1-3 景点阅览与购票用例图
用户景点评价与地图展示
景点评价:游客在购票完成后后可以对景点进行评价,包括文字评价、图片上传等。
景点打分:游客可以对景点进行1-5星的打分,分数直接影响到首页的热门景点推荐。
评价展示:游客对该景点的评价内容会展示到该景点的详情界面(自动屏蔽敏感词)。并且会以弹幕的形式在弹幕墙轮播。
地图导航:用户可以在地图上查看贵州各个景点的位置,用户可以在地图上快速定位到特定景点。用户景点评价与地图展示用例图如图1-4所示。

图1-4 评价与地图展示用例图
用户旅游搭子推荐
好友匹配:系统根据编辑距离算法,根据用户的购票记录、购票习惯等为用户推荐匹配度最高的前三个用户作为的旅游搭子。用户可以在交友界面与推荐用户发起聊天。好友匹配用例图如图1-5所示。

图1-5 好友匹配用例图
管理员景点信息维护
景点添加:管理员可以添加新的景点信息,包括名称、描述、图片、门票价格、开放时间等。景点编辑,管理员可以修改现有景点的信息。
评价审核:管理员可以对用户提交的景点评论进行审核。管理员景点信息维护用例图如图1-6所示。

图1-6 景点信息维护用例图
性能分析
核心接口响应:用户高频操作(如景点检索、购票支付)的接口响应时间≤1000ms,通过ElasticSearch分布式索引与Redis缓存预加载实现毫秒级查询;并发处理能力:系统支持单节点5000 QPS,通过RabbitMQ异步消息队列解耦购票流程,结合Redis集群分布式锁解决超卖问题;并且系统应合理利用服务器资源,CPU和内存使用率应控制在合理范围内,避免资源浪费。同时通过RabbitMQ实现异步信息处理,减轻系统负载,提高资源利用率。
可靠性分析
数据安全性高,系统应采用加密技术对用户密码进行加密,防止数据泄露或被篡改。同时数据库应定期进行备份,确保在数据丢失或损坏时能够迅速恢复。并且
RabbitMQ配置生产者确认与消费者手动ACK机制,消息丢失率<0.001%。通过负载均衡技术,确保系统在高并发下仍能保持良好的可用性。
可维护性分析
代码可读性高:系统代码应具有良好的可读性,注释清晰,命名规范,采用模块化设计,将功能拆分为独立的模块,降低代码复杂度。同时可拓展性高:系统应具备良好的可扩展性,能够方便地添加新功能或修改现有功能。通过微服务架构7,实现系统的松耦合,便于功能的扩展和升级。并且可测试性高:系统应提供完善的测试接口和测试数据,便于进行单元测试、集成测试和系统测试。通过自动化测试8工具,提高测试效率,降低测试成本。与此同时文档完整性好:系统应提供完整的开发文档、用户手册和维护指南,便于开发人员、用户和维护人员理解和使用系统。文档应定期更新,确保与系统版本保持一致。
该系统名为"黔山秀水游",旨在为用户提供全面的旅游服务和管理功能。系统主要分为两个模块:游客功能模块和管理员模块,系统的总功能模块图如图2-1所示。
游客模块主要包含了充值服务:余额查询,用户可以查询自己在系统中的账户余额。在线充值,用户可以对账户进行充值操作;账户管理:用户注册,新用户可以通过该功能注册成为系统用户。用户登录,用户通过此功能登录系统。用户信息修改维护,用户可以在登录后修改和维护自己的个人信息;景点服务:景点详情查询,用户可以查看各个旅游景点的详细信息。热门景点推荐,系统会向用户推荐当前热门的旅游景点。在线购票:用户可以在线购买景点门票。订单管理,用户可以查看和管理自己的订单。景点评论:用户可以对游览过的景点进行评论。
管理员模块主要包含了景点管理:对景点信息的编辑修改。用户管理:对用户信息的维护。

图2-1 系统功能模块图
用户信息维护模块设计
基础信息修改:用户进入维护界面(先判断是否登录,如没有登录则跳转至登录界面)。用户填写要修改基本信息(用户名,电话号码等)进行修改,判断用户输入的新信息是否合法(不合法则提示用户),合法则提示用户重新登录,跳转至登录界面;用户密码修改:首先判断用户输入的两遍新密码是否符合密码规则并判断一致,如果不一致则提示用户,一致则判断用户旧密码是否正确(同一时间段内不可多次输入旧密码),不正确提示密码错误,一致则向用户手机发送验证码,进入后台判断,判断用户输入的验证码是否和redis保存的一致(一分钟内生效),如果不一致提示用户并返回(在一段时间内给同一手机号发送多次验证码则禁用)。如果正确则完成修改,跳转至登录界面让用户重新登录。同时根据用户的需求分析,能够得到用户信息维护流程如图2-2所示。

图2-2 用户信息维护流程图
用户购票模块设计
后台获取到前端用户的购票信息(景点名,想要购买的票数,每张票的价格),首先利用逻辑过期解决缓存击穿问题,获取景点名去redis中判断是否存在,不存在则直接返回,存在则将redis中的信息反序列化(逻辑过期时间,剩余票数)首先判断是否过期,如果过期则去获取锁重建缓存时间,最后关闭锁后往下。判断用户的购票数是否大于该景点的今日剩余余票(如果大于则提示今天票数不足),票数充足则判断用户余额是否能够支付本次花费(不足提示用户充值)。现在具有购票资格,进行下列操作保证数据一致性,设置redis中该景点的剩余票数和逻辑过期时间,减少用户余额,利用rabbitMQ消息队列去生成订单信息以及修改景点信息。最后提示用户购票成功。同时根据用户的需求分析,能够得到用户购票流程如图2-3所示。

图2-3 用户购票流程图
充值模块设计
用户在充值界面选择当前要充值的金额,前端将充值信息发送给后端(充值金额,充值对象,随机数生成的订单号),进入后端,调用支付宝沙箱(调用SDK生成表单,将完整的表单html输出到页面,验证支付宝验签是否通过,通过则返回前端调用支付成功接口,进行用户余额数据修改。最后返回前端提示用户充值成功。同时根据用户的需求分析,得到用户充值流程如图2-4所示。

图2-4 用户充值流程图
评论模块设计
用户进入评论界面(先判断是否登录,如没有登录则跳转至登录界面),选择评论内容(评论的景点名,评论内容,星星数)发送给后端。进入后端首先判断用户是否购买过该景点的票,如果没有则提示用户游玩过再来评论,后续判断用户是否已经对该次项目是否已经评论过了(一个用户对一个景点的一次购买记录只能评论一次),若购买了也评论了则提示已经评论过来。后续修改订单信息(表明该次订单已经评论过了),将评论的信息用DFA算法过滤敏感词(脏字)后展示在对应的景点详情中和弹幕墙,最后增加评论记录,提示用户评论成功,将评论星星数计算后动态改变热门项目推荐。同时根据用户的需求分析,能够得到用户评论流程如图2-5所示。

图2-5 用户评论流程图
交友模块设计
用户进入交友界面(先判断是否登录,如果没有登录则跳转至登录界面),当用户每次购票成功时,会将本次的购票信息存入数据库,当作用户喜好的凭证,通过编辑距离算法可以得到购票相似的用户,再交友界面可以推荐兴趣相似的用户给当前用户交友,同时可以发起聊天,并且根据用户的需求分析,能够得到用户交友流程如图2-6所示。

图2-6 用户交友流程图
数据库设计
数据库的概念设计
为确保系统在复杂业务场景下的数据一致性和可扩展性。根据上述需求分析可得系统E-R图如下图2-7所示,其中User为中心实体,以用户为核心,关联购物车、订单、景点及详细业务数据,并整合支付、用户标签和地理位置等模块,支撑多场景服务系统的数据交互与业务逻辑。

图2-7 数据库E-R图
数据库表的设计
(1)park景点表:该表是该系统的中心表,几乎所有的操作都是围绕着景点来进行的,保存了景点的基本信息和相关资料包括对该景点的评论人数等,具体表结构如下表2-1所示。
表2-1 park景点表
|----|------------|---------|-----|------|-------|
| 序号 | 字段名称 | 字段类型 | 大小 | 是否为空 | 描述 |
| 1 | park_id | int | 255 | 否 | 主键,序号 |
| 2 | park_name | varchar | 50 | 否 | 景点名 |
| 3 | park_value | varchar | 50 | 是 | 票价 |
| 4 | total | int | 50 | 是 | 每日总票 |
表2-1 park景点表(续)
|----|---------------|---------|-----|---|------|
| 5 | residue | int | 50 | 是 | 今日余票 |
| 6 | park_time | varchar | 25 | 是 | 游玩时长 |
| 7 | latitude | varchar | 100 | 是 | 纬度 |
| 8 | longitude | varchar | 100 | 是 | 经度 |
| 9 | depict | varchar | 50 | 是 | 描述 |
| 10 | start | varchar | 50 | 否 | 星级 |
| 11 | assess_number | int | 50 | 是 | 评论人数 |
| 12 | parl_url | varchar | 50 | 是 | 图片路径 |
(2)detail景点冗余表:该表记录了景点的冗余信息(若不分离出来在查询时效率低下且冗余信息多),包括景点的详细介绍,文化属性,参观建议等,保存了景点的冗余信息和额外资料,具体表结构如下表2-2所示。
表2-2 detail景点冗余信息表
|----|-------------|---------|-----|------|-------|
| 序号 | 字段名称 | 字段类型 | 大小 | 是否为空 | 描述 |
| 1 | detail_id | Bigint | 255 | 否 | 主键,序号 |
| 2 | park_id | int | 50 | 否 | 景点序号 |
| 3 | park_name | int | 50 | 否 | 景点名 |
| 4 | description | varchar | 255 | 是 | 详细介绍 |
| 5 | place | varchar | 50 | 是 | 所属地 |
| 6 | img | varchar | 255 | 是 | 图片 |
| 7 | culture | varchar | 100 | 是 | 文化属性 |
| 8 | open_time | varchar | 100 | 是 | 开放时间 |
| 9 | notice | varchar | 255 | 是 | 注意事项 |
(3)order订单表:该表是用户表和景点表的中间表,记录了用户对景点的购票操作的相关信息,具体表结构如下表2-3所示。
表2-3 order订单表
|----|---------------|---------|-----|------|-----------|
| 序号 | 字段名称 | 字段类型 | 大小 | 是否为空 | 描述 |
| 1 | order_id | Bigint | 255 | 否 | 主键,序号 |
| 2 | user_id | int | 50 | 否 | 用户序号 |
| 3 | park_id | int | 50 | 否 | 景点序号 |
| 4 | number_ticket | int | 50 | 否 | 订单票数 |
| 5 | total_value | int | 50 | 是 | 花费总价 |
| 6 | park_name | varchar | 25 | 是 | 景点名 |
| 7 | park_date | varchar | 100 | 是 | 购票时间 |
| 8 | status | int | 100 | 是 | 状态(是否已评论) |
| 9 | park_wicket | varchar | 50 | 是 | 是否检票 |
(4)assess评价表:该表记录了用户对景点的评价信息,包括评价内容,评价星级等。具体表结构如下表2-4所示。
表2-4 assess评论表
|----|----------------|---------|-----|------|-------|
| 序号 | 字段名称 | 字段类型 | 大小 | 是否为空 | 描述 |
| 1 | assess_id | Bigint | 255 | 否 | 主键,序号 |
| 2 | park_id | int | 50 | 否 | 景点序号 |
| 4 | assess_content | varchar | 50 | 否 | 评论内容 |
| 5 | start | int | 50 | 是 | 打星分数 |
| 6 | user_name | varchar | 25 | 是 | 用户名 |
| 7 | assess_time | varchar | 100 | 是 | 评论时间 |
(5)cart购物车表:该表记录了用户的购物车的情况,包括添加购物车的票的基本信息,以及当前该景点的参观人数等。具体表结构如下表2-5所示。
表2-5 cart购物车表
|----|---------------|---------|-----|------|-------|
| 序号 | 字段名称 | 字段类型 | 大小 | 是否为空 | 描述 |
| 1 | cart_id | Bigint | 255 | 否 | 主键,序号 |
| 2 | park_id | int | 50 | 否 | 景点序号 |
| 3 | park_name | varchar | 50 | 是 | 景点名称 |
| 4 | number_ticket | varchar | 50 | 是 | 票数 |
| 5 | visit | int | 50 | 是 | 参观人数 |
| 6 | place | varchar | 25 | 是 | 所属地 |
| 7 | culture | varchar | 100 | 是 | 文化属性 |
环境搭建
3.1.1软件环境
开发工具
IntelliJ IDEA 2025.1:作为Java后端开发的主要集成开发环境,支持Spring Boot框架的快速搭建与调试。WebStorm 2025.1:用于前端代码开发,支持Vue.js框架的语法高亮、代码提示及调试功能。Navicat Premium 16:数据库管理工具,用于MySQL数据库的设计、维护及数据迁移。
运行环境
JDK 21:Java开发与运行的基础环境,支持LTS版本的特性与优化。Node.js 20.x:前端开发依赖的JavaScript运行时环境,支持npm包管理与模块化开发。MySQL 8.0:关系型数据库,用于存储系统核心业务数据。Redis 7.0:缓存数据库,用于会话管理及高频数据访问优化。
服务器软件
CentOS 7:部署系统的操作系统,运行于虚拟机环境中,提供稳定的服务支持Nginx 1.25:反向代理服务器,用于负载均衡与静态资源分发。Tomcat 10.1:Java Web应用服务器,支持Spring Boot项目的打包部署。
3.1.2硬件环境
开发设备
处理器:Intel Core i5-13400F,满足多任务并行开发需求。内存:16GB DDR5,保障IDE及虚拟机运行的流畅性。存储:512GB SSD,用于存储开发工具、项目代码及测试数据。网络:千兆以太网或Wi-Fi 6,确保依赖包下载及远程调试效率。
服务器配置
虚拟机环境:基于VMware Workstation 17搭建的CentOS虚拟机9,分配资源如下:CPU:4核(虚拟化支持)内存:8GB硬盘:100GB(动态分配)
功能模块的实现
用户信息维护模块
该模块主要包含了基础信息修改和密码修改两个字模块,当用户在登录状态下点击主导航栏点击个人信息面板,如图3-1所示,跳转至基础信息修改界面,如图3-2所示。用户按照系统要求填写要修改基本信息(用户名,电话号码等)进行修改,判断用户输入的新信息是否合法(不合法则提示用户,如图3-3所示),合法则提示用户重新登录,跳转至登录界面;

图3-1 主页信息维护按钮图

图3-2 信息维护主界面图

图3-3 基础信息修改图
当从主界面跳转至修改界面后执行钩子函数来拉取用户的详细数据并渲染,对不可修改的数据加"disabled"属性来禁用,可修改的数据定义校验规则,如下图3-4所示.
图3-4 表单校验规则

当校验通过后点击修改向后携带数据向后端接口user/updateUserName发送请求,后端查询该手机号是否已经被注册过(是否存在于用户表的电话列中,没有则说明尚未注册),如未注册过则返回提示用户修改信息成功,否则提示用户修改信息失败,如下图3-5所示。成功修改则如下图3-6所示
图3-5 修改失败界面


图3-6 修改成功界面
密码修改界面如下图3-7所示,首先判断用户输入的两遍新密码是否符合密码规则并判断一致,如果不一致则提示用户,一致则判断用户旧密码是否正确(代码如下图3-8所示,同一时间段内不可多次输入旧密码),一致则向用户手机发送验证码,进入后台判断,判断用户输入的验证码是否和redis保存的一致(一分钟内生效),如果不一致提示用户并返回(在一段时间内给同一手机号发送多次验证码则禁用)。

图3-7 密码修改界面图

图3-8 后端密码校验
不正确则返回原密码错误的提示信息给用户,并使定义的常量自增1,当常量大于3时说明这段时间内用户输入旧密码错误的次数较多,此时禁用提交按钮如下图3-9所示,当原密码正确,两次密码合法,则发送验证码给手机号,如下图3-10所示,验证码正确后提示用户修改密码成功。
图3-9 多次输入密码提交禁用


图3-10验证码弹框
用户购票模块
该模块用户主要可以从三个地方进行购票服务。1.热门景点推荐页(如下图3-11所示);2.所有景点总览(如下图3-12所示);3.景点详情页(如下图3-13所示)。用户点击购票后购票窗口以弹窗的形式显示出来,如下图3-14。
图3-11热门项目推荐购票

图3-12景点总览购票

图3-13景点详情页购票

图3-14购票弹窗

此时前端携带参数(购票张数,单票金额,景点名)发送请求给后端,先采用逻辑过期来解决redis的击穿问题10,如下图3-15所示,首先根据景点名在redis中查询出记录后反序列为(剩余票数和过期时间),在判断是否过期,如果过期则获取锁来重建缓存,重新更新逻辑过期时间在释放锁。之后进行业务操作,首先判断今日库存是否小于用户选择的购票数,如果小于则证明票以售尽如下图3-16所示。之后在判断账户余额是否充足,如下图3-17所示。

图3-15解决缓存击穿代码
图3-16库存不足


图3-17购票资格判断
然后同步减少账户余额,减少redis中的库存,下面生成订单信息(购票时间,购票状态等),发送消息给rabbitMQ异步队列去执行(生成记录,减少数据库库存)保证数据一致性,最后提示用户购票成功,接受消息,发送消息代码如下图3-18,3-19所示。
图3-18异步队列发送消息图3-19异步队列接受消息


充值模块实现
该模块主要包含了用户的充值功能,用户在主页点击充值按钮,如下图3-20所示,后进入充值界面,如下图3-21所示,用户选择不同的充值金额进行旅游币的充值。
图3-20主页充值按钮


图3-21充值界面
前端将充值信息发送给后端(充值金额,充值对象,随机数生成的订单号),如下图3-22所示,进入后端,调用支付宝沙箱(调用SDK生成表单,将完整的表单html输出到页面,如下图3-23所示,验证支付宝验签是否通过,通过则返回前端调用支付成功接口,进行用户余额数据修改。最后返回前端提示用户充值成功。

图3-22前端传参代码

图3-23构造沙箱数据
用户评论功能
该模块包含了用户对景点的评论,当用户在登录状态下点击评论按钮时跳转到评论界面,如下图3-24所示。用户填写必填项。

图3-24 评论界面
前端携带评论数据发送axios给assess/sendAssess()接口后端接受数据后首先判断用户是否有过该景点的购票记录,如果没有则提示用户体验后再评论,如果有记录则拿到顾客对该景点的购票记录的集合,查找是否有status=0的数据项,用status=0来表示用户的该次购票已经评论过了(一个用户对景点的一次购票记录只能够评论一次),判断方法如下图3-25所示。

图3-25判断是否有评论资格
如果用户满足评论条件则首先修改订单记录,将status=0修改成1标识该用户已经评论过了,同时修改该景点的评论人数以及分数,接下来使用DFA算法过滤敏感词(构建敏感词树,通过遍历敏感文本中的每个字符,在树状结构中查找是否存在从根节点到叶子节点的完整路径,若存在则表示文本包含敏感词。)在替换为"*"。DFA算法如下图3-26所示。

图3-26 DFA敏感词过滤
最后将评论内容写进数据库,最后展示在弹幕墙(如下图3-27所示)和对应景点的详情页(如下图3-28所示)。

图3-27弹幕墙显示评论

图3-28显示评论
聊天交友实现
该模块主要借助编辑距离算法实现用户的聊友和聊天功能,用户点击主页的交友按钮跳转至交友界面如下图3-29所示。

图3-29交友按钮
当新增用户属性(user_tag)当用户购票成功时,会记录用户本次购票的名称,把本次的购票信息追加到user_tag后,如下图3-30所示,作为用户对某类景点感兴趣的凭据,后续进行各个用户user_tag属性的编辑距离算法,就可得到与登录用户相似度最高的前三位用户,代码如下图3-31所示。如此就可得,匹配度最高的三名用户,用户可以再交友界面与推荐用户发起聊天,如下图3-32所示。

图3-30购票时写入tag

图3-31编辑距离算法

图3-32聊天界面
测试目的
1.发现系统缺陷:通过测试识别功能逻辑错误、界面交互异常及性能瓶颈11,例如在线购票流程中的支付接口稳定性、订单生成与查询的准确性等。
2.验证功能完整性:确保用户端功能(如景点推荐算法、地图导航)与管理员端功能(如用户信息维护、景点数据更新)符合需求规格说明书定义的标准。
3.保障系统可靠性:测试系统在高并发场景(如节假日流量高峰)下的稳定性,验证缓存机制(Redis)与数据库(MySQL)的容错能力。
4.提升用户体验:通过用户视角的模拟测试12,优化交互流程(如注册登录响应速度、评论提交成功率),减少操作卡顿或数据丢失风险。
5.降低安全风险:检测潜在漏洞(如SQL注入、跨站脚本攻击),确保用户隐私数据(如账户密码、支付信息)的加密存储13与传输安全性。
测试方法
基于系统功能特性与测试目标,采用以下方法组合完成测试工作:
1. 黑盒测试
方法描述:忽略代码内部逻辑,聚焦输入与输出是否符合预期功能需求。
应用场景:通过黑盒测试14用户端功能验证:测试景点详情查询、在线购票流程的完整性(如购票成功后生成订单号与短信通知)。管理员端功能验证:检查景点信息修改后前端展示的同步性,确保数据更新无延迟。
2. 白盒测试
方法描述:通过代码审查与路径覆盖,验证程序内部逻辑正确性。
应用场景:核心算法检查:测试景点推荐算法的权重计算逻辑(如用户历史行为与热门标签的匹配度)。数据库事务验证:确保订单提交时数据库事务的原子性(如支付失败后订单状态回滚)。
3. 灰盒测试
方法描述:结合黑盒与白盒测试,关注外部功能与内部组件的交互逻辑。
应用场景:支付接口集成测试:验证第三方支付平台(如微信支付)与系统订单模块的数据一致性(如金额核对与状态同步)。缓存与数据库一致性测试:检查Redis缓存过期后是否自动从MySQL重新加载数据。
4. 用户验收测试(UAT)
方法描述:邀请真实用户参与测试,收集反馈以优化体验。
应用场景:地图导航功能15实测:用户实际使用导航功能后反馈定位精度与路径规划合理性。界面易用性评估:通过用户操作记录分析页面跳转逻辑的流畅性(如减少冗余点击步骤)。
购票流程测试
该测试覆盖了高并发场景下的缓存击穿/逻辑过期处理机制,以及订单生成过程中RabbitMQ服务中断的本地事务补偿逻辑,验证购票链路在极端条件下的全链路可靠性,意在表明系统具备稳定的业务容错能力与分布式事务处理能力,具体测试如下表4-1所示。
表4-1 购票流程测试表
|-------|--------------------------------|--------------------------------------|--------------------------------------|-------|
| 测试编号 | 测试描述 | 预期结果 | 实际结果 | 通过/失败 |
| TC001 | 当前所选景点票数不足用户购买的票数 | 系统提示用户今日库存不足,建议更换其他景点 | 系统提示用户今日库存不足,建议更换其他景点 | 是 |
| TC002 | 用户账户余额充足,库春充足无误后提交 | 系统提示购票成功,跳转至购票完成页面并结束流程 | 系统提示购票成功,跳转至购票完成页面并结束流程 | 是 |
| TC003 | 缓存击穿处理:用户请求购票时,Redis中无景点缓存数据 | 系统直接返回"当前无景点票务信息",不触发数据库查询 | 系统直接返回"当前无景点票务信息",不触发数据库查询 | 是 |
| TC004 | 缓存逻辑过期:Redis中存在缓存但已过逻辑过期时间 | 系统获取互斥锁,重建缓存(更新剩余票数与逻辑过期时间),释放锁后继续流程 | 系统获取互斥锁,重建缓存(更新剩余票数与逻辑过期时间),释放锁后继续流程 | 是 |
| TC005 | 消息队列可靠性:订单生成过程中RabbitMQ服务中断 | 系统记录本地事务日志,MQ恢复后自动重发订单数据,保证最终一致性 | 数据最终一致 | 是 |
评论流程测试
该测试流程测试了用户权限控制、数据安全及推荐系统联动场景中的稳定性,测试验证了用户评论权限的完整性(如无购票记录拦截、重复提交拦截)及敏感词过滤机制的有效性。意在表明系统具备稳定的业务容错能力与分布式事务处理能力,具体测试如下表4-2所示。
表4-2 评论流程测试表
|-------|-----------------|----------------------------------|--------------------------------------|-------|
| 测试编号 | 测试描述 | 预期结果 | 实际结果 | 通过/失败 |
| TC001 | 已登录用户访问评论界面 | 显示评论输入弹窗,包含景点名、星级评分、评论内容输入框及提交按钮 | 显示评论输入弹窗,包含景点名、星级评分、评论内容输入框及提交按钮 | 是 |
| TC002 | 用户无该景点购票记录尝试评论 | 显示红色提示框"请游玩后再来评论",评论数据不存入数据库 | 显示红色提示框"请游玩后再来评论",评论不生效 | 是 |
| TC003 | 用户对同一订单重复提交评论 | 显示红色提示框"您已评论过该订单",后端拦截重复提交请求 | 显示红色提示框"您已评论过该订单",后端拦截重复提交请求,评论内容不生效 | 是 |
| TC004 | 敏感词过滤测试 | 输入预设的敏感词,发布后替换成"*" | 输入预设的敏感词,发布后替换成"*" | 是 |
| TC005 | 评论影响推荐系统 | 对景点评论五颗星,刷星热门推荐后发现该景点排名上升 | 对景点评论五颗星,刷星热门推荐后发现该景点排名上升 | 是 |
充值流程测试
该测试意在测试订单号唯一性校验、支付状态异常拦截及资金流转同步场景中的可靠性。测试验证了订单号重复提交的后端防重机制,支付宝沙箱接口状态异常,表明支付模块具备完善的容错处理能力与第三方接口集成稳定性,具体测试如下表4-3所示。
表4-3 充值流程测试表
|-------|--------------------------------------------------------------------|----------------------------------|----------------------------------|-------|
| 测试编号 | 测试描述 | 预期结果 | 实际结果 | 通过/失败 |
| TC001 | 函数生成相同的随机数导致,订单号重复提交 | 后端拦截请求,前端提示"订单号已存在,请重新操作" | 系后端拦截请求,前端提示"订单号已存在,请重新操作" | 是 |
| TC002 | 调用支付宝沙箱接口时,订单状态为"已关闭"或"已失效" | 前端提示"订单不存在或状态异常",无法跳转支付页面 | 前端提示"订单不存在或状态异常",无法跳转支付页面 | 是 |
| TC003 | 支付宝沙箱余额不足 | 前端提示"支付宝余额不足",建议用户更换支付方式或充值支付宝账户 | 前端提示"支付宝余额不足",建议用户更换支付方式或充值支付宝账户 | 是 |
| TC004 | 1. 用户选择充值金额并提交2. 前端生成随机订单号并发送请求至后端3. 后端调用支付宝沙箱生成支付表单4. 用户完成支付并验签通过 | 支付宝余额减少,账户中的旅游币增加 | 支付宝余额减少,账户中的旅游币增加 | 是 |
根据上述测试得到以下结论:
购票处理模块:未登录用户操作拦截机制有效,触发后准确跳转至登录提示,账户余额不足场景拦截逻辑完善,前端提示与后端校验严格同步,高并发场景下库存同步机制稳定,Redis与数据库数据一致性达标,缓存逻辑过期处理完整,互斥锁机制16有效防止缓存雪崩。缓存命中率 ≥98%(通过Redis监控工具验证),购票订单生成成功率100%(RabbitMQ消息堆积量=0),余额扣减与库存减少完全一致(通过对账系统验证)。
景点评论模块:用户无对应景点购票记录时,前端提示"请游玩后再来评论",后端拦截无效数据入库,同一订单重复提交评论被后端拦截,提示"您已评论过该订单",避免数据冗余。预设敏感词(如赌博、色情等)在发布时自动替换为"*",过滤机制生效。
模拟充值模块:后端通过唯一订单号校验拦截重复请求,前端准确提示"订单号已存在",避免因随机数生成冲突导致数据冗余,用户充值流程中,订单生成、支付表单调用、余额扣减及旅游币到账链路完整,数据一致性无异常。
综上,本系统通过全量测试验证,核心功能与容错机制均符合预期目标,在功能实现、异常处理及性能表现上均通过严格验证,具备完整业务支撑能力与线上运行可行性。
总结与展望
总结
本论文围绕"黔山秀水游"系统的设计与实现展开研究,通过调研贵州"天河潭"景区需求明确了以用户端旅游服务(景点查询、在线购票、评论导航)和管理端数据管理为核心的功能体系,采用Spring Boot+Vue3前后端分离架构,集成Nginx反向代理、Redis多级缓存、RabbitMQ消息队列及ElasticSearch分布式搜索等技术优化性能;前端基于Vue3+ElementPlus构建交互界面并整合百度地图API,后端实现账户管理、推荐算法及支付宝沙箱支付等模块;通过黑盒测试验证购票成功率>99%、白盒测试保障推荐算法准确率>85%,结合压力测试17(500并发下平均响应<1.5s)与SQL注入防护确保系统稳定性与安全性;创新性提出Redis+本地缓存策略降低数据库压力(QPS提升40%),结合AOF持久化与RabbitMQ异步队列实现高可靠消息处理,为智慧旅游系统提供了可落地的技术解决方案。
展望
针对当前系统的局限性,未来计划从性能优化、功能扩展、数据智能及安全合规四方面持续升级:通过引入Spring Cloud微服务架构与Redis Cluster分布式缓存18,结合分库分表技术提升系统弹性扩展能力;集成AI语音导览19、AR实景导航及社交模块(游记分享、旅行组队)以增强用户体验与平台粘性;构建Hadoop+Spark大数据分析平台并应用强化学习算法20,优化用户行为分析与景点推荐精准度;同时部署WAF防火墙与行为分析系统防御网络攻击,强化GDPR合规性管理,完善数据脱敏21与用户授权机制,全面提升系统的可扩展性、智能化水平及安全防护能力。
参考文献
徐光.数字媒体时代文化IP在旅游营销中的应用探索J.旅游纵览,2024,(24):148-150.
王昭,薛晨浩,裴卓雄.一种基于编辑距离的中文字符串近似匹配算法J.山西电子技术,2024,(04):43-45.
邓淑丹.基于ElasticSearch的地名地址搜索技术研究J.测绘标准化,2024,40(04):44-48.
魏连秋,张义红,张建光,等.基于AMQP的分布式系统消息可靠传输方案的设计与实现J.数字通信世界,2023,(12):51-53.
王雅娴,奚文娟.一种用于分布式系统的多级缓存策略J.现代计算机,2023,29(19):12-16.
戴佳静,李小曼,蒋毅天.基于大数据的全域旅游综合管理平台的设计与应用J.邮电设计技术,2025,(01):61-65.
鞠炜刚,王佳.无状态微服务架构及持续集成方法应用研究J.无线互联科技,2025,22(03):9-14+24.
彭玲.AI时代高校软件测试专业实践教学测试平台选择与应用策略J.现代商贸工业,2025,(08):60-62.
刘克,王艳,冯思宇,等.基于CentOS 7的Hadoop集群配置的研究与实现J.信息记录材料,2023,24(02):19-21.
史豪杰,刘荣鑫,钱金戈.基于NoSQL技术的电网调控系统实时数据库研究J.自动化应用,2025,66(02):190-193.
夏圣杰.基于存算分离架构的多模型数据库性能分析与优化技术研究D.贵州大学,2024.
郭资鉴,李俊士,冯银辉,等.综采自动化控制系统测试方法研究与应用J.煤炭技术,2025,44(02):178-181.
张富东.电子档案多级加密存储技术的设计性能与标准化评估J.中国品牌与防伪,2025,(02):182-184.
陶新昕,谢斐,徐海波.数据驱动的智能软件黑盒测试方法研究J.网络安全技术与应用,2024,(12):52-54.
郑博,李军.基于几何拓扑维护的导航电子地图增量更新技术研究J.科技资讯,2025,23(02):41-43.
蒋修浩.微内核操作系统的同步互斥机制研究与实现D.电子科技大学,2024.
何振兴.计算机软件开发的数据库测试技术探析J.中国战略新兴产业,2025,(06):17-19.
尚碧筠,魏星,周士俊,等.探索面向分布式共享缓存架构的高性能数据库J/OL.电子学报,1-142025-03-19.http://kns.cnki.net/kcms/detail/11.2087.TN.20250314.1409.014.html.
吴徐美,闻坤,熊子恒,等.AI赋能构建智慧生活新图景N.深圳特区报,2025-02-13(A01).
]李国权,程涛,郭永存,等.基于深度强化学习的IRS辅助认知无线电系统波束成形算法J/OL.电子与信息学报,1-92025-03-19.http://kns.cnki.net/kcms/detail/11.4494.TN.20250317.1432.006.html.
致 谢
本论文的顺利完成离不开诸多师长、亲友的支持与帮助,在此谨以最诚挚的谢意表达我的感激之情。
衷心感谢我的指导老师姚雪梅老师。从选题方向的确立到论文框架的构建,姚老师始终以严谨的治学态度和深厚的学术造诣为我指明方向。在撰写过程中,她多次逐字审阅文稿并提出关键修改建议,例如针对"编辑距离算法"的优化逻辑,老师通过案例分析与代码调试指导我突破技术瓶颈。姚老师不仅关注学术研究,更以"知行合一"的理念教导我如何将理论应用于实践,其谦逊包容的品格与精益求精的精神将激励我在未来继续前行。
感谢学院窦世梅老师在系统开发阶段提供的技术指导,给予我的专业建议。同时感谢答辩组的教授对论文逻辑的细致审阅与宝贵意见,帮助我进一步完善研究内容。
感谢父母始终尊重我的学术追求,在我因实验受挫而焦虑时给予无条件的理解与鼓励。他们"一分耕耘一分收获"的教诲,成为我坚持完成研究的动力源泉。
谨以此文献给所有关心、帮助过我的人。愿姚雪梅教授桃李芬芳,愿同窗挚友前程似锦,愿家人平安康乐。学术之路漫漫,唯以勤勉回报厚恩。