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
使用说明
首次启动
应用首次启动时会自动:
- 初始化DataManager
- 生成Mock数据(50本图书、20+用户、100条借阅记录)
- 创建测试账户(admin/librarian/user/guest)
测试账户
AI功能使用
本地AI助手
- 完全离线运行
- 支持借阅、归还、搜索、推荐等意图识别
- 基于规则的智能响应
真实AI助手
- 需要网络连接
- 支持DeepSeek和智谱AI
- 支持语音输入和语音播报
扫码借还书
- 扫码借书:点击"扫码借书" → 扫描图书二维码 → 确认借阅
- 扫码还书:点击"扫码还书" → 扫描图书二维码 → 确认归还
- 智能模式:自动根据图书状态判断借/还操作
数据模型
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%
已知限制
- 离线限制:真实AI功能需要网络连接
- 语音功能:需要在真实设备上测试
- 图片展示:UML图暂不支持直接在移动端展示
更新日志
v1.0.0 (2025-12)
- ✅ 完整的图书管理功能
- ✅ 借阅管理(借书、还书、续借)
- ✅ 用户管理和角色权限
- ✅ AI智能助手(本地+真实AI)
- ✅ 扫码借还书功能
- ✅ 语音识别和语音播报
- ✅ 单元测试覆盖
贡献指南
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature)
- 提交更改 (
git commit -m 'Add some AmazingFeature')
- 推送到分支 (
git push origin feature/AmazingFeature)
- 创建Pull Request
许可证
本项目仅供学习和教育目的使用。
联系方式