基于spring boot实现的成绩分析系统

基于spring boot实现的成绩分析系统 一,开发目的 随着现代化社会的发展,每年都会有大量苦读寒窗的考生参加高考,但是由于竞争压力大,很多考生由于成绩不理想不能报考自己心仪的高等院校

本文包含相关资料包-----> 点击直达获取<-------

基于spring boot实现的成绩分析系统

一、开发目的

随着现代化社会的发展,每年都会有大量苦读寒窗的考生参加高考,但是由于竞争压力大,很多考生由于成绩不理想不能报考自己心仪的高等院校,一方面是由于自身能力不足,另一方面,在平常学习过程种,教师没能够一对一判断出不同学生的不足。于是为了提高学校的教学质量,通过考试成绩能够及时较为准确的得出学生成绩分析数据,具体到每一个同学的不足,引导教师能够较为准确的明白学生在学习过程中遇到的问题,于是开发了这款成绩分析系统。

二、项目背景

中学成绩分析系统能够将学生成绩进行可视化数据分析,辅助教学,提高教学质量。

三、涉及技术

  • 基本平台 :JDK1.8+MySql8.0

  • 浏览器 :IE9+,谷歌,火狐,360,搜狗等大部分浏览器

3.1 方案一:单体项目(首选)

  • 前端 :html+css+js+jquery+echart

  • 后端 :SpringBoot+SpringDataJpa+SpringSecurity+POI+MySql

3.2 方案二:前后端分离项目

  • 前端 :React+Axios+ElementUI+echart

  • 后端 :SpringBoot+MyBatisPlust+POI+MySql+Jwt

四、项目需求

4.1 用户模块

  • 提供管理员、教师两种角色的登录

  • 提供教师账号由管理员注册及表格批量导入注册

  • 提供管理员、教师自我信息修改。管理员修改教师信息,教师修改学生基本信息。

4.2 学生模块

  • 提供学生账号由教师或者管理员注册及表格批量导入注册

  • 学生账号由科任教师添加、编辑成绩

4.3 成绩分析模块

  • 对数据表中的数据进行分析,提供JSON数据,前端通过echart等数据可视化框架展示数据。

五.系统设计

5.1 数据库设计

5.1.1 表结构设计

学习成绩表

班级表

考试信息表

学生表

权限表

用户表

用户权限表

5.1.2 E-R图

5.2 系统设计

5.2.1 业务代码

