【开源】JAVA+Vue+SpringBoot实现学生综合素质评价系统

news2025/1/21 11:24:36

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 学生功能
    • 2.2 教师功能
    • 2.3 教务处功能
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询我的学科竞赛
    • 4.2 保存单个问卷
    • 4.3 根据类型查询学生问卷
    • 4.4 填写语数外评价
    • 4.5 填写品德自评问卷分
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的学生综合素质评价系统,包含了成绩查询模块、学生自评模块、教师评价模块和教务打分模块,还包含系统自带的用户管理、班级管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,学生综合素质评价系统基于角色的访问控制,给学生、教师和教务管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

2.1 学生功能

登录:勾选学生登录

学业发展水平(分三个部分,第一个是上学期均分(教师端填写,填写3门课语数外,然后自动计算)学生端只能查看,第二个部分是个自评问卷(内容和分值我会给),第三个部分是获奖情况(用下拉菜单之类的实现等级的区分,国家级,省级之类的,加分和这个有关),对应的加分数值我会给),前两个满分都是一百分,最后的得分取均分加上获奖情况的额外加分。

品德与社会化水平(分两个部分,第一部分是自评问卷,第二部分是教师填写的问卷(教师端填写)自己只能查看填写结果)。满分都是一百分,最后的得分取均分。

身心健康水平(分两个部分,第一部分是自评问卷,第二部分是教师填写的问卷,(教师端填写)自己只能查看填写结果,第三部分是教务处填写的体育考试分数)。三个满分都是一百分,最后的得分取均分。

分数查看功能:查看三个部分的分数和综合分数(综合分数就是三个部分的均分)

2.2 教师功能

登录(选择教师登录)

修改个人信息

评价学生学业发展水平(填写学生上学期分数),没填写的学生会留存在这个页面,直到填写完毕为止。

评价学生品德与社会化水平(填写问卷),没填写的学生会留存在这个页面,直到评价完毕为止。

查询学生信息,只能查询属于自己的班级的(通过姓名或者学号,或者该学生是否评价完的状态(这里的评价完就是指自己有没有评价完,不管学生自评和教务处填写的东西),或者综合成绩的区间)。信息包括学号,姓名,班级,分数的查看(包括学业、品德、身心健康和综合成绩等四项)和是否已经完成评价。

2.3 教务处功能

登录(选择教务处登录)

修改个人信息

评价学生身心健康水平(填写体育考试分数),没填写的学生会留存在这个页面,直到评价完毕为止。

查询学生信息(通过姓名或者学号,或者班级,或者该学生是否评价完的状态(这里的评价完就是指自己有没有评价完,不管学生自评和教师填写的东西),或者综合成绩的区间),信息包括学号,姓名,分数的查看(包括学业、品德、身心健康和综合成绩等四项)和是否已经完成评价。


三、系统展示

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


四、核心代码

4.1 查询我的学科竞赛

@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询我的学科竞赛")
public Result<IPage<Competition>> getMyPage(@ModelAttribute Competition competition ,@ModelAttribute PageVo page){
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<StudentEvaluate> seQw = new QueryWrapper<>();
    seQw.eq("user_id",currUser.getId());
    List<StudentEvaluate> evaluateList = iStudentEvaluateService.list(seQw);
    StudentEvaluate se = null;
    if(evaluateList.size() < 1) {
        se = EvaluateUtils.getBlackStudentEvaluate(currUser.getId());
        iStudentEvaluateService.saveOrUpdate(se);
    } else {
        se = evaluateList.get(0);
    }
    QueryWrapper<Competition> qw = new QueryWrapper<>();
    qw.eq("evaluate_id",se.getId());
    if(!ZwzNullUtils.isNull(competition.getLevel())) {
        qw.like("level",competition.getLevel());
    }
    if(!ZwzNullUtils.isNull(competition.getTitle())) {
        qw.like("title",competition.getTitle());
    }
    if(!ZwzNullUtils.isNull(competition.getValue())) {
        qw.like("value",competition.getValue());
    }
    IPage<Competition> data = iCompetitionService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Competition>>().setData(data);
}

