基于SSM+JSP实现学生信息管理系统

简介: 基于SSM+JSP实现学生信息管理系统

项目编号:BS-GX-077

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:SSM+JSP

二,项目简介

传统办法管理学生信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装学生信息管理系统软件来发挥其高效地信息处理的作用,可以规范学生信息管理流程,让管理工作可以系统化和程序化,同时,学生信息管理系统的有效运用可以帮助管理人员准确快速地处理信息。

学生信息管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现学生信息管理系统的功能。其中管理员管理班级和课程的关系,管理奖惩类型,课程和专业信息。老师负责学生成绩和学生奖惩信息的管理,查询任课课程。学生主要查询成绩,查询奖惩信息,查看班级和班级课程。

学生信息管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,学生信息管理系统都可以轻松应对。

完成这部分内容,需要设计人员提前做好准备工作,包括对系统的实际使用人员进行调研,获取他们对本系统的功能需求,也需要通过参考和分析大量文献,获取同类系统的功能,由此分析得出本系统的功能。

管理员是本系统的一个角色,其用例见下图。管理员管理班级和课程的关系,管理奖惩类型,课程和专业信息。

图3.4 管理员用例图

老师是本系统的一个角色,其用例见下图。老师负责学生成绩和学生奖惩信息的管理,查询任课课程。

图3.5 老师用例图

学生是本系统的一个角色,其用例见下图。学生主要查询成绩,查询奖惩信息,查看班级和班级课程。

图3.6 学生用例图

为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,管理员的功能在经过细分后,设计的功能结构见下图。管理员管理班级和课程的关系,管理奖惩类型,课程和专业信息。

图4.1 管理员功能结构图

老师的功能在经过细分后,设计的功能结构见下图。老师负责学生成绩和学生奖惩信息的管理,查询任课课程。

图4.2 老师功能结构图

学生的功能在经过细分后,设计的功能结构见下图。学生主要查询成绩,查询奖惩信息,查看班级和班级课程。

图4.3 学生功能结构图

三,系统展示

5.1管理员功能实现

5.1.1班级和课程关系管理

管理员管理班级和课程关系,其运行效果见下图。在本页面,每个班级对应的课程以及任课老师信息都会清楚的展示,管理员可修改,也能删除。

图5.1 班级和课程关系管理页面

5.1.2老师管理

管理员管理老师。其运行效果见下图。老师是本系统中的一个角色,其信息需要管理员管理。

图5.2 老师管理页面

5.1.3奖惩类型管理

管理员可以管理奖惩类型,其运行效果见下图。管理员修改奖惩类型名称,提交奖惩类型名字获取对应信息。

图5.3 奖惩类型管理页面

5.2 老师功能实现

5.2.1成绩管理

老师管理成绩。其运行效果见下图。老师登记各个学生的课程学习分数,可以根据分数段查询学生成绩。

图5.4 成绩管理页面

5.2.2学生奖惩管理

老师管理学生奖惩,其运行效果见下图。学生的奖励和惩罚信息需要教师添加和管理。

图5.5 学生奖惩管理页面

5.2.3课程管理

老师管理课程,其运行效果见下图。老师在当前页面查看课程,也能根据老师姓名查询对应课程信息。

图5.6 课程管理页面

5.3 学生功能实现

5.3.1班级管理

学生管理班级。其运行效果见下图。学生除了可以查询班级信息之外,还可以查看该班级的课程信息。

图5.7 班级管理页面

5.3.2查询成绩

学生查询成绩,其运行效果见下图。学生在本人后台就能查询成绩。根据课程名称,或者是分数段信息就能查询成绩。

图5.8 查询成绩页面

5.3.3修改密码

学生修改密码。其运行效果见下图。学生在本页面设置新密码,密码设置成功之后,需要重新登录。

图5.9 修改密码页面

四,核心代码展示

package com.controller;
 
 
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
 
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
 
import com.entity.KechengEntity;
 
import com.service.KechengService;
import com.entity.view.KechengView;
import com.service.LaoshiService;
import com.entity.LaoshiEntity;
import com.utils.PageUtils;
import com.utils.R;
 
/**
 * 课程
 * 后端接口
 * @author
 * @email
 * @date 2021-03-13
*/
@RestController
@Controller
@RequestMapping("/kecheng")
public class KechengController {
    private static final Logger logger = LoggerFactory.getLogger(KechengController.class);
 
    @Autowired
    private KechengService kechengService;
 
 
    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;
 
 
    //级联表service
    @Autowired
    private LaoshiService laoshiService;
 
 
    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        }
        PageUtils page = kechengService.queryPage(params);
 
        //字典表数据转换
        List<KechengView> list =(List<KechengView>)page.getList();
        for(KechengView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        KechengEntity kecheng = kechengService.selectById(id);
        if(kecheng !=null){
            //entity转view
            KechengView view = new KechengView();
            BeanUtils.copyProperties( kecheng , view );//把实体数据重构到view中
 
            //级联表
            LaoshiEntity laoshi = laoshiService.selectById(kecheng.getLaoshiId());
            if(laoshi != null){
                BeanUtils.copyProperties( laoshi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                view.setLaoshiId(laoshi.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }
 
    }
 
    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody KechengEntity kecheng, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,kecheng:{}",this.getClass().getName(),kecheng.toString());
        Wrapper<KechengEntity> queryWrapper = new EntityWrapper<KechengEntity>()
            .eq("laoshi_id", kecheng.getLaoshiId())
            .eq("kecheng_name", kecheng.getKechengName())
            .eq("kecheng_content", kecheng.getKechengContent())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KechengEntity kechengEntity = kechengService.selectOne(queryWrapper);
        if(kechengEntity==null){
            kecheng.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      kecheng.set
        //  }
            kechengService.insert(kecheng);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody KechengEntity kecheng, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,kecheng:{}",this.getClass().getName(),kecheng.toString());
        //根据字段查询是否有相同数据
        Wrapper<KechengEntity> queryWrapper = new EntityWrapper<KechengEntity>()
            .notIn("id",kecheng.getId())
            .eq("laoshi_id", kecheng.getLaoshiId())
            .eq("kecheng_name", kecheng.getKechengName())
            .eq("kecheng_content", kecheng.getKechengContent())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KechengEntity kechengEntity = kechengService.selectOne(queryWrapper);
        if(kechengEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      kecheng.set
            //  }
            kechengService.updateById(kecheng);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }
 
 
    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        kechengService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
 
 
}
 

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

相关文章
|
3天前
|
存储 Java 关系型数据库
基于JSP的毕业生就业信息管理系统
基于JSP的毕业生就业信息管理系统
|
9天前
|
前端开发 JavaScript Java
智慧物流管理|基于SSM的第三方物流信息管理系统
智慧物流管理|基于SSM的第三方物流信息管理系统
|
9天前
|
Java 关系型数据库 MySQL
计算机Java项目|SSM就业信息管理系统
计算机Java项目|SSM就业信息管理系统
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的横向课题信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的横向课题信息管理系统附带文章和源代码部署视频讲解等
27 4
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的超市货品信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的超市货品信息管理系统附带文章和源代码部署视频讲解等
21 5
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的电影院订票信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的电影院订票信息管理系统附带文章和源代码部署视频讲解等
13 0
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的服装信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的服装信息管理系统附带文章和源代码部署视频讲解等
10 0
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的宠物中心信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的宠物中心信息管理系统附带文章和源代码部署视频讲解等
11 1
|
16天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的食品安全信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的食品安全信息管理系统附带文章和源代码部署视频讲解等
14 0
|
17天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的旅游信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的旅游信息管理系统附带文章和源代码部署视频讲解等
15 7