```java /* * 根据考试id 获取成绩单页面 * * @param id * @return / @RequestMapping("achievement/school_report_clazz") public String schoolReportClazz(Long id, Model model) { List achievementList = achievementService.listAchievementByExamInfoId(id); model.addAttribute("achievementList", achievementList); ExamInfo examInfo = examInfoService.findById(id); model.addAttribute("examInfo", examInfo); List clazzPerformanceAnalysisBeans = null; try { clazzPerformanceAnalysisBeans = PerformanceAnalysisUtil.ClazzPerformanceAnalysis(achievementList); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("clazzPerformanceAnalysisBeans", clazzPerformanceAnalysisBeans); return "school_report"; }

/**
 * 成绩导入页面
 *
 * @param id 考试 id
 * @return
 */
@RequestMapping("achievement/importAchievementPage")
public String importAchievementPage(Long id, Model model) {
    ExamInfo examInfo = examInfoService.findById(id);
    model.addAttribute("examInfo", examInfo);
    return "import_achievement";
}

/**
 * 教师下载学生成绩导入模板
 *
 * @param id
 * @param httpResponse
 * @throws Exception
 */
@ResponseBody
@RequestMapping("achievement/downloadClazzXls")
public void downloadClazzXls(Long id, HttpServletResponse httpResponse) throws Exception {
    ExamInfo examInfo = examInfoService.findById(id);
    Clazz clazz = examInfo.getClazzes().get(0);
    Integer type = clazz.getType();
    Long clazzId = clazz.getId();
    Workbook workbook = null;
    List<Student> studentList = studentService.getStudentsByClazzId(clazzId);
    String name = examInfo.getName() + "成绩导入模板";
    try {
        if (type == 0) {
            List<AchievementImportExcelW> list = new ArrayList<>();
            studentList.forEach(student -> {
                AchievementImportExcelW achievementImportExcelW = new AchievementImportExcelW();
                achievementImportExcelW.setStudentId(student.getId());
                achievementImportExcelW.setStudentName(student.getName());
                list.add(achievementImportExcelW);
            });
            ExportParams exportParams = new ExportParams(name, name, ExcelType.XSSF);
            workbook = ExcelExportUtil.exportBigExcel(exportParams, AchievementImportExcelW.class, list);
        } else if (type == 1) {
            List<AchievementImportExcelL> list = new ArrayList<>();
            studentList.forEach(student -> {
                AchievementImportExcelL achievementImportExcelL = new AchievementImportExcelL();
                achievementImportExcelL.setStudentId(student.getId());
                achievementImportExcelL.setStudentName(student.getName());
                list.add(achievementImportExcelL);
            });


            ExportParams exportParams = new ExportParams(name, name, ExcelType.XSSF);
            workbook = ExcelExportUtil.exportBigExcel(exportParams, AchievementImportExcelL.class, list);
        }

    } finally {
        if (workbook != null) {
            //此处必须要关闭,否则会导致stream closed异常
            ExcelExportUtil.closeExportBigExcel();
        }
    }

    try (ByteArrayOutputStream os = new ByteArrayOutputStream(1024)) {
        assert workbook != null;
        workbook.write(os);
        ExcelUtil.writeIO(httpResponse, os, name);
    } catch (IOException e) {
        throw new Exception("导出报表失败");
    }
}

/**
 * 教师导入本班学生考试成绩
 *
 * @param id
 * @param multipartFile
 * @param response
 * @throws Exception
 */
@ResponseBody
@RequestMapping("achievement/uploadClazzXls")
public void uploadClazzXls(Long id, @RequestParam("file") MultipartFile multipartFile, HttpServletResponse response) throws Exception {
    response.setCharacterEncoding("utf-8");
    long size = multipartFile.getSize();
    if (size <= 0) {
        response.getWriter().write("空!");
        return;
    }

    ExamInfo examInfo = examInfoService.findById(id);
    Clazz clazz = examInfo.getClazzes().get(0);
    Integer type = clazz.getType();

    ImportParams params = new ImportParams();
    params.setHeadRows(1);
    params.setTitleRows(1);
    if (type == 0) {
        List<AchievementImportExcelW> result = null;
        result = ExcelImportUtil.importExcel(multipartFile.getInputStream(),
                AchievementImportExcelW.class, params);
        result.forEach(item -> {
            Student student = studentService.queryById(item.getStudentId());
            Achievement achievement = new Achievement();
            achievement
                    .setChinese(item.getChinese())
                    .setMath(item.getMath())
                    .setEnglish(item.getEnglish())
                    .setPolitics(item.getPolitics())
                    .setHistory(item.getHistory())
                    .setGeography(item.getGeography())
                    .setExamInfo(examInfo)
                    .setStudent(student);
            achievementRepository.save(achievement);
        });


    } else if (type == 1) {
        List<AchievementImportExcelL> result = null;
        result = ExcelImportUtil.importExcel(multipartFile.getInputStream(),
                AchievementImportExcelL.class, params);
        result.forEach(item -> {
            Student student = studentService.queryById(item.getStudentId());
            Achievement achievement = new Achievement();
            achievement
                    .setChinese(item.getChinese())
                    .setMath(item.getMath())
                    .setEnglish(item.getEnglish())
                    .setPhysics(item.getPhysics())
                    .setChemistry(item.getChemistry())
                    .setBiology(item.getBiology())
                    .setExamInfo(examInfo)
                    .setStudent(student);
            achievementRepository.save(achievement);
        });
    }
    response.getWriter().write("导入成功!");
}

} ```

5.2.2 前端代码

```html

位置:
    基本信息

```

六、项目演示

登录

主页

成绩单

班级管理

学生管理

用户管理

班级管理

导入模板

考试发布

文件操作

打印成绩单

