【开源】基于Vue和SpringBoot的教学过程管理系统

在这里插入图片描述

项目编号: S 054 ,文末获取源码。 \color{red}{项目编号:S054,文末获取源码。} 项目编号:S054,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 教师端
    • 2.2 学生端
    • 2.3 微信小程序端
      • 2.3.1 教师功能如下
      • 2.3.2 学生功能如下
    • 三、系统展示
  • 四、核心代码
    • 4.1 查询签到
    • 4.2 签到
    • 4.3 查询任务
    • 4.4 查询课程
    • 4.5 生成课程成绩
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的教学过程管理系统,包含了课程档案、课程题目、课程成绩、消息通知、课堂签到、课堂任务模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,教学过程管理系统基于角色的访问控制,给高校管理员、教师、学生角色使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

大学生的课程评价有多个维度,除了期末考试,还有平时成绩。其中平时成绩包括签到考勤、作业、课堂表现、阶段测试、期中测试等等。本课题旨在帮助教师更好的进行教学过程管理,对每位学生的平时表现进行记录汇总,并及时的在线答疑。

1.2 项目录屏

源码下载


二、功能模块

2.1 教师端

  1. 签到功能:老师发布签到任务,学生在规定时间内完成签到。
  2. 任务发布:老师可以向同学们发布任务,包括考试、测试、作业等,任务可以限时,同学们在规定的时间内完成。
  3. 作业批改:老师可以在线批改作业,客观题可以由系统批阅,主观题老师可以在线批阅。
  4. 消息发送:老师可以发送消息给学生,方便和学生沟通。
  5. 成绩管理:管理学生的平时成绩,可以给学生的各项成绩设置分数比例。
  6. 课程管理:老师可以增加删除课程,也可以修改课程。
  7. 成绩统计:统计学生成绩,老帅可以查看学生的成绩并导出。

2.2 学生端

  1. 课程查看(学生查看个人所选全部课程)。
  2. 选课(学生可以选课)。
  3. 在线考试(学生可以在某门课下进行在线考试)。
  4. 通知查看(可以查看系统消息通知,消息由老师发送的或者由系统发送)。
  5. 签到(可以查看个人所有已签到,所有末签到,能够进行点击签到)。
  6. 个人信息管理(能够查看个人详细信息,修改详细信息)。
  7. 客观题自动批改(客观题系统能够直接批改)。

2.3 微信小程序端

小程序主要包括教师和学生两种用户。

2.3.1 教师功能如下

  1. 用户登录功能:点击登录,填写姓名,选择社会身份,如教师,学生,然后填写所属学校进行登录。
  2. 个人中心功能:可以查看个人信息,如姓名,身份,院校。
  3. 消息中心功能:可以接受发送消息。
  4. 课程管理功能:可以查看学生的签到情况,作业完成情况,测试情况,考试分数情况,课程整体分数,班级整体情况。

2.3.2 学生功能如下

  1. 用户登录功能:点击登录,填写姓名,选择社会身份,如学生,教师,然后填写所属学校进行登录。
  2. 个人中心功能:可以查看个人信息,如姓名,身份,院校,学号。
  3. 消息中心功能:对学生进行提醒,如签到,作业截止之前进行提醒,测试,考试临近开始进行提醒。
  4. 在线答题功能:可以在线考试,测试,完成作业。
  5. 课程查看功能:可以查看个人作业,测试,考试的完成情况。
  6. 习题集功能:可以创建错题本,收藏题目。

三、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、核心代码

4.1 查询签到

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询签到")
public Result<IPage<Sign>> getByPage(@ModelAttribute Sign sign ,@ModelAttribute PageVo page){QueryWrapper<Sign> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();if(!ZwzNullUtils.isNull(sign.getTitle())) {qw.like("title",sign.getTitle());}if(!ZwzNullUtils.isNull(sign.getSendUser())) {qw.like("send_user",sign.getSendUser());}IPage<Sign> data = iSignService.page(PageUtil.initMpPage(page),qw);for (Sign s : data.getRecords()) {QueryWrapper<SignItem> itemQw = new QueryWrapper<>();itemQw.eq("user_id",currUser.getId());itemQw.eq("sign_id",s.getId());s.setSignNumber(iSignItemService.count(itemQw));}return new ResultUtil<IPage<Sign>>().setData(data);
}

