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.

11 KiB

Android 智能图书管理系统 (SLMS)

概述

智能图书管理系统Smart Library Management System的Android客户端提供完整的图书管理功能、AI智能助手和扫码借还书功能。

版本信息

  • 版本号: 1.0.0
  • 最低SDK: Android 7.0 (API 24)
  • 目标SDK: Android 14 (API 34)
  • 编译SDK: 34

主要功能

📚 核心功能

功能 描述 状态
图书管理 浏览、搜索、添加、编辑、删除图书 已实现
借阅管理 借阅、归还、续借图书 已实现
用户管理 用户登录、角色权限、个人信息 已实现
数据持久化 SharedPreferences本地存储 已实现

🤖 AI智能功能

功能 描述 状态
AI智能助手 自然语言对话,解答使用问题 已实现
AI智能搜索 智能理解搜索意图,提供精准建议 已实现
AI个性化推荐 基于用户偏好推荐图书 已实现
真实AI对话 DeepSeek、智谱AI集成 已实现
语音识别 讯飞语音识别 已实现
语音播报 讯飞TTS语音合成 已实现

📱 扫码功能

功能 描述 状态
扫码借书 扫描图书二维码快速借阅 已实现
扫码还书 扫描图书二维码快速归还 已实现
二维码生成 为图书生成唯一二维码 已实现
智能识别 自动识别借/还操作 已实现

📊 其他功能

功能 描述 状态
UML图查看 查看系统架构和流程图 已实现
UML图生成 在线生成PlantUML图表 已实现
离线运行 本地AI功能完全离线 已实现
Mock数据 自动生成演示数据 已实现

架构设计

项目结构

android/
├── src/
│   ├── main/
│   │   ├── java/com/smartlibrary/android/
│   │   │   ├── ai/                    # AI服务
│   │   │   │   ├── AIConfig.java          # AI配置
│   │   │   │   ├── RealAIService.java     # 真实AI服务
│   │   │   │   ├── SimpleAIService.java   # 本地AI服务
│   │   │   │   ├── SpeechRecognitionService.java  # 语音识别
│   │   │   │   ├── TextToSpeechService.java       # 语音合成
│   │   │   │   └── VoiceService.java      # 语音服务
│   │   │   ├── data/                  # 数据管理
│   │   │   │   └── DataManager.java       # 数据管理器(单例)
│   │   │   ├── factory/               # 对象工厂
│   │   │   │   └── LibraryObjectFactory.java  # 工厂模式
│   │   │   ├── mock/                  # Mock数据
│   │   │   │   └── MockDataGenerator.java # 数据生成器
│   │   │   ├── model/                 # 数据模型
│   │   │   │   ├── Book.java              # 图书模型
│   │   │   │   ├── Loan.java              # 借阅模型
│   │   │   │   └── User.java              # 用户模型
│   │   │   ├── network/               # 网络服务
│   │   │   │   ├── ApiService.java        # API服务
│   │   │   │   ├── EnhancedApiService.java # 增强API服务
│   │   │   │   └── LibraryApi.java        # Retrofit接口
│   │   │   ├── ui/                    # UI组件
│   │   │   │   ├── SmartAIAssistantActivity.java  # AI助手
│   │   │   │   ├── ScanBorrowReturnActivity.java  # 扫码借还
│   │   │   │   ├── UMLViewerActivity.java         # UML查看
│   │   │   │   └── ...
│   │   │   ├── util/                  # 工具类
│   │   │   │   └── QRCodeUtil.java        # 二维码工具
│   │   │   ├── MainActivity.java      # 主Activity
│   │   │   └── SimpleActivity.java    # 简单Activity
│   │   └── res/                       # 资源文件
│   └── test/                          # 单元测试
│       └── java/com/smartlibrary/android/
│           ├── ai/
│           │   └── SimpleAIServiceTest.java
│           ├── factory/
│           │   └── LibraryObjectFactoryTest.java
│           ├── mock/
│           │   └── MockDataGeneratorTest.java
│           └── model/
│               ├── BookTest.java
│               ├── LoanTest.java
│               └── UserTest.java
├── build.gradle                       # 构建配置
└── README.md                          # 本文档

设计模式

模式 应用 说明
单例模式 SimpleAIService, DataManager, ApiService 确保全局唯一实例
工厂模式 LibraryObjectFactory 统一对象创建
观察者模式 DataManager 数据变化通知
回调模式 ApiCallback, AICallback 异步操作处理

快速开始

环境要求

  • Android Studio Arctic Fox (2020.3.1) 或更高版本
  • JDK 21
  • Android SDK 34
  • Gradle 8.x

构建步骤

# 1. 克隆项目
git clone <repository-url>
cd mcslms

