基于SSM的学生管理系统的设计与实现(包含源码、sql脚本、导入视频教程)

news2024/11/15 23:35:48

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

1 、功能描述

  基于SSM的学生管理系统2拥有三种角色

  • 管理员:学生管理、教师管理、课程管理、个人信息管理等
  • 教师:添加课程、录入成绩、查看选课名单和结课、个人信息等
  • 学生:选课、退课、查看已修课程、个人信息等

1.1 背景描述

  学生管理系统是一款功能强大的软件应用,专为学校和教育机构设计,以简化学生信息的日常管理。通过此系统,用户可以轻松录入、修改、查询和删除学生信息,包括基本信息、成绩、课程和考勤等。此外,系统还具备数据统计和分析功能,帮助教育机构更全面地掌握学生的学习情况。通过使用学生管理系统,学校不仅可以提高管理效率,减少工作负担,还能确保学生信息的准确性和安全性,为教育环境的优化提供有力支持。

2、项目技术

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

前端技术:Bootstrap、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 7-10版本均可
  • 数据库类型:MySql(5.x和8.x版本都可)
  • maven版本:无限制
  • 硬件环境:Windows 或者 Mac OS

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

4.1 登录

登录

4.2 学生模块

学生-选课1

学生-选课结果

学生-退选课程

学生-查看已修课程

学生-个人信息

4.3 教师模块

教师-录入成绩

教师-添加课程1

教师-添加课程2

教师-查看名单和结课

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:tx="http://www.springframework.org/schema/tx"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
       http://www.springframework.org/schema/context 
	   http://www.springframework.org/schema/context/spring-context-4.1.xsd">


	<context:annotation-config />
	<context:component-scan base-package="net.fuzui.StudentInfo.service" />

	
	<!-- druid连接池 -->
	<bean id="abstractDataSource" abstract="true" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
		<!-- 配置初始化大小、最大、最小 -->
		<property name="initialSize" value="1" />
		<property name="minIdle" value="10" />
		<property name="maxActive" value="10" />
		
		<!-- 配置获取连接等待超时的实际 -->
		<property name="maxWait" value="60000" />
	</bean>
	
	
	<!-- 配置写库 继承abstractDataSource-->
	<bean id="dataSourceWrite" parent="abstractDataSource">
		<!-- 基本url、username、password -->
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/selc?serverTimezone=UTC&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;autoReconnect=true&amp;allowMultiQueries=true" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>
	
	<!-- 配置读库 继承abstractDataSource-->
	<bean id="dataSourceRead" parent="abstractDataSource">
		<!-- 基本 url、username、password -->
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/selc?serverTimezone=UTC&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;autoReconnect=true&amp;allowMultiQueries=true" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>
	
	<!-- 动态数据源 -->
	<bean id="dataSource" class="net.fuzui.StudentInfo.mysql_rws.DynamicDataSource">
		<property name="writeDataSource" ref="dataSourceWrite" />
		<property name="readDataSource" ref="dataSourceRead" />
	</bean>
	<!--
	<tx:annotation-driven transaction-manager="transactionManager" />
	-->
	<!-- sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 实例化sqlSessionFaction时用到上面的数据源以及sql映射文件 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 引入mybatis配置文件 -->
		<property name="configLocation" value="classpath:config/mybatis/mybatis-config.xml" />
		<!-- mapper配置文件 -->
		<property name="mapperLocations" value="classpath:mapper/*.xml" />
		<!-- pojo -->
		<property name="typeAliasesPackage" value="net.fuzui.StudentInfo.pojo" />
		<!-- plugin -->
		<property name="plugins">
			<array>
				<bean class="net.fuzui.StudentInfo.mysql_rws.DynamicPlugin" />
			</array>
		</property>			
	</bean>
	
	<!-- 配置扫描器 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="net.fuzui.StudentInfo.mapper"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>
	
</beans>

5.2 登录核心代码

package net.fuzui.StudentInfo.handler;

