基于前后端分离的在线考试系统(微服务架构 + RBAC权限 + AI助手)

附源码链接:https://github.com/YangKTwo/-online-exam-platform

1.前言

为了实现考核和评估的数字化管理,我开发了一个在线考试系统。系统支持题库管理、智能组卷、在线答题、评卷与成绩分析,并提供 AI 助手能力(用于答疑/生成辅助内容等)。

这是一个面向高校教学场景的前后端分离系统,支持题库管理、组卷、考试、评卷、成绩分析与 AI 助手能力,并采用网关 + 微服务架构实现权限与业务解耦。

本项目采用前后端分离架构:前端负责交互与权限展示,后端采用 Spring Boot 微服务,并通过 API 网关统一对外入口,保证接口边界清晰、扩展更方便。

2.项目概述

系统面向三类角色:

  • 学生:查看考试、在线作答、查看成绩与错题本/报告

  • 教师:题库与试卷管理、组卷、考试监控、评卷、成绩分析

  • 管理员:用户/教师审核、权限管理、班级学科与教师分配等

系统整体采用 RBAC 权限模型 + JWT 鉴权,确保不同角色只能访问对应资源。

3.功能亮点

  • 题库管理:题目/科目/标签维护、题目导入与 AI 生成(可选)

  • 试卷管理:试卷版本、试卷题目管理、智能组卷

  • 考试中心:考试创建、考试监控、考试状态同步、学生参与记录

  • 评卷与成绩:主观题评阅(手动/半自动)、成绩统计、班级报告

  • 学习分析:错题本/学习记录、能力维度与分析报表

  • AI 助手模块:AI 问答/助手能力(用于教学辅导或报告生成辅助)

  • 文件上传:头像/资源上传(对接对象存储能力)

4.技术栈

1.前端

  • Vue 3 + TypeScript

  • Vite

  • Pinia(状态管理)

  • Vue Router(路由守卫实现权限控制)

  • Element Plus(UI)

  • Axios(请求封装)

  • CodeMirror(题目编辑器/代码题支持)

  • ECharts(统计展示)

2.后端

  • Java 17

  • Spring Boot

  • Spring Cloud Alibaba(Nacos 服务发现)

  • Spring Cloud Gateway(统一网关路由)

  • JWT 鉴权 + RBAC 权限

  • MySQL(业务数据)

  • Redis(缓存/统计/AI相关缓存等)

  • MyBatis-Plus(数据层)

  • OpenFeign(服务间调用)

  • SpringDoc(接口文档)

5.架构设计

后端采用"Gateway 统一入口 + 多领域服务"的方式,典型路由包括:

  • 用户服务(登录/注册/权限/上传)

  • 题库服务(题目/科目/标签/统计)

  • 试卷服务(试卷、智能组卷、版本管理)

  • 考试服务(考试流程、答题/评卷、报告与统计)

  • 班级服务(班级、成员、教师分配等)

  • AI 服务(AI助手/相关能力)

  • 公共模块 exam-common(JWT/通用模型/工具类等)

6.权限体系(RBAC/JWT)

  • 登录后,前端携带 JWT 请求头访问接口

  • 前端在路由层做权限守卫:区分是否登录、是否具备角色权限、是否具备权限码(permission)

  • 后端在接口层做鉴权:通过 JWT + RBAC 校验,返回受控的业务数据

  • 这样可以同时覆盖"页面不可见"和"接口不可访问"两类风险

7. 业务流程(从出题到反馈)

  1. 教师维护题库与标签/科目

  2. 教师创建试卷并添加题目(或使用智能组卷)

  3. 教师发布考试并进入监控/答题过程

  4. 学生在线作答,提交后进入成绩/报告阶段

  5. 教师评阅主观题

  6. 系统生成成绩统计与学习分析(错题本/能力维度等)

  7. 可选使用 AI 助手生成辅助教学内容或报告内容

8.运行部署说明

  • 配置环境:Nacos、MySQL、Redis

  • 配置后端:为各服务准备 `application-local.yml/application-dev.yml` 等(JWT、数据库、Redis、AI/Oss等)

  • 启动顺序建议:

  1. 网关服务(exam-gateway)

  2. 各业务服务(exam-user/exam-question/exam-paper/exam-exam/exam-class/exam-ai)

  • 启动前端:

  • 安装依赖并运行开发模式(Vite)

  • 前端 API 统一走 `/api` 代理到网关

9.成果展示

1.学生端

2.教师端

3.管理端

欢迎 Star 和提 Issues,想交流也可以留言。

相关推荐
疯狂打码的少年38 分钟前
【数据库技术】关系模型基本概念(关系/属性/元组/键)
java·服务器·数据库·笔记
Mr数据杨2 小时前
【Codex】用学生入学评估模块建立新生能力画像
android·java·javascript·django·codex·项目开发
2601_962056233 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
Mr数据杨3 小时前
【Codex】用部门管理模块维护组织架构与管理层级
架构·django·codex·项目开发
国医中兴3 小时前
电子病历的时序数据分析:ClickHouse在临床指标监控中的落地
微服务·云原生·容器·kubernetes·k8s
浮生望3 小时前
TypeScript 高级工具类型实战:Pick、Omit、Partial 到 Record 的完整解析
typescript
Thomas21433 小时前
Java scala 数组 链表
java·链表·scala
亚历克斯神3 小时前
低代码与 AI 的融合趋势——从可视化搭建到自然语言生成应用
java·spring·微服务
IT毕设实战小研3 小时前
基于安卓的空气质量查询系统
android·大数据·vue.js·爬虫·python·django·课程设计
Capricorn19883 小时前
个人知识库接入大模型频现“幻觉引用”?排查 RAG 溯源失效问题,解析知芽构建可信第三大脑的底层架构
大数据·论文阅读·人工智能·笔记·架构·论文笔记