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_STRUCTURE.md

295 lines
8.4 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 项目结构说明
## 项目概述
智能图书管理系统SLMS是一个多平台图书管理解决方案支持 CLI、GUI、Web 和 Android 四端应用。
## 目录结构
```
SLMS/
├── src/ # Java 源代码CLI/GUI/Web 共享)
│ ├── main/
│ │ ├── java/
│ │ │ └── com/smartlibrary/
│ │ │ ├── cli/ # CLI 应用
│ │ │ ├── gui/ # GUI 应用JavaFX
│ │ │ ├── web/ # Web 应用Spring Boot
│ │ │ ├── database/ # 数据库层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── model/ # 数据模型
│ │ │ ├── factory/ # 工厂模式
│ │ │ ├── observer/ # 观察者模式
│ │ │ └── notification/ # 通知系统
│ │ └── resources/ # 资源文件
│ │ ├── templates/ # Thymeleaf 模板
│ │ ├── static/ # 静态资源
│ │ └── application.properties
│ └── test/ # 测试代码
├── android/ # Android 应用
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/smartlibrary/android/
│ │ │ ├── data/ # 数据管理
│ │ │ ├── model/ # 数据模型
│ │ │ ├── ui/ # UI 组件
│ │ │ ├── network/ # 网络层
│ │ │ └── utils/ # 工具类
│ │ ├── res/ # Android 资源
│ │ └── AndroidManifest.xml
│ └── build.gradle # Android 构建配置
├── backend/ # 后端服务(可选)
│ └── src/
├── gradle/ # Gradle 配置
├── .gradle/ # Gradle 缓存(忽略)
├── build/ # 构建输出(忽略)
├── target/ # Maven 输出(忽略)
├── library.db # SQLite 数据库
├── pom.xml # Maven 配置
├── build.gradle # Gradle 配置
├── settings.gradle # Gradle 设置
├── gradle.properties # Gradle 属性
├── gradlew # Gradle Wrapper (Unix)
├── gradlew.bat # Gradle Wrapper (Windows)
├── .gitignore # Git 忽略文件
├── README.md # 项目说明
├── PROJECT_OVERVIEW.md # 项目概览
├── PROJECT_STRUCTURE.md # 项目结构(本文件)
├── DATABASE_README.md # 数据库说明
├── START_APPLICATIONS.md # 应用启动指南
├── START_WEB_APP.md # Web 应用启动指南
├── CLI_TEST_REPORT.md # CLI 测试报告
├── GUI_TEST_REPORT.md # GUI 测试报告
├── WEB_TEST_REPORT.md # Web 测试报告
├── ANDROID_TEST_REPORT.md # Android 测试报告
├── COMPREHENSIVE_TEST_REPORT.md # 综合测试报告
├── FINAL_SUMMARY.md # 最终总结
├── run_cli.bat # 运行 CLI 应用
├── run_gui.bat # 运行 GUI 应用
├── run_web.bat # 运行 Web 应用
├── run_tests.bat # 运行测试
├── run_gui_tests.bat # 运行 GUI 测试
├── run_web_tests.bat # 运行 Web 测试
├── run_all_tests.bat # 运行所有测试
├── init_database.bat # 初始化数据库
├── reset_database.bat # 重置数据库
├── cleanup_project.bat # 清理项目
├── package_web.bat # 打包 Web 应用
├── generate_test_report.bat # 生成测试报告
├── cicd.md # CI/CD 配置说明
└── Jenkinsfile # Jenkins 配置
```
## 技术栈
### 后端
- **Java 21**: 主要编程语言
- **Maven 3.x**: 依赖管理和构建工具
- **Gradle 8.5**: Android 构建工具
- **SQLite 3.36**: 嵌入式数据库
- **Spring Boot 2.7.5**: Web 框架
- **JavaFX 17**: GUI 框架
### Android
- **Android SDK 34**: Android 开发工具包
- **Kotlin**: Android 开发语言(部分)
- **Material Design 3**: UI 设计规范
- **Retrofit**: 网络请求库
- **Gson**: JSON 解析库
### 设计模式
- **Singleton单例模式**: DatabaseConnection, DataManager
- **Factory工厂模式**: BookFactoryProvider
- **Observer观察者模式**: BookStatusManager
- **Strategy策略模式**: Notification 接口
- **MVC模型-视图-控制器)**: Web 应用架构
## 数据库设计
### 表结构
#### books图书表
- id: 图书ID主键
- title: 书名
- author: 作者
- isbn: ISBN 号
- publisher: 出版社
- publish_date: 出版日期
- category: 分类
- available: 是否可借
- book_type: 图书类型(实体书/电子书/期刊)
#### users用户表
- id: 用户ID主键
- name: 姓名
- email: 邮箱
- phone: 电话
- registration_date: 注册日期
#### loans借阅表
- id: 借阅ID主键
- book_id: 图书ID外键
- user_id: 用户ID外键
- borrow_date: 借阅日期
- due_date: 应还日期
- return_date: 实际归还日期
- returned: 是否已归还
- fine_amount: 罚金金额
## 构建和运行
### 构建项目
```bash
# Maven 构建
mvn clean compile
# Gradle 构建
gradlew build
# Android 构建
cd android
gradlew assembleDebug
```
### 运行应用
```bash
# CLI 应用
run_cli.bat
# GUI 应用
run_gui.bat
# Web 应用
run_web.bat
# Android 应用
# 使用 Android Studio 或命令行安装 APK
```
### 运行测试
```bash
# 运行所有测试
run_all_tests.bat
# 运行特定测试
run_tests.bat # CLI 测试
run_gui_tests.bat # GUI 测试
run_web_tests.bat # Web 测试
```
## 数据管理
### 初始化数据库
```bash
init_database.bat
```
### 重置数据库
```bash
reset_database.bat
```
### 数据库位置
- 主数据库: `library.db`
- 所有应用共享同一数据库文件
## 清理项目
```bash
# 清理构建缓存和临时文件
cleanup_project.bat
```
清理内容:
- 构建输出目录build/, target/
- Gradle 缓存(.gradle/
- 备份文件(*.bak
- 临时文件(*.tmp, *.log
## 开发规范
### 代码规范
- 遵循 Java 命名规范
- 使用有意义的变量名
- 添加必要的注释
- 保持代码简洁
### 提交规范
- 提交前运行测试
- 编写清晰的提交信息
- 一次提交解决一个问题
### 分支策略
- `main` - 生产分支
- `develop` - 开发分支
- `feature/*` - 功能分支
- `bugfix/*` - 修复分支
## 文档说明
### 核心文档
- **README.md**: 项目快速入门
- **PROJECT_OVERVIEW.md**: 项目详细概览
- **PROJECT_STRUCTURE.md**: 项目结构说明(本文件)
- **DATABASE_README.md**: 数据库设计和使用
### 启动指南
- **START_APPLICATIONS.md**: 应用启动总指南
- **START_WEB_APP.md**: Web 应用详细启动指南
### 测试报告
- **CLI_TEST_REPORT.md**: CLI 应用测试报告
- **GUI_TEST_REPORT.md**: GUI 应用测试报告
- **WEB_TEST_REPORT.md**: Web 应用测试报告
- **ANDROID_TEST_REPORT.md**: Android 应用测试报告
- **COMPREHENSIVE_TEST_REPORT.md**: 综合测试报告
- **FINAL_SUMMARY.md**: 项目最终总结
### 配置文档
- **cicd.md**: CI/CD 配置说明
- **Jenkinsfile**: Jenkins 持续集成配置
## 常见问题
### Q: 如何重置数据库?
A: 运行 `reset_database.bat`
### Q: GUI 应用无法启动?
A: 确保安装了 JavaFX运行 `mvn javafx:run`
### Q: 数据不同步?
A: 所有应用共享同一个 `library.db` 文件,确保文件未被锁定
### Q: 如何清理项目?
A: 运行 `cleanup_project.bat` 清理构建缓存和临时文件
### Q: Android 应用如何构建?
A: 运行 `gradlew assembleDebug` 构建 Debug APK
## 许可证
本项目仅用于教育和学习目的。
## 联系方式
- **项目**: Smart Library Management System
- **版本**: 1.0
- **团队**: SmartLibrary Development Team
- **更新**: 2025-11-19