4.2 保存单个问卷

@RequestMapping(value = "/saveOneByType", method = RequestMethod.GET)
@ApiOperation(value = "保存单个问卷")
public Result<Object> getOneByType(@RequestParam int type, @RequestParam String value){
    StudentEvaluate studentEvaluate = evaluateUtils.getMyStudentEvaluate();
    QueryWrapper<Questionnaire> qw = new QueryWrapper<>();
    qw.eq("evaluate_id",studentEvaluate.getId());
    qw.eq("type",type);
    List<Questionnaire> questionnaireList = iQuestionnaireService.list(qw);
    if(questionnaireList.size() < 1) {
        Questionnaire qu = new Questionnaire();
        qu.setType(type);
        qu.setValue(value);
        qu.setEvaluateId(studentEvaluate.getId());
        qu.setStatus(1);
        iQuestionnaireService.saveOrUpdate(qu);
    } else {
        Questionnaire questionnaire = questionnaireList.get(0);
        questionnaire.setValue(value);
        questionnaire.setStatus(1);
        iQuestionnaireService.saveOrUpdate(questionnaire);
    }
    return ResultUtil.success();
}

4.3 根据类型查询学生问卷

@RequestMapping(value = "/getOneByType", method = RequestMethod.GET)
@ApiOperation(value = "根据类型查询学生问卷")
public Result<List<String>> getOneByType(@RequestParam int type){
    StudentEvaluate se = evaluateUtils.getMyStudentEvaluate();
    QueryWrapper<Questionnaire> qw = new QueryWrapper<>();
    qw.eq("evaluate_id",se.getId());
    qw.eq("type",type);
    List<Questionnaire> questionnaireList = iQuestionnaireService.list(qw);
    if(questionnaireList.size() < 1) {
        return new ResultUtil<List<String>>().setData(new ArrayList<>());
    }
    return new ResultUtil<List<String>>().setData(StrToListUtils.getListByStr(questionnaireList.get(0).getValue()));
}

4.4 填写语数外评价

@RequestMapping(value = "/editYuShuWai", method = RequestMethod.GET)
@ApiOperation(value = "填写语数外评价")
public Result<StudentEvaluate> editYuShuWai(@RequestParam String id,@RequestParam float yu,@RequestParam float shu,@RequestParam float wai){
    StudentEvaluate evaluate = iStudentEvaluateService.getById(id);
    if(evaluate == null) {
        return ResultUtil.error("评价单不存在");
    }
    evaluate.setAchievementOne(BigDecimal.valueOf(yu));
    evaluate.setAchievementTwo(BigDecimal.valueOf(shu));
    evaluate.setAchievementThree(BigDecimal.valueOf(wai));
    evaluate.setAchievementSum(BigDecimal.valueOf((yu + shu + wai) / 3));
    double oneSum = (evaluate.getAchievementSum().floatValue() +  evaluate.getQuestionnaireOne().floatValue()) / 2 + evaluate.getCompetitionMine().floatValue();
    evaluate.setAnsOne(BigDecimal.valueOf(oneSum));
    double ansSum = (evaluate.getAnsOne().floatValue() + evaluate.getAnsTwo().floatValue() + evaluate.getAnsThree().floatValue()) / 3;
    evaluate.setAnsSum(BigDecimal.valueOf(ansSum));
    iStudentEvaluateService.saveOrUpdate(evaluate);
    return new ResultUtil<StudentEvaluate>().setData(iStudentEvaluateService.getById(id));
}

4.5 填写品德自评问卷分

@RequestMapping(value = "/editPinDeZiPing", method = RequestMethod.GET)
@ApiOperation(value = "填写品德自评问卷分")
public Result<Object> editPinDeZiPing(@RequestParam float grade){
    StudentEvaluate evaluate = evaluateUtils.getMyStudentEvaluate();
    evaluate.setQuestionnaireTwo(BigDecimal.valueOf(grade));
    double twoSum = (evaluate.getQuestionnaireTwo().floatValue() +  evaluate.getQuestionnaireThree().floatValue()) / 2;
    evaluate.setAnsTwo(BigDecimal.valueOf(twoSum));
    double ansSum = (evaluate.getAnsOne().floatValue() + evaluate.getAnsTwo().floatValue() + evaluate.getAnsThree().floatValue()) / 3;
    evaluate.setAnsSum(BigDecimal.valueOf(ansSum));
    iStudentEvaluateService.saveOrUpdate(evaluate);
    return ResultUtil.success();
}

