(Java课设)学生成绩管理系统(IDEA+SSM+Layuimini)

2023-11-02

一、系统介绍

1.开发环境

2.技术概要

3.设计概要

4.功能模块设计

二、系统展示

三、部分代码 

Student.java

studentDao接口文件

StudentService.java

StudentController.java

四、获取途径

一、系统介绍

1.开发环境

开发工具:IDEA 2020.2

JDK版本:jdk1.8

MySQL版本:8.0.22

2.技术概要

后端:使用SpringMVC+Spring+MyBaitis进行开发,使用过滤器拦截器来验证用户是否登录以及通过MVC模式分层

前端:使用Layuimini作为前端框架进行开发,通过Json进行前后端数据传输,jsp进行展示页面

数据库:使用JDBC连接数据库

3.设计概要

c8c544d8a49640b49fd68a4f7a2e787b.png

4.功能模块设计

a.登录模块

      自定义3类用户(管理员、老师、学生)登陆学生管理系统,并设置登录权限;

      实现登录码验证操作;

b.管理员模块

      专业管理:对专业名称以及所属院系进行增删查改;

      班级管理:对班级名称以及所属专业进行增删查改;

      学生管理:对学生信息进行增删查改;

      老师管理:对老师信息进行增删查改;

      课程管理:对课程进行增删查改;

      开课管理:对对应班级对应学期的课程进行开课操作,使得学生可以自主选课;

      用户管理:对用户信息进行增删查改;

c.老师模块

      成绩管理:显示自己任教的科目并对可以对所教科目的学生进行成绩评分;

      学生查询:查询学生信息

d.学生模块

      选课管理:学生通过学校开设课程进行选择并保存,实现学生自主选课;

      成绩查询:显示学生所选课程所得的成绩;

二、系统展示

5130c2ee63d04114957993439b24199a.png

图1 系统登录界面

f31281801650409d8f3ac4b0a87d7cf2.png

图2 管理员模块界面

9014c08d6482461780a4e65397f40ae4.png

图3 专业管理模块

f02e1f2eb99449f3887199ae19f111ed.png

图4 班级管理模块

644ea705d1d14ca8b477fd158cf9ae2c.png

图5 学生管理模块

d47c41c8ee5a4f31b219ef66d7fe8f06.png

图6 老师管理模块

80dbe74ed8074a288920ea0d1013579c.png

图7 课程管理模块

e87958ab1c694876a88e1a7c0c3feeff.png

图8 开课管理模块

65c8548cd5ee4d49b39301c571c0fb87.png

图9 用户管理模块

2103a59db3d44d8995285fa35f04ba96.png

图10 教师模块界面

acf997137f7541ea825b1ec71573242a.png

图11 成绩管理模块

9a04cc6097e54a24b3de5abba7db1dad.png

图12 评分操作

e4d8905d6bec414b9c46a957b8665a1f.png

图13 学生查询模块

634841284ea944c9921c6a5880bc4703.png

图14 学生管理模块

3e1011bd50eb47c3aae5e0f873fbf0da.png

图15 选课管理模块

740502aaa3484aa8986a30234b4e842e.png

图16 成绩查询模块

三、部分代码 

Student.java

package com.xiaoqiang.entity;

import com.xiaoqiang.utils.Entity;
import java.util.Date;

public class Student extends Entity {

