在线教学考试系统

友友们好啊,最近把我的本科毕设整理到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个小时。比如通知创建后,再修改,就会出现时间错误。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