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.
 
 
 
Jenkins CI 98174dbd5b
docs: Add GUI jpackage fix report
2 months ago
.kiro/specs/repository-restructure Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
android Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
backend Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
docs docs: Add GUI jpackage fix report 2 months ago
gradle/wrapper Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
logs Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
scripts test: Add local GUI packaging test and documentation 2 months ago
src feat: Add complete Swing GUI with full functionality 2 months ago
.gitignore Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
Jenkinsfile fix: Replace GUI jpackage with gui-swing profile 2 months ago
backup_exclude.txt Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
build.gradle Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
gradle.properties Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
gradlew Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
gradlew.bat Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
library.db Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
pom.xml feat: Add complete Swing GUI with full functionality 2 months ago
settings.gradle Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago
sonar-project.properties Initial commit: SLMS project restructure - All 21 tasks completed 2 months ago

docs/README.md

智能图书管理系统 (SLMS)

项目概述

本项目是一个基于Java的智能图书管理系统(SLMS)展示了多种设计模式的应用。系统遵循SOLID原则实现了图书管理、借阅记录、通知系统等功能。

设计模式应用

1. 单一职责原则 (Single Responsibility Principle)

  • 实现类: BookLoan
  • 职责分离:
    • Book 类仅负责封装图书信息书名、作者、ISBN等
    • Loan 类仅负责管理借阅记录(借阅人、借阅时间、归还时间等)

2. 开闭原则 (Open/Closed Principle)

  • 实现类: Notification 接口及其实现类
  • 设计特点:
    • 通过接口设计支持多种通知方式
    • 新增通知方式时无需修改现有代码
    • 实现类: EmailNotification, SMSNotification, InAppNotification

3. 单例模式 (Singleton Pattern)

  • 实现类: DatabaseConnection
  • 设计特点:
    • 确保系统运行期间仅存在一个数据库连接实例
    • 使用双重检查锁定实现线程安全
    • 提供全局访问点

4. 观察者模式 (Observer Pattern)

  • 实现类: BookStatusObserver 接口, BookStatusSubject 接口, BookStatusManager, BookNotificationObserver
  • 设计特点:
    • 实现图书状态变更通知机制
    • 支持多种事件类型(图书上架、借出、归还、逾期等)
    • 解耦被观察者和观察者之间的关系

5. 工厂模式 (Factory Pattern)

  • 实现类: BookFactory 接口, PhysicalBookFactory, EBookFactory, JournalFactory, BookFactoryProvider
  • 设计特点:
    • 创建不同类型图书对象(实体书、电子书、期刊)
    • 支持动态注册新的图书类型
    • 提供统一的图书创建接口

项目结构

SLMS/
├── src/
│   └── main/
│       └── java/
│           └── com/
│               └── smartlibrary/
│                   ├── SLMS.java  # 主程序入口
│                   ├── database/
│                   │   └── DatabaseConnection.java        # 数据库连接管理(单例模式)
│                   ├── factory/
│                   │   ├── BookFactory.java              # 图书工厂接口
│                   │   ├── BookFactoryProvider.java      # 工厂提供者
│                   │   ├── EBookFactory.java             # 电子书工厂
│                   │   ├── JournalFactory.java           # 期刊工厂
│                   │   └── PhysicalBookFactory.java      # 实体书工厂
│                   ├── model/
│                   │   ├── Book.java                     # 图书模型(单一职责原则)
│                   │   └── Loan.java                     # 借阅记录模型(单一职责原则)
│                   ├── notification/
│                   │   ├── EmailNotification.java        # 邮件通知(开闭原则)
│                   │   ├── InAppNotification.java        # 应用内通知(开闭原则)
│                   │   ├── Notification.java             # 通知接口(开闭原则)
│                   │   └── SMSNotification.java          # 短信通知(开闭原则)
│                   └── observer/
│                       ├── BookEventType.java            # 图书事件类型枚举
│                       ├── BookNotificationObserver.java # 图书状态通知观察者
│                       ├── BookStatusManager.java        # 图书状态管理器
│                       ├── BookStatusObserver.java       # 图书状态观察者接口
│                       └── BookStatusSubject.java        # 图书状态被观察者接口
└── src/
    └── test/
        └── java/
            └── com/
                └── smartlibrary/
                    └── test/
                        └── DesignPatternsTest.java       # 设计模式测试类
└── docs/
    ├── factory_pattern.puml              # 工厂模式类图
    ├── observer_pattern.puml             # 观察者模式类图
    ├── open_closed_principle.puml        # 开闭原则类图
    ├── single_responsibility_principle.puml # 单一职责原则类图
    ├── singleton_pattern.puml            # 单例模式类图
    └── smart_library_system.puml         # 系统综合类图

