# BookManager **Repository Path**: blindst/book-manager ## Basic Information - **Project Name**: BookManager - **Description**: 用于提交课设的图书管理系统模板,技术栈java、MySQL、swing - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-09 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书借阅管理系统(BookManager) 基于 Java SE + JDBC + MySQL 的图书借阅管理系统,采用标准三层架构,支持控制台和 Swing 图形双前端。 ## 项目结构 ``` BookManager/ ├── pom.xml # Maven 配置 ├── src/ │ ├── main/ │ │ ├── java/com/bookmanager/ │ │ │ ├── App.java # 程序入口(含前端切换开关) │ │ │ ├── model/ # 模型层 - 实体类 │ │ │ │ ├── Admin.java # 管理员 │ │ │ │ ├── Book.java # 图书 │ │ │ │ ├── Borrow.java # 借阅记录 │ │ │ │ ├── Category.java # 图书分类 │ │ │ │ └── Reader.java # 读者 │ │ │ ├── dao/ # 数据访问层 - JDBC操作 │ │ │ │ ├── AdminDao.java │ │ │ │ ├── BookDao.java │ │ │ │ ├── BorrowDao.java │ │ │ │ ├── CategoryDao.java │ │ │ │ └── ReaderDao.java │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ ├── AdminService.java │ │ │ │ ├── BookService.java │ │ │ │ ├── BorrowService.java # 核心:借还书事务 │ │ │ │ ├── CategoryService.java │ │ │ │ └── ReaderService.java │ │ │ ├── view/ # 表现层 - 控制台前端 │ │ │ │ ├── LoginView.java │ │ │ │ ├── AdminView.java │ │ │ │ └── ReaderView.java │ │ │ ├── view/swing/ # 表现层 - Swing图形前端 │ │ │ │ ├── SwingLoginView.java │ │ │ │ ├── SwingAdminView.java │ │ │ │ └── SwingReaderView.java │ │ │ └── util/ # 工具类 │ │ │ ├── DBUtil.java # 数据库连接工具 │ │ │ └── InputUtil.java # 输入校验工具 │ │ └── resources/ │ │ └── db.properties.example # 数据库配置模板 │ └── test/java/com/bookmanager/ │ ├── BlackBoxTest.java # 黑盒测试(26个用例) │ └── WhiteBoxTest.java # 白盒测试(27个用例) └── sql/ └── database.sql # 数据库建表脚本 + 测试数据 ``` ## 环境要求 | 项目 | 版本要求 | |------|----------| | JDK | 21+ | | Maven | 3.9+ | | MySQL | 8.0+ | ## 快速开始 ### 1. 克隆项目 ```bash git clone <仓库地址> cd BookManager ``` ### 2. 配置数据库 ```bash # 登录 MySQL,执行建表脚本 mysql -u root -p < sql/database.sql ``` 该脚本会自动创建 `java2_library` 数据库、5张表和测试数据。 ### 3. 配置数据库连接 ```bash # 复制配置模板 cp src/main/resources/db.properties.example src/main/resources/db.properties ``` 编辑 `db.properties`,填入你的 MySQL 用户名和密码: ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/java2_library?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&characterEncoding=utf8 jdbc.username=你的用户名 jdbc.password=你的密码 ``` ### 4. 编译运行 ```bash # 编译 mvn compile # 运行(默认启动 Swing 图形界面) mvn exec:java ``` ### 5. 切换前端 编辑 `src/main/java/com/bookmanager/App.java`: ```java /** 切换开关:true=Swing图形界面,false=控制台界面 */ public static final boolean USE_GUI = true; // 改为 false 切换到控制台 ``` ### 6. 运行测试 ```bash mvn test ``` ## 测试账号 数据库初始化后包含以下测试账号: | 角色 | 账号 | 密码 | |------|------|------| | 管理员 | admin | 123456 | | 读者 | R001 | 123456 | | 读者 | R002 | 123456 | | 读者 | R003 | 123456 | ## 核心功能 ### 管理员功能 - 图书分类管理(CRUD) - 图书管理(CRUD + 按名称搜索) - 读者管理(CRUD) - 借阅管理(借书 / 还书 / 查看所有记录) - 逾期记录查看 ### 读者功能 - 查看所有图书 - 按名称搜索图书 - 自助借书 - 自助还书 - 查看当前借阅 / 借阅历史 ### 业务规则 - 借书前7步校验:读者存在 → 状态正常 → 图书存在 → 未重复借阅 → 未达上限 → 库存充足 → 事务写入 - 还书事务控制:更新归还日期 + 恢复库存,原子操作 - 逾期自动检测:应还日期早于当天即判定逾期 - 库存乐观锁:`WHERE available_stock > 0` 防止并发超卖 ## 架构设计 ``` ┌─────────────────────────────────────────────┐ │ 表现层 (View) │ │ 控制台前端 ←──USE_GUI切换──→ Swing图形前端 │ ├─────────────────────────────────────────────┤ │ 业务逻辑层 (Service) │ │ AdminService | BookService | ReaderService │ │ CategoryService | BorrowService │ ├─────────────────────────────────────────────┤ │ 数据访问层 (DAO) │ │ AdminDao | BookDao | ReaderDao │ │ CategoryDao | BorrowDao │ ├─────────────────────────────────────────────┤ │ 模型层 (Model) + MySQL │ │ Admin | Book | Reader | Category | Borrow │ └─────────────────────────────────────────────┘ ``` ## 数据库设计 5张表,E-R关系如下: ``` admin(独立实体) category ──1:N── book reader ──1:N── borrow ──N:1── book ``` 详见 `sql/database.sql`。 ## 许可证 本项目仅供学习交流使用。