基于java+ssm+jsp的学生信息管理系统

文章介绍了采用Java编程语言和Mysql数据库构建的学生信息管理系统,旨在解决传统管理方式效率低、易出错的问题。系统分为管理员、老师和学生三个角色,分别有对应的功能模块,如管理员管理班级、课程和奖惩类型,老师管理成绩和奖惩,学生查询成绩和奖惩。系统实现了B/S架构,利用SSM框架进行开发,并详细描述了各功能的实现过程和界面展示。
摘要由CSDN通过智能技术生成

项目介绍

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

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

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

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

老师的功能在经过细分后,设计的功能结构见下图。老师负责学生成绩和学生奖惩信息的管理,查询任课课程。
在这里插入图片描述
学生的功能在经过细分后,设计的功能结构见下图。学生主要查询成绩,查询奖惩信息,查看班级和班级课程。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

第5章 系统实现
这个环节需要使用前面的设计方案,包括对系统模块的设计,还有对程序后台的数据支持的数据库的设计等。不过这部分内容还是强调系统编码人员的开发能力,要把前面设计的内容通过编码的形式以一个完整的,可以运行的系统呈现出来。
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 com.entity.YonghuEntity;
import com.service.YonghuService;
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.BanjiEntity;

import com.service.BanjiService;
import com.entity.view.BanjiView;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 班级
 * 后端接口
*/
@RestController
@Controller
@RequestMapping("/banji")
public class BanjiController {
    private static final Logger logger = LoggerFactory.getLogger(BanjiController.class);

    @Autowired
    private BanjiService banjiService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;
    @Autowired
    private YonghuService yonghuService;


    //级联表service


