旅游推荐管理系统

旅游推荐管理系统

项目简介

这是一个完整的旅游景点推荐管理平台,包含用户前台和管理后台两个系统。系统实现了景点浏览、路线推荐、在线预订、用户评价、后台管理等核心功能,采用前后端分离架构,适合作为旅游类网站开发学习项目或计算机设计参考。

技术栈

后端技术

技术 版本/说明
运行环境 Java 1.8
Web框架 Spring Boot 2.4.2
数据库 MySQL 8.0
ORM框架 MyBatis-Plus 3.4.1
连接池 Druid 1.2.16
身份认证 JWT (jjwt 0.9.1)
缓存 Redis + Spring Data Redis
工具类 Hutool 5.8.15, Guava 30.0
JSON解析 Fastjson2 2.0.25
邮件服务 JavaMail 1.4.7

前端技术

用户前台 (tourism-user-frontend)
技术 版本/说明
前端框架 Vue 2.6.14
UI组件库 Element UI 2.15.14
路由管理 Vue Router 3.5.1
状态管理 Vuex 3.6.2
HTTP请求 Axios 1.6.2
图表库 ECharts 5.5.0
富文本编辑器 Vue Quill Editor 3.0.6
视频播放器 Vue Video Player 6.0.0, Video.js 8.6.1
进度条 NProgress 0.2.0
CSS预处理器 Less
管理后台 (tourism-admin-frontend)
技术 版本/说明
前端框架 Vue 2.6.14
UI组件库 Element UI 2.15.13, Element Plus 2.2.32
路由管理 Vue Router 3.5.1
状态管理 Vuex 3.6.2
HTTP请求 Axios 1.3.4
图表库 ECharts 5.4.3
富文本编辑器 Vue Quill Editor 3.0.6
剪贴板 Clipboard 2.0.11
进度条 NProgress 0.2.0
CSS预处理器 Sass

项目特点

  • 前后端分离:后端提供RESTful API,前端独立开发部署
  • 双端系统:用户前台+管理后台,功能完整
  • 智能推荐:基于用户偏好的景点推荐算法
  • 在线预订:支持景点门票、酒店、路线预订
  • 用户评价:景点评分、评论、图片上传
  • 数据可视化:管理后台集成ECharts图表展示
  • 富文本支持:支持富文本内容编辑和展示
  • 视频展示:支持景点视频介绍播放
  • 缓存优化:Redis缓存提升系统性能

功能模块

用户前台功能

1. 首页模块
  • 热门景点推荐
  • 精选路线展示
  • 轮播图展示
  • 搜索功能入口
  • 分类导航
2. 景点浏览模块
  • 景点列表展示
  • 景点详情查看
  • 景点图片/视频展示
  • 景点评分查看
  • 景点收藏功能
3. 路线推荐模块
  • 旅游路线列表
  • 路线详情查看
  • 路线规划展示
  • 路线收藏
4. 在线预订模块
  • 门票预订
  • 酒店预订
  • 路线预订
  • 订单管理
  • 订单支付
5. 用户评价模块
  • 景点评分
  • 评论发布
  • 图片上传
  • 评论查看
  • 点赞功能
6. 个人中心模块
  • 用户信息管理
  • 我的收藏
  • 我的订单
  • 我的评价
  • 账号设置
7. 搜索模块
  • 关键词搜索
  • 分类筛选
  • 价格筛选
  • 地区筛选
  • 搜索结果展示

管理后台功能

1. 数据统计模块
  • 访问量统计
  • 订单统计
  • 用户统计
  • 收入统计
  • 图表展示
2. 景点管理模块
  • 景点列表
  • 新增/编辑/删除景点
  • 景点图片管理
  • 景点视频管理
  • 景点分类管理
3. 路线管理模块
  • 路线列表
  • 新增/编辑/删除路线
  • 路线规划
  • 路线景点关联