如何运行

前置要求

  • Java 8 或更高版本
  • Maven 3.6 或更高版本(可选)

Android环境配置

本项目包含Android应用模块需要以下环境配置

  • Android SDK: D:\development\Android
  • JDK: E:\2025-2026\GitAIOps\jdk
  • 模拟器: 已配置在Android SDK目录中

环境变量设置

# 设置ANDROID_HOME环境变量
set ANDROID_HOME=D:\development\Android

# 设置JAVA_HOME环境变量
set JAVA_HOME=E:\2025-2026\GitAIOps\jdk

# 添加到PATH
set PATH=%JAVA_HOME%\bin;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;%PATH%

构建Android APK

  1. 清理项目:

    gradlew clean
    
  2. 编译项目:

    gradlew build
    
  3. 运行测试:

    gradlew test
    gradlew connectedAndroidTest
    
  4. 构建Debug APK:

    gradlew assembleDebug
    

    生成的APK位置: android/build/outputs/apk/debug/android-debug.apk

  5. 构建Release APK:

    gradlew assembleRelease
    

    生成的APK位置: android/build/outputs/apk/release/android-release-unsigned.apk

  6. 安装到设备/模拟器:

    gradlew installDebug
    

方式一使用Maven推荐

  1. 运行PowerShell脚本Windows:

    .\run_maven.ps1
    
  2. 运行批处理脚本Windows:

    .\run_maven_en.bat
    
  3. 或者手动执行以下命令:

    # 编译项目
    mvn compile
    
    # 运行主程序
    mvn exec:java -Dexec.mainClass="com.smartlibrary.SLMS"
    
  4. 运行测试:

    # 使用PowerShell脚本
    .\test_maven.ps1
    
    # 使用批处理脚本
    .\test_maven_en.bat
    
    # 或者手动执行命令
    java -cp "target/classes;target/test-classes;lib/*" com.smartlibrary.test.DesignPatternsTest
    

方式二不使用Maven

  1. 运行PowerShell脚本Windows:

    .\run.ps1
    
  2. 运行批处理脚本Windows:

    run.bat
    
  3. 或者手动执行以下命令:

    # 创建编译输出目录
    mkdir build
    
    # 编译主代码
    $files = Get-ChildItem -Path "src\main\java" -Recurse -Filter "*.java"; javac -d build -cp "lib/*;src" -encoding UTF-8 $files.FullName
    
    # 编译测试代码
    $files = Get-ChildItem -Path "src\test\java" -Recurse -Filter "*.java"; javac -d build -cp "lib/*;build" -encoding UTF-8 $files.FullName
    
    # 运行主程序
    java -cp "build;lib/*" com.smartlibrary.SLMS
    

运行测试

有以下几种方式运行测试:

  1. 标准Maven命令推荐

    mvn test
    
  2. PowerShell脚本. est_maven.ps1

  3. 批处理脚本(英文系统):. est_maven_en.bat

  4. 手动命令:

    java -cp "target/classes;target/test-classes;lib/*" com.smartlibrary.test.DesignPatternsTest
    

设计模式图示

项目包含以下PlantUML类图展示了各种设计模式的实现:

  • single_responsibility_principle.puml: 单一职责原则类图
  • open_closed_principle.puml: 开闭原则类图
  • singleton_pattern.puml: 单例模式类图
  • observer_pattern.puml: 观察者模式类图
  • factory_pattern.puml: 工厂模式类图
  • smart_library_system.puml: 系统综合类图

可以使用PlantUML工具将这些文件转换为图片格式。

系统功能

  1. 图书管理: 添加、查询、更新图书信息
  2. 借阅管理: 创建借阅记录、计算逾期罚款、管理归还
  3. 通知系统: 支持邮件、短信、应用内通知
  4. 状态监控: 实时监控图书状态变更并通知相关人员

扩展性

系统设计具有良好的扩展性:

  1. 新增通知方式: 实现Notification接口即可
  2. 新增图书类型: 实现BookFactory接口并注册到BookFactoryProvider
  3. 新增观察者: 实现BookStatusObserver接口并注册到BookStatusManager

总结

本项目通过实现智能图书管理系统展示了多种设计模式的应用包括单一职责原则、开闭原则、单例模式、观察者模式和工厂模式。系统遵循SOLID原则具有良好的可维护性和扩展性。

Gitea中的Webhook触发器 http://localhost:8084/generic-webhook-trigger/invoke?token=gitaiops123

gitaiops123为Jenkins的Webhook TokenSecret text类型的Token用于Jenkins的Webhook触发器。