基于SpringBoot+Vue的平时成绩管理系统

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

文末获取项目下载方式


一、项目背景介绍:

在现代教育环境中,教师们需要有效地管理和评估学生的学习成果。然而,传统的手动成绩管理方式存在着许多问题,如繁琐的数据录入、容易出现错误和困难的数据分析。因此,开发一种学生平时成绩管理系统成为迫切的需求,以提供教师们一个高效、准确的成绩管理解决方案。之所以设计和开发一个学生平时成绩管理系统,是为了帮助教师轻松记录学生的各项成绩,并根据预先设定的打分规则进行自动计算和评估。通过该系统,教师们可以及时了解学生的学习进展,进行个性化的教育支持和决策,提高教学效果和学生学业成果。
首先,该系统可以大大提高成绩管理的效率和准确性,减少人为错误的发生,为教师节省时间和精力。其次,系统提供的实时反馈和监控功能有助于教师及时了解学生的学习状况,帮助他们制定有针对性的教学计划和个性化辅导方案。此外,通过系统记录的学生成绩数据和数据分析,教育管理部门可以更好地了解学校的教育质量和资源利用情况,优化教育资源的配置和分配,提高教育效益。最后,学生平时成绩管理系统的研究对于促进家校合作也具有积极意义,家长可以及时了解学生的学习状况,与教师共同关注学生的成长和发展。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
    Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  4. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  5. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:‘管理员信息表’(admin)

字段名 类型 默认值 列注释
id bigint NULL 主键
account varchar NULL 账号
password varchar NULL 密码
admin_name varchar NULL 姓名
img varchar NULL 头像
remark varchar NULL 备注

2:‘班级信息表’(classes)

字段名 类型 默认值 列注释
id bigint NULL 主键
classes_name varchar NULL 班级名称
remark varchar NULL 备注

3:‘课程信息表’(course)

字段名 类型 默认值 列注释
id bigint NULL 主键
course_name varchar NULL 课程名称
classes_id bigint NULL 班级
teacher_id bigint NULL 老师
remark varchar NULL 备注

4:‘分数信息表’(score)

字段名 类型 默认值 列注释
id bigint NULL 主键
student_id bigint NULL 学生
course_id bigint NULL 课程
teacher_id bigint NULL 老师
score decimal NULL 分数
remark varchar NULL 备注

5:‘分数详情表’(score_detail)

字段名 类型 默认值 列注释
id bigint NULL 主键
score_id bigint NULL 总分
weight_info_detail_id bigint NULL 权重详情
detail_score decimal NULL 详细分数

6:‘学生信息表’(student)

字段名 类型 默认值 列注释
id bigint NULL 主键
account varchar NULL 账号
password varchar NULL 密码
school_number varchar NULL 学号
student_name varchar NULL 姓名
img varchar NULL 头像
sex tinyint NULL 性别[0:男,1女]
address varchar NULL 居住地址
phone varchar NULL 联系方式
birthday varchar NULL 生日
classes bigint NULL 班级
reamrk varchar NULL 备注

7:‘教师信息表’(teacher)

字段名 类型 默认值 列注释
id bigint NULL 主键
account varchar NULL 账号
password varchar NULL 密码
teacher_name varchar NULL 姓名
img varchar NULL 头像
sex tinyint NULL 性别[0:男,1女]
address varchar NULL 居住地址
phone varchar NULL 联系方式
birthday varchar NULL 生日
professional_title varchar NULL 职称
reamrk varchar NULL 备注

8:‘权重信息表’(weight_info)

字段名 类型 默认值 列注释
id bigint NULL 主键
course_id bigint NULL 课程
teacher_id bigint NULL 老师

9:‘权重详情表’(weight_info_detail)

字段名 类型 默认值 列注释
id bigint NULL 主键
weight_info_id bigint NULL 权重信息
project varchar NULL 打分项目
weight bigint NULL 所占权重
remark varchar NULL 备注

五、功能模块:

  1. 管理员管理:管理员可以添加、编辑和删除系统管理员的账户信息。

    管理员管理

  2. 教师信息管理:管理员可以管理教师的个人信息,包括添加、编辑和删除教师账户。

    教师信息管理

  3. 学生信息管理:管理员可以管理学生的个人信息,包括添加、编辑和删除学生账户。

    学生信息管理

  4. 班级信息管理:管理员可以管理班级的信息,包括添加、编辑和删除班级。

    班级信息管理

  5. 课程信息管理:管理员可以管理课程的信息,包括添加、编辑和删除课程。

    课程信息管理

  6. 学生分数信息查看:管理员可以查看学生的分数信息,包括按照学生、课程或班级进行查询。

    学生分数信息查看

  7. 个人信息管理:教师可以管理自己的个人信息,包括修改密码和更新个人资料。学生可以管理自己的个人信息,包括修改密码和更新个人资料。

    个人信息管理

  8. 学生信息管理:教师可以管理学生的个人信息,包括查看学生列表和学生详情。

    学生信息管理

  9. 班级信息管理:教师可以管理班级的信息,包括查看班级列表和班级详情。

    班级信息管理

  10. 我的课程:教师可以查看自己所教授的课程信息,包括课程名称、上课时间等。

    我的课程

  11. 自动打分规则管理:教师可以设置自动打分规则,例如根据作业提交情况自动计算学生分数。

    自动打分规则管理

  12. 学生分数信息管理:教师可以录入和管理学生的分数信息。系统会根据打分规则自动进行计算打分。

    学生分数信息管理

  13. 我的分数信息查看:学生可以查看自己的分数信息,包括各门课程的分数和总分。

    我的分数信息查看

