基于SpringBoot的学生评奖评优管理系统【Java毕设、Java毕设必备、spring boot实战项目】【源码+论文+答辩】

71 阅读6分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

@TOC

基于SpringBoot的学生评奖评优管理系统介绍

基于SpringBoot的学生评奖评优管理系统是一套专为高校学生工作管理而设计的综合性信息化平台,该系统采用当前主流的SpringBoot框架作为后端核心,结合SpringMVC和MyBatis实现数据持久化操作,前端采用Vue框架配合ElementUI组件库构建现代化用户界面,数据存储基于MySQL数据库,整体采用B/S架构模式确保系统的跨平台兼容性和易维护性。系统功能模块涵盖了学生评奖评优工作的全流程管理,包括基础信息管理模块(学生信息、教师信息、院系信息、班级信息管理),学业评价模块(学生成绩管理),奖励体系模块(奖项类别设置、奖项信息维护、奖项申请处理、获奖学生记录),德育管理模块(好人好事记录),反馈监督模块(异议反馈处理),信息发布模块(通知公告管理),以及系统运维模块(系统管理、系统日志、系统公告)和个人服务模块(个人中心、密码修改)等十余个核心功能板块。系统通过规范化的数据管理和流程化的业务处理,实现了从奖项申报、审核评定到结果公示的全程数字化管理,有效提升了高校学生工作的管理效率,为学生评奖评优工作提供了科学、公正、透明的技术支撑平台,同时为管理人员提供了便捷的操作界面和完善的数据统计分析功能。

基于SpringBoot的学生评奖评优管理系统演示视频

演示视频

基于SpringBoot的学生评奖评优管理系统演示图片

=学生信息.png

好人好事.png

获奖学生.png

奖项申请.png

奖项信息.png

教师信息.png

学生成绩.png

基于SpringBoot的学生评奖评优管理系统代码展示

import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
import java.time.LocalDateTime;

@RestController
@RequestMapping("/award")
public class AwardController {
   
   @Autowired
   private SparkSession sparkSession = SparkSession.builder().appName("StudentAwardSystem").master("local[*]").getOrCreate();
   
