基于Spring Boot + Vue的图书馆座位预约管理系统

图书馆座位预约信息管理系统

项目简介

这是一个基于Spring Boot + Vue的图书馆座位预约管理系统,支持学生预约座位和管理员管理功能。

项目截图



技术栈

后端

  • Spring Boot 2.7.18
  • MySQL 5.7
  • MyBatis Plus 3.5.3.1
  • JDK 8
  • Hutool工具库

前端

  • Vue 2.6.14
  • Element UI (PC端)
  • Vant (移动端)
  • Axios
  • Vuex
  • Vue Router

功能特性

学生端(移动端)

  • 用户注册/登录
  • 选择时间、图书馆、座位进行预约
  • 查看预约记录
  • 生成预约二维码
  • 取消预约

管理员端(PC端)

  • 管理员登录
  • 图书馆管理(增删改查)
  • 座位管理(增删改查)
  • 预约记录管理
  • 扫码验证预约

系统特性

  • 预约冲突检测
  • 自动处理过期预约
  • 流水号自动生成
  • 定时任务处理

项目结构

复制代码
library-reservation-system/
├── backend/                    # Spring Boot后端
│   ├── src/main/java/com/library/
│   │   ├── controller/         # 控制器
│   │   ├── service/           # 服务层
│   │   ├── mapper/            # 数据访问层
│   │   ├── entity/            # 实体类
│   │   ├── dto/               # 数据传输对象
│   │   ├── vo/                # 视图对象
│   │   ├── utils/             # 工具类
│   │   └── config/            # 配置类
│   └── src/main/resources/
│       ├── application.yml    # 配置文件
│       └── mapper/            # MyBatis XML
├── frontend/                   # Vue前端
│   ├── src/
│   │   ├── views/            # 页面组件
│   │   │   ├── mobile/       # 移动端页面
│   │   │   └── admin/        # 管理端页面
│   │   ├── api/              # API接口
│   │   ├── utils/            # 工具函数
│   │   ├── router/           # 路由配置
│   │   └── store/            # 状态管理
│   └── package.json
└── database_design.sql        # 数据库设计

安装部署

1. 环境要求

  • JDK 8+
  • MySQL 5.7+
  • Node.js 14+
  • Maven 3.6+

2. 数据库配置

  1. 创建数据库:
sql 复制代码
CREATE DATABASE library_reservation DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 执行数据库脚本:
bash 复制代码
mysql -u root -p library_reservation < database_design.sql
  1. 修改数据库连接配置(如需要):
    编辑 backend/src/main/resources/application.yml

3. 后端启动

  1. 进入后端目录:
bash 复制代码
cd backend
  1. 使用Maven启动:
bash 复制代码
# 清理并编译
mvn clean compile

# 启动应用
mvn spring-boot:run

或者使用IDE:

  • 导入Maven项目
  • 直接运行 com.library.LibraryApplication 主类

后端服务将在 http://localhost:8080/api 启动

4. 前端启动

  1. 进入前端目录:
bash 复制代码
cd frontend
  1. 安装依赖:
bash 复制代码
# 使用npm
npm install

# 或使用yarn
yarn install
  1. 启动开发服务器:
bash 复制代码
# 使用npm
npm run serve

# 或使用yarn
yarn serve

前端服务将在 http://localhost:3000 启动

5. 验证安装

  1. 访问后端API:http://localhost:8080/api/auth/current
  2. 访问前端页面:http://localhost:3000
  3. 检查数据库连接是否正常

使用说明

默认账号

系统初始化时会创建以下测试账号:

管理员账号:

  • 用户名:admin
  • 密码:admin

学生账号:

  • 用户名:student001
  • 密码:
  • 用户名:student002
  • 密码:student002

访问地址

预约流程

  1. 学生预约:

    • 登录移动端
    • 选择预约时间
    • 选择图书馆
    • 选择可用座位
    • 确认预约
    • 获取预约二维码
  2. 管理员验证:

    • 登录管理端
    • 使用扫码功能
    • 扫描学生二维码
    • 确认签到

预约规则

  1. 同一用户同一时间段只能预约一个座位
  2. 同一座位同一时间段只能被一个用户预约
  3. 预约时间不能是过去时间
  4. 允许迟到签到,但不能超过预约结束时间
  5. 超过预约结束时间未签到将自动标记为"爽约"
  6. 预约时间精确到小时(8:00-22:00),无需选择分钟