    /**
    * 后端列表
    */
    @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)){
            YonghuEntity yonghuEntity = yonghuService.selectById(String.valueOf(request.getSession().getAttribute("userId")));
            params.put("id",yonghuEntity.getBanjiId());
        }
        PageUtils page = banjiService.queryPage(params);

        //字典表数据转换
        List<BanjiView> list =(List<BanjiView>)page.getList();
        for(BanjiView 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);
        BanjiEntity banji = banjiService.selectById(id);
        if(banji !=null){
            //entity转view
            BanjiView view = new BanjiView();
            BeanUtils.copyProperties( banji , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("ve")
    public R save(@RequestBody BanjiEntity banji, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,banji:{}",this.getClass().getName(),banji.toString());
        Wrapper<BanjiEntity> queryWrapper = new EntityWrapper<BanjiEntity>()
            .eq("zhuanye_types", banji.getZhuanyeTypes())
            .eq("banji_name", banji.getBanjiName())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BanjiEntity banjiEntity = banjiService.selectOne(queryWrapper);
        if(banjiEntity==null){
            banji.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      banji.set
        //  }
            banjiService.insert(banji);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody BanjiEntity banji, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,banji:{}",this.getClass().getName(),banji.toString());
        //根据字段查询是否有相同数据
        Wrapper<BanjiEntity> queryWrapper = new EntityWrapper<BanjiEntity>()
            .notIn("id",banji.getId())
            .eq("zhuanye_types", banji.getZhuanyeTypes())
            .eq("banji_name", banji.getBanjiName())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BanjiEntity banjiEntity = banjiService.selectOne(queryWrapper);
        if(banjiEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      banji.set
            //  }
            banjiService.updateById(banji);//根据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());
        banjiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


}

论文参考

在这里插入图片描述
目 录
第1章 绪论 1
1.1选题动因 1
1.2目的和意义 1
1.3论文结构安排 2
第2章 开发环境与技术 3
2.1 MYSQL数据库 3
2.2 Tomcat 介绍 3
2.3 JSP技术 4
第3章 系统分析 5
3.1可行性分析 5
3.1.1操作可行性分析 5
3.1.2经济可行性分析 5
3.1.3技术可行性分析 5
3.2系统流程分析 6
3.3系统性能分析 7
3.4系统功能分析 8
第4章 系统设计 11
4.1界面设计原则 11
4.2功能结构设计 11
4.3数据库设计 14
4.3.1数据库概念设计 15
4.3.2 数据库物理设计 17
第5章 系统实现 21
5.1管理员功能实现 21
5.1.1班级和课程关系管理 21
5.1.2老师管理 21
5.1.3奖惩类型管理 22
5.2 老师功能实现 22
5.2.1成绩管理 22
5.2.2学生奖惩管理 23
5.2.3课程管理 23
5.3 学生功能实现 24
5.3.1班级管理 24
5.3.2查询成绩 24
5.3.3修改密码 25
第6章 系统测试 26
6.1 系统测试方法 26
6.2 功能测试 26
6.2.1 登录功能测试 27
6.2.2 查询课程功能测试 27
6.3 测试结果分析 27
结 论 28
参考文献 30
致 谢 31

学生成绩管理系统 摘 要 随着互联网的飞速发展,越来越多的信息通过网络服务的承载和共享,在促进人类社会大跨步向未来迈进的同时, 也为教育事业带来了蓬勃而持久的春天,而我们也赶上了一个好时代,使得学校与社会,群体与群体之间相互交叉和融合,而教育行业作为人类未来的引路者,与时俱进,应运而产生了不可忽视的教务网络。信息化教育、电化教育、教务管理、数字化校园等名词不断涌现,而自大学到幼儿园,在线教务管理在教育的各个环节都起着至关重要的作用,在线成绩管理系统更是方便和简化了教育评价的工作步骤,因此,在线成绩管理系统的卡发和实现成为了教务管理中的一个重要环节。 关键词 信息化教育/教育事业/教务管理 目 录 中文摘要 Ⅰ 英文摘要 Ⅱ 1绪论 1 1.1 教务信息化分析 1 1.1.1 信息化教育 1 1.1.2 教育信息化 1 1.1.3 当前教育信息化的特征分析 1 1.2 需求分析 1 1.3 系统设计的目的和意义 2 2系统分析 3 2.1 可行性分析 3 2.2 实施方案分析 3 2.2.1 开发语言的选取 3 2.2.2 开发工具 4 2.3 系统功能分析 5 3数据库设计 5 3.1 实体数据分析 5 3.2 实体关系分析 6 3.3 数据库概念分析 6 3.4 数据库表设计 8 4详细设计 10 4.1 学生模块 10 4.1.1注册模块 10 4.1.2登录模块 11 4.1.3查询成绩模块 12 4.2 教师模块 13 4.2.1学期信息模块 13 4.2.2班级信息模块 14 4.2.3学生信息模块 14 4.2.4课程信息模块 16 4.2.5成绩信息模块 17 4.2.6系统管理模块 17 5系统测试 19 5.1 测试的重要性  19 5.2 测试的目的   20 5.3 测试的步骤  20 5.4测试的主要内容  20 致 谢 22 参考文献 23 1绪论 1.1教务信息化分析 1.1.1信息化教育 信息化教育,是指在现代认知发展策略的指导下,充分运用现代信息技术,开发出适合当前潮流、符合个体认知发展规律、并且能够培养学生信息素养的新型教育方式。 1.1.2教育信息化 教育信息化,是指在现代教育教学过程中,通过利用适当的媒介,并辅以适当的设计和引导,优化教育过程,使学习者成长为符合社会发展的需求的人的社会活动过程。 1.1.3当前教育信息化的特征分析 随着第二次工业革命的发展,媒体设备被应用到人类生活中的方方面面,多媒体教学也应运而融入教育活动中,当代教育信息化的表现多种多样,主要表现在以下几个方面: 1.幻灯片与投影仪类设备的应用; 2.依赖网络的教育信息传播; 3.教务信息化策略的实施; 4.个人微型计算机以及便携式移动设备的使用; 5.高度的信息公开策略。 1.2需求分析 作为教务管理平台中的一个至关重要的系统,在线成绩管理系统的出现,将教育者和学习者的距离拉近。在学校教学中,总体分为三个群体:教务管理者、普通教师、学生。教务管理者通过协调学校教育教学过程中的各种关系和矛盾,从而使教学过程更具有效率;普通教师通过教学设计和课堂、课外教学,以及对学生进行阶段性和形成性评价,促进了学生的认知发展;学生通过在校学习,提升了自己的认知结构。 1.3系统设计的目的和意义 对于一个学校而言,学生成绩的管理和查询是一项非常重要的工作,所以学生成绩管理系该主要实现学生成绩的信息化的管理与查询,学生成绩管理系统的开发所需要的资金少,系统正常运行后,能够实现学生成绩在网上进行成绩查询,节省了大量的人力和时间,而且可以减少成绩查询与管理中可能会出现的一些错误,所以,学生成绩管理系统的开发是十分必要的,而且它所带来的实用效益将远远大于本系统的开发成本,该系统操作非常简便,即使不太会使用计算机的人,只要经过培训,也能够很好的使用该系统,即使是管理员,只要经过简单的说明,也能够很快的学会系统的使用,只有对数据库和数据结构进行系统详细的分析,才能开发出满足系统所需要的各种对象,以及各个对象之间的关系,学生成绩管理系统对象有学生,教师,管理员,学生可以在网上查询自己的成绩信息,只要学生能够上网,就随时能够查到自己的成绩,并可以根据需要保存在校期间的所有成绩,学校管理员可以完成对学生信息的管理,教师信息的管理学生成绩的管理,教师也可以使用这个系统来进行学生成绩的录入和所教授班级成绩的查询。 ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值