You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11 KiB
11 KiB
SLMS Project Overview
Smart Library Management System
Version: 1.0
Last Updated: 2025-11-19
Status: ✅ Production Ready (CLI & GUI)
项目简介
智能图书管理系统(SLMS)是一个多平台图书管理解决方案,支持CLI、GUI、Web和Android四端应用,共享同一SQLite数据库。
核心特性
- 📚 图书管理(增删改查)
- 📖 借阅管理(借阅、归还)
- 👥 用户管理
- 📊 统计报表
- 🔄 跨平台数据同步
四端应用架构
┌─────────────────────────────────────────────────────────┐
│ SLMS 系统架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ CLI │ │ GUI │ │ Web │ │Android │ │
│ │ 应用 │ │ 应用 │ │ 应用 │ │ 应用 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ │
│ │ │ │ │ │
│ └─────────────┴─────────────┴─────────────┘ │
│ │ │
│ ┌────▼────┐ │
│ │ Service │ │
│ │ Layer │ │
│ └────┬────┘ │
│ │ │
│ ┌────▼────┐ │
│ │Database │ │
│ │(SQLite) │ │
│ └─────────┘ │
│ library.db │
└─────────────────────────────────────────────────────────┘
应用状态
| 应用 | 开发状态 | 测试状态 | 部署状态 | 测试通过率 |
|---|---|---|---|---|
| CLI | ✅ 完成 | ✅ 通过 | ✅ 就绪 | 100% (11/11) |
| GUI | ✅ 完成 | ✅ 通过 | ✅ 就绪 | 100% (17/17) |
| Web | ✅ 完成 | ⏳ 待测 | ⏳ 待定 | - |
| Android | ✅ 完成 | ⏳ 待测 | ⏳ 待定 | - |
快速开始
1. 初始化数据库
init_database.bat
2. 运行CLI应用
run_cli.bat
3. 运行GUI应用
run_gui.bat
4. 运行所有测试
run_all_tests.bat
项目结构
SLMS/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/smartlibrary/
│ │ │ ├── cli/ # CLI应用
│ │ │ ├── gui/ # GUI应用
│ │ │ ├── web/ # Web应用
│ │ │ ├── database/ # 数据库层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── model/ # 数据模型
│ │ │ ├── factory/ # 工厂模式
│ │ │ ├── observer/ # 观察者模式
│ │ │ └── notification/ # 通知系统
│ │ └── resources/ # 资源文件
│ └── test/ # 测试代码
├── android/ # Android应用
├── backend/ # 后端服务
├── library.db # SQLite数据库
├── pom.xml # Maven配置
├── build.gradle # Gradle配置
└── *.bat # 运行脚本
技术栈
后端技术
- 语言: Java 21
- 构建工具: Maven 3.x / Gradle 8.5
- 数据库: SQLite 3.36
- Web框架: Spring Boot 2.7.5
- 移动端: Android SDK 34
前端技术
- CLI: Java Console
- GUI: JavaFX 17
- Web: Thymeleaf + Bootstrap
- Android: Material Design 3
设计模式
- Singleton(单例模式)
- Factory(工厂模式)
- Observer(观察者模式)
- Strategy(策略模式)
- MVC(模型-视图-控制器)
数据库设计
表结构
books(图书表)
CREATE TABLE books (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
isbn TEXT UNIQUE NOT NULL,
publisher TEXT,
publish_date TEXT,
category TEXT,
available INTEGER DEFAULT 1,
book_type TEXT
);
users(用户表)
CREATE TABLE users (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
phone TEXT,
registration_date TEXT
);
loans(借阅表)
CREATE TABLE loans (
id TEXT PRIMARY KEY,
book_id TEXT NOT NULL,
user_id TEXT NOT NULL,
borrow_date TEXT NOT NULL,
due_date TEXT NOT NULL,
return_date TEXT,
returned INTEGER DEFAULT 0,
fine_amount REAL DEFAULT 0.0,
FOREIGN KEY (book_id) REFERENCES books(id)
);
当前数据统计
- 图书: 26本(实体书16本,电子书7本,期刊3本)
- 用户: 10个
- 借阅记录: 15条(已归还8条,借阅中7条)
功能清单
✅ 已实现功能
图书管理
- 添加图书
- 查询图书(全部/按ID)
- 更新图书状态
- 图书分类管理
- 图书类型支持(实体书/电子书/期刊)
借阅管理
- 借阅图书
- 归还图书
- 查看借阅记录
- 借阅状态跟踪
- 逾期检测
用户管理
- 用户信息存储
- 用户数据验证
- 联系方式管理
系统功能
- 数据库初始化
- MOCK数据生成
- 数据完整性验证
- 跨平台数据共享
🔄 待实现功能
高优先级
- 用户认证与授权
- 高级搜索功能
- 数据导出(CSV/PDF)
- 自动备份
中优先级
- 图书预约系统
- 罚金自动计算
- 邮件通知集成
- 统计报表
低优先级
- 图书评论与评分
- 推荐系统
- 多语言支持
- 主题定制
测试报告
测试覆盖率
- 总测试数: 28
- 通过: 28 (100%)
- 失败: 0 (0%)
详细报告
性能指标
响应时间
| 操作 | 平均时间 | 评级 |
|---|---|---|
| 数据库连接 | < 100ms | ⭐⭐⭐⭐⭐ |
| 查询图书 | < 50ms | ⭐⭐⭐⭐⭐ |
| 添加图书 | < 50ms | ⭐⭐⭐⭐⭐ |
| 借阅图书 | < 60ms | ⭐⭐⭐⭐⭐ |
| 归还图书 | < 55ms | ⭐⭐⭐⭐⭐ |
资源占用
- 内存: < 100MB
- 磁盘: < 50KB (数据库)
- CPU: < 5% (空闲时)
运行脚本说明
数据库管理
init_database.bat- 初始化数据库和MOCK数据reset_database.bat- 重置数据库(清空所有数据)
应用启动
run_cli.bat- 启动CLI应用run_gui.bat- 启动GUI应用
测试运行
run_tests.bat- 运行CLI测试run_gui_tests.bat- 运行GUI测试run_all_tests.bat- 运行所有测试
Android相关
install_and_test.bat- 安装Android APK并测试debug_crash.bat- Android崩溃调试
开发指南
环境要求
- JDK 21+
- Maven 3.6+
- Android SDK 34 (Android应用)
- JavaFX 17 (GUI应用)
编译项目
mvn clean compile
运行测试
mvn test
打包应用
# CLI/GUI应用
mvn package
# Android应用
cd android
./gradlew assembleDebug
设计模式应用
1. 单例模式(Singleton)
应用: DatabaseConnection
目的: 确保全局只有一个数据库连接实例
public class DatabaseConnection {
private static volatile DatabaseConnection instance;
public static DatabaseConnection getInstance() {
if (instance == null) {
synchronized (DatabaseConnection.class) {
if (instance == null) {
instance = new DatabaseConnection();
}
}
}
return instance;
}
}
2. 工厂模式(Factory)
应用: BookFactoryProvider
目的: 根据类型创建不同的图书对象
public class BookFactoryProvider {
public Book createBook(String type, ...) {
BookFactory factory = getFactory(type);
return factory.createBook(...);
}
}
3. 观察者模式(Observer)
应用: BookStatusManager
目的: 图书状态变更时通知相关观察者
public class BookStatusManager {
private List<Observer> observers = new ArrayList<>();
public void notifyObservers(Book book, EventType event) {
for (Observer observer : observers) {
observer.update(book, event);
}
}
}
4. 策略模式(Strategy)
应用: Notification接口
目的: 支持多种通知方式(邮件、短信、应用内)
public interface Notification {
boolean sendNotification(String recipient, String subject, String content);
}
贡献指南
代码规范
- 遵循Java命名规范
- 使用有意义的变量名
- 添加必要的注释
- 保持代码简洁
提交规范
- 提交前运行测试
- 编写清晰的提交信息
- 一次提交解决一个问题
分支策略
main- 生产分支develop- 开发分支feature/*- 功能分支bugfix/*- 修复分支
常见问题
Q: 如何重置数据库?
A: 运行 reset_database.bat
Q: GUI应用无法启动?
A: 确保安装了JavaFX,运行 mvn javafx:run
Q: 数据不同步?
A: 所有应用共享同一个 library.db 文件,确保文件未被锁定
Q: 如何添加新的图书类型?
A: 在 BookFactoryProvider 中添加新的工厂类
许可证
本项目仅用于教育和学习目的。
联系方式
- 项目: Smart Library Management System
- 版本: 1.0
- 团队: SmartLibrary Development Team
- 更新: 2025-11-19
更新日志
Version 1.0 (2025-11-19)
- ✅ 完成CLI应用开发和测试
- ✅ 完成GUI应用开发和测试
- ✅ 实现数据库共享机制
- ✅ 添加MOCK数据生成
- ✅ 完成综合测试报告
- ✅ 创建运行脚本和文档
下一版本计划
- 🔄 Web应用测试
- 🔄 Android应用测试
- 🔄 用户认证系统
- 🔄 高级搜索功能