126 lines
3.5 KiB
Markdown
126 lines
3.5 KiB
Markdown
|
|
# 题库功能实现总结
|
|||
|
|
|
|||
|
|
## 已完成功能
|
|||
|
|
|
|||
|
|
### 1. 数据库设计 ✅
|
|||
|
|
- **文件**: `log/Sql/question_bank.sql`
|
|||
|
|
- 创建了 `question_bank` 表(题库表)
|
|||
|
|
- 创建了 `question_bank_item` 表(题库题目表)
|
|||
|
|
- 修改了 `question` 表,添加了来源字段(source_type, bank_id, bank_item_id)
|
|||
|
|
|
|||
|
|
### 2. 后端实现 ✅
|
|||
|
|
|
|||
|
|
#### 实体类
|
|||
|
|
- `StudyQuestionBank.java` - 题库实体
|
|||
|
|
- `StudyQuestionBankItem.java` - 题库题目实体
|
|||
|
|
- 修改了 `StudyQuestion.java` - 添加来源字段
|
|||
|
|
|
|||
|
|
#### Mapper层
|
|||
|
|
- `StudyQuestionBankMapper.java` + XML
|
|||
|
|
- `StudyQuestionBankItemMapper.java` + XML
|
|||
|
|
- 实现了随机抽题的SQL(使用 `ORDER BY RAND()`)
|
|||
|
|
|
|||
|
|
#### Service层
|
|||
|
|
- `IStudyQuestionBankService.java` - 服务接口
|
|||
|
|
- `StudyQuestionBankServiceImpl.java` - 服务实现
|
|||
|
|
- 实现了随机抽题、批量操作等功能
|
|||
|
|
|
|||
|
|
#### Controller层
|
|||
|
|
- `StudyQuestionBankController.java` - 题库管理接口
|
|||
|
|
- 修改了 `StudyExamController.java` - 添加从题库抽题接口
|
|||
|
|
|
|||
|
|
### 3. 前端实现 ✅
|
|||
|
|
|
|||
|
|
#### API文件
|
|||
|
|
- `ruoyi-ui/src/api/study/questionBank.js` - 题库API
|
|||
|
|
- 修改了 `ruoyi-ui/src/api/study/exam.js` - 添加抽题API
|
|||
|
|
|
|||
|
|
#### 页面文件
|
|||
|
|
- `ruoyi-ui/src/views/study/questionBank/index.vue` - 题库列表页面
|
|||
|
|
- `ruoyi-ui/src/views/study/questionBank/detail.vue` - 题库详情页面(题目管理)
|
|||
|
|
- 修改了 `ruoyi-ui/src/views/study/exam/create.vue` - 增加从题库抽题功能
|
|||
|
|
|
|||
|
|
### 4. 菜单配置 ✅
|
|||
|
|
- **文件**: `log/Sql/question_bank_menu.sql`
|
|||
|
|
- 添加了题库管理菜单和权限
|
|||
|
|
|
|||
|
|
## 核心功能
|
|||
|
|
|
|||
|
|
### 1. 题库管理
|
|||
|
|
- ✅ 创建、编辑、删除题库
|
|||
|
|
- ✅ 查看题库详情
|
|||
|
|
- ✅ 按科目筛选题库
|
|||
|
|
|
|||
|
|
### 2. 题目管理
|
|||
|
|
- ✅ 手动添加题目(支持所有题型)
|
|||
|
|
- ✅ 编辑、删除题目
|
|||
|
|
- ✅ 按题型筛选题目
|
|||
|
|
- ⏳ Excel批量导入(待实现)
|
|||
|
|
|
|||
|
|
### 3. 随机抽题
|
|||
|
|
- ✅ 创建考试时选择"从题库抽取"
|
|||
|
|
- ✅ 选择题库
|
|||
|
|
- ✅ 配置题型和数量
|
|||
|
|
- ✅ 随机抽取题目并保存到考试
|
|||
|
|
- ✅ 题目预览和确认
|
|||
|
|
|
|||
|
|
## 使用流程
|
|||
|
|
|
|||
|
|
1. **创建题库**
|
|||
|
|
- 进入"学习系统" → "题库管理"
|
|||
|
|
- 点击"新增",填写题库信息
|
|||
|
|
- 保存后进入题库详情页
|
|||
|
|
|
|||
|
|
2. **添加题目**
|
|||
|
|
- 在题库详情页点击"添加题目"
|
|||
|
|
- 填写题目信息(题型、题干、选项、答案、分值)
|
|||
|
|
- 保存题目
|
|||
|
|
|
|||
|
|
3. **创建考试并抽题**
|
|||
|
|
- 进入"考试管理" → "新增"
|
|||
|
|
- 填写考试基本信息
|
|||
|
|
- 选择"从题库抽取"
|
|||
|
|
- 选择题库
|
|||
|
|
- 配置题型和数量
|
|||
|
|
- 点击"从题库抽取"
|
|||
|
|
- 预览题目后保存
|
|||
|
|
|
|||
|
|
## 待实现功能
|
|||
|
|
|
|||
|
|
### Excel导入功能
|
|||
|
|
- 需要实现Excel文件解析
|
|||
|
|
- 支持批量导入题目
|
|||
|
|
- 数据验证和错误提示
|
|||
|
|
|
|||
|
|
**建议实现方式**:
|
|||
|
|
- 前端:使用 `xlsx` 库解析Excel
|
|||
|
|
- 后端:使用 `EasyExcel` 或 `Apache POI` 解析
|
|||
|
|
- 提供模板下载功能
|
|||
|
|
|
|||
|
|
## 数据库执行顺序
|
|||
|
|
|
|||
|
|
1. 执行 `log/Sql/question_bank.sql` - 创建表和修改表结构
|
|||
|
|
2. 执行 `log/Sql/question_bank_menu.sql` - 添加菜单配置
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **权限配置**:确保教师角色有 `study:questionBank:*` 权限
|
|||
|
|
2. **数据一致性**:删除题库时会同时删除题库下的所有题目
|
|||
|
|
3. **随机抽题**:如果题库中题目不足,会提示错误
|
|||
|
|
4. **题目来源**:从题库抽取的题目会记录来源信息(bank_id, bank_item_id)
|
|||
|
|
|
|||
|
|
## 测试建议
|
|||
|
|
|
|||
|
|
1. 创建题库并添加题目
|
|||
|
|
2. 创建考试并从题库抽题
|
|||
|
|
3. 验证题目是否正确保存
|
|||
|
|
4. 验证题目来源信息是否正确
|
|||
|
|
5. 测试题目不足时的错误提示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**实现完成时间**: 2025-11-12
|
|||
|
|
**核心功能**: ✅ 已完成
|
|||
|
|
**Excel导入**: ⏳ 待实现(可选)
|
|||
|
|
|