基于SSM的学生信息管理系统(选课管理系统)的设计与实现 (含源码+sql+视频导入教程)

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

基于SSM的学生信息管理系统(选课管理系统)13拥有三种角色

  • 管理员:学生管理、教师管理、专业管理、课程管理、审批管理、课程表管理、开课管理、教室管理、班级管理等
  • 教师:查看学生、成绩管理、查看排课、录入成绩等
  • 学生:查看成绩、查看课表、申请审批等

1.1 背景描述

学生管理系统是一个针对学校或教育机构的学生信息进行全面管理的系统。这个系统主要功能包括学生信息的录入、查询、修改和删除,以及学生成绩的录入、查询和修改。此外,系统还可以生成报告,包括学生信息统计和成绩分析等。这个系统的用户包括学生、家长、教师和管理员。通过这个系统,学生可以查看自己的个人信息和成绩,家长可以查看孩子的信息和成绩,教师可以看到学生的信息和成绩,管理员可以管理所有学生的信息和成绩。

2、项目技术

后端框架:SSM(Spring、SpringMVC、Mybatis)

前端技术:Layui、jsp、css、JavaScript、JQuery

2.1 SSM

SSM(Spring+SpringMVC+MyBatis)是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。其中,Spring就像是整个项目中的粘合剂,负责装配bean并管理其生命周期,实现控制反转(IoC)的功能。SpringMVC负责拦截用户请求,通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装,让数据库底层操作变得透明,通过配置文件关联到各实体类的Mapper文件,实现了SQL语句映射。

2.2 mysql

MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8
  • IDE类型:IDEA、Eclipse都可运行
  • tomcat版本:Tomcat 9以上版本(有下载教程)
  • 数据库类型:MySql(5.x和8.x版本都可)
  • maven版本:无限制
  • 硬件环境:Windows 或者 Mac OS

4、功能截图+视频演示+文档目录

4.1 登录

4.2 管理员模块

4.3 教师模块

4.4 学生模块

5 、核心代码实现

5.1 配置代码

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--设置数据库配置文件地址-->
    <context:property-placeholder location="classpath:conf/jdbc.properties"/>

    <!--声明数据源,连接数据库-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--SqlSessionFactoryBean创建SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:conf/mybatis.xml"/>
    </bean>

    <!--声明mybatis的扫描器,创建dao对象-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.wangpeng.dao"/>
    </bean>

    <!--组件扫描器,扫描service-->
    <context:component-scan base-package="com.wangpeng.service"/>

    <!--下面还可以写事务配置:注解的配置,aspect的配置-->
    <!--事务注解驱动,然后就可以使用@Transactional注解来实现事务管理-->
    <!--或者配置aspectj用aop的事务管理-->
</beans>

5.2 登录注册代码

复制代码
package com.wangpeng.controller;

import com.wangpeng.pojo.Manager;
import com.wangpeng.pojo.Student;
import com.wangpeng.pojo.Teacher;
import com.wangpeng.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping("/login")
public class LoginController {

    @Autowired
    LoginService service;

    /**
     * 登录
     * @param username 用户名
     * @param password 密码
     * @param authority 身份
     * @param captcha 验证码
     * @param req HttpServletRequest
     * @param resp HttpServletResponse
     * @return
     */
    @RequestMapping("login.do")
    public int login(String username, String password, String authority, String captcha, HttpServletRequest req, HttpServletResponse resp){
        //  status: 0验证码错误,1账号密码错误,2成功,3验证码失效

        // 获取Session中的验证码
        String token = (String) req.getSession().getAttribute("KAPTCHA_SESSION_KEY");
        // 删除Session中的验证码
        req.getSession().removeAttribute("KAPTCHA_SESSION_KEY");

        System.out.println("验证码[" + token + "]");

        // 验证码失效
        if(token == null) return 3;

        // 验证码错误
        if( !captcha.equals(token)) return 0;

        // 账号密码错误
        Object obj = null;
        if(authority.equals("manager")){
            obj = service.managerLogin(username,password);
        } else if(authority.equals("teacher")){
            obj = service.teacherLogin(username,password);
        } else if(authority.equals("student")){
            obj = service.studentLogin(username,password);
        }

        if(obj == null) return 1;
        else {
            //保存用户登陆的信息到Session域中
            req.getSession().setAttribute("authority",authority);   //权限身份
            req.getSession().setAttribute("loginObj", obj);         //登录对象
            return 2;
        }
    }

    /**
     * 修改密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @param req HttpServletRequest
     * @return 成功标志1
     */
    @RequestMapping("alterPassword.do")
    public int alterPassword(String oldPassword, String newPassword,HttpServletRequest req){
        //获取当前登录的权限
        String authority = (String) req.getSession().getAttribute("authority");

        if(authority.equals("manager")) {
            //获取当前账号信息
            Manager loginManager =  (Manager) req.getSession().getAttribute("loginObj");

            //检查旧密码是否正确
            Manager manager = service.managerLogin(loginManager.getUsername(), oldPassword);
            if(manager == null) {   //旧密码不正确
                return 0;
            } else {    //旧密码正确,设置新密码
                service.setManagerPassword(loginManager, newPassword);
                return 1;
            }
        } else if(authority.equals("teacher")) {
            //获取当前账号信息
            Teacher loginTeacher =  (Teacher) req.getSession().getAttribute("loginObj");

            //检查旧密码是否正确
            Teacher teacher = service.teacherLogin(loginTeacher.getTnum(), oldPassword);

            if(teacher == null) {   //旧密码不正确
                return 0;
            } else {    //旧密码正确,设置新密码
                service.setTeacherPassword(loginTeacher, newPassword);
                return 1;
            }
        } else if(authority.equals("student")) {
            //获取当前账号信息
            Student loginStudent =  (Student) req.getSession().getAttribute("loginObj");

            //检查旧密码是否正确
            Student student = service.studentLogin(loginStudent.getSnum(), oldPassword);

            if(student == null) {   //旧密码不正确
                return 0;
            } else {    //旧密码正确,设置新密码
                service.setStudentPassword(loginStudent, newPassword);
                return 1;
            }
        }

        return 0;
    }

    /**
     * 退出登录
     * @param req HttpServletRequest
     */
    @RequestMapping({"exitLogin.do", "student/exitLogin.do", "teacher/exitLogin.do"})
    public void exitLogin(HttpServletRequest req){
        req.getSession().setAttribute("authority", null);
        req.getSession().setAttribute("loginObj", null);
    }
}

6 、功能视频演示

基于SSM的学生信息管理系统(教务选课管理系统) 计算机毕业设计 源码 java毕设

7 、 获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:学生👇🏻

相关推荐
傻啦嘿哟4 分钟前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
cookqq32 分钟前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
呼拉拉呼拉43 分钟前
Redis故障转移
数据库·redis·缓存·高可用架构
什么都想学的阿超1 小时前
【Redis系列 04】Redis高可用架构实战:主从复制与哨兵模式从零到生产
数据库·redis·架构
pp-周子晗(努力赶上课程进度版)1 小时前
【MySQL】视图、用户管理、MySQL使用C\C++连接
数据库·mysql
斯特凡今天也很帅1 小时前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
超级小忍3 小时前
如何配置 MySQL 允许远程连接
数据库·mysql·adb
吹牛不交税3 小时前
sqlsugar WhereIF条件的大于等于和等于查出来的坑
数据库·mysql
hshpy3 小时前
setting up Activiti BPMN Workflow Engine with Spring Boot
数据库·spring boot·后端
文牧之4 小时前
Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
运维·数据库·oracle