|
|
# 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. 初始化数据库
|
|
|
```bash
|
|
|
init_database.bat
|
|
|
```
|
|
|
|
|
|
### 2. 运行CLI应用
|
|
|
```bash
|
|
|
run_cli.bat
|
|
|
```
|
|
|
|
|
|
### 3. 运行GUI应用
|
|
|
```bash
|
|
|
run_gui.bat
|
|
|
```
|
|
|
|
|
|
### 4. 运行所有测试
|
|
|
```bash
|
|
|
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(图书表)
|
|
|
```sql
|
|
|
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(用户表)
|
|
|
```sql
|
|
|
CREATE TABLE users (
|
|
|
id TEXT PRIMARY KEY,
|
|
|
name TEXT NOT NULL,
|
|
|
email TEXT UNIQUE,
|
|
|
phone TEXT,
|
|
|
registration_date TEXT
|
|
|
);
|
|
|
```
|
|
|
|
|
|
#### loans(借阅表)
|
|
|
```sql
|
|
|
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条)
|
|
|
|
|
|
---
|
|
|
|
|
|
## 功能清单
|
|
|
|
|
|
### ✅ 已实现功能
|
|
|
|
|
|
#### 图书管理
|
|
|
- [x] 添加图书
|
|
|
- [x] 查询图书(全部/按ID)
|
|
|
- [x] 更新图书状态
|
|
|
- [x] 图书分类管理
|
|
|
- [x] 图书类型支持(实体书/电子书/期刊)
|
|
|
|
|
|
#### 借阅管理
|
|
|
- [x] 借阅图书
|
|
|
- [x] 归还图书
|
|
|
- [x] 查看借阅记录
|
|
|
- [x] 借阅状态跟踪
|
|
|
- [x] 逾期检测
|
|
|
|
|
|
#### 用户管理
|
|
|
- [x] 用户信息存储
|
|
|
- [x] 用户数据验证
|
|
|
- [x] 联系方式管理
|
|
|
|
|
|
#### 系统功能
|
|
|
- [x] 数据库初始化
|
|
|
- [x] MOCK数据生成
|
|
|
- [x] 数据完整性验证
|
|
|
- [x] 跨平台数据共享
|
|
|
|
|
|
### 🔄 待实现功能
|
|
|
|
|
|
#### 高优先级
|
|
|
- [ ] 用户认证与授权
|
|
|
- [ ] 高级搜索功能
|
|
|
- [ ] 数据导出(CSV/PDF)
|
|
|
- [ ] 自动备份
|
|
|
|
|
|
#### 中优先级
|
|
|
- [ ] 图书预约系统
|
|
|
- [ ] 罚金自动计算
|
|
|
- [ ] 邮件通知集成
|
|
|
- [ ] 统计报表
|
|
|
|
|
|
#### 低优先级
|
|
|
- [ ] 图书评论与评分
|
|
|
- [ ] 推荐系统
|
|
|
- [ ] 多语言支持
|
|
|
- [ ] 主题定制
|
|
|
|
|
|
---
|
|
|
|
|
|
## 测试报告
|
|
|
|
|
|
### 测试覆盖率
|
|
|
- **总测试数**: 28
|
|
|
- **通过**: 28 (100%)
|
|
|
- **失败**: 0 (0%)
|
|
|
|
|
|
### 详细报告
|
|
|
- [CLI测试报告](CLI_TEST_REPORT.md)
|
|
|
- [GUI测试报告](GUI_TEST_REPORT.md)
|
|
|
- [综合测试报告](COMPREHENSIVE_TEST_REPORT.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
## 性能指标
|
|
|
|
|
|
### 响应时间
|
|
|
| 操作 | 平均时间 | 评级 |
|
|
|
|------|---------|------|
|
|
|
| 数据库连接 | < 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应用)
|
|
|
|
|
|
### 编译项目
|
|
|
```bash
|
|
|
mvn clean compile
|
|
|
```
|
|
|
|
|
|
### 运行测试
|
|
|
```bash
|
|
|
mvn test
|
|
|
```
|
|
|
|
|
|
### 打包应用
|
|
|
```bash
|
|
|
# CLI/GUI应用
|
|
|
mvn package
|
|
|
|
|
|
# Android应用
|
|
|
cd android
|
|
|
./gradlew assembleDebug
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 设计模式应用
|
|
|
|
|
|
### 1. 单例模式(Singleton)
|
|
|
**应用**: DatabaseConnection
|
|
|
**目的**: 确保全局只有一个数据库连接实例
|
|
|
|
|
|
```java
|
|
|
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
|
|
|
**目的**: 根据类型创建不同的图书对象
|
|
|
|
|
|
```java
|
|
|
public class BookFactoryProvider {
|
|
|
public Book createBook(String type, ...) {
|
|
|
BookFactory factory = getFactory(type);
|
|
|
return factory.createBook(...);
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### 3. 观察者模式(Observer)
|
|
|
**应用**: BookStatusManager
|
|
|
**目的**: 图书状态变更时通知相关观察者
|
|
|
|
|
|
```java
|
|
|
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接口
|
|
|
**目的**: 支持多种通知方式(邮件、短信、应用内)
|
|
|
|
|
|
```java
|
|
|
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应用测试
|
|
|
- 🔄 用户认证系统
|
|
|
- 🔄 高级搜索功能
|