# 2. 构建Debug版本
.\gradlew.bat :android:assembleDebug

# 3. 安装到设备
adb install -r android\build\outputs\apk\debug\mcslms-debug.apk

# 4. 启动应用
adb shell am start -n com.smartlibrary/.android.MainActivity

运行测试

# 运行单元测试
.\gradlew.bat :android:test

# 运行UI测试需要连接设备
.\gradlew.bat :android:connectedAndroidTest

# 生成测试报告
.\gradlew.bat :android:testDebugUnitTest --info

测试覆盖

单元测试

测试类 覆盖内容 测试数量
BookTest Book模型所有方法 15+
UserTest User模型所有方法 20+
LoanTest Loan模型所有方法 15+
LibraryObjectFactoryTest 工厂方法和参数验证 15+
MockDataGeneratorTest 数据生成逻辑 15+
SimpleAIServiceTest AI服务和意图识别 15+

测试命令

# 运行所有测试
.\gradlew.bat :android:test

# 运行特定测试类
.\gradlew.bat :android:test --tests "com.smartlibrary.android.model.BookTest"

# 生成覆盖率报告需要JaCoCo配置
.\gradlew.bat :android:jacocoTestReport

使用说明

首次启动

应用首次启动时会自动:

  1. 初始化DataManager
  2. 生成Mock数据50本图书、20+用户、100条借阅记录
  3. 创建测试账户admin/librarian/user/guest

测试账户

账户 邮箱 密码 角色
管理员 admin@slms.com admin123 系统管理员
图书管理员 librarian@slms.com lib123 图书管理员
普通用户 user@slms.com user123 普通用户
访客 guest@slms.com guest 访客

AI功能使用

本地AI助手

  • 完全离线运行
  • 支持借阅、归还、搜索、推荐等意图识别
  • 基于规则的智能响应

真实AI助手

  • 需要网络连接
  • 支持DeepSeek和智谱AI
  • 支持语音输入和语音播报

扫码借还书

  1. 扫码借书:点击"扫码借书" → 扫描图书二维码 → 确认借阅
  2. 扫码还书:点击"扫码还书" → 扫描图书二维码 → 确认归还
  3. 智能模式:自动根据图书状态判断借/还操作

数据模型

Book图书

- id: String          // 图书ID
- title: String       // 标题
- author: String      // 作者
- isbn: String        // ISBN号
- category: String    // 分类
- status: String      // 状态(available/borrowed/reserved)
- qrCode: String      // 二维码内容
- publisher: String   // 出版社
- location: String    // 馆藏位置

User用户

- id: String          // 用户ID
- name: String        // 姓名
- email: String       // 邮箱
- phone: String       // 电话
- role: String        // 角色(admin/librarian/user/guest)
- borrowLimit: int    // 借阅上限
- currentBorrows: int // 当前借阅数

Loan借阅记录

- id: String          // 借阅ID
- bookId: String      // 图书ID
- userId: String      // 用户ID
- loanDate: Date      // 借阅日期
- dueDate: Date       // 应还日期
- returnDate: Date    // 实际归还日期
- status: String      // 状态(active/returned/overdue)

权限说明

<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 相机权限(扫码) -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- 录音权限(语音识别) -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!-- 存储权限(保存二维码) -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

依赖库

版本 用途
AndroidX Core 1.12.0 核心库
Material Design 1.11.0 UI组件
Retrofit 2.9.0 网络请求
OkHttp 4.12.0 HTTP客户端
Gson 2.9.0 JSON解析
ZXing 3.5.2 二维码处理
Glide 4.16.0 图片加载
Room 2.6.1 数据库
Biometric 1.1.0 生物识别
CameraX 1.3.1 相机功能

SonarQube配置

项目已配置SonarQube代码质量检查

# sonar-project.properties
sonar.sources=android/src/main/java
sonar.tests=android/src/test/java
sonar.java.binaries=android/build/intermediates/javac/debug/classes

覆盖率要求

  • 新代码覆盖率: ≥80%
  • 整体覆盖率: ≥60%
  • 代码重复率: ≤3%

已知限制

  1. 离线限制真实AI功能需要网络连接
  2. 语音功能:需要在真实设备上测试
  3. 图片展示UML图暂不支持直接在移动端展示

更新日志

v1.0.0 (2025-12)

  • 完整的图书管理功能
  • 借阅管理(借书、还书、续借)
  • 用户管理和角色权限
  • AI智能助手本地+真实AI
  • 扫码借还书功能
  • 语音识别和语音播报
  • 单元测试覆盖

贡献指南

  1. Fork项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建Pull Request

许可证

本项目仅供学习和教育目的使用。

联系方式