4. 订单管理模块
  • 订单列表
  • 订单详情查看
  • 订单状态管理
  • 退款处理
5. 用户管理模块
  • 用户列表
  • 用户信息查看
  • 用户状态管理
  • 用户权限管理
6. 评价管理模块
  • 评价列表
  • 评价审核
  • 评价删除
  • 评价统计
7. 内容管理模块
  • 轮播图管理
  • 公告管理
  • 文章管理
  • 富文本编辑
8. 系统管理模块
  • 管理员管理
  • 角色管理
  • 权限管理
  • 系统日志
  • 系统设置

项目结构

复制代码
java-travel-spot-web-pc/
├── 数据库/                        # 数据库文件
├── tourism-backend/               # 后端服务 (Spring Boot)
│   ├── doc/
│   │   └── db_tourism.sql        # 数据库SQL文件
│   ├── img/                      # 上传图片存储目录
│   ├── logs/                     # 日志文件
│   ├── src/
│   │   └── main/
│   │       ├── java/
│   │       │   └── com/shanzhu/tourism/
│   │       │       ├── config/          # 配置类
│   │       │       ├── controller/      # 控制器
│   │       │       ├── entity/          # 实体类
│   │       │       ├── mapper/          # Mapper接口
│   │       │       ├── service/         # 服务层
│   │       │       ├── utils/           # 工具类
│   │       │       └── BackendApplication.java  # 启动类
│   │       └── resources/
│   │           ├── mapper/              # MyBatis XML
│   │           └── application.yml      # 配置文件
│   └── pom.xml
│
├── tourism-user-frontend/         # 用户前台 (Vue 2)
│   ├── public/
│   ├── src/
│   │   ├── api/                  # API接口封装
│   │   ├── assets/               # 静态资源
│   │   ├── components/           # 公共组件
│   │   ├── router/               # 路由配置
│   │   ├── store/                # Vuex状态管理
│   │   ├── utils/                # 工具函数
│   │   ├── views/                # 页面视图
│   │   ├── App.vue               # 根组件
│   │   └── main.js               # 入口文件
│   ├── package.json
│   └── vue.config.js
│
├── tourism-admin-frontend/        # 管理后台 (Vue 2)
│   ├── public/
│   ├── src/
│   │   ├── api/                  # API接口封装
│   │   ├── assets/               # 静态资源
│   │   ├── components/           # 公共组件
│   │   ├── router/               # 路由配置
│   │   ├── store/                # Vuex状态管理
│   │   ├── utils/                # 工具函数
│   │   ├── views/                # 页面视图
│   │   ├── App.vue               # 根组件
│   │   └── main.js               # 入口文件
│   ├── package.json
│   └── vue.config.js
│
└── 旅游推荐管理系统.mp4            # 演示视频

数据库设计

核心数据表

  1. user - 用户表
  2. admin - 管理员表
  3. scenic_spot - 景点表
  4. route - 路线表
  5. order - 订单表
  6. comment - 评论表
  7. collection - 收藏表
  8. category - 分类表
  9. banner - 轮播图表
  10. notice - 公告表
  11. article - 文章表

运行环境要求

后端环境

  • JDK 1.8+
  • MySQL 8.0+
  • Redis 5.0+
  • Maven 3.6+

前端环境

  • Node.js 14.0+
  • npm 或 yarn

快速开始

1. 数据库配置

  1. 创建MySQL数据库
sql 复制代码
CREATE DATABASE db_tourism CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 导入数据库文件
bash 复制代码
mysql -u root -p db_tourism < tourism-backend/doc/db_tourism.sql
  1. 修改数据库配置
    编辑 tourism-backend/src/main/resources/application.yml:
yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_tourism?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: root # 修改为你的密码

2. Redis配置

编辑 tourism-backend/src/main/resources/application.yml:

yaml 复制代码
spring:
  redis:
    host: localhost
    port: 6379
    password: # 如果有密码则填写

3. 启动后端服务

