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

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