五、免责说明

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

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

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

在这里插入图片描述

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

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

相关文章

【Time Series】基于Transformer的时间序列预测代码实战

一、简介 在上篇《【Time Series】LSTM代码实战》中&#xff0c; 采用的是LSTM方法实现时序预测任务。自Transformer问世以来&#xff0c;在各个CV/NLP两个领域不断迭代不断屠榜&#xff0c;但在Time Series Predict(TSP)类型的任务中&#xff0c;从21年以后开始研究才慢慢红火…

五.实战软件部署 1-3实战章节-前言MYSQL 5.7版本在centos系统安装MYSQL 8.0版本在centos系统安装

目录 五.实战软件部署 1-实战章节-前言 五.实战软件部署 2-MYSQL 5.7版本在centos系统安装 1-配置yum仓库 2-使用yum安装mysql 3-安装完成后&#xff0c;启动mysql并配置开机自启动 4-检查mysql的运行状态 --配置 1-获取mysql的初识密码 2-登录mysql数据库系统 3-修改…

java SSM新闻管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM新闻管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S…

【达芬奇调色教程】

文章目录 第一章&#xff1a; 达芬奇软件基本了解1. 项目管理2. 新建项目3. 项目设置面板4. 偏好设置5. 界面布局 第一章&#xff1a; 达芬奇软件基本了解 1. 项目管理 前面的滑块可以控制缩略图的大小 2. 新建项目 项目管理器在操作本项目的时候&#xff0c;可以查看其他项目…

音视频基础

本篇文章我们来讲一下音视频基础 像素点: 将以下图片的美女眼睛放大 能够看到一个一个的小方块 这就是像素点 照片像素宽像素点*高像素点 像素点 代码实例&#xff1a; #include <opencv2/opencv.hpp>int main() {// 创建一个200x100的黑色图像cv::Mat image(100, 200,…

操作系统基础:IO管理概述【上】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 &#x1f3c6;&#x1f3c6;本文完整PDF源文件请翻阅至文章底部下载。&#x1f3c6;&#x1f3c6; &#x1f3ae;1 I/O设备的基本概念与分类&#x1f52b;1.1 总览&#x…

计网day2

三 物理层 3.1 物理层基本概念 物理接口特性&#xff1a; 物理层解决如何连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体 3.2 编码&调制 3.3 数据交换方式 电路交换&#xff1a; 报文交换&#xff1a; 分组交换&#x…

Zig、C、Rust的Pk1

Zig、C、Rust的Pk1 github.com上看到“A basic comparitive analysis of C, C, Rust, and Zig.”&#xff1a;https://github.com/CoalNova/BasicCompare/tree/main 里边的代码是9个月之前的&#xff0c;用现在的zig 0.11.0 及0.12-dev都无法通过编译(具体为&#xff1a;zig-w…

【Django】Django文件上传

文件上传 1 定义&场景 定义&#xff1a;用户可以通过浏览器将图片等文件上传至网站。 场景&#xff1a; 用户上传头像。 上传流程性的文档[pdf&#xff0c;txt等] 2 上传规范-前端[html] 文件上传必须为POST提交方式 表单 <form> 中文件上传时必须带有 enctype…

决策树之scikit-learn

实例 from sklearn.datasets import load_iris from sklearn import tree import matplotlib.pyplot as plt# Load iris dataset iris load_iris() X, y iris.data, iris.target# Fit the classifier clf tree.DecisionTreeClassifier() clf clf.fit(X, y)# Plot the deci…

Java使用opencsv完成对csv批量操作