bash 复制代码
# 进入后端目录
cd tourism-backend

# Maven打包
mvn clean package

# 运行
java -jar target/tourism-backend-0.0.1-SNAPSHOT.jar

或使用IDE直接运行 BackendApplication.java

后端服务默认运行在 http://localhost:8080

4. 启动用户前台

bash 复制代码
# 进入用户前台目录
cd tourism-user-frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

用户前台默认运行在 http://localhost:8081

5. 启动管理后台

bash 复制代码
# 进入管理后台目录
cd tourism-admin-frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

管理后台默认运行在 http://localhost:8082

默认账号

管理后台

  • 账号:admin
  • 密码:admin123

用户前台

  • 支持用户注册
  • 或使用测试账号登录

接口文档

后端API接口文档可通过以下方式查看:

  • Swagger UI: http://localhost:8080/swagger-ui.html (如已集成)
  • 或查看后端代码中的Controller注释

界面预览

项目包含演示视频文件:

  • 旅游推荐管理系统.mp4 - 完整功能演示

扩展建议

如需进一步完善项目,可考虑以下扩展:

  1. 地图集成:集成高德/百度地图API,显示景点位置
  2. 在线支付:集成支付宝/微信支付
  3. 社交功能:用户互动、游记分享
  4. 推荐算法:基于协同过滤的智能推荐
  5. 移动端:开发移动端H5或小程序
  6. 实时聊天:在线客服功能
  7. 数据分析:更丰富的数据统计和分析
  8. 多语言支持:国际化i18n
  9. 优惠券系统:促销活动管理
  10. 会员系统:VIP会员体系

注意事项

  1. 本项目为学习演示项目,部分数据为模拟数据
  2. 生产环境部署需要配置HTTPS
  3. 图片上传路径需根据实际环境调整
  4. Redis需要正确配置并启动
  5. 建议定期备份数据库数据
  6. 注意文件上传大小限制

常见问题

Q: 后端启动失败?

A: 检查MySQL和Redis服务是否启动,数据库配置是否正确

Q: 图片无法显示?

A: 检查图片上传路径配置,确保后端服务有读写权限

Q: 前端无法请求后端?

A: 检查前端API配置中的baseURL,确保与后端地址一致

Q: Redis连接失败?

A: 确认Redis服务已启动,检查连接配置是否正确

Q: 跨域问题?

A: 后端已配置CORS,如仍有问题请检查配置类

许可证

本项目仅供学习交流使用,请勿用于商业用途。

相关推荐
aiks_yuan3 小时前
Spring Boot SSE 流式输出变成一次性返回怎么办:大模型打字机效果失效的 5 个原因(Spring Boot 4.1.2 实测)
spring boot
Thomas.Sir5 小时前
第15课:SpringBoot连接池详解:HikariCP配置、调优、监控,4.x连接池新特性
java·spring boot
VimorphTech6 小时前
每批开 4 个线程,为什么限制不住 TTS 的总并发?
java·spring boot·spring
杨凯凡6 小时前
Spring Boot 缓存一致性怎么保证?@Cacheable、@CacheEvict 与事务提交时机实战
java·spring boot·spring cache·后端开发·缓存一致性
软件技术NINI8 小时前
基于SpringBoot和Vue的项目评审系统
javascript·vue.js·spring boot·后端·spring·毕业设计·毕设
vipxieliang8 小时前
Spring Boot 性能优化实战:从启动加速到运行时调优
java·spring boot
AI全栈学习助手8 小时前
告别“转圈等待”:Spring Boot + SSE 让大模型像 ChatGPT 一样流式输出
java·人工智能·spring boot·后端·aigc
云-缩影18 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
AI开源软件20 小时前
SpringBoot3+Vue3 财务管理系统如何设计:从业务单据到总账的模块划分
spring boot·vue3·领域建模·会计凭证·ruoyi office·业财协同·财务系统设计