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

8.4 KiB

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: 罚金金额

构建和运行

构建项目

# Maven 构建
mvn clean compile

# Gradle 构建
gradlew build

# Android 构建
cd android
gradlew assembleDebug

运行应用

# CLI 应用
run_cli.bat

# GUI 应用
run_gui.bat

# Web 应用
run_web.bat

# Android 应用
# 使用 Android Studio 或命令行安装 APK

运行测试

# 运行所有测试
run_all_tests.bat

# 运行特定测试
run_tests.bat        # CLI 测试
run_gui_tests.bat    # GUI 测试
run_web_tests.bat    # Web 测试

数据管理

初始化数据库

init_database.bat

重置数据库

reset_database.bat

数据库位置

  • 主数据库: library.db
  • 所有应用共享同一数据库文件

清理项目

# 清理构建缓存和临时文件
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