AI编程实战-在线考试系统(开箱即用)
优异冲分营是一个完整的在线考试平台,为学生提供在线答题功能,为管理员提供试题和试卷管理功能。系统支持多种题型(单选、多选、填空、问答、阅读题),具备用户管理、试卷管理、答题记录等功能。
·
AI编程
设计流程
管理端需求
- 试卷管理
- 试题管理
- 用户管理
- 试卷记录管理
小程序学生端:
- 个人中心
- 试卷列表
- 在线考试
- 答案解析
实现功能
- 试题通过pdf或word导入,进入试题库;
- 题型有选择题包括多选,填空题,问答,阅读等各种题型,每个题都有答案以及每个题都有对应的解析包括视频解析
- 试题有难,中,易区分,同时也有年级,学校,出版本等属性
- 用户可以用手机号注册,然后选择对应的年级
- 首页展示对应的试题列表,登录成功后,可以选择对应习题在线进行答题,完后可以看试题答案和试题解析
- 个人中心应该显示做过的试卷记录,包括当时每个题所写的答案,打开试卷记录详情,可以看到每个题当时填的答案以及查看答案分析,包括视频解析每个题
实现标准:
- app-mini-exam项目已集成springboot3.5.9,mybatisplus,nacos,druid驱动,redis以及liquibase,使用maven管理,jdk为11
- 目前项目、配置文件以及nacos的都已配置好,无需在配置,主要在application.yml和application-dev.yml
- 数据库脚本放在changelog/master/db.changelog-master.sql
后端项目:app-mini-exam,启动类FrameApplication,包路径;com.app.base.frame - 所有接口要加@BusinessLog注解,要import app.base.logger.annotation.BusinessLog;参数如@BusinessLog(moduleName = “应用管理”, description = “获取所有应用”)
- 所有接口返回对象统一为Result,要import app.base.opencommon.common.Result
异常统一使用BusinessException 要import app.base.opencommon.exception.BusinessException - 表名已app_开头,字段名已app_开头
优异冲分营 - 在线考试系统
一个基于 Spring Boot + Vue 3 的在线考试系统,支持学生答题、管理员管理试题和试卷。
项目简介
优异冲分营是一个完整的在线考试平台,为学生提供在线答题功能,为管理员提供试题和试卷管理功能。系统支持多种题型(单选、多选、填空、问答、阅读题),具备用户管理、试卷管理、答题记录等功能。
技术栈
后端
- Spring Boot 3.x - 核心框架
- Spring Cloud - 微服务支持(Nacos配置中心)
- MyBatis-Plus - ORM框架
- PostgreSQL - 关系型数据库
- Redis - 缓存
- Druid - 数据库连接池
- Liquibase - 数据库版本管理
- Lombok - 简化Java代码
- Hutool - 工具类库
- Apache POI - Word文档解析
- Apache PDFBox - PDF文档解析
前端
- Vue 3 - 前端框架
- Vue Router - 路由管理
- Element Plus - UI组件库
- Axios - HTTP客户端
项目结构
app-mini-exam/
├── src/
│ ├── main/
│ │ ├── java/com/app/base/frame/
│ │ │ ├── config/ # 配置类(CORS、拦截器、MyBatis-Plus、Redis等)
│ │ │ ├── controller/ # 控制器层
│ │ │ │ ├── AppUserController.java # 用户管理
│ │ │ │ ├── AppQuestionController.java # 试题管理
│ │ │ │ ├── AppExamController.java # 试卷管理
│ │ │ │ └── AppAnswerRecordController.java # 答题记录
│ │ │ ├── dto/ # 数据传输对象
│ │ │ ├── entity/ # 实体类
│ │ │ ├── liquibase/ # 数据库版本管理
│ │ │ ├── mapper/ # MyBatis-Plus Mapper
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── util/ # 工具类(AES、RSA、MD5、脱敏等)
│ │ │ └── vo/ # 视图对象
│ │ └── resources/
│ │ ├── static/ # 静态资源
│ │ │ ├── css/ # 样式文件
│ │ │ ├── js/ # JavaScript文件
│ │ │ │ ├── components/ # Vue组件
│ │ │ │ └── lib/ # 工具库
│ │ │ ├── local/ # 本地库文件
│ │ │ ├── image/ # 图片资源
│ │ │ ├── index.html # 学生端入口
│ │ │ ├── index-exam.html # 考试入口
│ │ │ ├── admin-nav.html # 管理后台导航
│ │ │ ├── admin-user.html # 用户管理
│ │ │ └── admin-exam-record.html # 试卷记录
│ │ └── changelog/ # 数据库变更脚本
├── pom.xml
└── README.md
数据库设计
核心表结构
| 表名 | 说明 |
|---|---|
app_user |
用户表(学生/管理员) |
app_question |
试题表 |
app_exam |
试卷表 |
app_exam_question |
试卷题目关联表 |
app_user_answer |
用户答题记录表 |
app_exam_answer |
试卷答题记录表 |
用户类型
STUDENT- 学生ADMIN- 管理员
功能模块
学生端功能

1. 用户管理
-
用户注册(手机号、密码)
-
用户登录

-
个人信息查看

2. 试卷答题
- 浏览试卷列表
- 按年级筛选试卷
- 在线答题

- 查看答题结果和解析

3. 答题记录
- 查看个人答题记录
- 查看答题详情(每道题的答案、正确答案、解析)

管理端功能