	private String addr;
	private String gender;
	private Date birthday;
	private String cardNo;
	private Integer clazzId;
	private Integer id;
	private Date joinDate;
	private String phone;
	private String pname;
	private String status;
	private String stuName;
	private String stuNo;
	private String stuPwd;
	private Integer subjectId;
	private String telephone;
	private Subject subject;
	private Clazz clazz;

	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getCardNo() {
		return cardNo;
	}
	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}
	public Integer getClazzId() {
		return clazzId;
	}
	public void setClazzId(Integer clazzId) {
		this.clazzId = clazzId;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Date getJoinDate() {
		return joinDate;
	}
	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getPname() {
		return pname;
	}
	public void setPname(String pname) {
		this.pname = pname;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public String getStuNo() {
		return stuNo;
	}
	public void setStuNo(String stuNo) {
		this.stuNo = stuNo;
	}
	public String getStuPwd() {
		return stuPwd;
	}
	public void setStuPwd(String stuPwd) {
		this.stuPwd = stuPwd;
	}
	public Integer getSubjectId() {
		return subjectId;
	}
	public void setSubjectId(Integer subjectId) {
		this.subjectId = subjectId;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public Subject getSubject() {
		return subject;
	}

	public void setSubject(Subject subject) {
		this.subject = subject;
	}

	public Clazz getClazz() {
		return clazz;
	}

	public void setClazz(Clazz clazz) {
		this.clazz = clazz;
	}
	public static class StatusType{
		public static String type_1 = "正常";
		public static String type_2 = "辍学";
		public static String type_3 = "休学";
		public static String type_4 = "复学";
		public static String type_5 = "转学";
		public static String type_6 = "转入";
		public static String type_7 = "毕业";
	}
}

studentDao接口文件

package com.xiaoqiang.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.xiaoqiang.entity.Student;

public interface StudentDao {
    public int create(Student pi);

    public int delete(Map<String, Object> paramMap);

    public int update(Map<String, Object> paramMap);

    public List<Student> query(Map<String, Object> paramMap);

    public Student detail(Map<String, Object> paramMap);

    public int count(Map<String, Object> paramMap);

    public List<HashMap> querySelectStudent(Map<String, Object> paramMap);

    public List<Student> queryStudentByTeacher(Map<String, Object> paramMap);
}

StudentService.java

package com.xiaoqiang.service;

import com.xiaoqiang.dao.StudentDao;
import com.xiaoqiang.dao.StudentDao;
import com.xiaoqiang.entity.Student;
import com.xiaoqiang.entity.Teacher;
import com.xiaoqiang.utils.BeanMapUtils;
import com.xiaoqiang.utils.MD5Utils;
import com.xiaoqiang.utils.MapParameter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class StudentService {

    @Autowired
    private StudentDao studentDao;

    public int create(Student pi) {
        pi.setStuPwd(MD5Utils.getMD5(pi.getStuPwd()));
        return studentDao.create(pi);
    }

    public int delete(Integer id) {
        return studentDao.delete(MapParameter.getInstance().addId(id).getMap());
    }
    public int delete(String ids) {
        int flag = 0;
        for (String str : ids.split(",")) {
            flag = studentDao.delete(MapParameter.getInstance().addId(Integer.parseInt(str)).getMap());
        }
        return flag;
    }

    public int update(Student student) {
        Map<String, Object> map = MapParameter.getInstance().add(BeanMapUtils.beanToMapForUpdate(student)).addId(student.getId()).getMap();
        return studentDao.update(map);
    }

    public List<Student> query(Student student) {
        return studentDao.query(BeanMapUtils.beanToMap(student));
    }

    public Student detail(Integer id) {
        return studentDao.detail(MapParameter.getInstance().addId(id).getMap());
    }

    public int count(Student student) {
        return studentDao.count(BeanMapUtils.beanToMap(student));
    }


    public Student login(String userName, String password){
        Map<String, Object> map = MapParameter.getInstance()
                .add("stuNo", userName)
                .add("stuPwd", password)
                .getMap();
        return studentDao.detail(map);
    }

    public List<HashMap> querySelectStudent(Integer courseId, Integer sectionId){
        Map<String, Object> map = MapParameter.getInstance()
                .add("courseId", courseId)
                .add("sectionId", sectionId)
                .getMap();
        return studentDao.querySelectStudent(map);
    }

    public List<Student> queryStudentByTeacher(Integer teacherId,Integer clazzId,Integer subjectId){
        Map<String, Object> map = MapParameter.getInstance()
                .add("teacherId", teacherId)
                .add("clazzId", clazzId)
                .add("subjectId", subjectId)
                .getMap();
        return studentDao.queryStudentByTeacher(map);
    }

}

StudentController.java

package com.xiaoqiang.controller;

import com.xiaoqiang.entity.*;
import com.xiaoqiang.entity.Student;
import com.xiaoqiang.service.ClazzService;
import com.xiaoqiang.service.StudentService;
import com.xiaoqiang.service.StudentService;
import com.xiaoqiang.service.SubjectService;
import com.xiaoqiang.utils.MapControll;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/student")
public class StudentController {


    private static final String LIST = "student/list";
    private static final String ADD = "student/add";
    private static final String UPDATE = "student/update";

    @Autowired
    private StudentService studentService;
    @Autowired
    private SubjectService subjectService;
    @Autowired
    private ClazzService clazzService;

    @GetMapping("/add")
    public String create(ModelMap modelMap){
        List<Subject> subjects = subjectService.query(null);
        modelMap.addAttribute("subjects",subjects);
        return ADD;
    }

    @PostMapping("/create")
    @ResponseBody
    public Map<String,Object> create(@RequestBody Student student){
        student.setStatus(Student.StatusType.type_1);
        int result = studentService.create(student);
        if(result<=0){
            return MapControll.getInstance().error().getMap();
        }
        return MapControll.getInstance().success().getMap();
    }

    @PostMapping("/delete/{id}")
    @ResponseBody
    public Map<String,Object> delete(@PathVariable("id") Integer id){
        int result = studentService.delete(id);
        if(result<=0){
            return MapControll.getInstance().error().getMap();
        }
        return MapControll.getInstance().success().getMap();
    }

    @PostMapping("/delete")
    @ResponseBody
    public Map<String,Object> delete(String ids){
        int result = studentService.delete(ids);
        if(result<=0){
            return MapControll.getInstance().error().getMap();
        }
        return MapControll.getInstance().success().getMap();
    }

    @PostMapping("/update")
    @ResponseBody
    public Map<String,Object> update(@RequestBody Student student){
        int result = studentService.update(student);
        if(result<=0){
            return MapControll.getInstance().error().getMap();
        }
        return MapControll.getInstance().success().getMap();
    }

    @GetMapping("/detail/{id}")
    public String detail(@PathVariable("id") Integer id, ModelMap modelMap){
        Student student = studentService.detail(id);
        List<Subject> subjects = subjectService.query(null);
        modelMap.addAttribute("student",student);
        modelMap.addAttribute("subjects",subjects);
        return UPDATE;
    }

    @PostMapping("/query")
    @ResponseBody
    public Map<String,Object> query(@RequestBody Student student){
        List<Student> list = studentService.query(student);
        List<Subject> subjects = subjectService.query(null);
        List<Clazz> clazzes = clazzService.query(null);
        //设置关联关系
        list.forEach(entity->{
            subjects.forEach(subject -> {
                if(subject.getId() == entity.getSubjectId()){
                    entity.setSubject(subject);
                }
            });
            clazzes.forEach(clazz -> {
                if(clazz.getId() == entity.getClazzId()){
                    entity.setClazz(clazz);
                }
            });
        });
        Integer count = studentService.count(student);
        return MapControll.getInstance().success().page(list,count).getMap();
    }

    @GetMapping("/list")
    public String list(){
        return LIST;
    }


    @GetMapping("/info")
    public String info(HttpSession session,ModelMap modelMap){
        //获取Student
        Student param = (Student) session.getAttribute("user");
        Student student = studentService.detail(param.getId());
        modelMap.put("student",student);
        return "student/info";
    }

    @GetMapping("/teacher_student")
    public String teacher_student(HttpSession session,ModelMap modelMap){
        Teacher teacher = (Teacher) session.getAttribute("user");
        List<Clazz> clazzes = clazzService.query(null);
        List<Subject> subjects = subjectService.query(null);
        modelMap.addAttribute("clazzes",clazzes);
        modelMap.addAttribute("subjects",subjects);
        modelMap.addAttribute("teacherId",teacher.getId());
        return "student/teacher_student";
    }
    @PostMapping("/teacher_student")
    @ResponseBody
    public Map<String,Object> teacher_student(Integer teacherId,Integer clazzId,Integer subjectId){
        List<Student> students = studentService.queryStudentByTeacher(teacherId, clazzId, subjectId);
        List<Subject> subjects = subjectService.query(null);
        List<Clazz> clazzes = clazzService.query(null);
        //设置关联关系
        students.forEach(entity->{
            subjects.forEach(subject -> {
                if(subject.getId() == entity.getSubjectId()){
                    entity.setSubject(subject);
                }
            });
            clazzes.forEach(clazz -> {
                if(clazz.getId() == entity.getClazzId()){
                    entity.setClazz(clazz);
                }
            });
        });
        return MapControll.getInstance().success().add("data",students).getMap();
    }
}

四、获取途径

(Java课设)学生成绩管理系统(ssm版) - 九鸟网 (jiuniao.com)

该项目为本人简易的demo,其中不乏有许多设计不妥之处,还望大佬指点一二~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Java课设)学生成绩管理系统(IDEA+SSM+Layuimini) 的相关文章

随机推荐

  • Python实现异方差检验(statsmodels)

    什么是异方差 摘自知乎https www zhihu com question 354637231 一句话 就是当随机扰动项和模型中的解释变量 自变量 存在某种相关性 就会出现异方差 即对于不同的样本点 随机误差项的方差不再是常数 而互不相
  • RequiredFieldValidator控件验证不能为空时报错多种解决方法以及问题分析

    最近在学asp net 在使用RequiredFieldValidator控件进行验证时 发现报错 界面控件如下图 点击完确定之后按理来说是要报不能为空的提示的但是却报错如下图 经过一番研究发现 也看了其他人的解决方案 总结如下 net 4
  • pytest自动化测试两种执行环境切换的解决方案

    一 痛点分析 在实际企业的项目中 自动化测试的代码往往需要在不同的环境中进行切换 比如多套测试环境 预上线环境 UAT环境 线上环境等等 并且在DevOps理念中 往往自动化都会与Jenkins进行CI CD 不论是定时执行策略还是迭代测试
  • 为什么要同时重写equals方法和hashCode方法(详解)

    在解释为什么要重写equals方法和hashcode方法时 我们要先了解一下这样重写的目的是什么 也让自己有一个思路 围绕这个思路去思考问题 能更好的整握其中的缘由 针对这个目的去思考为什么要去重写 重写的作用是什么 以及如何去重写它们 一
  • MySql SQL语句优化方法

    1 插入优化 当数据过大时 通过load函数上传 2 主键优化 页分裂 当数据乱序插入时 由于主键是按序排的 所以再插入时 当发现页的空间不够时 会通过重新开辟一个页 将原页中的数据拷贝进新的页中 并重新设定链表指针方向 页融合 当删除页内
  • Arduino Uno 实验7——SG90舵机

    SG90舵机简介 舵机是一种位置 角度 伺服的驱动器 适用于那些需要角度不断变化并可以保持的控制系统 主要是由外壳 电路板 驱动马达 直流电机 减速齿轮组 位置检测元件 控制电路 所构成 是一套自动 闭环 控制装置 所谓自动 闭环 控制就是
  • Spring包结构以及各个包之间引用关系说明

    Spring 包结构说明 spring jar 包含有完整发布的单个jar包 他包含有除spring mock jar之外的所有jar 原因是 spring mock jar只有在开发环境中才会用到 而且仅仅是作为一个辅助测试类存在 除了s
  • 解析#pragma指令

    在所有的预处理指令中 Pragma 指令可能是最复杂的了 它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作 pragma指令对每个编译器给出了一个方法 在保持与C和C 语言完全兼容的情况下 给出主机或操作系统专有的特征 依据定义
  • Eclipse安装STS(Spring Tool Suite (STS) for Eclipse)插件

    由于最近在学习SpringBooot 用Eclipse创建SpringBoot项目比较不爽 听说STS插件能直接创建SpringBoot项目 就动手安装一下 希望能对像我一样的小白有所帮助 STS 官网 https spring io to
  • 【毕业设计】基于stm32的便携式U盘设计与实现 - stm32制作U盘

    文章目录 0 前言 1 简介 2 主要器件 3 实现过程 4 部分核心代码 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项
  • 如何解决网站被黑客攻击-深夜一次网站被攻击瘫痪

    情况 客户网站深夜被黑客攻击 服务器对外发出大量攻击行为流量 运维人员已经不可登录服务器进行安全操作 1首先看能不能后台登录经网站管理界面 如果可以的话那就去查看相关日志 确定黑客攻击的范围 一定要尽可能的得到所有的日志 数据库的 Web服
  • (AJAX/JSON)技术实现校验用户名是否存在

    案例 校验用户名是否存在 1 服务器响应的数据 在客户端使用时 要想当做json数据格式使用 有两种解决方案 1 get type 将最后一个参数type指定为 json 2 在服务器端设置MIME类型 response setConten
  • tensorflow教程_TensorFlow教程

    tensorflow教程 TensorFlow教程 TensorFlow Tutorial PDF Version Quick Guide Resources Job Search Discussion PDF版本 快速指南 资源资源 求职
  • nginx配置中root和alias的区别

    例 访问http 127 0 0 1 download 这个目录时候让他去 opt app code这个目录找 方法一 使用root关键字 location root usr share nginx location download gz
  • 水平集分割

    基于距离正则的水平集分割MATLAB代码 无需初始化 This Matlab code demonstrates an edge based active contour model as an application of the Dis
  • 深入理解Objective-C的Block

    最近时间少 也变得懒了 好久没在这里写文章了 眼看就到8月末了 还是整理一篇酝酿已久的吧 之前的文章中整理过用ObjectiveC开发中常用到的Block代码块 其中也提到了一个和block使用不当的crash例子 接着这个问题 本篇文章将
  • Ubuntu 11.10编译Android 4.0.1源码错误

    Android 4 0 1下载到自己的Ubuntu 11 10 64位 系统里 把整个编译环境都配置好了 参考 http www linuxidc net thread 2736 1 1 html 编译时还是出现了如下的错误提示
  • HTML5 页面布局【结合案例】

    新布局的意义 语义化 HTML5 可以让很多更语义化的结构化代码标签代替大量无意义的 div 标签 1 这种语义化的特性提升了网页的质量和语义 2 减少了以前用于CSS 调用的class 和 id 属性 对搜索引擎的友好 新的结构标签带来的
  • su root 与 su - root的区别

    su root 与 su root的区别 su 默认切到 root su 与su 的区别 su 是不改变当前变量 su 是切换到用户的变量 su只能获得root的执行权限 不能获得环境变量 而su 是切换到root并获得root的环境变量及
  • (Java课设)学生成绩管理系统(IDEA+SSM+Layuimini)

    一 系统介绍 1 开发环境 2 技术概要 3 设计概要 4 功能模块设计 二 系统展示 三 部分代码 Student java studentDao接口文件 StudentService java StudentController jav