4.2 签到

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条签到数据")
public Result<SignItem> addOne(@RequestParam String id){Sign sign = iSignService.getById(id);if(sign == null) {return ResultUtil.error("签到不存在");}User currUser = securityUtil.getCurrUser();SignItem si = new SignItem();si.setSignId(sign.getId());si.setTitle(sign.getTitle());si.setContent(sign.getContent());si.setDate(sign.getDate());si.setUserId(currUser.getId());si.setUserName(currUser.getNickname());si.setTime(DateUtil.now());iSignItemService.saveOrUpdate(si);return ResultUtil.success();
}

4.3 查询任务

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询任务")
public Result<IPage<Task>> getByPage(@ModelAttribute Task task ,@ModelAttribute PageVo page){QueryWrapper<Task> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();if(!ZwzNullUtils.isNull(task.getTitle())) {qw.like("title",task.getTitle());}if(!ZwzNullUtils.isNull(task.getSendUser())) {qw.like("send_user",task.getSendUser());}IPage<Task> data = iTaskService.page(PageUtil.initMpPage(page),qw);for (Task t : data.getRecords()) {QueryWrapper<TaskItem> itemQw = new QueryWrapper<>();itemQw.eq("user_id",currUser.getId());itemQw.eq("task_id",t.getId());t.setTaskNumber(iTaskItemService.count(itemQw));}return new ResultUtil<IPage<Task>>().setData(data);
}

4.4 查询课程

@RequestMapping(value = "/getAllApp", method = RequestMethod.GET)
@ApiOperation(value = "查询全部课程")
public Result<List<Curriculum>> getAllApp(){List<Curriculum> curriculumList = iCurriculumService.list();for (Curriculum curriculum : curriculumList) {QueryWrapper<Achievement> aQw = new QueryWrapper<>();aQw.eq("curriculum_id",curriculum.getId());List<Achievement> achievementList = iAchievementService.list(aQw);String str = "";for (Achievement a : achievementList) {str += a.getUserName() + ":" + a.getGrade() + "分; ";}curriculum.setQues(str);}return new ResultUtil<List<Curriculum>>().setData(curriculumList);
}

4.5 生成课程成绩

