图书管理系统是基于 Spring Boot 3 与 Vue 3 的课程设计项目,面向中小型图书馆、院系资料室和社团书库等场景。系统覆盖图书编目、读者管理、借阅归还、续借、罚款、采购入库、借阅规则配置和统计看板。
- 后端:Java 21、Spring Boot 3.2、MyBatis-Plus、Spring Security、JWT
- 前端:Vue 3、TypeScript、Vite、Element Plus、ECharts、Pinia
- 数据库:MySQL 8.0
- 测试:JUnit、Maven、接口验证脚本
- 仪表盘:馆藏、借阅趋势、分类分布、热门图书统计。
- 图书管理:图书增删改查、分类维护、库存跟踪、下架与重新上架。
- 读者管理:读者注册、冻结与解冻、挂失处理、读者类型管理。
- 借阅管理:借书、还书、续借、逾期检查、库存同步。
- 罚款管理:罚款查看、部分或全额缴纳、罚款减免。
- 借阅规则:按读者类型配置最大借阅数量、借阅天数、续借次数、罚款规则。
- 采购入库:记录采购批次并自动增加库存。
- 用户管理:账号启停、密码重置和角色控制。
- 图书检索:按标题、作者、ISBN 和分类筛选。
- 图书详情:展示馆藏状态、可借数量和基础信息。
- 我的借阅:查看当前借阅、历史借阅、续借状态和罚款信息。
| 规则 | STUDENT | TEACHER | EXTERNAL |
|---|---|---|---|
| 最大借阅数 | 10 | 20 | 5 |
| 借阅天数 | 30 | 60 | 14 |
| 最大续借次数 | 1 | 2 | 0 |
| 续借天数 | 15 | 30 | - |
| 逾期罚款/天 | 0.50 | 0.30 | 1.00 |
系统会拦截以下异常场景:
- 读者被冻结、挂失、证件过期、存在逾期图书或未缴罚款。
- 图书已下架或库存不足。
- 续借次数超过规则限制。
- 并发借阅导致库存竞争。
docker run -d --name library-mysql \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=library_system \
-e MYSQL_USER=library \
-e MYSQL_PASSWORD=library123 \
-p 3306:3306 \
--restart unless-stopped \
mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_cicd backend
mvn spring-boot:run后端默认运行在 http://localhost:8088。首次启动会自动建表并写入演示数据。
cd frontend
npm install
npm run dev前端默认运行在 http://localhost:5173,并通过 Vite 代理访问后端接口。
| 角色 | 用户名 | 密码 | 读者类型 | 权限 |
|---|---|---|---|---|
| 管理员 | admin |
admin123 |
- | 完整管理权限 |
| 读者 | reader01 |
reader123 |
STUDENT | 学生借阅规则 |
| 读者 | reader02 |
reader123 |
STUDENT | 学生借阅规则 |
| 读者 | teacher01 |
teacher123 |
TEACHER | 教师借阅规则 |
cd backend
mvn test测试使用事务回滚,不污染数据库。测试覆盖登录、借阅规则、借书、还书、续借、冻结读者、挂失读者和下架图书等场景。
bash scripts/test-api.sh接口验证脚本覆盖认证、图书、读者、借阅、罚款、规则、采购和统计接口。
library-management-system/
├── backend/
│ ├── src/main/java/com/library/
│ │ ├── config/
│ │ ├── controller/
│ │ ├── service/
│ │ ├── mapper/
│ │ ├── entity/
│ │ ├── dto/
│ │ ├── vo/
│ │ ├── common/
│ │ ├── exception/
│ │ └── util/
│ └── src/main/resources/
│ ├── application.yml
│ └── db/schema.sql
├── frontend/
│ └── src/
│ ├── api/
│ ├── layouts/
│ ├── pages/
│ ├── router/
│ ├── store/
│ └── types/
└── scripts/
└── test-api.sh
本项目基于 MIT License 开源。