import net.fuzui.StudentInfo.pojo.Student;
import net.fuzui.StudentInfo.pojo.Teacher;
import net.fuzui.StudentInfo.service.AdminService;
import net.fuzui.StudentInfo.service.CoursePlanService;
import net.fuzui.StudentInfo.service.CourseService;
import net.fuzui.StudentInfo.service.SelectCourseService;
import net.fuzui.StudentInfo.service.StudentService;
import net.fuzui.StudentInfo.service.TeacherService;
import net.fuzui.StudentInfo.service.impl.AdminServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * @ProjectName: StudentInfo
 * @Package: net.fuzui.StudentInfo.handler
 * @ClassName: AdminHandler
 * @Description: admin的handler层(servlet)
 * @Author: 王泽
 * @CreateDate: 2019-04-10 22:50
 * @UpdateUser: 王泽
 * @UpdateDate: 2019-04-10 22:50
 * @UpdateRemark: 新建
 * @Version: 1.0
 */

@Controller
@RequestMapping("/LoginHandler")
public class LoginHandler {
    @Autowired
    AdminService adminServiceImpl;
    @Autowired
	StudentService studentService;
    @Autowired
	TeacherService teacherService;
    
  //管理员登录

    @RequestMapping("/adminlogin")
    public String loginStudent(@RequestParam("aname") String aname, @RequestParam("apassword") String apassword,
                               Model model, HttpSession httpSession) {
        String n = null;
        n = adminServiceImpl.queryByNamePwd(aname,apassword);

        if (n != null && !"".equals(n)) {
            httpSession.setAttribute("aname", aname);
            return "admin/adminFace";
        } else {
            return "login";
        }

    }

    // 管理员退出登录
    @RequestMapping("/adminlogout")
    public ModelAndView adminLogout(HttpSession httpSession) {
        httpSession.removeAttribute("aname");
        httpSession.removeAttribute("couList");
        return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
    }
    
    
 // 学生登录
 	@RequestMapping("/studentlogin")
 	public ModelAndView loginStudent(@RequestParam("sid") String sid, @RequestParam("spassword") String spassword,
 			Model model, HttpSession httpSession, HttpServletRequest httpRequest) {

 		Student student = new Student();
 		student = studentService.getByStuSid(sid);
 		if (studentService.queryByNamePwd(sid, spassword) != null) {
 			httpSession.setAttribute("sid", sid);
 			httpSession.setAttribute("sname", student.getSname());
 			return new ModelAndView(new RedirectView("../student/studentFace.jsp"));
 		} else {
 			httpRequest.setAttribute("msg","账号或密码不正确,登录失败!");
 			return new ModelAndView(new RedirectView("../fail.jsp"));
 		}

 	}
 	
 // 学生退出登录
 	@RequestMapping("/studentlogout")
 	public ModelAndView studentLogout(HttpSession httpSession) {

 		httpSession.removeAttribute("sid");
 		httpSession.removeAttribute("sname");
 		httpSession.removeAttribute("courseList");
 		httpSession.removeAttribute("ssrList");
 		httpSession.removeAttribute("sesList");
 		return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
 	}
    
 	
 	
 // 教师登录
 	@RequestMapping("/teacherlogin")
 	public ModelAndView loginTeacher(@RequestParam("tid") String tid, @RequestParam("tpassword") String tpassword,
 			Model model, HttpSession httpSession) {

 		if (teacherService.queryByNamePwd(tid, tpassword) != null) {

 			Teacher teacher = new Teacher();
 			teacher = teacherService.getByTeaTid(tid);
 			// model.addAttribute("tid", tid);
 			httpSession.setAttribute("tid", tid);
 			httpSession.setAttribute("tname", teacher.getTname());
 			// httpSession.setAttribute("teachername", teacher.getTname());
 			return new ModelAndView(new RedirectView("../teacher/teacherFace.jsp"));

 		} else {
 			return new ModelAndView(new RedirectView("../fail.jsp"));
 		}

 	}
 	
 // 教师退出登录
 	@RequestMapping("/teacherlogout")
 	public ModelAndView teacherLogout(HttpSession httpSession) {

 		httpSession.removeAttribute("tid");
 		httpSession.removeAttribute("tname");
 		httpSession.removeAttribute("couList");
 		httpSession.removeAttribute("sesList");
 		httpSession.removeAttribute("lookList");

 		return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
 	}
}