API接口

认证接口

  • POST /api/auth/login - 用户登录
  • POST /api/auth/register - 用户注册
  • POST /api/auth/logout - 用户登出
  • GET /api/auth/current - 获取当前用户

图书馆接口

  • GET /api/library/list - 获取图书馆列表
  • GET /api/library/page - 分页查询图书馆
  • POST /api/library - 新增图书馆
  • PUT /api/library/{id} - 更新图书馆
  • DELETE /api/library/{id} - 删除图书馆

座位接口

  • GET /api/seat/library/{libraryId} - 获取图书馆座位
  • GET /api/seat/available - 获取可用座位
  • POST /api/seat - 新增座位
  • PUT /api/seat/{id} - 更新座位
  • DELETE /api/seat/{id} - 删除座位

预约接口

  • POST /api/reservation - 创建预约
  • PUT /api/reservation/{id}/cancel - 取消预约
  • POST /api/reservation/checkin - 扫码签到
  • GET /api/reservation/page - 分页查询预约记录

注意事项

  1. 确保MySQL服务正在运行,端口为33006
  2. 确保数据库连接信息正确
  3. 前端代理配置指向后端服务地址
  4. 移动端和PC端使用不同的UI组件库,会根据设备自动切换
  5. 定时任务每5分钟检查一次过期预约,每天凌晨重置流水号

开发说明

  • 后端使用MyBatis Plus简化数据库操作
  • 前端使用Vuex进行状态管理
  • 支持跨域请求和Session管理
  • 二维码使用QRCode.js生成
  • 时间格式统一使用 yyyy-MM-dd HH:mm:ss

故障排除

  1. 数据库连接失败: 检查MySQL服务状态和连接配置
  2. 前端无法访问后端: 检查代理配置和后端服务状态
  3. 登录失败: 检查用户类型和权限配置
  4. 预约冲突: 检查时间格式和冲突检测逻辑

联系方式

如有问题,请联系开发团队。

🔧 故障排除

前端编译错误修复

如果遇到前端编译错误,请按以下步骤操作:

方法1:使用修复脚本(推荐)
bash 复制代码
双击 fix-frontend.bat
方法2:手动修复
bash 复制代码
cd frontend
# 删除依赖目录
rm -rf node_modules
# 删除锁定文件
rm package-lock.json
# 清理缓存
npm cache clean --force
# 重新安装
npm install
方法3:使用国内镜像
bash 复制代码
npm install --registry=https://registry.npm.taobao.org

后端编译错误修复

bash 复制代码
cd backend
mvn clean compile
# 如果还有问题,查看详细错误
mvn clean compile -X

常见问题

  1. 路由文件找不到:已修复,移除了不存在的 Reservation.vue 引用
  2. 依赖安装失败:使用 fix-frontend.bat 脚本自动修复
  3. 端口被占用:修改 vue.config.js 中的端口配置
  4. 数据库连接失败:检查 MySQL 服务和端口配置

更多详细的故障排除信息请参考:TROUBLESHOOTING.md

首页(导航页面):http://localhost:3000

移动端登录:http://localhost:3000/#/mobile/login

管理端登录:http://localhost:3000/#/admin/login

相关推荐
shhpeng2 小时前
go mod vendor命令详解
开发语言·后端·golang
Java程序员威哥2 小时前
用Java玩转机器学习:协同过滤算法实战(比Python快3倍的工程实现)
java·开发语言·后端·python·算法·spring·机器学习
逍遥德2 小时前
Postgresql 系统表作用解释
数据库·后端·sql·postgresql
小豪GO!2 小时前
Spring-八股
java·spring boot·spring
Trae1ounG3 小时前
Vue生命周期
前端·javascript·vue.js
程序员小李白3 小时前
js数据类型详细解析
前端·javascript·vue.js
lynnlovemin3 小时前
SpringBoot+SSE构建AI实时流式对话系统:原理剖析与代码实战
人工智能·spring boot·后端·ai·sse
这就是佬们吗3 小时前
力扣---leetcode48
java·笔记·后端·算法·leetcode·idea