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+(可选,用于前端开发)

数据库配置

  1. 创建数据库:
CREATE DATABASE app_mini_exam;
  1. 配置数据库连接(application-dev.yml):
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/app_mini_exam
    username: your_username
    password: your_password
  1. 数据库表会自动通过 Liquibase 创建(首次启动时执行)

Redis配置

spring:
  data:
    redis:
      host: localhost
      port: 6379
      password: your_password
      database: 0

编译运行

  1. 克隆项目:
git clone <repository-url>
cd app-mini-exam
  1. 修改配置文件 src/main/resources/application-dev.yml

    • 数据库连接信息
    • Redis连接信息
    • API基础URL(api-client.js 中)
  2. 编译打包:

mvn clean package -DskipTests
  1. 运行项目:
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接口

  1. controller 包中创建或修改Controller
  2. service 包中创建或修改Service
  3. mapper 包中创建或修改Mapper(如需要)
  4. 在前端 api-client.js 中添加API调用方法

添加新的前端页面

  1. js/components/ 下创建新的Vue组件
  2. js/lib/router-manager-exam.js 中添加路由配置
  3. 在对应HTML文件中引入新组件

数据库变更

  1. src/main/resources/changelog/master/ 下创建新的SQL文件
  2. db.changelog-master.sql 中引用新的变更集
  3. Liquibase会在下次启动时自动执行变更

常见问题

1. 数据库连接失败

检查 application-dev.yml 中的数据库配置是否正确,确保PostgreSQL服务已启动。

2. Redis连接失败

检查Redis服务是否启动,确认连接配置正确。

3. 页面无法访问静态资源

确保静态资源路径正确,检查浏览器控制台是否有404错误。

4. API请求失败

检查:

  • 后端服务是否启动(端口10090)
  • token是否正确
  • API路径是否正确

许可证

本项目仅供学习。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