6 、功能视频演示

基于SSM的学生管理系统

7 、 获取方式

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

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Linux sudo授权的那点事

sudo可以让我们以其他用户的身份执行命令&#xff0c;而只需要自己的密码&#xff08;甚至不需要密码&#xff09;。这比su切换用户需要目标用户的密码要方便。 从授权角度来审视&#xff0c;sudo比su的授权粒度要细很多&#xff0c;su属于大放权&#xff0c;例如&#xff1a;s…

STM32——PWR电源控制的低功耗模式

1、理论知识 本节主要学习配置低功耗模式&#xff1a;防止在空闲时候耗电&#xff08;关闭/唤醒哪些硬件很重要&#xff09; 虽然STM32外部需要使用3.3V供电&#xff0c;但内部核心电路CPU、外设和存储器使用1.8V供电即可&#xff0c;这3者需要与外界交流时才需要3.3V供电 从上…

第一课,认识C++,和计算机对话

一&#xff0c;编程是什么&#xff1f;C是什么&#xff1f; 编程是编写代码来实现需要的功能&#xff0c;C就是用来编程的语言&#xff0c;计算机没法直接听懂人类的语言&#xff0c;需要用编程语言C来和计算机交流。 二&#xff0c;编程能做哪些事情&#xff1f; ①让机器人…

openwrt系统通过ZeroTier插件实现远程管理

OpenWrt是一款开源的路由器系统&#xff0c;可以自由安装各种插件&#xff0c;但由于是非商业化的系统&#xff0c;没有统一的云管理平台&#xff0c;所以远程管理相对麻烦&#xff0c;需要借助于第三方服务器。当然如果家里宽带有独立公网ip&#xff0c;还可以通过ddns实现远程…

只用一个 HTML 元素可以写出多少形状?——不规则图形篇(序)

上一篇章&#xff0c;我们的不规则图形篇发了之后&#xff0c;我一个朋友说我“良心发现”了&#xff0c;不提供新的知识点了&#xff0c;而是实实在在的一些案例直接丢给大家。 的确&#xff0c;前面的每一个篇章&#xff0c;我都有引入新的知识点。 规划这个系列&#xff0…

某系统接入网关任意文件读取漏洞

当你征服一座山峰时&#xff0c;它已经在你脚下了&#xff0c;你必须再找一座山峰去征服&#xff0c;否则&#xff0c;你只有下山&#xff0c;走下坡路了 漏洞描述 某系统接入网关存在任意文件读取漏洞&#xff0c;攻击者通过构造请求可以读取服务器任意文件 漏洞复现 访问…

“智能安全新防线:深信达软加密狗的全面防护功能解析“

在智能安全设备领域&#xff0c;深信达的CBS赛博锁以其独特的软加密狗技术&#xff0c;为设备提供了全面的安全保障。CBS赛博锁通过以下几个核心功能来保障智能设备的安全性&#xff1a; 1. **许可管理**&#xff1a;CBS赛博锁通过硬件唯一身份ID和许可授权管理&#xff0c;确保…

云匹面粉直供小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户信息管理&#xff0c;种植基地管理&#xff0c;云匹小麦采收管理&#xff0c;云匹面粉加工&#xff0c;面粉分类管理&#xff0c;云匹面粉管理&#xff0c;系统管理 微信端账号功能包括&#xff1…

Redis数据的持久化是如何做的?(面试版)

在Redis中提供了两种数据持久化的方式&#xff1a;RDB、AOF RDB快照 RDB全称Redis Database Backup file(Redis快照)&#xff0c;也被叫做Redis数据快照。简单来说就是创建快照来获取内存中某个时间点上的副本。当Redis实例故障重启后&#xff0c;从磁盘读取快照文件&#xf…

[java][代码]使用java在mongodb上传下载文件