六、代码示例:

    /**
     * 生成验证码
     */
    @GetMapping("/captchaImage")
    public AjaxResult getCode(HttpServletResponse response) throws IOException
    {
        AjaxResult ajax = AjaxResult.success();
        boolean captchaEnabled = configService.selectCaptchaEnabled();
        ajax.put("captchaEnabled", captchaEnabled);
        if (!captchaEnabled)
        {
            return ajax;
        }

        // 保存验证码信息
        String uuid = IdUtils.simpleUUID();
        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;

        String capStr = null, code = null;
        BufferedImage image = null;

        // 生成验证码
        String captchaType = RuoYiConfig.getCaptchaType();
        if ("math".equals(captchaType))
        {
            String capText = captchaProducerMath.createText();
            capStr = capText.substring(0, capText.lastIndexOf("@"));
            code = capText.substring(capText.lastIndexOf("@") + 1);
            image = captchaProducerMath.createImage(capStr);
        }
        else if ("char".equals(captchaType))
        {
            capStr = code = captchaProducer.createText();
            image = captchaProducer.createImage(capStr);
        }

        redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
        // 转换流信息写出
        FastByteArrayOutputStream os = new FastByteArrayOutputStream();
        try
        {
            ImageIO.write(image, "jpg", os);
        }
        catch (IOException e)
        {
            return AjaxResult.error(e.getMessage());
        }

        ajax.put("uuid", uuid);
        ajax.put("img", Base64.encode(os.toByteArray()));
        return ajax;
    }
    /**
     * 通用的本地文件上传
     *
     * @param multipartFile 文件对象
     * @return 文件访问链接URL
     */
    @PostMapping("/file")
    public SimpleResponse uploadImg(@RequestParam("file") MultipartFile file) {
        // 文件后缀
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
        File savePathFile = new File(newTomcatFolder);
        if (!savePathFile.exists()) {
            // 若不存在该目录,则创建目录
            savePathFile.mkdir();
        }
        // 通过UUID生成唯一文件名
        String filename = UUID.randomUUID() + "." + suffix;
        try {
            // 将文件保存指定目录
            file.transferTo(new File(newTomcatFolder + filename));
        } catch (Exception e) {
            e.printStackTrace();
            return SimpleResponse.error("保存文件异常");
        }
        // 返回访问链接
        return SimpleResponse.success(newTomcatHost + filename);
    }
    /**
     * 用户登录
     */
    @PostMapping("/login")
    public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {
        if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {
            return ReturnMsg.error("用户名或密码错误!");
        }
        ManageDTO manageDTO = new ManageDTO();
        manageDTO.setUserName(param.get("username"));
        manageDTO.setPassWord(param.get("password"));
        QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);
        manageDTOQueryWrapper.last("limit 1");
        ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);
        if (adminDTOS == null) return ReturnMsg.error("用户名或密码错误!");
        Map<String, Object> map = new HashMap<>();
        map.put("avatar", StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
        map.put("introduction", adminDTOS.getName() + ",你好!");
        map.put("name", adminDTOS.getName());
        map.put("roles", Arrays.asList("admin"));
        map.put("type", adminDTOS.getStatus());
        Map<String, String> returnMap = new HashMap<>();
        String uuid = UUID.randomUUID().toString();
        returnMap.put("token", uuid);
        userInfoMap.put(uuid, JSON.toJSONString(map));
        return ReturnMsg.ok(returnMap);
    }

七、论文参考:

论文参考···论文参考图

八、项目总结:

基于MVC的本科生平时成绩管理系统在系统功能上由管理员对学校的基本信息进行管理,这里的管理员可以看做学校的教务处对班级、教师、管理员、学生、课程等基本信息进行管理。而老师主要负责对自己名下的课程的评分规则进行管理通过录入学科的评分规则在后续录入具体分数从而达到自动评分的功能,学生在功能上只能查看修改自己的基本信息和查看自己的学习的课程的分数,在系统的最后通过测试功能能是否达到预期后最终得到了一个完整的平时成绩管理系统。
本文在第一章节介绍了基于MVC的本科生平时成绩管理系统的研究背景和意义然后紧接着介绍了本系统先如今的国内外研究现状。在第二章节介绍了系统开发上用到的一些关键技术。在第三章节中对系统开发的需求进行了分析,分别从业务背景、业务建模、系统角色分析、系统用例分析、非功能性需求五大分别来进行分析。在第四章节对系统进行了分析与设计其中包括系统功能的设计和数据库结构的设计。在第五章节主要介绍了系统核心功能的实现。在第六章章节对系统整体进行测试确保系统的功能是符合预期且是完善的。最后对本次开发过程进行总结并且对未来做成展望
系统的核心在与由教师录入自己所教课程的打分规则,打分规则不限定种类与数量,只需要打分总比和为100即可,然后在老师给学生进行打分的时候,系统会自动将对应课程的打分规则即打分项目与所占比重进行渲染,教师只需要在后面给与对应的评分即可,在教师录入各个打分项的具体分数以后系统会根据各个打分项所占的权重来进行计算,并且最后会同时保存各个打分项的分数与计算后的总分数,以便于后续的学生、管理员、老师来查看总分与打分详情。在查看分数的时候实习是查看的总分,但是如果需要查看详情也可在对应的分数上点击详情从而查看当前课程的打分项、打分项分数所占权重、当前学生的当前打分项所得分数。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看获取项目下载链接,博主联系方式

链接点击直达:下载链接

你可能感兴趣的:(优质毕业设计,spring,boot,vue.js,后端)