首页 > 其他分享 >基于SSM的学生学情预警系统的设计与实现

基于SSM的学生学情预警系统的设计与实现

时间:2024-09-25 19:51:58浏览次数:10  
标签:return SSM 预警系统 学情 userService import com public user

系统描述

随着信息互联网购物的飞速发展,一般有能力的机构管理系统。本文介绍了学生学情预警系统的开发全过程。通过分析企业对于学生学情预警系统的需求,创建了一个计算机管理学生学情预警系统的方案。文章介绍了学生学情预警系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。

本学生学情预警系统有管理员,教师,学生。

管理员功能有个人中心,学生管理,教师管理,成绩数据管理,系统管理等。

教师功能有个人中心,成绩数据管理,系统管理。

学生功能有个人中心,成绩数据管理,系统管理。因而具有一定的实用性。

本站是一个B/S模式系统,采用SSM框架作为开发技术,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得学生学情预警系统管理工作系统化、规范化。

技术描述

文章末尾获取源码

开发语言:Java

技术框架:SSM

前端语言:Vue\HTML

持久层框架:Mybatis

服务器:Tomcat7\8\9\10

数据库:MySQL5.7以上

项目管理工具:Maven

项目开发工具:IDEA\Eclipse

系统展示

学生学情预警系统的系统管理员可以管理学生信息,可以对学生信息添加修改删除操作。具体界面的展示如图5.1所示。

 系统管理员可以管理教师信息,可以对教师信息进行添加,修改,删除,查询操作。具体界面如图5.2所示。

 系统管理员可以对成绩数据进行删除和导出,以及查询操作。界面如下图所示:

教师可以对成绩数据进行添加,修改,删除,查询以及导出操作,可以看到预警信息。界面如下图所示: 

 学生登录可以发现自己成绩预警。界面如下图所示:

 

学生学情预警系统的设计与实现

1系统概述

1.1 研究背景

1.2研究目的

1.3系统设计思想

2相关技术

2.1 MYSQL数据库

2.2 B/S结构

2.3 SSM框架简介

3系统分析

3.1可行性分析

3.1.1技术可行性

3.1.2经济可行性

3.1.3操作可行性

3.2系统性能分析

3.2.1 系统安全性

3.2.2 数据完整性

3.3系统界面分析

3.4系统流程和逻辑

4系统概要设计

4.1概述

4.2系统结构

4.3.数据库设计

4.3.1数据库实体

4.3.2数据库设计表

5系统详细实现

5.1 学生信息管理

5.2 教师信息管理

5.3 成绩数据管理

5.4 教师成绩预警

5.5 学生成绩预警

6系统测试

6.1概念和意义

6.2特性

6.3重要性

6.4测试方法

6.5 功能测试

6.6可用性测试

6.7性能测试

6.8测试分析

6.9测试结果分析

结论

致谢语

参考文献

代码实现:

跨域实现

package com.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;

/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

登录实现


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

标签:return,SSM,预警系统,学情,userService,import,com,public,user
From: https://blog.csdn.net/Steve792/article/details/142500072

相关文章

  • Java毕业设计-基于SSM框架的校园失物招领平台系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • Java毕业设计-基于SSM框架的网上奶茶店系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • SSM实验室排课系统 毕业设计源码24944
    摘要随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是使用动态网页开发技术java作为系统的开发语言,MySQL作为后台数据库。整个开发过程首先对实验室排......
  • 使用nssm将nacos注册为系统服务教程
    每次启动项目之前,都需要去启动nacos服务,感觉非常的麻烦,所以想办法将它注册为系统服务,想用的时候,直接用命令启动,不想用的时候,直接用命令停止,最终找到一个不错的解决方案,操作起来也比较简单。nssm官网地址:https://nssm.cc/这里我们选择日期比较新的版本下载使用,当然你可以通过下面的......
  • 城市内涝积水监测预警系统方案 YOLOv7
    城市内涝积水监测预警系统方案基于先进的人工智能视觉算法技术,城市内涝积水监测预警系统方案通过在城市道路街道上部署高清摄像设备,实时监测道路情况,并对图像进行深度学习和算法分析。城市内涝积水监测预警系统方案能够准确识别并分析道路上是否出现积水情况,并判断其程度和范围。城......
  • 防溺水智能预警系统解决方案 YOLOv8
    防溺水智能预警系统解决方案的关键特点如下:防溺水智能预警系统解决方案通过将前端摄像头等设备统一安装并集中接入系统,防溺水智能预警系统解决方案实现对危险水域的全方位监测。这些设备将覆盖所有可能发生溺水事故的区域,并通过网络连接到监控平台,实现信息的实时收集与传输。防溺水......
  • 非煤矿山风险监测预警系统 Python
    非煤矿山风险监测预警系统具有以下优势:非煤矿山风险监测预警系统通过在煤矿关键地点安装摄像机等设备利用智能化视频识别技术,能够实时分析人员出入井口的情况,监测矿井人数变化并检测煤矿生产作业状态,在矿井出入口、各作业区域等重要位置进行全方位监测,确保覆盖矿山操作过程中的关键......
  • 安全生产作业现场违规行为识别预警系统 CNN
    安全生产作业现场违规行为识别预警系统具有以下优势:安全生产作业现场违规行为识别预警系统通过智能摄像头对工厂现场进行实时监控,利用先进的识别技术对人员的行为和电力作业行为进行实时识别和分析。安全生产作业现场违规行为识别预警系统预先设定了各种合规行为和违规行为的模型,当......
  • 基于SSM的心理健康测试系统+微信小程序+LW参考示例
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于SSM的选题管理系统(有报告)。Javaee项目。
    演示视频:基于SSM的选题管理系统(有报告)。Javaee项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringMvc+Mybatis+Jsp+Maven来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。系统设计思想一个成功的网站应明确......