|
|
# Android 智能图书管理系统
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
这是智能图书管理系统(SLMS)的Android客户端实现,提供完整的图书管理功能和AI智能助手。
|
|
|
|
|
|
## 主要功能
|
|
|
|
|
|
### 📚 核心功能
|
|
|
- **图书管理**:浏览、搜索图书
|
|
|
- **借阅管理**:借阅、归还、续借图书
|
|
|
- **用户管理**:用户信息管理
|
|
|
- **数据持久化**:本地数据存储和同步
|
|
|
|
|
|
### 🤖 AI智能功能
|
|
|
- **AI智能助手**:自然语言对话,解答使用问题
|
|
|
- **AI智能搜索**:智能理解搜索意图,提供精准建议
|
|
|
- **AI个性化推荐**:基于用户偏好推荐图书
|
|
|
|
|
|
### 📊 系统功能
|
|
|
- **UML图查看**:查看系统架构和流程图
|
|
|
- **离线运行**:所有AI功能完全离线,无需网络
|
|
|
- **Mock数据**:自动生成演示数据
|
|
|
|
|
|
## 架构设计
|
|
|
|
|
|
### 模块结构
|
|
|
|
|
|
```
|
|
|
android/
|
|
|
├── src/main/java/com/smartlibrary/android/
|
|
|
│ ├── ai/ # AI服务
|
|
|
│ │ └── SimpleAIService.java
|
|
|
│ ├── data/ # 数据管理
|
|
|
│ │ └── DataManager.java
|
|
|
│ ├── factory/ # 对象工厂
|
|
|
│ │ └── LibraryObjectFactory.java
|
|
|
│ ├── mock/ # Mock数据生成
|
|
|
│ │ └── MockDataGenerator.java
|
|
|
│ ├── model/ # 数据模型
|
|
|
│ │ ├── Book.java
|
|
|
│ │ ├── Loan.java
|
|
|
│ │ └── User.java
|
|
|
│ ├── network/ # 网络服务
|
|
|
│ │ └── ApiService.java
|
|
|
│ ├── ui/ # UI组件
|
|
|
│ │ ├── AIAssistantFragment.java
|
|
|
│ │ ├── AISearchFragment.java
|
|
|
│ │ ├── AIRecommendFragment.java
|
|
|
│ │ └── UMLViewerActivity.java
|
|
|
│ └── MainActivity.java # 主Activity
|
|
|
```
|
|
|
|
|
|
### 设计模式
|
|
|
|
|
|
1. **单例模式**
|
|
|
- `SimpleAIService`:AI服务单例
|
|
|
- `DataManager`:数据管理器单例
|
|
|
|
|
|
2. **工厂模式**
|
|
|
- `LibraryObjectFactory`:统一对象创建
|
|
|
|
|
|
3. **观察者模式**
|
|
|
- `DataManager`:数据变化通知
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
- Android Studio 4.0+
|
|
|
- Android SDK 21+
|
|
|
- Gradle 7.0+
|
|
|
|
|
|
### 构建步骤
|
|
|
|
|
|
1. 克隆项目
|
|
|
```bash
|
|
|
git clone <repository-url>
|
|
|
cd smart-library-management-system
|
|
|
```
|
|
|
|
|
|
2. 打开Android Studio
|
|
|
```
|
|
|
File -> Open -> 选择项目根目录
|
|
|
```
|
|
|
|
|
|
3. 构建项目
|
|
|
```bash
|
|
|
./gradlew :android:build
|
|
|
```
|
|
|
|
|
|
4. 运行应用
|
|
|
```bash
|
|
|
./gradlew :android:installDebug
|
|
|
```
|
|
|
|
|
|
或在Android Studio中点击运行按钮。
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
### 首次启动
|
|
|
|
|
|
应用首次启动时会自动:
|
|
|
1. 初始化DataManager
|
|
|
2. 生成Mock数据(50本图书、20个用户、100条借阅记录)
|
|
|
3. 保存数据到本地存储
|
|
|
|
|
|
### AI功能使用
|
|
|
|
|
|
#### AI智能助手
|
|
|
1. 点击主界面的"AI智能助手"按钮
|
|
|
2. 在输入框中输入问题
|
|
|
3. 点击"发送"按钮
|
|
|
4. AI会分析意图并提供相关回答
|
|
|
|
|
|
支持的问题类型:
|
|
|
- 借阅相关:"如何借书?"
|
|
|
- 归还相关:"怎么还书?"
|
|
|
- 搜索相关:"如何搜索图书?"
|
|
|
- 推荐相关:"有什么好书推荐?"
|
|
|
- 帮助相关:"帮助"
|
|
|
|
|
|
#### AI智能搜索
|
|
|
1. 点击"AI智能搜索"按钮
|
|
|
2. 输入搜索关键词(支持自然语言)
|
|
|
3. 点击"智能搜索"
|
|
|
4. 查看搜索建议和结果
|
|
|
|
|
|
#### AI个性化推荐
|
|
|
1. 点击"AI个性化推荐"按钮
|
|
|
2. 自动加载推荐列表
|
|
|
3. 点击"刷新推荐"获取新推荐
|
|
|
|
|
|
### UML图查看
|
|
|
|
|
|
1. 点击"查看系统UML图"按钮
|
|
|
2. 选择要查看的UML图类型
|
|
|
3. 查看图表信息
|
|
|
4. 如有网络,可点击"打开Web端查看"
|
|
|
|
|
|
## 核心组件说明
|
|
|
|
|
|
### SimpleAIService
|
|
|
|
|
|
AI服务提供者,负责处理所有AI相关功能。
|
|
|
|
|
|
**主要方法**:
|
|
|
- `chat(String message)`:AI对话
|
|
|
- `smartSearch(String query)`:智能搜索
|
|
|
- `getRecommendation(String userId)`:个性化推荐
|
|
|
|
|
|
**特点**:
|
|
|
- 完全离线运行
|
|
|
- 基于规则的意图识别
|
|
|
- 上下文相关的响应生成
|
|
|
|
|
|
### DataManager
|
|
|
|
|
|
数据管理器,负责所有数据的CRUD操作和持久化。
|
|
|
|
|
|
**主要方法**:
|
|
|
- `getBooks()`:获取所有图书
|
|
|
- `addBook(Book book)`:添加图书
|
|
|
- `initializeMockData()`:初始化Mock数据
|
|
|
- `hasMockData()`:检查是否有数据
|
|
|
|
|
|
**特点**:
|
|
|
- 单例模式
|
|
|
- 观察者模式支持
|
|
|
- SharedPreferences持久化
|
|
|
- 自动Mock数据生成
|
|
|
|
|
|
### MockDataGenerator
|
|
|
|
|
|
Mock数据生成器,生成演示数据。
|
|
|
|
|
|
**主要方法**:
|
|
|
- `generateBooks(int count)`:生成图书
|
|
|
- `generateUsers(int count)`:生成用户
|
|
|
- `generateLoans(int count, List<Book>, List<User>)`:生成借阅记录
|
|
|
|
|
|
**特点**:
|
|
|
- 多样化的数据模板
|
|
|
- 真实的数据格式
|
|
|
- 可配置的生成数量
|
|
|
|
|
|
### LibraryObjectFactory
|
|
|
|
|
|
对象工厂,统一创建各种对象。
|
|
|
|
|
|
**主要方法**:
|
|
|
- `createBook(...)`:创建图书对象
|
|
|
- `createUser(...)`:创建用户对象
|
|
|
- `createLoan(...)`:创建借阅记录对象
|
|
|
|
|
|
**特点**:
|
|
|
- 参数验证
|
|
|
- 自动生成ID
|
|
|
- 设置默认值
|
|
|
|
|
|
## 数据模型
|
|
|
|
|
|
### Book(图书)
|
|
|
- `id`:图书ID
|
|
|
- `title`:标题
|
|
|
- `author`:作者
|
|
|
- `isbn`:ISBN号
|
|
|
- `category`:分类
|
|
|
- `status`:状态(available/borrowed/reserved)
|
|
|
|
|
|
### User(用户)
|
|
|
- `id`:用户ID
|
|
|
- `name`:姓名
|
|
|
- `email`:邮箱
|
|
|
- `phone`:电话
|
|
|
|
|
|
### Loan(借阅记录)
|
|
|
- `id`:借阅ID
|
|
|
- `bookId`:图书ID
|
|
|
- `userId`:用户ID
|
|
|
- `loanDate`:借阅日期
|
|
|
- `dueDate`:归还日期
|
|
|
- `returnDate`:实际归还日期
|
|
|
- `status`:状态(active/returned/overdue)
|
|
|
|
|
|
## 离线功能
|
|
|
|
|
|
所有AI功能都是完全离线的:
|
|
|
- ✅ 无需网络连接
|
|
|
- ✅ 无需后端服务
|
|
|
- ✅ 数据本地存储
|
|
|
- ✅ 即时响应
|
|
|
|
|
|
这使得应用可以在任何环境下运行,非常适合演示和测试。
|
|
|
|
|
|
## 错误处理
|
|
|
|
|
|
应用实现了全面的错误处理:
|
|
|
|
|
|
1. **数据层**:捕获存储异常,提供降级方案
|
|
|
2. **AI服务**:验证输入,提供友好错误消息
|
|
|
3. **UI层**:处理生命周期问题,防止崩溃
|
|
|
4. **网络层**:检查连接状态,优雅降级
|
|
|
|
|
|
## 性能优化
|
|
|
|
|
|
1. **懒加载**:单例模式延迟初始化
|
|
|
2. **异步处理**:使用Handler避免阻塞UI
|
|
|
3. **数据缓存**:内存缓存减少IO操作
|
|
|
4. **限制数据量**:Mock数据数量适中
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
### 单元测试
|
|
|
|
|
|
运行单元测试:
|
|
|
```bash
|
|
|
./gradlew :android:test
|
|
|
```
|
|
|
|
|
|
### UI测试
|
|
|
|
|
|
运行UI测试:
|
|
|
```bash
|
|
|
./gradlew :android:connectedAndroidTest
|
|
|
```
|
|
|
|
|
|
## 已知限制
|
|
|
|
|
|
1. **图片展示**:UML图暂不支持直接在移动端展示
|
|
|
2. **网络同步**:需要后端服务支持(可选)
|
|
|
3. **真实AI**:当前使用规则引擎,未集成真实AI模型
|
|
|
|
|
|
## 未来增强
|
|
|
|
|
|
1. **真实AI集成**:接入GPT等AI服务
|
|
|
2. **图片查看**:支持UML图直接展示
|
|
|
3. **数据同步**:完整的后端同步功能
|
|
|
4. **推送通知**:到期提醒等
|
|
|
5. **语音输入**:支持语音与AI对话
|
|
|
|
|
|
## 贡献指南
|
|
|
|
|
|
欢迎贡献代码!请遵循以下步骤:
|
|
|
|
|
|
1. Fork项目
|
|
|
2. 创建特性分支
|
|
|
3. 提交更改
|
|
|
4. 推送到分支
|
|
|
5. 创建Pull Request
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
[项目许可证信息]
|
|
|
|
|
|
## 联系方式
|
|
|
|
|
|
如有问题或建议,请联系:
|
|
|
- 项目主页:[项目URL]
|
|
|
- 问题追踪:[Issues URL]
|
|
|
|
|
|
---
|
|
|
|
|
|
**注意**:本应用使用Mock数据进行演示,所有AI功能均为模拟实现。
|