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.

305 lines
7.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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功能均为模拟实现。