1. 试卷管理 (/index-exam.html#/exam-manage)
- 创建试卷(智能组卷)
- 编辑试卷
- 删除试卷
- 导入试卷(Word模板)
- 下载试卷模板
- 从题库选择试题
- 设置试卷总分、时长

2. 试题管理 (/index-exam.html#/question-manage)
- 查看试题列表
- 按题型、难度、年级筛选试题
- 导入试题(PDF/Word)
- 删除试题
- 查看试题详情

支持的题型:
- 单选题 (SINGLE_CHOICE)
- 多选题 (MULTIPLE_CHOICE)
- 填空题 (FILL_BLANK)
- 问答题 (ESSAY)
- 阅读题 (READING)
支持的难度:
- 简单 (EASY)
- 中等 (MEDIUM)
- 困难 (HARD)
3. 用户管理 (/admin-user.html)
- 查看所有用户
- 分页查询
- 按手机号搜索
- 显示用户信息:ID、手机号、姓名、年级、类型、状态、创建时间

4. 试卷记录 (/admin-exam-record.html)
-
查看所有用户的试卷答题记录
-
分页查询

-
查看答题详情(逐题查看)

安装部署
前置要求
- JDK 11+
- Maven 3.6+
- PostgreSQL 12+
- Redis 5+
- Node.js 16+(可选,用于前端开发)
数据库配置
- 创建数据库:
CREATE DATABASE app_mini_exam;
- 配置数据库连接(
application-dev.yml):
spring:
datasource:
url: jdbc:postgresql://localhost:5432/app_mini_exam
username: your_username
password: your_password
- 数据库表会自动通过 Liquibase 创建(首次启动时执行)
Redis配置
spring:
data:
redis:
host: localhost
port: 6379
password: your_password
database: 0
编译运行
- 克隆项目:
git clone <repository-url>
cd app-mini-exam
-
修改配置文件
src/main/resources/application-dev.yml:- 数据库连接信息
- Redis连接信息
- API基础URL(
api-client.js中)
-
编译打包:
mvn clean package -DskipTests
- 运行项目:
java -jar target/app-exam-3.3.3.jar
或直接在IDE中运行 FrameApplication.java
访问地址
- 学生端:
http://localhost:10090/index.html - 考试端:
http://localhost:10090/index-exam.html - 管理后台:
http://localhost:10090/admin-nav.html - API文档:需配置Swagger
默认账号
管理员账号
数据库脚本中包含默认管理员账号,可在 src/main/resources/changelog/master/create-admin-user.sql 中查看或修改。
测试数据
测试数据位于 src/main/resources/changelog/master/test-data.sql,包含测试用户、试题、试卷等数据。
API接口
用户模块
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 注册 | POST | /api/user/register | 用户注册 |
| 登录 | POST | /api/user/login | 用户登录 |
| 获取用户信息 | GET | /api/user/info | 获取当前用户信息 |
| 获取所有用户 | GET | /api/user/all | 获取所有用户(管理员) |
试题模块
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 试题列表 | GET | /api/question/list | 获取试题列表(分页) |
| 导入试题 | POST | /api/question/import | 导入试题 |
| 删除试题 | DELETE | /api/question/{id} | 删除试题 |
试卷模块
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 试卷列表 | GET | /api/exam/list | 获取试卷列表(分页) |
| 创建试卷 | POST | /api/exam/create | 创建试卷 |
| 试卷详情 | GET | /api/exam/detail/{id} | 获取试卷详情 |
| 删除试卷 | DELETE | /api/exam/{id} | 删除试卷 |
| 导入试卷 | POST | /api/exam/import | 导入试卷 |
答题模块
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 提交答案 | POST | /api/answer/submit | 提交答题答案 |
| 答题记录 | GET | /api/exam/answer-records | 获取用户答题记录 |
| 所有试卷记录 | GET | /api/exam/answer-records/all | 获取所有试卷记录(管理员) |
前端路由
| 路径 | 组件 | 说明 | 权限 |
|---|---|---|---|
| /login | UserLogin | 登录页 | 公开 |
| /register | UserRegister | 注册页 | 公开 |
| /select-grade | SelectGrade | 选择年级 | 需登录 |
| /home | Home | 首页 | 需登录 |
| /exams | ExamList | 试卷列表 | 需登录 |
| /exam/:id | ExamDetail | 试卷答题 | 需登录 |
| /exam-answer-detail/:id | ExamAnswerDetail | 答题详情 | 需登录 |
| /profile | Profile | 个人中心 | 需登录 |
| /exam-manage | ExamManage | 试卷管理 | 需登录 |
| /question-manage | QuestionManage | 试题管理 | 需登录 |
开发说明
添加新的API接口
- 在
controller包中创建或修改Controller - 在
service包中创建或修改Service - 在
mapper包中创建或修改Mapper(如需要) - 在前端
api-client.js中添加API调用方法
添加新的前端页面
- 在
js/components/下创建新的Vue组件 - 在
js/lib/router-manager-exam.js中添加路由配置 - 在对应HTML文件中引入新组件
数据库变更
- 在
src/main/resources/changelog/master/下创建新的SQL文件 - 在
db.changelog-master.sql中引用新的变更集 - Liquibase会在下次启动时自动执行变更
常见问题
1. 数据库连接失败
检查 application-dev.yml 中的数据库配置是否正确,确保PostgreSQL服务已启动。
2. Redis连接失败
检查Redis服务是否启动,确认连接配置正确。
3. 页面无法访问静态资源
确保静态资源路径正确,检查浏览器控制台是否有404错误。
4. API请求失败
检查:
- 后端服务是否启动(端口10090)
- token是否正确
- API路径是否正确
许可证
本项目仅供学习。
更多推荐


所有评论(0)