在线图书借阅平台的设计与实现
一、需求分析与规划
1.1 功能需求
在线图书借阅平台旨在解决传统图书馆线下借阅效率低、用户查询不便等问题,目标用户覆盖在校师生及公共图书馆读者。通过需求调研,平台需实现五大核心功能模块:
| 模块名称 | 核心功能点 | 用户角色 |
|---|---|---|
| 用户管理 | 注册(含邮箱验证)、登录(密码加密)、个人信息维护、角色权限分级 | 所有用户 |
| 图书检索 | 支持关键词、分类、库存状态多条件组合查询 | 所有用户 |
| 借阅管理 | 借书申请、续借操作、归还确认 | 普通用户 |
| 逾期管理 | 自动计算逾期天数、生成违约金、黑名单控制 | 系统自动/管理员 |
| 数据统计 | 借阅量报表、热门图书排行、用户活跃度分析 | 管理员 |
技术选型依据:
- 后端:Spring Boot 2.7(快速构建 RESTful API)、MyBatis-Plus(简化数据库 CRUD)、JWT(用户认证令牌)、BCrypt(密码加密)
- 前端:Vue 3 + Element Plus
- 数据库:MySQL 8.0(支持事务、索引优化及复杂查询)
- 开发工具:AI 辅助工具(用于生成基础代码与逻辑)
1.2 核心流程
系统主要涉及用户注册登录、图书检索、借阅申请、库存校验及逾期处理等关键流程。借阅时需校验库存并生成记录,到期前系统自动触发提醒,逾期则计算违约金。
二、核心模块实现
2.1 用户认证模块
实体类使用 Lombok 注解简化代码,控制器负责注册与登录逻辑的编写。密码存储采用 BCrypt 加密,登录成功后生成 JWT 令牌返回给前端。
// 实体类 User.java
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password; // 实际存储 BCrypt 加密值
private String email;
private Integer role; // 0-普通用户,1-管理员
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}
// 控制器 UserController.java
{
UserService userService;
Result {
(userService.checkUsernameExists(dto.getUsername())) {
Result.error();
}
();
user.setUsername(dto.getUsername());
user.setPassword(BCrypt.hashpw(dto.getPassword(), BCrypt.gensalt()));
user.setEmail(dto.getEmail());
user.setRole();
user.setCreateTime(LocalDateTime.now());
userService.save(user);
Result.success();
}
Result {
userService.getByUsername(dto.getUsername());
(user == || !BCrypt.checkpw(dto.getPassword(), user.getPassword())) {
Result.error();
}
JwtUtil.generateToken(user.getId(), user.getRole());
Result.success(token);
}
}


