这是一个基于Java和MySQL的图书馆管理系统,采用四层架构设计(Model、DAO、Service、UI),实现了图书管理、读者管理、借阅管理、罚款管理等核心功能。
- Java 21
- MySQL 8.0+
- Spring Boot 3.2.0
- JDBC
- Maven
- HTML/CSS/JavaScript (前端)
本项目采用经典的四层架构设计,代码结构清晰,职责分明,便于维护和扩展。
SEproject/
│
├── src/main/java/org/example/
│ │
│ ├── 📦 model/ # 实体类层(Model Layer)
│ │ │ └── 职责:定义数据实体,对应数据库表结构
│ │ ├── Admin.java # 管理员实体
│ │ ├── Book.java # 图书实体
│ │ ├── BookCategory.java # 图书类别实体
│ │ ├── BorrowRecord.java # 借阅记录实体
│ │ ├── PenaltyRecord.java # 罚款记录实体
│ │ └── Reader.java # 读者实体
│ │
│ ├── 🗄️ dao/ # 数据访问层(Data Access Object Layer)
│ │ │ └── 职责:封装数据库操作,提供CRUD方法
│ │ ├── AdminDAO.java # 管理员数据访问
│ │ ├── BookDAO.java # 图书数据访问
│ │ ├── BookCategoryDAO.java # 图书类别数据访问
│ │ ├── BorrowRecordDAO.java # 借阅记录数据访问
│ │ ├── PenaltyRecordDAO.java # 罚款记录数据访问
│ │ └── ReaderDAO.java # 读者数据访问
│ │
│ ├── ⚙️ service/ # 业务逻辑层(Service Layer)
│ │ │ └── 职责:实现核心业务逻辑,处理业务规则
│ │ ├── AdminService.java # 管理员业务逻辑
│ │ ├── BookService.java # 图书业务逻辑
│ │ ├── BookCategoryService.java # 图书类别业务逻辑
│ │ ├── BorrowService.java # 借阅业务逻辑(核心)
│ │ ├── PenaltyService.java # 罚款业务逻辑
│ │ └── ReaderService.java # 读者业务逻辑
│ │
│ ├── 🌐 controller/ # Web控制器层(Controller Layer)
│ │ │ └── 职责:处理HTTP请求,返回JSON响应
│ │ ├── AdminController.java # 管理员功能接口
│ │ ├── AuthController.java # 认证接口(登录/注册/登出)
│ │ ├── PageController.java # 页面路由控制器
│ │ └── ReaderController.java # 读者功能接口
│ │
│ ├── 🛠️ util/ # 工具类层(Utility Layer)
│ │ │ └── 职责:提供通用工具方法
│ │ └── DBUtil.java # 数据库连接工具类
│ │
│ ├── 🚀 LibraryApplication.java # Spring Boot启动类(Web版本,当前使用)
│ │
│ ├── 📝 Main.java # 控制台版本入口
│ └── 🖥️ ui/ # 控制台UI界面
│ ├── AdminUI.java # 管理员控制台界面
│ ├── LoginUI.java # 登录控制台界面
│ └── ReaderUI.java # 读者控制台界面
│ │
│ └── src/main/resources/
│ ├── application.properties # 应用配置文件
│ ├── init_database.sql # 数据库初始化脚本
│ ├── static/ # 静态资源
│ │ ├── css/ # 样式文件
│ │ └── js/ # JavaScript文件
│ └── templates/ # HTML模板
│ ├── admin.html # 管理员界面
│ ├── login.html # 登录界面
│ ├── reader.html # 读者界面
│ └── register.html # 注册界面
│
└── pom.xml # Maven项目配置文件
| 层级 | 职责 | 主要功能 |
|---|---|---|
| Model | 数据模型 | 定义实体类,映射数据库表结构 |
| DAO | 数据访问 | 封装SQL操作,提供数据持久化接口 |
| Service | 业务逻辑 | 实现业务规则,处理复杂业务逻辑 |
| Controller | 请求处理 | 接收HTTP请求,调用Service,返回JSON响应 |
| Util | 工具支持 | 提供数据库连接等通用工具方法 |
前端请求 → Controller → Service → DAO → Database
↓ ↓ ↓
JSON响应 ← 业务逻辑 ← 数据操作
执行 src/main/resources/init_database.sql 脚本创建数据库和表结构,并初始化测试数据。
编辑 src/main/resources/application.properties,修改以下配置:
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
spring.datasource.username=root # 修改为你的MySQL用户名
spring.datasource.password=your_password # 修改为你的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver注意:
allowPublicKeyRetrieval=true参数用于解决MySQL 8.0+版本的连接问题。
- 图书管理:添加、修改、删除、查询图书信息
- 读者管理:添加、修改、删除、查询读者信息,重置读者密码
- 借阅管理:查询读者借阅记录,查看逾期信息
- 个人信息:查看和修改个人信息及密码
- 借还书:借阅图书(系统自动检查罚款和逾期),归还图书(自动计算逾期罚款)
- 图书查询:查看所有图书,按书名或类别搜索
- 借阅查询:查看当前借阅和历史借阅记录
- 罚款管理:查询罚款记录,缴纳罚款
- 个人信息:查看和修改个人信息及密码
- 检查读者是否有未支付的罚款,如有则不允许借书
- 检查读者是否有逾期未还的图书,如有则不允许借书
- 检查图书库存是否大于0
- 借阅期限为30天
- 借书成功后,图书库存自动减1
- 如果逾期,系统自动生成罚款记录
- 每日罚款金额:0.5元
- 还书成功后,图书库存自动加1
- 逾期图书必须先缴纳罚款才能继续借书
- ID: ADMIN001
- 密码: admin123
- ID: READER001
- 密码: reader123
- ID: READER002
- 密码: reader123
- 确保MySQL服务已启动
- 执行数据库初始化脚本
src/main/resources/init_database.sql - 修改数据库连接配置:编辑
src/main/resources/application.properties,修改数据库用户名和密码 - 下载Maven依赖:在IDEA中右键点击
pom.xml-> Maven -> Reload Project,或者运行命令:mvn clean install
- 启动Web应用:运行
src/main/java/org/example/LibraryApplication.java - 访问系统:在浏览器中打开
http://localhost:8080 - 使用测试账号登录系统
说明:系统最初开发了控制台版本(命令行界面),后来升级为Web版本(浏览器界面)。控制台版本的代码(
Main.java和ui/目录)已不再维护和更新,但保留在项目中仅作参考。强烈建议使用Web版本,功能更完善,界面更友好。
如果确实需要使用控制台版本,可以运行 src/main/java/org/example/Main.java,但请注意:
- 控制台版本功能可能不完整
- 不再提供技术支持和更新
- Web版本是当前主要维护的版本
- 请确保MySQL版本为8.0或以上
- 确保MySQL中已创建对应的数据库用户和权限
- 首次运行前请先执行数据库初始化脚本
- 数据库连接配置需要根据实际情况修改
本项目采用标准的四层架构设计:
- Model层: 实体类,对应数据库表结构
- DAO层: 数据访问层,封装所有数据库操作
- Service层: 业务逻辑层,实现核心业务规则
- UI层: 用户界面层,负责与用户交互
- Util层: 工具类层,提供数据库连接等工具方法
这种分层设计使得代码结构清晰,易于维护和扩展。