Vue.js+SpringBoot开发教学过程管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 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.mfbz.cn/a/479820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高架学习笔记之系统分析与设计

目录 一、结构化方法&#xff08;SASD&#xff09; 1.1. 结构化分析方法&#xff08;SA&#xff09; 1.1.1. 数据流图&#xff08;DFD&#xff09; 1.1.2. 实体联系图&#xff08;E-R图&#xff09; 1.1.3. 状态转换图(STD) 1.1.4. 数据字典 1.2. 结构化设计方法&#x…

基于python+vue拍卖行系统的设计与实现flask-django-nodejs-php

拍卖行系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0c;拍卖行…

Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

目录 PHP-MYSQL-Web组成架构 PHP-MYSQL-SQL常规查询 手工注入 PHP-MYSQL-SQL跨库查询 跨库注入 PHP-MYSQL-SQL文件读写 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-常规查询 2、PHP-MYSQL-SQL注入-跨库查询 3、PHP-MYSQL-SQL注入-文件读写 MYSQL注入&#xff1a;&#xff…

路径规划——搜索算法详解(一):Dijkstra算法详解与代码

前言&#xff1a; 本文为小陈同学原创&#xff0c;本人为路径规划方向的研狗一枚&#xff0c;转载请阅读文末的“授权说明”&#xff0c;学习笔记为连载&#xff0c;不定期分享路径规划的知识&#xff0c;欢迎转载、关注、点赞&#x1f44d; &#xff01; 纠结了很久还是打算…

原型、原型链

如图&#xff1a; 判断对错&#xff1a; Q1:在JS 中 proto 和 constructor 属性是对象和函数都有的属性 prototype属性仅是函数对象所独有的。 由于JavaScript中一切皆对象,即函数对象也是一种对象,所以函数也拥有__proto__和constructor属性。 Q2:通过 proto 属性来连接对象…

利用WebGL绘制简单几何

利用WebGL绘制最简单的几何图形 一、WebGL简介 WebGL是一种用于在网页上渲染交互式3D和2D图形的JavaScript API。它基于OpenGL ES 2.0&#xff0c;提供了一种在浏览器中使用硬件加速图形的方式。 二、图形系统绘图流程 图形系统的通用绘图流程会包括六个部分&#xff1a; …

langchain+chatglm3+BGE+Faiss Linux环境安装依赖

前言 本篇默认读者已经看过之前windows版本&#xff0c;代码就不赘述&#xff0c;本次讲述是linux环境配置 超短代码实现&#xff01;&#xff01;基于langchainchatglm3BGEFaiss创建拥有自己知识库的大语言模型(准智能体)本人python版本3.11.0&#xff08;windows环境篇&…

Golang案例开发之gopacket抓包三次握手四次分手(3)

文章目录 前言一、理论知识三次握手四次分手二、代码实践1.模拟客户端和服务器端2.三次握手代码3.四次分手代码验证代码完整代码总结前言 TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本…

Python计算机二级选择易错题(三)

选择题第02&#xff0c;03&#xff0c;04套 题目来源&#xff1a;python计算机二级真题&#xff08;选择题&#xff09; - 知乎 选择题第02套 选择题第03套 选择题第04套 time()获取当前时间&#xff0c;即计算机内部时间&#xff0c;浮点数&#xff1b;import time库&#x…

鸿蒙Harmony应用开发—ArkTS-@AnimatableExtend装饰器:定义可动画属性

AnimatableExtend装饰器用于自定义可动画的属性方法&#xff0c;在这个属性方法中修改组件不可动画的属性。在动画执行过程时&#xff0c;通过逐帧回调函数修改不可动画属性值&#xff0c;让不可动画属性也能实现动画效果。 可动画属性&#xff1a;如果一个属性方法在animation…

必知必会干货!1分钟搞定Python编程中捕获异常

​ 在Python编程中&#xff0c;异常就是程序在运行过程中出现的问题或错误&#xff0c;比如除数为零、文件找不到等等。而异常捕获&#xff0c;就是通过在代码中设置特定的语句&#xff0c;来捕捉这些异常&#xff0c;并对其进行处理&#xff0c;防止程序崩溃。 那么&#xff…

YOLOv5全网首发改进: 注意力机制改进 | 上下文锚点注意力(CAA) | CVPR2024 PKINet 遥感图像目标检测

💡💡💡本文独家改进:引入了CAA模块来捕捉长距离的上下文信息,利用全局平均池化和1D条形卷积来增强中心区域的特征,从而提升检测精度,CAA和C3进行结合实现二次创新,改进思路来自CVPR2024 PKINet,2024年前沿最新改进,抢先使用 💡💡💡小目标数据集,涨点近两个…

005——串口移植(基于鸿蒙liteos-a)

目录 一、 Liteos-a中串口的使用 1.1 内核里打印 1.2 APP控制台 ​编辑 1.2.1 /dev/console 1.2.2 /dev/serial 1.2.3 /dev/uartddev-0 1. 总体介绍 2. device_t 3. drvier_t 4. uartdev_fops 1.2.4 uart_ops 二、 鸿蒙串口内部的一些机制&#xff08;流水账&…

阿里云4核8G服务器优惠价格表,ECS u1实例

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…

就业班 第二阶段 2401--3.21 day3 备份

一、逻辑备份 备份的是建表、建库、插入等操作所执行SQL语句&#xff0c;适用于中小型数据库&#xff0c;效率相对较低。 本质&#xff1a;导出的是SQL语句文件 优点&#xff1a;不论是什么存储引擎&#xff0c;都可以用mysqldump备成SQL语句 缺点&#xff1a;速度较慢&…

谷歌推出通用AI代理:能自动执行600多种动作,游玩复杂3D游戏

谷歌DeepMind的研究人员推出了一种面向3D环境的通用AI代理——SIMA。 SIMA无需访问游戏的源代码&#xff0c;也不需要定制的API。只需要输入图像和用户提供的简单自然语言文本指令&#xff0c;SIMA就能像人类玩家一样执行走路、跑步、建造、打开地图等各种游戏中的操作。 为了…

市场复盘总结 20240322

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 36% 最常用…

C++初阶:vector的使用与自实现

目录 1. vector与顺序表2. vector的使用2.1 默认成员函数2.2 vector的迭代器2.3 容量相关成员函数2.4 遍历访问方式2.5 vector的修改操作 3. vector的自实现3.1 自实现功能3.2 vector的结构与自实现的逻辑3.3 自实现vector功能接口 1. vector与顺序表 我们在初阶数据结构中学习…

34 | 到底可不可以使用join?

在实际生产中&#xff0c;关于 join 语句使用的问题&#xff0c;一般会集中在以下两类&#xff1a; 1. 我们 DBA 不让使用 join&#xff0c;使用 join 有什么问题呢&#xff1f; 2. 如果有两个大小不同的表做 join&#xff0c;应该用哪个表做驱动表呢&#xff1f; 今天这篇文…

【进程和线程】操作系统中的并发执行机制

目录 一、什么是进程(Process)&#xff1f; 进程的管理 进程调度(重点) 二、什么是线程(Thread)&#xff1f; 三、进程和线程的区别与联系 进程(Process) 线程(Thread) 总结比较 一、什么是进程(Process)&#xff1f; 进程和线程是操作系统中一个非常核心的话题&#…