# 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 bookData = FXCollections.observableArrayList(); TableView 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