开源项目分享 在线教学平台 在线考试系统 流程图绘制组件
在线教学考试系统
友友们好啊,最近把我的本科毕设整理到Github上了:一款功能丰富的在线教学系统。也是我学习SSM后的第一个项目,这个项目的完成度比较高,里面的功能也较为全面,有流程图绘制功能,还包含一个完整的在线考试系统,所以开源出来给大家学习讨论,希望能得到大家的点评,代码有不合适的地方,也期待得到大家的指点!非常感谢!
一、简单讲讲
繁星之辰是一款基于SSMP开发的在线教学考试系统,系统主要提供视频学习、资料共享、信息发布、讨论板块、实验板块、在线考试等服务。系统为前后端分离架构,前端基于Vue框架开发,使用Element UI组件库辅助设计。后端开发基于SpringBoot框架,使用MyBatis Plus完成持久层设计,通过MySQL进行数据库管理,系统数据通过SHA1算法加密传输。
二、功能介绍
系统中有两种角色:管理员、用户(既有教师功能,也有学生功能)。
视频解说:【基于ssmp和vue的在线教学、在线考试系统】
项目传送门:【繁星之辰在线教学平台】
1. 作为教师,你可以:
- 创建课程并设置课程简介,上传封面,修改加入权限,管理课程内学生;
- 发布视频资料,文件资料,编辑、删除这些内容;
- 发布课程内部通知;
- 发布讨论,参与讨论,管理学生发布的讨论;
- 发布实验并上传任务书,下载学生上传的实验报告;
- 发布考试并可以添加多种题目类型,学生交卷后系统自动批改客观题,计算分数;
2. 作为学生,你可以:
- 多条件组合查找课程,加入课程;
- 在线学习课程内的视频,发布评论,为视频点赞,下载教师上传的资料;
- 查询所在课程的全部通知;
- 参与老师发布的讨论、创建讨论并回复、给讨论点赞等;
- 查看教师上传的实验任务书,上传实验报告;
- 使用在线流程图绘制功能,参与课程内的考试,答题并查看成绩;
3. 作为管理员,你可以:
- 管理系统公告;
- 审核用户创建的课程,查看、删除课程内的资料、讨论、实验、成员;
- 管理系统内的用户,修改密码,注销,创建账号,导出数据到文件;
三、运行展示
1. 平台
1.1 系统首页

1.2 平台公告

2. 用户
2.1 用户首页

2.2 查看通知

2.3 在线学习


2.4 通知发布

2.5 讨论板块

2.6 在线考试

2.7 流程图绘制

3. 管理员

三、如何运行项目
项目前后端分离,建议用IDEA运行后端,WebStorm运行前端,电脑上需要安装Node.js和MySQL,数据库用Navicat操作。
1. 后端项目(two_hours)
下载后用idea打开项目,初次加载idea会自动下载依赖,最好先配置镜像源或科学上网,这个过程可能需要1h左右。此时可以在MySQL中创建一个名为two hours的数据库,运行后端文件夹中的two hours.sql文件,即可完成数据库初始化。项目加载完成后,在application.yml中修改项目路径为你当前的项目路径,配置好数据库连接,即可运行后端了。
2. 前端项目(two_hours_front)
下载后用WebStorm打开项目文件夹,命令npm install手动安装node_modules,出现爆红和冲突请后缀--force。模块导入完成后,需要配置运行栏,选择npm运行,命令为run,Scripts为serve。
前端项目没有做比例适配,建议浏览器使用100%缩放。
四、TODO列表
朋友你好,由于项目开发时间较早,受当时编程水平的限制(菜),里面存在一些bug和可优化部分没有处理(会处理的,最近在找工作…),以下是测试中发现的一些问题,提供给你参考:
1. 用户主页(UserMainPage)
- 缺少分页:加入课程以及课程卡片展示区域,都没有做分页查询,如果系统中课程数量很多,
1. 章节页面(ChapterTab/StuChapterTab)
- 数字遮挡:小卡片上浏览量和播放量没有做分级,采用固定布局时,数字太长会被图标遮挡;
- 章节删除失败:章节封面使用video组件展示,虽然禁用了播放等操作,但只要位于该页面,服务器文件将一直处于open状态,导致用户删除视频时,文件删除操作失败(数据库可以成功删除),形成无法索引到的“死数据”;
2. 视频播放页面(ChapterView/StuChapterView)
- 刷播放量:当前策略为用户进入播放页面5秒后,该视频增加1点播放量。实际上这个时间太短,采用百分比时长更合适,但这需要读取到视频时长;
3. 关于代码
项目中有些代码,书写不一定规范,甚至有些看起来很蠢,已知的一些问题如下,恳请包容~
- 数据泄露:数据传递时没有封装专门的DTO,而是直接使用POJO,导致关键信息被泄露;
- 冗余查询:数据存入数据库后,没有直接用返回的ID,而是通过数据内容查询新插入的记录,从而获取ID,这在考试部分较为常见;
- 冗余条件:部分数据更新没有采用UpdateWrapper,而是使用了service.update(pojo,queryWrapper)方法完成,不够简洁。实际上可以采用updateById或者UpdateWrapper来封装更新条件。
4. 关于时间
- 过度显示:系统中的时间有些地方是全显示,即具体到时分秒,有些地方则只显示到日期,这在某些地方可能并不合理,比如评论区中的评论,没有必要展示到秒等等;
- 时区错误:另一个关于时间的问题,是数据编辑后,时间被mysql自动更新,但由于mysql的时区和idea不匹配,导致更新后的时间比正常时间多8个小时。比如通知创建后,再修改,就会出现时间错误。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)