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


    在这里插入图片描述

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



    一、摘要

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    六、免责说明

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

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

    1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
    2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
    3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
    4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
  • 相关阅读:
    树莓派4b通过docker安装部署jenkins
    【仁川出差】记2022.10仁川出差
    提升文件上传性能的 4 种方式,你会吗?
    Spring反序列化JNDI分析
    让我手把手教你写一个强大、方便使用的 IOC 容器
    qtablewidget 设置列宽行高遇到的问题
    C语言百日刷题第十天
    服务器怎么进行日常维护
    (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
    [附源码]java毕业设计“拥抱爱心”公益网站管理系统
  • 原文地址:https://blog.csdn.net/yangyin1998/article/details/134499084