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.
slms/docs/PROJECT_OVERVIEW.md

457 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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应用测试
- 🔄 用户认证系统
- 🔄 高级搜索功能