@RequestMapping(value = "/create", method = RequestMethod.GET)
@ApiOperation(value = "生成课程成绩")
public Result<Object> create(@RequestParam String id){Curriculum curriculum = iCurriculumService.getById(id);if(curriculum == null) {return ResultUtil.error("课程不存在");}List<User> userList = iUserService.list();QueryWrapper<Achievement> aQw = new QueryWrapper<>();aQw.eq("curriculum_id",curriculum.getId());iAchievementService.remove(aQw);for (User user : userList) {Achievement a = new Achievement();a.setUserId(user.getId());a.setUserName(user.getNickname());a.setCurriculumId(curriculum.getId());a.setCurriculumName(curriculum.getTitle());a.setQues(curriculum.getQues());a.setQuesAns("");a.setGrade(BigDecimal.ZERO);a.setGrade1(BigDecimal.ZERO);a.setGrade2(BigDecimal.ZERO);a.setTime("");iAchievementService.saveOrUpdate(a);}return ResultUtil.success();
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8 个有效的安卓数据恢复软件——可让丢失的文件起死回生!

所有数字设备最终都会失败。安卓设备也不例外&#xff0c;无论您使用的是 Android 手机还是平板电脑。由于缺乏备份、意外删除、存储卡问题、生根错误等&#xff0c;您可能会丢失一些宝贵的数据。 如果发生这种情况&#xff0c;最好的选择之一是使用安卓数据恢复软件——这可能…

Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案 3、设计思路详解HLS 图像缩放介绍 4、工程代码1&#xff1a;图像缩放 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2&#xff1a;图像缩放 LCD 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设…

漏洞检测与EPSS评分

EPSS (利用预测评分系统)是为了测量特定的漏洞在野外被利用的可能性。EPSS 得分范围从0% (最低的利用概率)到100% (最高的利用概率)。此外&#xff0c;由于仅从概率得分很难推断出真正的意义&#xff0c;EPSS 还提供百分位排名; 百分位排名衡量 EPSS 概率相对于所有其他 EPSS 得…

事关Django的静态资源目录设置与静态资源文件引用(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)

在Django的setting.py中常见的三句静态资源(static)目录设置语句如下&#xff1a; STATICFILES_DIRS [os.path.join(BASE_DIR, static_list)] # 注意这是一个列表,即可以有多个目录的路径 STATIC_ROOT os.path.join(BASE_DIR, static_root) STATIC_URL /static-url/本文介…

PCS7中如何实现DB块变量的自动上传

问题:如何实现PCS7中DB块中变量的自动上传? 解答:PCS7下,所有CFC中的变量都通过编译的方式自动上传的OS项目中,针对自定义的DB块同样也可以通过设置相关属性自动上传的OS中,具体操作如下: 插入一个全局数据块。 注意:数据块号必须符合要求,可以参考PCS7中定义的预留DB…

【代数学习题4.1】从零理解范数与迹 —— 求极小多项式

从零理解范数与迹 —— 求极小多项式 写在前面概念解释题目解答 1. 极小多项式极小多项式的求法1. 对 α \alpha α 的极小多项式python求解 2. 对 α 1 \alpha 1 α1 的极小多项式python找到多项式python找到极小多项式 3. 对 α 2 α 1 \alpha^2 \alpha 1 α2α1 的…

Android : ListView + BaseAdapter-简单应用

​​容器与适配器&#xff1a;​​​​​ http://t.csdnimg.cn/ZfAJ7 示例图&#xff1a; 实体类 News.java package com.example.mylistviewbaseadapter.entity;public class News {private String title;private String content;private int img;public News(Str…

【Linux】Linux中的基本概念

Linux中的基本概念 1. 路径分隔符/2. 当前目录 .3. 返回上级目录 . .目录结构&#xff1a;多叉树 4. 路径5. 路径 { 绝对路径 相对路径 }6. * 通配符 指定路径下的所有文件7. 同级目录下&#xff0c;不允许存在同名文件&#xff0c;或者同名目录8. 命令的本质就是可执行文件9…

第三方模块远程注入到软件中引发软件异常的若干实战案例分享

目录 1、概述 2、老版本的输入法导致软件CPU频繁跳高&#xff08;导致软件出现卡顿&#xff09;的问题 3、QQ拼音输入法注入到安装包进程中&#xff0c;导致安装包主线程卡死问题 3.1、多线程死锁分析 3.2、进一步研究 4、安全软件注入到软件中&#xff0c;注入模块发生了…

什么是图神经网络

当这两种技术融合在一起时&#xff0c;就可以创造出一些新颖、奇妙的东西——比如手机和浏览器融合在一起&#xff0c;产生了智能手机。 如今&#xff0c;科研人员正在将人工智能发现模式的能力应用于存储各种数据点之间关系信息的大型图数据库。与此同时&#xff0c;就产生了…

FreeRTOS源码阅读笔记4--semphr.h

信号量是特殊的队列--无法存储消息的队列&#xff0c;相关的接口函数声明在semphr.h中&#xff0c;通过宏定义替换队列函数实现。 4.1创建二值信号量xSemaphoreCreateBinary() 4.1.1函数原型 queueQUEUE_TYPE_BINARY_SEMAPHORE&#xff1a;一个宏&#xff0c;表示创建队列的…

这是一棵适合搜索二叉树

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

单链表OJ题--9.环形链表

9.环形链表 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; /* 解题思路&#xff1a; 定义快慢指针fast,slow, 如果链表确实有环&#xff0c;fast指针一定会在环内追上slow指针。 */typedef struct ListNode Node; bool hasCycle(struct ListNode *head) {Node* slow …

深信服技术认证“SCSA-S”划重点:渗透测试工具使用

为帮助大家更加系统化的学习网络安全知识&#xff0c;尽快通过深信服安全服务认证工程师认证&#xff0c;深信服推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师&#xff08;…

【开源】基于Vue和SpringBoot的创意工坊双创管理系统

项目编号&#xff1a; S 049 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S049&#xff0c;文末获取源码。} 项目编号&#xff1a;S049&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、…

紧跟热点:教你如何快速掌握ChatGPT

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

图解Spark Graphx基于connectedComponents函数实现连通图底层原理

原创/朱季谦 第一次写这么长的graphx源码解读&#xff0c;还是比较晦涩&#xff0c;有较多不足之处&#xff0c;争取改进。 一、连通图说明 连通图是指图中的任意两个顶点之间都存在路径相连而组成的一个子图。 用一个图来说明&#xff0c;例如&#xff0c;下面这个叫graph…

【教3妹学编程-算法题】最大异或乘积

3妹&#xff1a;2哥&#xff0c;你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定” 2哥 : 啥&#xff1f;18岁就当爹啦&#xff1f; 3妹&#xff1a;确切的说是14岁好吧。 2哥 : 哎&#xff0c;想我30了&#xff0c; 还是个单身狗。 3妹&#xff1a;别急啊&#xff0c; 2…

已完结7个,再启动1个新项目,嘎嘎强!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。 &#x1f490;又到了启动新项目的时候&#xff0c;死鬼开心嘛。小傅哥的星球&#xf…