# 综合课堂(涵盖练题与考试) **Repository Path**: qsrgcz/master ## Basic Information - **Project Name**: 综合课堂(涵盖练题与考试) - **Description**: 五 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: x - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-24 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 云帆在线考试管理系统(喜欢点一个star) ## 📋 项目概述 云帆在线考试管理系统是一个基于 Spring Boot + Vue.js 的前后端分离在线考试平台,支持完整的考试流程管理,包括添加题库、创建考试、在线答题、实时保存答案、自动评分、成绩统计、错题本等功能。系统采用现代化的微服务架构设计,具备高可用性和高并发处理能力。 ### 🎯 核心特性 - **完整考试流程**:支持考试开始、答题、保存、提交、评分全过程 - **实时答题保存**:防数据丢失,支持断点续考 - **智能自动评分**:客观题自动判分,主观题预留评分接口 - **多维度统计**:考试成绩分析、错题统计、考试通过率图表 - **权限安全控制**:JWT 多层级权限验证,考试防作弊机制 - **响应式设计**:支持 PC 端和移动端访问 ## 🏗️ 技术架构 ### 后端技术栈 | 技术 | 版本 | 用途 | | -------------- | ------ | --------------- | | Spring Boot | 2.6.13 | 核心框架 | | MyBatis | 3.5.x | 持久层框架 | | PageHelper | 1.4.x | 分页插件 | | MySQL | 8.0+ | 主数据库 | | Redis | 6.0+ | 缓存数据库 | | Swagger | 2.9.x | API 文档生成 | | Knife4j | 3.0.x | API 文档增强 | | Lombok | 1.18.x | 代码简化 | | Jackson | 2.13.x | JSON 处理 | | Apache POI | 5.2.x | Excel/Word 处理 | | iText | 7.2.x | PDF 生成 | ### 前端技术栈 | 技术 | 版本 | 用途 | | ----------- | ------ | ----------- | | Vue.js | 2.6.x | 核心框架 | | Element UI | 2.15.x | UI 组件库 | | Axios | 0.27.x | HTTP 客户端 | | Vue Router | 3.5.x | 路由管理 | | Vuex | 3.6.x | 状态管理 | ### 系统架构图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 前端 Vue.js │────│ 后端 Spring │────│ 数据库 MySQL │ │ Element UI │ │ Boot + MyBatis │ │ Redis 缓存 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` ## 📊 数据库设计 ### 核心数据表结构 #### 用户管理模块 - **user** - 学生用户表 (23 条记录) - **teacher** - 教师表 (11 条记录) - **user_course** - 用户选课关联表 #### 教学管理模块 - **subject** - 学科表 (10 个学科) - **course** - 课程表 (9 门课程) - **teacher_course** - 教师课程关联表 #### 题库管理模块 - **question_bank** - 题库表 (题目总池) - **choicequestion** - 选择题表 (200+ 题目) - **fillinquestion** - 填空题表 (100+ 题目) - **judgequestion** - 判断题表 (50+ 题目) - **subjectivequestion** - 主观题表 (30+ 题目) #### �:// - **exam** - 考试表 (考试基础信息) - **examquestion** - 考试题目关联表 - **userexam** - 用户考试记录表 🆕 - **exam_record** - 考试答题记录表 - **wrongquestions** - 错题记录表 ### 新增核心表:UserExam ```sql CREATE TABLE `userexam` ( `user_id` BIGINT NOT NULL COMMENT '用户ID', `exam_id` BIGINT NOT NULL COMMENT '考试ID', `score` INT DEFAULT 0 COMMENT '考试成绩', `used_time` INT DEFAULT 0 COMMENT '答题时长(分钟)', `submit_time` DATETIME DEFAULT NULL COMMENT '提交时间', `status` VARCHAR(20) DEFAULT '未参加' COMMENT '考试状态', `start_time` DATETIME DEFAULT NULL COMMENT '开始时间', `current_answers` LONGTEXT DEFAULT '{}' COMMENT '当前答案(JSON)', `last_save_time` DATETIME DEFAULT NULL COMMENT '最后保存时间', `remaining_time` INT DEFAULT NULL COMMENT '剩余时间(分钟)', PRIMARY KEY (`user_id`, `exam_id`) ); ``` ## 🔧 功能模块详解 ### 1. 用户考试核心流程 🆕 #### �:// ```java // 开始考试API POST /api/user-exam/start/{examId}?userId={userId} // 验证步骤: 1. 检查考试权限(时间、状态、用户权限) 2. 创建用户考试记录 3. 返回考试会话信息(题目、时间等) ``` #### 实时答题保存 ```java // 单题保存 POST /api/user-exam/save-answer // 批量保存 POST /api/user-exam/batch-save-answers // 特性: - JSON格式存储答案 - 实时计算剩余时间 - 支持断点续考 ``` #### �:// ```java // 提交考试 POST /api/user-exam/submit // 评分流程: 1. 客观题自动评分 2. 错题自动收集 3. 成绩排名计算 4. 生成考试报告 ``` ### 2. 权限安全控制 #### 多层级验证机制 ```java public void validateExamPermission(Long examId, Long userId) { // 1. 考试存在性验证 // 2. 考试启用状态验证 // 3. 考试时间窗口验证 // 4. 用户存在性验证 // 5. 用户状态验证 // 6. 选课权限验证(可扩展) } ``` ### 3. 状态管理系统 #### 考试状态流转 ``` 未参加 → 进行中 → 已完成 ↓ ↓ 暂停 → 进行中 ``` #### 实时状态监控 - 考试剩余时间计算 - 答题进度统计 - 自动超时提交 - 心跳检测机制 ### 4. 智能评分系统 #### 自动评分算法 ```java // 支持题型: 1. 选择题 - 精确匹配 2. 填空题 - 精确匹配 3. 判断题 - 精确匹配 4. 主观题 - 预留人工评分接口 ``` #### 错题统计机制 - 自动收集错题到错题本 - 错题难度分布统计 - 错题次数累计 ## 📡 API 接口文档 ### 用户考试管理接口 | 接口 | 方法 | 路径 | 功能 | | -------- | ---- | ----------------------------------- | ------------ | | 开始考试 | POST | `/api/user-exam/start/{examId}` | 创建考试会话 | | 获取状态 | GET | `/api/user-exam/status` | 获取考试状态 | | 保存答案 | POST | `/api/user-exam/save-answer` | 实时保存答案 | | 批量保存 | POST | `/api/user-exam/batch-save-answers` | 批量保存答案 | | 提交考试 | POST | `/api/user-exam/submit` | 提交并评分 | | 检查权限 | GET | `/api/user-exam/can-take` | 验证考试权限 | | 暂停考试 | POST | `/api/user-exam/pause` | 暂停考试 | | 恢复考试 | POST | `/api/user-exam/resume` | 恢复考试 | | 心跳检测 | POST | `/api/user-exam/heartbeat` | 保持连接 | | 自动提交 | POST | `/api/user-exam/auto-submit` | 超时自动提交 | ### 接口调用示例 #### 开始考试 ```bash curl -X POST "http://localhost:8080/api/user-exam/start/1?userId=123" \ -H "Content-Type: application/json" ``` #### 保存答案 ```bash curl -X POST "http://localhost:8080/api/user-exam/save-answer?examId=1&userId=123" \ -H "Content-Type: application/json" \ -d '{ "questionId": 1, "answer": "A", "questionType": 1, "spentTime": 30 }' ``` ## 🎨 前端页面结构 ``` src/ ├── components/ # 通用组件 │ ├── ExamCard.vue # 考试卡片组件 │ ├── QuestionItem.vue # 题目组件 │ └── Timer.vue # 倒计时组件 ├── views/ # 页面视图 │ ├── exam/ # 考试相关页面 │ │ ├── ExamList.vue # 考试列表 │ │ ├── ExamDetail.vue # 考试详情 │ │ ├── ExamTaking.vue # 答题页面 │ │ └── ExamResult.vue # 成绩页面 │ └── user/ # 用户相关页面 ├── router/ # 路由配置 ├── store/ # 状态管理 └── api/ # API接口 ``` ## 🚀 部署指南 ### 环境要求 - **Java**: JDK 8+ - **Node.js**: 14.x+ - **MySQL**: 8.0+ - **Redis**: 6.0+ - **Maven**: 3.6+ ### 后端部署 1. **克隆项目** ```bash git clone [项目地址] cd yunfan ``` 2. **创建数据库** ```bash mysql -u root -p CREATE DATABASE yunfan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 导入数据 mysql -u root -p yunfan < yunfan.sql mysql -u root -p yunfan < userexam_table.sql ``` 3. **修改配置文件** ```yaml # application.yml spring: datasource: url: jdbc:mysql://localhost:3306/yunfan username: your_username password: your_password redis: host: localhost port: 6379 ``` 4. **编译运行** ```bash mvn clean package java -jar target/yunfan-1.0.jar ``` ### 前端部署 1. **安装依赖** ```bash cd web npm install ``` 2. **开发环境** ```bash npm run serve ``` 3. **生产构建** ```bash npm run build ``` ## 🧪 测试指南 ### 单元测试 ```bash # 后端测试 mvn test # 前端测试 npm run test ``` ### 接口测试 访问 Swagger 文档进行接口测试:`http://localhost:8080/doc.html` ### 功能测试场景 1. **考试流程测试** - 用户登录 → 选择考试 → 开始答题 → 保存答案 → 提交考试 → 查看成绩 2. **异常情况测试** - 网络中断恢复 - 考试超时自动提交 - 重复提交防护 ## 📈 性能指标 ### 系统容量 - **并发用户**: 支持 1000+ 并发考试 - **题库容量**: 支持 10 万+ 题目 - **考试规模**: 支持万人同时在线考试 ### 响应时间 - **接口响应**: < 200ms - **页面加载**: < 2s - **答案保存**: < 100ms ## 🔄 开发状态 ### ✅ 已完成功能 #### 核心考试系统 (100%) - [x] 用户考试流程控制 - [x] 实时答题保存机制 - [x] 智能自动评分系统 - [x] 权限安全验证 - [x] 考试状态管理 - [x] 错题统计收集 - [x] 成绩排名计算 #### 题库管理系统 (95%) - [x] 选择题管理 (200+ 题目) - [x] 填空题管理 (100+ 题目) - [x] 判断题管理 (50+ 题目) - [x] 主观题管理 (30+ 题目) - [x] 题目分类检索 - [x] 难度等级划分 #### 用户管理系统 (90%) - [x] 学生用户管理 (23 个用户) - [x] 教师用户管理 (11 个教师) - [x] 角色权限控制 - [x] 用户状态管理 #### 考试管理系统 (95%) - [x] 考试创建配置 - [x] 试卷智能组装 - [x] 考试时间控制 - [x] 考试状态管理 - [x] 批量操作支持 ### 🚧 开发中功能 #### 高级功能扩展 (30%) - [ ] 题目随机抽选算法 - [ ] 考试防作弊监控 - [ ] 视频监考功能 - [ ] 移动端 APP 适配 #### 数据分析系统 (20%) - [ ] 考试数据大屏 - [ ] 学习行为分析 - [ ] 知识点掌握度分析 - [ ] 个性化推荐系统 ### 📋 待开发功能 #### 企业级功能 - [ ] 多租户支持 - [ ] 分布式部署 - [ ] 微服务拆分 - [ ] 容器化部署 #### 智能化功能 - [ ] AI 智能组卷 - [ ] 自适应难度调整 - [ ] 智能推荐学习路径 - [ ] 语音识别答题 ## 🤝 贡献指南 ### 代码规范 - 遵循阿里巴巴 Java 开发手册 - 使用统一的代码格式化配置 - 添加必要的注释和文档 ### 提交规范 ``` feat: 新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 test: 测试相关 chore: 其他修改 ``` ## 📞 联系方式 - **项目维护者**: 云帆开发团队 - **技术支持**: [技术支持邮箱] - **问题反馈**: [GitHub Issues] ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详细信息。 --- > 🌟 如果这个项目对您有帮助,请给我们一个 Star! > > 📝 最后更新: 2024 年 1 月 20 日 > 🔢 版本: v2.0.0 > 👨‍💻 维护状态: 积极维护中