前阵子接到一个粉丝需求,对方是一家做职业资格培训的小机构负责人,希望我帮忙搭建一套自己的在线考试学习平台,能让学生在手机、电脑上刷题、模考,老师在线出题、阅卷,管理员在线查看数据看板。
这种需求去外面找团队报价,基本都要四五万起步,来回沟通需求,排期至少2-3个月,因为关注了我很久,觉得比较靠谱,所以比较信任我。他的预算比较有限,希望我帮忙开发。
因为之前也接触过类似系统开发,大多数功能都是相似的,在之前的基础上,我针对他的业务进行了一些定制化处理,最终30天给他交付一套完整的系统,含学生端+教师端+管理员端三端界面,跑通了从题库录入到自动阅卷再到ECharts成绩统计的完整闭环,客户验收一次性通过。
今天,也将它安利给大家,有需要的可以联系沟通!
简介
Learning是一款功能齐全、可开箱即用的考试学习系统,可帮助培训机构、培训学校等用户解决在线教育场景下出题难、阅卷难、成绩统计难等问题,也可用作个人毕设。系统集题库管理、试卷管理、在线考试、自动阅卷、签到学习、学习资源、数据可视化等完整功能于一体,支持学生端、教师端、管理员端三端使用,可实现在线考试的每个环节全流程跟踪。
系统采用前后端分离架构设计,基于主流技术栈SpringBoot + Spring Security + MyBatis-Plus + JWT + Vue + ECharts构建,界面简洁清晰,功能完整实用,操作简单清晰,支持二次拓展和私有化部署。十分适合培训机构、学校、企业内训等用户搭建个性化在线考试学习平台使用。
项目概况
项目类型:在线考试学习系统(学生端 + 教师端 + 管理员端)
开发周期:30 天
开发人数:1 人
维护费用:2500 元 / 年(含服务器维护、版本迭代、功能小幅新增、全年 bug 免费修复)
服务器:1 台云服务器(2 核 4G,CentOS7 系统,支持后期弹性扩容升级配置)
部署模式:Nginx 反向代理 + SpringBoot 后端 + Vue 前端 + MySQL 持久化 + JWT 鉴权
数据库:MySQL 8(兼容 5.7,需开启 innodb_large_prefix)
运行环境:JDK 11 + Maven 3.0+ + Node 12+
特色算法:遗传算法自动组卷(GA)
功能列表
-
题库管理:
-
后台提供题目录入界面,支持单选、多选、判断等多种题型,每道题可配置选项、答案、难度、知识点,用户无需再翻纸质题库,所有题目数字化沉淀,人员变动也不会影响题库资产,可有效提高机构竞争力。
-
-
试卷管理:
-
支持手动组卷(从题库选题)和遗传算法(GA)自动组卷(按题型/难度/知识点规则自动抽题)两种模式,老师无需手动选题,几分钟即可自动生成难度均衡的试卷,可节约大量排版时间,提高工作效率。
-
-
在线考试管理:
-
学生端提供在线答题界面,支持考试倒计时、答题卡跳转、交卷确认,提交后客观题自动判分,使用手机、电脑都随时随地参加模考,简单快捷。
-
-
在线阅卷:
-
教师端提供阅卷页面,对主观题在线打分、写评语,支持按学生/按题目两种阅卷视角,效率翻倍。
-
-
资源管理:
-
系统支持维护课程列表和学习资源(视频/文档/链接),资源分类管理。培训机构可把学习和考试串起来,学生学完课程直接做题,形成学习闭环。
-
-
学习时长统计:
-
支持签到功能,后端可自动累计每个学生的学习时长,按学生/按资源维度统计,机构可量化学生学习行为,为续费谈判提供有效数据支撑。
-
-
角色管理:
-
内置学生端(在线考试/我的成绩/我的题库/训练)、教师端(添加考试/考试管理/阅卷/题库管理)、管理员端(公告管理/用户管理)三套界面,不同角色看到的功能完全隔离,确保权限清晰不越权。
-
-
数据可视化:
-
内置ECharts数据看板,直观展示成绩分布、考试统计、资源统计、学生成绩等多维图表,管理员一眼就能看到全平台的学习和考试情况。
-
-
权限管理:
-
系统基于Spring Security + JWT实现无状态鉴权,搭配角色/菜单/权限三层RBAC模型,全方位保障系统安全,后期拓展新角色新功能也不用重写权限。
-
-
公告管理:
-
支持自定义发布机构公告和新闻资讯,前台学生端实时展示,无需再群发微信通知,平台内即可一键触达所有学生。
-
-
数据管理:
-
集成EasyPOI,支持题库批量Excel导入、成绩批量Excel导出,方便用户旧题库迁移,数据归档等场景使用。
-
-
代码生成器:
-
系统集成Swagger自动生成API文档,内置代码生成器(Controller/Service/Mapper/Vue模板),支持一件生成前后端代码,提升开发效率。
-
功能截图
登录:
试卷管理:
手动组卷:
测试管理:
公告管理:
在线考试:
评阅考试:
数据统计:
用户管理:
作业成绩:
公告管理:
系统架构
项目结构:
learning-system/
├── houduan/ # 后端 SpringBoot 项目
│ └── src/main/java/com/online/study/
│ ├── common/ # 公共模块
│ │ ├── arithmetic/ # 遗传算法组卷(GA/Population/GetPaper)
│ │ ├── state/ # 考试/签到/学生试卷状态枚举
│ │ └── type/ # 题型枚举
│ ├── config/ # 配置模块
│ │ ├── interceptor/ # JWT 拦截器
│ │ ├── CorsConfig # 跨域配置
│ │ ├── MybatisPlusConfig # MyBatis-Plus 配置
│ │ └── SwaggerConfig # Swagger API 文档
│ ├── controller/ # 控制层(含 DTO)
│ │ ├── ExamController # 考试
│ │ ├── ExamPaperController # 试卷
│ │ ├── QuestionController # 题目
│ │ ├── CourseController # 课程
│ │ ├── StudyResourceController # 学习资源
│ │ ├── SignController # 签到
│ │ ├── EchartsController # 图表数据
│ │ ├── UserController # 用户
│ │ ├── MenuController # 菜单
│ │ ├── NoticeController # 公告
│ │ └── ...
│ ├── entity/ # 实体层(含 DTO/VO)
│ ├── mapper/ # MyBatis-Plus Mapper
│ ├── service/ # 业务层(含 impl)
│ └── utils/ # 工具类(TokenUtils/EasyPOI/CodeGenerator)
│
└── qianduan/ # 前端 Vue 项目
└── src/
├── api/ # 接口封装(exam/question/grade/...)
├── assets/ # 静态资源(CSS/Font Awesome/图片)
├── components/ # 公共组件(Aside/Header/Identify)
└── views/ # 页面
├── auth/ # 登录/注册
├── student/ # 学生端(在线考试/考试结果/我的成绩/我的题库/训练)
├── teacher/ # 教师端(添加考试/考试管理/阅卷/题库管理/题目管理)
└── admin/ # 管理员端(公告管理/用户管理)
技术栈:
前端 (Frontend):
核心框架:Vue.js
数据可视化:ECharts
UI 资源:Font Awesome
构建工具:Vue CLI / Node >= 12
后端 (Backend):
核心框架:SpringBoot
安全框架:Spring Security + JWT
ORM 框架:MyBatis-Plus
数据库:MySQL 8(兼容 5.7)
API 文档:Swagger
Excel 工具:EasyPOI
组卷算法:遗传算法(GA)
代码生成:内置 CodeGenerator
运行环境:
JDK 11
Maven >= 3.0
Node >= 12
快速开始
1、下载仓库:
cd learning-system
2、准备运行环境: JDK 11、MySQL 8(或 5.7)、Maven 3.0+、Node 12+。
3、数据库初始化: 如遇767 bytes报错,先执行以下SQL。
set global innodb_large_prefix = ON;
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=ON;
4、修改后端配置: 配置数据库连接等,配置文件位置houduan/src/main/resources/application.yml。
5、后端打包并启动:
cd houduan
mvn clean package -DskipTests
java -jar target/online_study.jar
6、前端依赖安装与启动:
cd ../qianduan
npm install -y
npm run serve
如报错可使用以下命令:
npm install -g mirror-config-china
npm i
npm install --legacy-peer-deps
7、安装ECharts:
npm install cnpm -g
cnpm install echarts --save