|
|
# SLMS GUI Application Guide
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
智能图书管理系统(SLMS)的图形用户界面(GUI)应用,基于JavaFX 17开发,提供直观的图书和借阅管理功能。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 系统要求
|
|
|
|
|
|
- **Java**: JDK 21
|
|
|
- **JavaFX**: 17 (通过Maven自动下载)
|
|
|
- **数据库**: SQLite (library.db)
|
|
|
- **操作系统**: Windows / macOS / Linux
|
|
|
|
|
|
---
|
|
|
|
|
|
## 快速启动
|
|
|
|
|
|
### 方法1: 使用批处理脚本(推荐)
|
|
|
```bash
|
|
|
run_gui.bat
|
|
|
```
|
|
|
|
|
|
### 方法2: 使用Maven命令
|
|
|
```bash
|
|
|
mvn javafx:run
|
|
|
```
|
|
|
|
|
|
### 方法3: 手动编译运行
|
|
|
```bash
|
|
|
# 设置Java环境
|
|
|
set JAVA_HOME=E:\2025-2026\GitAIOps\jdk
|
|
|
|
|
|
# 编译项目
|
|
|
mvn clean compile
|
|
|
|
|
|
# 运行GUI应用
|
|
|
mvn javafx:run
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
### 📚 图书管理
|
|
|
- **查看图书列表**: 显示所有图书的详细信息
|
|
|
- **添加图书**: 通过表单添加新图书
|
|
|
- 支持实体书、电子书、期刊三种类型
|
|
|
- 自动生成图书ID
|
|
|
- ISBN唯一性验证
|
|
|
- **搜索图书**: 根据图书ID快速查找
|
|
|
- **刷新列表**: 实时更新图书数据
|
|
|
|
|
|
### 📖 借阅管理
|
|
|
- **借阅图书**:
|
|
|
- 输入图书ID和用户ID
|
|
|
- 自动检查图书可用性
|
|
|
- 设置30天借阅期限
|
|
|
- 更新图书状态
|
|
|
- **归还图书**:
|
|
|
- 输入图书ID
|
|
|
- 自动更新图书状态
|
|
|
- 记录归还日期
|
|
|
- **查看借阅记录**: 显示所有借阅历史
|
|
|
- 区分已归还和借阅中状态
|
|
|
- 显示借阅日期和应还日期
|
|
|
|
|
|
---
|
|
|
|
|
|
## 界面布局
|
|
|
|
|
|
### 主窗口
|
|
|
```
|
|
|
┌─────────────────────────────────────────────────────────┐
|
|
|
│ 文件 图书 帮助 │
|
|
|
├─────────────────────────────────────────────────────────┤
|
|
|
│ ┌─────────────┬─────────────────────────────────────┐ │
|
|
|
│ │ 图书管理 │ 借阅管理 │ │
|
|
|
│ └─────────────┴─────────────────────────────────────┘ │
|
|
|
│ │
|
|
|
│ [添加图书] [搜索图书] [刷新] │
|
|
|
│ │
|
|
|
│ ┌─────────────────────────────────────────────────────┐│
|
|
|
│ │ ID │ 书名 │ 作者 │ ISBN │ 出版社 │ 状态 │ 类型 ││
|
|
|
│ ├─────┼──────┼──────┼──────┼────────┼──────┼────────┤│
|
|
|
│ │B001 │Java..│Bruce.│978...│机械... │可借 │实体书 ││
|
|
|
│ │B002 │设计..│Erich.│978...│机械... │可借 │实体书 ││
|
|
|
│ │... │... │... │... │... │... │... ││
|
|
|
│ └─────────────────────────────────────────────────────┘│
|
|
|
├─────────────────────────────────────────────────────────┤
|
|
|
│ 就绪 │
|
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
```
|
|
|
|
|
|
### 菜单栏
|
|
|
- **文件**: 退出应用
|
|
|
- **图书**: 快速添加图书
|
|
|
- **帮助**: 关于信息
|
|
|
|
|
|
### 选项卡
|
|
|
1. **图书管理**: 图书的增删改查
|
|
|
2. **借阅管理**: 借阅和归还操作
|
|
|
|
|
|
---
|
|
|
|
|
|
## 使用指南
|
|
|
|
|
|
### 添加图书
|
|
|
1. 点击"添加图书"按钮或菜单"图书 → 添加图书"
|
|
|
2. 在对话框中填写图书信息:
|
|
|
- 图书类型:实体书/电子书/期刊
|
|
|
- 书名
|
|
|
- 作者
|
|
|
- ISBN
|
|
|
- 出版社
|
|
|
- 出版日期
|
|
|
- 分类
|
|
|
3. 点击"添加"按钮
|
|
|
4. 系统自动刷新图书列表
|
|
|
|
|
|
### 搜索图书
|
|
|
1. 点击"搜索图书"按钮
|
|
|
2. 输入图书ID(如:B001)
|
|
|
3. 查看图书详细信息
|
|
|
|
|
|
### 借阅图书
|
|
|
1. 切换到"借阅管理"选项卡
|
|
|
2. 点击"借阅图书"按钮
|
|
|
3. 输入:
|
|
|
- 图书ID(如:B001)
|
|
|
- 用户ID(如:U1001)
|
|
|
4. 点击"确定"
|
|
|
5. 系统自动:
|
|
|
- 更新图书状态为"已借出"
|
|
|
- 创建借阅记录
|
|
|
- 设置30天后的应还日期
|
|
|
|
|
|
### 归还图书
|
|
|
1. 在"借阅管理"选项卡
|
|
|
2. 点击"归还图书"按钮
|
|
|
3. 输入图书ID
|
|
|
4. 点击"确定"
|
|
|
5. 系统自动:
|
|
|
- 更新图书状态为"可借"
|
|
|
- 更新借阅记录为"已归还"
|
|
|
- 记录归还日期
|
|
|
|
|
|
---
|
|
|
|
|
|
## 数据共享
|
|
|
|
|
|
GUI应用与其他三端应用共享同一个SQLite数据库(`library.db`):
|
|
|
|
|
|
| 应用 | 状态 | 数据访问方式 |
|
|
|
|------|------|--------------|
|
|
|
| CLI应用 | ✅ 已测试 | 直接SQLite访问 |
|
|
|
| GUI应用 | ✅ 已测试 | 直接SQLite访问 |
|
|
|
| Web应用 | 🔄 就绪 | JDBC连接池 |
|
|
|
| Android应用 | 🔄 就绪 | SQLite Android API |
|
|
|
|
|
|
所有应用的数据实时同步,无需手动刷新。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 测试报告
|
|
|
|
|
|
### 运行测试
|
|
|
```bash
|
|
|
run_gui_tests.bat
|
|
|
```
|
|
|
|
|
|
### 测试结果
|
|
|
- ✅ 所有测试通过:17/17 (100%)
|
|
|
- ✅ 图书管理功能正常
|
|
|
- ✅ 借阅管理功能正常
|
|
|
- ✅ 数据库同步正常
|
|
|
- ✅ JavaFX数据绑定正常
|
|
|
|
|
|
详细测试报告:[GUI_TEST_REPORT.md](GUI_TEST_REPORT.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
## 技术架构
|
|
|
|
|
|
### 前端层
|
|
|
- **JavaFX 17**: UI框架
|
|
|
- **FXML**: 界面布局(可选)
|
|
|
- **CSS**: 样式定制(可选)
|
|
|
|
|
|
### 业务层
|
|
|
- **BookService**: 图书业务逻辑
|
|
|
- **工厂模式**: 图书对象创建
|
|
|
- **观察者模式**: 状态变更通知
|
|
|
|
|
|
### 数据层
|
|
|
- **DatabaseConnection**: 单例模式数据库连接
|
|
|
- **SQLite**: 轻量级数据库
|
|
|
- **JDBC**: 数据库访问
|
|
|
|
|
|
### 数据绑定
|
|
|
```java
|
|
|
ObservableList<Book> bookData = FXCollections.observableArrayList();
|
|
|
TableView<Book> bookTable = new TableView<>();
|
|
|
bookTable.setItems(bookData);
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
### Q: 启动时提示找不到JavaFX模块?
|
|
|
**A**: Maven会自动下载JavaFX依赖,确保网络连接正常。
|
|
|
|
|
|
### Q: 窗口显示乱码?
|
|
|
**A**: 确保系统编码设置为UTF-8:
|
|
|
```bash
|
|
|
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
|
|
|
```
|
|
|
|
|
|
### Q: 数据不显示?
|
|
|
**A**:
|
|
|
1. 确保`library.db`文件存在
|
|
|
2. 运行`init_database.bat`初始化数据
|
|
|
3. 点击"刷新"按钮
|
|
|
|
|
|
### Q: 添加图书失败?
|
|
|
**A**: 检查:
|
|
|
1. ISBN是否重复
|
|
|
2. 所有必填字段是否填写
|
|
|
3. 数据库文件是否有写权限
|
|
|
|
|
|
---
|
|
|
|
|
|
## 性能优化
|
|
|
|
|
|
### 已实现
|
|
|
- ✅ 数据库连接池(单例模式)
|
|
|
- ✅ 懒加载数据
|
|
|
- ✅ 异步数据刷新
|
|
|
- ✅ 内存缓存
|
|
|
|
|
|
### 建议优化
|
|
|
- 🔄 分页加载大量数据
|
|
|
- 🔄 虚拟滚动表格
|
|
|
- 🔄 后台线程处理耗时操作
|
|
|
- 🔄 数据预加载
|
|
|
|
|
|
---
|
|
|
|
|
|
## 开发信息
|
|
|
|
|
|
- **开发语言**: Java 21
|
|
|
- **UI框架**: JavaFX 17
|
|
|
- **构建工具**: Maven 3.x
|
|
|
- **数据库**: SQLite 3.36
|
|
|
- **设计模式**: 单例、工厂、观察者、MVC
|
|
|
|
|
|
---
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
- [CLI测试报告](CLI_TEST_REPORT.md)
|
|
|
- [GUI测试报告](GUI_TEST_REPORT.md)
|
|
|
- [Android开发总结](Android开发总结文档.md)
|
|
|
- [项目README](README.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
## 联系方式
|
|
|
|
|
|
如有问题或建议,请联系开发团队。
|
|
|
|
|
|
**版本**: 1.0
|
|
|
**更新日期**: 2025-11-19
|