文章目录 前言一、maven二、造数三、代码部分1.OpenCsvController2.OpenCsvUtil3.StudentInfo4.CodeToValue 三、效果展示1.download2.upload 总结 前言 csv文件是不同于excel文件的另一种文件&#xff0c;常常以,作为分隔符&#xff0c;本篇将通过JavaBean的形式完成对csv文件…

作业2.12

1、选择题 1.1、以下程序的输出结果是____A____。 main() { int k11,k22,k33,x15; if(!k1) x--; else if(k2) if(k3) x4; else x3; printf(“x%d\n”,x); } A x4 B x15 C x14 D x3 1.2、有以下程序&#xff0c;while循环执行____A____次。 int main&#x…

电子邮件、SMTP、POP3 、IMAP协议

目录 1 电子邮件 1.1 电子邮件系统的组成 1.1.1 用户代理 UA (User Agent) 1.1.2 邮件服务器 (Mail Server) 1.1.3 邮件发送和读取协议 1.2 发送和接收电子邮件的重要步骤 1.3 电子邮件的组成 1.4 电子邮件地址的格式 2 简单邮件传送协议 SMTP 2.1 SMTP 通信的三个阶…

牛客周赛 Round 32 F.小红的矩阵修改【三进制状态压缩dp】

原题链接&#xff1a;https://ac.nowcoder.com/acm/contest/75174/F 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 小红拿到了一个字符矩阵&#xff0c;矩阵中仅包含&q…

顶级思维方式——认知篇三(心胸与见识)

目录 1、老《三国演义》司马懿 2、司马迁 3、 王立群&#xff1a; 使自己强大起来&#xff0c;这是打破困境的唯一途径 4、鲁迅经典寓言&#xff1a;聪明人、奴才和傻子 5、芒格 6、巴菲特 7、瑞达利欧 8、诸葛亮 1、老《三国演义》司马懿 你等年级轻轻一遇挫折&#x…

蓝桥杯题目解析 --汉诺塔(含C++栈的知识)

该题在蓝桥杯基础数据结构篇&#xff0c;进入后搜索题号1512。 汉诺塔 可以将圆盘临时置于B杆&#xff0c;也可以将A杆移除的圆盘重新移回A杆&#xff0c;但必须遵循上述两条规则。 汉诺塔了解后&#xff0c;题目也了解后&#xff0c;我们先通过试N的个数来找规律&#xff1a;…

Android 10.0 锁屏壁纸 LockscreenWallpaper

前言 一、设置壁纸 通过系统设置进行锁屏壁纸和桌面壁纸的设置。 Setting 部分的代码&#xff1a; packages/apps/WallpaperPicker2/src/com/android/wallpaper/module/DefaultWallpaperPersister.java private int setStreamToWallpaperManagerCompat(InputStream inputStre…

【实战】一、Jest 前端自动化测试框架基础入门(中) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(二)

文章目录 一、Jest 前端自动化测试框架基础入门5.Jest 中的匹配器toBe 匹配器toEqual匹配器toBeNull匹配器toBeUndefined匹配器和toBeDefined匹配器toBeTruthy匹配器toBeFalsy匹配器数字相关的匹配器字符串相关的匹配器数组相关的匹配器异常情况的匹配器 6.Jest 命令行工具的使…

【C语言进阶】深度剖析数据在内存中的存储--上

1. C语言中的数据类型的简单介绍 注&#xff1a;C99标准里面&#xff0c;定义了bool类型变量。这时&#xff0c;只要引入头文件stdbool.h &#xff0c;就能在C语言里面正常使用bool类型。 1.1 在C语言中各类型所占内存空间的大小如下 char类型的数据类型大小为1字节即8比特位。…

爬爬爬——今天是浏览器窗口切换和给所选人打钩(自动化)

学习爬虫路还很长&#xff0c;第一阶段花了好多天了&#xff0c;还在底层&#xff0c;虽然不是我专业要学习的语言&#xff0c;和必备的知识&#xff0c;但是我感觉还挺有意思的。加油&#xff0c;这两天把建模和ai也不学了&#xff0c;唉过年了懒了&#xff01; 加油坚持就是…