建立java项目新建lib包&#xff0c;导入jar包 3.链接mongdo数据库代码 /** * 1.获取连接 * 2.上传文件 * 3.下载文件 * 4.删除文件 * */ public static GridFS GetMongoGridFS(){ List<ServerAddress> adds new ArrayList<>(); ServerAddress serverAddress new…

根据数据库设计开发一套通用的电子商务平台

目录 案例 【题目】 【问题 1】(9 分) 【问题 2】(9 分) 【问题 3】(7 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于数据库设计的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某制造企业为拓展网上销售业…

如何从零开始在 Vue 3 项目中引入 Element Plus

如果想在 Vite 生成的 Vue 3 下项目中&#xff0c;从头开始使用 Element Plus UI 库&#xff0c;并成功展示到页面&#xff0c;可以按照如下步骤操作&#xff1a; 1. 创建 Vue 3 项目&#xff08;如果还没有&#xff09; 使用 vite 创建 npm create vitelatest my-vue-app -…

vue3 内置的特殊属性ref

Vue 3 中的数据绑定是通过模板语法实现的。开发者可以在模板中使用特殊的语法来绑定数据&#xff0c;例如使用双花括号 {{}} 来显示数据&#xff0c;或者使用 v-bind 指令来绑定属性。 当数据发生变化时&#xff0c;Vue 会自动更新绑定的数据在模板中的显示&#xff0c;实现页面…

CSS盒子模型【怪异盒模型、定位看这一篇就够了!!!】

目录 盒子模型 width和height属性 width属性 height属性 width和height的特性 边框属性 边框的三要素小属性 四个方向的边框的三要素小属性 边框应用场景-制作三角形 单独设置四个圆角 盒子水平居中 盒子模型占位计算 盒模型可视宽高 盒模型实际占位 box-sizing怪…

启动Application 报错:no mapping for GET /(已解决)

根据以上内容&#xff0c;帮助我顺利解决了此问题 自己的错误&#xff1a;因为我使用的是框架嘛&#xff0c;然后生成了一个SpringBoot项目后&#xff0c;resources下面就会有一个static的类&#xff0c;用于存放静态资源类&#xff0c;后面我把静态资源放在里面&#xff0c;但…

大脑可视化:多种方式实现fMRI的ROI的绘图

前言 在探索神经科学的深邃领域中&#xff0c;我们常常面临着如何将复杂的脑区数据以一种清晰、直观的方式呈现给同行和公众的挑战。随着功能性磁共振成像&#xff08;fMRI&#xff09;技术的发展&#xff0c;我们拥有了更多工具来揭示大脑的奥秘。本文旨在介绍一系列笔者学习的…

一键安装!系统之家Win7纯净版镜像文件:无捆绑软件!

今日系统之家小编给大家带来做到真正纯净的Win7纯净版系统&#xff0c;该版本系统将捆绑软件都删除了&#xff0c;系统特别干净&#xff0c;安装后整体操作体验感很好。系统运作速度也快&#xff0c;兼容性出色&#xff0c;也没有蓝屏问题的出现&#xff0c;时刻都能放心使用。…

数据结构学习:单链表

单链表简介 将线性表中的个元素分布在存储器的不同存储块&#xff0c;每个部分称为节点&#xff0c;通过地址或指针建立元素之间的联系。 节点的示意图如下&#xff0c; 节点的data域存放数据元素 ,而next域是一个指针&#xff0c;指针指向的直接后继所在的节点。 一个链表的…

sql-labs31-34关通关攻略

第三十一关 一.判断闭合 1“” 二.查询数据库 http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,2,database()--http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,2,database()-- 三.查表 http://127.0.0.1/Less-31/?id-1%22)%20union%20select%201,…

机器学习之 贝叶斯算法 及朴素贝叶斯分类器的代码实现(给我点赞的都发财,谢谢)

贝叶斯算法简介 贝叶斯算法是一种基于概率论的统计学方法&#xff0c;广泛应用于机器学习领域。它基于贝叶斯定理&#xff0c;用于计算后验概率。贝叶斯定理可以表述为&#xff1a; 其中&#xff1a; P(A∣B) 表示在事件 B 发生的情况下事件 A 发生的概率&#xff0c;称为后…