参考文献

  • 基于B/S结构的学生成绩管理系统的设计与实现(吉林大学·印明阳)
  • 基于JavaEE和Weka的学生成绩管理系统的分析与实现(沈阳师范大学·陈思蒙)
  • 计算机知识考试系统的设计与实现(电子科技大学·楼凤珍)
  • 基于Spring MVC的高校奖学金评定系统的设计与实现(内蒙古大学·杨晓蒙)
  • 面向学生成绩分析的数据挖掘系统设计与实现(苏州大学·夏华)
  • 基于B/S模式的小学成绩管理系统设计与实现(厦门大学·加沙拉提·白斯汉)
  • 职业学校学生成绩管理系统的设计实现(河北科技大学·黄丽娟)
  • 黑旋风绩效考核系统的设计实现与测试(华中科技大学·陈小丽)
  • 黑旋风绩效考核系统的设计实现与测试(华中科技大学·陈小丽)
  • 基于平衡计分卡的绩效管理系统的设计与实现(北京交通大学·张峰)
  • 泰安银行绩效考核系统的设计与实现(山东大学·王雷琪)
  • 基于B/S结构的学生成绩管理系统的设计与实现(吉林大学·印明阳)
  • 基于B/S结构的学生成绩管理系统的设计与实现(吉林大学·印明阳)
  • 基于平衡计分卡的绩效管理系统的设计与实现(北京交通大学·张峰)
  • 基于SSH框架高校教工业绩绩效测评管理系统设计与实现(吉林大学·滕婵娟)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码助手 ,原文地址:https://bishedaima.com/yuanma/35570.html

相关推荐

  • SpringDataJPA

    (一)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(1)项目架构 (二)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(2)多个第三方服务端接入之云旺 IM (三)Java-解决实现 JPA 的 hibernate 自动建表的编码问题 (四)WEB 后台--基于 Token 的 Web 后台登录认证机制(并讲解其他认证机制以及 cookie 和 session 机制) (一)J2EE 项目系列(三)--Spring Data JPA+Spring+SpringMVC+Maven 快速开发(1)项目架构 文章结构:(1)项目环境搭建;(2)简单业务逻辑测试框架;(3)项目配置注意点;(4)快速开发上手技巧; 一
    2024年05月14日
    3 1 1
  • 基于C++开发的WEB服务器

    功能说明 作者初衷是编写一个web框架支持C++开发cgi程序,于是cppweb诞生了, 作者希望cppweb是一个大一统的框架,即可用于传统服务端编程也可用于web编程
    2024年05月14日
    1 1 1
  • 基于springboot实现秒杀电商项目

    前言 本文主要就电商秒杀系统所涉及的相关技术进行探究,相关Demo地址如下: 个人实现版本:https://github,com/MrSorrow/seckill Github Star较高的版本
    2024年05月14日
    3 1 2
  • python实现的基于源IP加密的传输程序

    python实现的基于源IP加密的传输程序 一,设计目标 1,1 目标概括 以对发送数据内容进行隐藏且隐蔽发送方为目标实现一种传输方法,并编写程序实现
    2024年05月14日
    3 1 1
  • 基于Jsp和Servlet实现的图书管理系统

    基于JSP和MySQL实现的图书管理系统 一,采用的工具与技术总览 前端页面设计涉及技术 :html5+css3 后端开发设计技术 :jsp+servlet+javaBean+jdbc+dao 模板引擎 :jsp(el与jstl) 服务器与java版本 :Tomcat8
    2024年05月14日
    7 1 1
  • 基于JSP和SSH框架实现的物流管理系统

    基于JSP和SSH框架实现的物流管理系统 1 任务概述 1,1 目标 该项目软件的开发是为了提高物流公司的业务效率,降低人力,物理的损耗,使管理和业务操作更方便
    2024年05月14日
    3 1 2
  • 使用SSM框架的购物网站系统

    1 前言 本次课程设计旨在考察学生对工程的规划与设计能力,本次课程设计中,我选择的题目是web应用,目的在于在对JAVAEE的兴趣的前提下,增加自己对WEB应用开发的项目经验
    2024年05月14日
    12 1 4
  • 基于SpringBoot框架的社区医院管理系统

    这是一个采用Java语言编写的社区医院管理系统的源代码,基于流行的SpringBoot框架,该项目运用了SpringBoot与Vue技术栈,适用于Idea或Eclipse开发环境
    2024年05月23日
    6 1 1
  • 基于JSP和MYSQL数据库实现的在线考试系统

    基于JSP和MYSQL数据库实现的在线考试系统 1 系统概述 1,1 功能模块 教学部需要考试系统,该考试系统需要完成如下功能: 考试系统只针对于Java课程
    2024年05月14日
    8 1 2
  • MyBatis系列 逆向工程自动生成实体类、Mapper、SQL

    MyBatis 系列 逆向工程自动生成实体类,Mapper,SQL 1,项目结构 2,创建 Maven 项目 file–>new–>maven project
    2024年05月14日
    3 1 1

发表回复

登录后才能评论