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

一、项目背景介绍:

在现代教育环境中,教师们需要有效地管理和评估学生的学习成果。然而,传统的手动成绩管理方式存在着许多问题,如繁琐的数据录入、容易出现错误和困难的数据分析。因此,开发一种学生平时成绩管理系统成为迫切的需求,以提供教师们一个高效、准确的成绩管理解决方案。之所以设计和开发一个学生平时成绩管理系统,是为了帮助教师轻松记录学生的各项成绩,并根据预先设定的打分规则进行自动计算和评估。通过该系统,教师们可以及时了解学生的学习进展,进行个性化的教育支持和决策,提高教学效果和学生学业成果。-

首先,该系统可以大大提高成绩管理的效率和准确性,减少人为错误的发生,为教师节省时间和精力。其次,系统提供的实时反馈和监控功能有助于教师及时了解学生的学习状况,帮助他们制定有针对性的教学计划和个性化辅导方案。此外,通过系统记录的学生成绩数据和数据分析,教育管理部门可以更好地了解学校的教育质量和资源利用情况,优化教育资源的配置和分配,提高教育效益。最后,学生平时成绩管理系统的研究对于促进家校合作也具有积极意义,家长可以及时了解学生的学习状况,与教师共同关注学生的成长和发展。

二、项目技术简介:
  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. 管理员管理:管理员可以添加、编辑和删除系统管理员的账户信息。

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

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

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

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

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

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

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

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

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

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

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

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

六、代码示例:
    /**
     * 生成验证码
     */
    @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即可,然后在老师给学生进行打分的时候,系统会自动将对应课程的打分规则即打分项目与所占比重进行渲染,教师只需要在后面给与对应的评分即可,在教师录入各个打分项的具体分数以后系统会根据各个打分项所占的权重来进行计算,并且最后会同时保存各个打分项的分数与计算后的总分数,以便于后续的学生、管理员、老师来查看总分与打分详情。在查看分数的时候实习是查看的总分,但是如果需要查看详情也可在对应的分数上点击详情从而查看当前课程的打分项、打分项分数所占权重、当前学生的当前打分项所得分数。

九、源码获取:

 此源码非开源,若需要此源码可扫码添加微信进行咨询!

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值