   @PostMapping("/apply")
   public Map<String, Object> submitAwardApplication(@RequestBody Map<String, Object> applicationData) {
       Map<String, Object> result = new HashMap<>();
       try {
           String studentId = (String) applicationData.get("studentId");
           String awardId = (String) applicationData.get("awardId");
           String applicationReason = (String) applicationData.get("applicationReason");
           Double gpa = Double.parseDouble(applicationData.get("gpa").toString());
           Integer creditScore = Integer.parseInt(applicationData.get("creditScore").toString());
           String className = (String) applicationData.get("className");
           String department = (String) applicationData.get("department");
           LocalDateTime applicationTime = LocalDateTime.now();
           Dataset<Row> studentDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "student_info", new Properties());
           Dataset<Row> gradeDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "student_grades", new Properties());
           Dataset<Row> filteredStudent = studentDataset.filter(studentDataset.col("student_id").equalTo(studentId));
           Dataset<Row> studentGrades = gradeDataset.filter(gradeDataset.col("student_id").equalTo(studentId));
           Double averageGrade = studentGrades.agg(org.apache.spark.sql.functions.avg("grade")).first().getDouble(0);
           Long totalCredits = studentGrades.agg(org.apache.spark.sql.functions.sum("credits")).first().getLong(0);
           boolean isEligible = gpa >= 3.5 && creditScore >= 80 && averageGrade >= 85.0 && totalCredits >= 120;
           if (!isEligible) {
               result.put("success", false);
               result.put("message", "申请条件不符合要求,GPA需≥3.5,信用分≥80分,平均成绩≥85分,总学分≥120");
               return result;
           }
           String applicationId = "APP" + System.currentTimeMillis();
           String insertSql = "INSERT INTO award_applications (application_id, student_id, award_id, application_reason, gpa, credit_score, class_name, department, application_time, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
           int insertResult = jdbcTemplate.update(insertSql, applicationId, studentId, awardId, applicationReason, gpa, creditScore, className, department, applicationTime, "待审核");
           if (insertResult > 0) {
               result.put("success", true);
               result.put("applicationId", applicationId);
               result.put("message", "奖项申请提交成功,请等待审核结果");
           } else {
               result.put("success", false);
               result.put("message", "申请提交失败,请稍后重试");
           }
       } catch (Exception e) {
           result.put("success", false);
           result.put("message", "系统异常:" + e.getMessage());
       }
       return result;
   }
   
   @PostMapping("/review")
   public Map<String, Object> reviewAwardApplication(@RequestBody Map<String, Object> reviewData) {
       Map<String, Object> result = new HashMap<>();
       try {
           String applicationId = (String) reviewData.get("applicationId");
           String teacherId = (String) reviewData.get("teacherId");
           String reviewStatus = (String) reviewData.get("reviewStatus");
           String reviewComments = (String) reviewData.get("reviewComments");
           Integer reviewScore = Integer.parseInt(reviewData.get("reviewScore").toString());
           LocalDateTime reviewTime = LocalDateTime.now();
           Dataset<Row> applicationDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "award_applications", new Properties());
           Dataset<Row> targetApplication = applicationDataset.filter(applicationDataset.col("application_id").equalTo(applicationId));
           if (targetApplication.count() == 0) {
               result.put("success", false);
               result.put("message", "申请记录不存在");
               return result;
           }
           Row applicationRow = targetApplication.first();
           String currentStatus = applicationRow.getString(applicationRow.fieldIndex("status"));
           if (!"待审核".equals(currentStatus)) {
               result.put("success", false);
               result.put("message", "该申请已经审核过,无法重复审核");
               return result;
           }
           Dataset<Row> teacherDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "teacher_info", new Properties());
           Dataset<Row> reviewerInfo = teacherDataset.filter(teacherDataset.col("teacher_id").equalTo(teacherId));
           if (reviewerInfo.count() == 0) {
               result.put("success", false);
               result.put("message", "审核教师信息不存在");
               return result;
           }
           String teacherRole = reviewerInfo.first().getString(reviewerInfo.first().fieldIndex("role"));
           boolean hasReviewPermission = "系主任".equals(teacherRole) || "副院长".equals(teacherRole) || "院长".equals(teacherRole);
           if (!hasReviewPermission) {
               result.put("success", false);
               result.put("message", "您没有审核权限,只有系主任及以上级别可以审核");
               return result;
           }
           String updateSql = "UPDATE award_applications SET status = ?, review_teacher_id = ?, review_comments = ?, review_score = ?, review_time = ? WHERE application_id = ?";
           int updateResult = jdbcTemplate.update(updateSql, reviewStatus, teacherId, reviewComments, reviewScore, reviewTime, applicationId);
           if ("通过".equals(reviewStatus)) {
               String studentId = applicationRow.getString(applicationRow.fieldIndex("student_id"));
               String awardId = applicationRow.getString(applicationRow.fieldIndex("award_id"));
               String awardRecordId = "RECORD" + System.currentTimeMillis();
               String insertAwardSql = "INSERT INTO award_records (record_id, student_id, award_id, award_time, review_score) VALUES (?, ?, ?, ?, ?)";
               jdbcTemplate.update(insertAwardSql, awardRecordId, studentId, awardId, LocalDateTime.now(), reviewScore);
           }
           if (updateResult > 0) {
               result.put("success", true);
               result.put("message", "审核完成");
               result.put("reviewStatus", reviewStatus);
           } else {
               result.put("success", false);
               result.put("message", "审核失败,请稍后重试");
           }
       } catch (Exception e) {
           result.put("success", false);
           result.put("message", "审核异常:" + e.getMessage());
       }
       return result;
   }
   
   @GetMapping("/statistics")
   public Map<String, Object> generateAwardStatistics(@RequestParam String semester, @RequestParam(required = false) String department) {
       Map<String, Object> result = new HashMap<>();
       try {
           Dataset<Row> applicationDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "award_applications", new Properties());
           Dataset<Row> studentDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "student_info", new Properties());
           Dataset<Row> awardDataset = sparkSession.read().jdbc("jdbc:mysql://localhost:3306/award_system", "award_info", new Properties());
           Dataset<Row> semesterApplications = applicationDataset.filter(applicationDataset.col("application_time").contains(semester));
           if (department != null && !department.isEmpty()) {
               semesterApplications = semesterApplications.filter(semesterApplications.col("department").equalTo(department));
           }
           long totalApplications = semesterApplications.count();
           long approvedApplications = semesterApplications.filter(semesterApplications.col("status").equalTo("通过")).count();
           long rejectedApplications = semesterApplications.filter(semesterApplications.col("status").equalTo("拒绝")).count();
           long pendingApplications = semesterApplications.filter(semesterApplications.col("status").equalTo("待审核")).count();
           double approvalRate = totalApplications > 0 ? (double) approvedApplications / totalApplications * 100 : 0.0;
           Dataset<Row> joinedData = semesterApplications.join(awardDataset, semesterApplications.col("award_id").equalTo(awardDataset.col("award_id")), "inner");
           Dataset<Row> awardTypeStats = joinedData.groupBy("award_name").count().orderBy(org.apache.spark.sql.functions.desc("count"));
           Dataset<Row> departmentStats = semesterApplications.groupBy("department").count().orderBy(org.apache.spark.sql.functions.desc("count"));
           Dataset<Row> approvedJoined = semesterApplications.filter(semesterApplications.col("status").equalTo("通过")).join(studentDataset, "student_id", "inner");
           Dataset<Row> gpaStats = approvedJoined.select("gpa").agg(org.apache.spark.sql.functions.avg("gpa").as("avg_gpa"), org.apache.spark.sql.functions.max("gpa").as("max_gpa"), org.apache.spark.sql.functions.min("gpa").as("min_gpa"));
           Row gpaStatsRow = gpaStats.first();
           double avgGpa = gpaStatsRow.getDouble(0);
           double maxGpa = gpaStatsRow.getDouble(1);
           double minGpa = gpaStatsRow.getDouble(2);
           List<Map<String, Object>> awardTypeList = new ArrayList<>();
           awardTypeStats.collectAsList().forEach(row -> {
               Map<String, Object> typeMap = new HashMap<>();
               typeMap.put("awardName", row.getString(0));
               typeMap.put("applicationCount", row.getLong(1));
               awardTypeList.add(typeMap);
           });
           List<Map<String, Object>> departmentList = new ArrayList<>();
           departmentStats.collectAsList().forEach(row -> {
               Map<String, Object> deptMap = new HashMap<>();
               deptMap.put("department", row.getString(0));
               deptMap.put("applicationCount", row.getLong(1));
               departmentList.add(deptMap);
           });
           result.put("success", true);
           result.put("semester", semester);
           result.put("department", department != null ? department : "全部院系");
           result.put("totalApplications", totalApplications);
           result.put("approvedApplications", approvedApplications);
           result.put("rejectedApplications", rejectedApplications);
           result.put("pendingApplications", pendingApplications);
           result.put("approvalRate", Math.round(approvalRate * 100.0) / 100.0);
           result.put("awardTypeStatistics", awardTypeList);
           result.put("departmentStatistics", departmentList);
           result.put("avgGpa", Math.round(avgGpa * 100.0) / 100.0);
           result.put("maxGpa", maxGpa);
           result.put("minGpa", minGpa);
           result.put("message", "统计数据生成成功");
       } catch (Exception e) {
           result.put("success", false);
           result.put("message", "统计生成异常:" + e.getMessage());
       }
       return result;
   }
}

基于SpringBoot的学生评奖评优管理系统文档展示

文档.png

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目