一个基于 Java Swing 的图书借阅管理系统,支持 H2 演示数据库和 MySQL 生产环境。
project/
├── bin/ # 编译输出目录(自动生成)
├── lib/ # 项目依赖库
├── src/ # Java 源代码
├── sql/ # 数据库初始化脚本
│ ├── h2_schema.sql # H2 数据库初始化脚本
│ └── mysql_schema.sql # MySQL 数据库初始化脚本
├── data/ # 数据文件存储
│ └── library_db.mv.db # H2 内嵌数据库(自动生成)
├── doc/ # 文档目录
│ └── README.md # 本文件
├── 编译运行.bat # 一键编译并运行(H2 演示版)
└── 直接运行.bat # 直接运行已编译的程序(H2 演示版)
H2 是内嵌数据库,无需安装,包含演示数据。
-
首次使用 - 双击运行:
编译运行.bat系统会自动编译并启动应用,首次运行时自动初始化演示数据。
-
后续运行 - 双击运行:
直接运行.bat启动已编译的程序。
需要先安装并配置 MySQL,然后才能使用。
下载并安装 MySQL 8.0 或更高版本,记住你的:
- 用户名(默认:
root) - 密码
打开 src/DBUtil.java,修改以下配置:
// 第 19 行:改为 false 使用 MySQL
public static final boolean USE_H2 = false;
// 第 27-30 行:修改为你的 MySQL 账户信息
private static final String MYSQL_USER = "root"; // 你的用户名
private static final String MYSQL_PASSWORD = "123456"; // 你的密码在 MySQL 命令行中执行:
# 1. 登录 MySQL
mysql -u root -p
# 2. 创建数据库(输入你的密码)
CREATE DATABASE library_db CHARACTER SET utf8mb4;
USE library_db;
# 3. 执行初始化脚本
SOURCE sql/mysql_schema.sql;或者用一条命令完成:
mysql -u root -p123456 library_db < sql/mysql_schema.sqljavac -encoding UTF-8 -cp "lib/*" -d bin src\*.java
java -cp "lib/*;bin" LibraryApp| 特性 | H2 演示版 | MySQL 生产版 |
|---|---|---|
| 是否需要安装 | ❌ 不需要 | ✅ 需要安装 |
| 配置复杂度 | 🟢 零配置 | 🟡 需要配置 |
| 演示数据 | ✅ 包含 | ✅ 需手动导入 |
| 适用场景 | 学习演示 | 实际部署 |
| 性能 | 中等 | 生产级 |
| 数据持久化 | 本地文件 | MySQL 服务器 |
- 📚 图书管理 - 添加、编辑、删除、查询图书
- 👥 读者管理 - 管理读者信息和联系方式
- 📋 借阅管理 - 记录借阅历史、归还状态
- 🔍 高级查询 - 按分类、作者、状态等条件查询
- 计算机、文学、历史、经济、自然科学
- Java核心技术、深入理解Java虚拟机、Spring实战等
- 张三、李四、王五、赵六、钱七
- 包括已归还、借阅中、已逾期等各类状态
原因:数据库连接失败
解决:
- H2 版本:确保
DBUtil.java第 19 行为USE_H2 = true - MySQL 版本:
- 检查 MySQL 服务是否启动
- 验证用户名和密码
- 确保数据库
library_db已创建 - 运行
sql/mysql_schema.sql初始化表
原因:数据库连接问题或表不存在
解决:
- 重新初始化数据库
- 检查表是否都成功创建
- 查看终端错误信息
原因:字符编码不匹配
解决:
- 确保 MySQL 使用
utf8mb4编码 - 重新编译时使用:
javac -encoding UTF-8 ...
| 类名 | 功能 |
|---|---|
LibraryApp |
程序入口 |
MainFrame |
主窗口框架 |
DBUtil |
数据库连接管理 |
BookDAO/ReaderDAO/BorrowDAO |
数据访问对象 |
BookPanel/ReaderPanel/BorrowPanel |
界面面板 |
- H2 Database - 内嵌关系型数据库
- MySQL Connector/J - MySQL JDBC 驱动
- Swing - Java GUI 框架(JDK 内置)
本项目仅供学习使用。
如有问题,请查看源代码中的注释或检查终端输出的错误信息。