当前位置:   article > 正文

基于SSM架构实现学生信息管理系统_学生管理系统java ssm框架

学生管理系统java ssm框架

项目简介

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架搭建的学生信息管理系统,实现了对学生、用户等信息的增删改查功能,以及登录、分页等功能。本项目采用了三层架构,分为entity层、service层、dao层和controller层,使用了Maven进行项目管理,使用了MySQL作为数据库。

项目功能

本项目主要有以下几个功能模块:

  • 登录模块:用户可以输入用户名和密码进行登录,如果用户名或密码错误,会提示相应的错误信息。

  • 学生管理模块:管理员可以对学生进行增删改查操作,可以根据学号或姓名或所属班级进行模糊查询,可以批量删除学生,可以修改学生的姓名、性别、年龄。

项目结构

项目技术

本项目主要使用了以下技术:

  • SSM框架:使用Spring作为容器管理各个组件,使用SpringMVC处理请求转发和视图渲染,使用MyBatis作为持久层框架操作数据库。

  • Maven:使用Maven作为项目管理工具,管理项目的依赖和构建。

  • MySQL:使用MySQL作为关系型数据库存储数据。

  • JSP+Servlet+JSTL+EL:使用JSP作为视图层技术展示页面,使用Servlet作为控制器接收请求和响应结果,使用JSTL和EL标签简化页面编写。

  • PageHelper:使用PageHelper插件实现分页功能。

  • Spring事务管理:使用Spring注解式事务管理实现事务控制。

  • SpringMVC拦截器:使用SpringMVC拦截器实现用户登录状态的判断和拦截。

  • SpringMVC全局异常处理:使用SpringMVC的@ControllerAdvice注解实现全局异常处理。

项目截图

以下是本项目的部分截图:

登录页面

学生管理页面

添加页面

修改页面

项目源码

部分源码:

  1. package com.stu.controller;
  2. import com.stu.entity.Student;
  3. import com.stu.service.StudentService;
  4. import com.github.pagehelper.PageHelper;
  5. import com.github.pagehelper.PageInfo;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. @Controller // 这个注解表示这个类是一个控制器
  16. public class StudentController {
  17. @Autowired // 这个注解将StudentService对象注入到这个类中
  18. private StudentService studentService;
  19. //列表
  20. @RequestMapping("/list") // 这个注解将/list URL映射到这个方法
  21. public String list(Model model, @RequestParam(defaultValue = "1")Integer pageNum
  22. , @RequestParam(defaultValue = "5")Integer pageSize
  23. , String name, String sex, Integer age){
  24. HashMap map = new HashMap(); // 创建一个map来存储查询参数
  25. map.put("name",name); // 将name参数放入map中
  26. map.put("sex",sex); // 将sex参数放入map中
  27. map.put("age",age); // 将age参数放入map中
  28. map.put("pageSize",pageSize); // 将pageSize参数放入map中
  29. PageHelper.startPage(pageNum,pageSize); // 使用PageHelper来设置分页信息
  30. List<Map> list = studentService.list(map); // 调用studentService来获取符合查询参数的学生列表
  31. PageInfo pageInfo = new PageInfo(list); // 创建一个PageInfo对象来存储分页信息和学生列表
  32. model.addAttribute("list", list); // 将学生列表添加到model中
  33. model.addAttribute("pageInfo", pageInfo); // 将pageInfo对象添加到model中
  34. model.addAttribute("map", map); // 将查询参数的map添加到model中
  35. return "/list"; // 返回要显示学生列表的视图的名称
  36. }
  37. //删除
  38. @ResponseBody // 这个注解表示这个方法返回一个JSON对象作为响应体
  39. @RequestMapping("/delete") // 这个注解将/delete URL映射到这个方法
  40. public Object delete(String ids){
  41. int i=studentService.delete(ids); // 调用studentService来删除给定id的学生
  42. return i; // 返回删除操作影响的行数
  43. }
  44. //点击按钮,跳转到添加页面
  45. @RequestMapping("/toadd") // 这个注解将/toadd URL映射到这个方法
  46. public String toadd(){
  47. return "add"; // 返回要显示添加新学生的表单的视图的名称
  48. }
  49. //添加
  50. @ResponseBody // 这个注解表示这个方法返回一个JSON对象作为响应体
  51. @RequestMapping("/add") // 这个注解将/add URL映射到这个方法
  52. public Object add(Student student){
  53. int i=studentService.add(student); // 调用studentService来添加一个新学生,使用给定的信息
  54. return i; // 返回插入操作影响的行数
  55. }
  56. //点击按钮,跳转到修改页面
  57. @RequestMapping("/toupdate") // 这个注解将/toupdate URL映射到这个方法
  58. public String toupdate(Integer num, Model model){
  59. Student student = studentService.getByNum(num); // 调用studentService来根据num属性获取一个学生
  60. model.addAttribute("student", student); // 将学生对象添加到model中
  61. return "update"; // 返回要显示更新已有学生的表单的视图的名称
  62. }
  63. //修改
  64. @ResponseBody // 这个注解表示这个方法返回一个JSON对象作为响应体
  65. @RequestMapping("/update") // 这个注解将/update URL映射到这个方法
  66. public Object update(Student student){
  67. int i=studentService.update(student); // 调用studentService来更新一个已有学生,使用给定的信息
  68. return i; // 返回更新操作影响的行数
  69. }
  70. }
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.stu.dao.StudentDao">
  6. <!--条件查询-->
  7. <select id="list" resultType="java.util.Map">
  8. select * from student where 1=1
  9. <if test="name != null and name != ''">
  10. and name like concat('%',#{name},'%')
  11. </if>
  12. <if test="sex != null and sex != ''">
  13. and sex = #{sex}
  14. </if>
  15. <if test="age != null">
  16. and age = #{age}
  17. </if>
  18. </select>
  19. <!--删除-->
  20. <delete id="delete">
  21. DELETE from student where num in(${ids})
  22. </delete>
  23. <!--添加-->
  24. <insert id="add">
  25. INSERT INTO `student`.`student`
  26. (`num`, `name`, `sex`, `age`) VALUES
  27. (0, #{name}, #{sex}, #{age});
  28. </insert>
  29. <!--修改-->
  30. <update id="update">
  31. update student set name=#{name},sex=#{sex},age=#{age} where num=#{num}
  32. </update>
  33. <!--根据id查询-->
  34. <select id="getByNum" resultType="com.stu.entity.Student">
  35. select * from student where num=#{num}
  36. </select>
  37. </mapper>
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>学生列表</title>
  6. <link rel="stylesheet" href="css/like.css">
  7. <script src="js/jquery-1.8.2.min.js"></script>
  8. <script type="text/javascript">
  9. function fy(pageNum) {
  10. $("[name='pageNum']").val(pageNum)
  11. $("form").submit()
  12. }
  13. function qx() {
  14. $(":checkbox").each(function () {
  15. this.checked=true
  16. })
  17. }
  18. function qbx() {
  19. $(":checkbox").each(function () {
  20. this.checked=false
  21. })
  22. }
  23. function fx() {
  24. $(":checkbox").each(function () {
  25. this.checked=!this.checked
  26. })
  27. }
  28. function ps() {
  29. let ids = '';
  30. $(":checkbox:checked").each(function () {
  31. ids+=","+this.value
  32. })
  33. ids=ids.substring(1)
  34. if (ids == '') {
  35. alert("请选择要删除的学生")
  36. return
  37. }
  38. let flag = confirm("确定要删除这些学生吗?")
  39. if (flag) {
  40. $.ajax({
  41. url:"delete",
  42. data:{ids:ids},
  43. type:"post",
  44. success:function (i) {
  45. if (i>0){
  46. location="list"
  47. }else {
  48. alert("删除失败")
  49. }
  50. }
  51. })
  52. }
  53. }
  54. function tj() {
  55. location="toadd"
  56. }
  57. function xg(num) {
  58. location="toupdate?num="+num
  59. }
  60. function sc(num) {
  61. let flag = confirm("确定要删除这个学生吗?")
  62. if (flag) {
  63. $.ajax({
  64. url:"delete",
  65. data:{ids:num},
  66. type:"post",
  67. success:function (i) {
  68. if (i>0){
  69. location="list"
  70. }else {
  71. alert("删除失败")
  72. }
  73. }
  74. })
  75. }
  76. }
  77. </script>
  78. </head>
  79. <body>
  80. <h1>学生信息管理系统</h1>
  81. <table>
  82. <tr>
  83. <td colspan="100">
  84. <form action="list">
  85. <input type="hidden" name="pageNum">
  86. 姓名:<input type="text" name="name" value="${map.name}">
  87. 性别:<input type="text" name="sex" value="${map.sex}">
  88. 年龄:<input type="text" name="age" value="${map.age}">
  89. 每页显示:<input type="text" name="pageSize" value="${map.pageSize}">
  90. <input type="submit" value="查询">
  91. <input type="button" onclick="tj()" value="添加">
  92. </form>
  93. </td>
  94. </tr>
  95. <tr>
  96. <td>请选择</td>
  97. <td>编号</td>
  98. <td>姓名</td>
  99. <td>性别</td>
  100. <td>年龄</td>
  101. <td>操作</td>
  102. </tr>
  103. <c:forEach items="${list}" var="a">
  104. <tr>
  105. <td><input type="checkbox" value="${a.num}"></td>
  106. <td>${a.num}</td>
  107. <td>${a.name}</td>
  108. <td>${a.sex}</td>
  109. <td>${a.age}</td>
  110. <td><input type="button" onclick="xg(${a.num})" value="修改">
  111. <input type="button" onclick="sc(${a.num})" value="删除"></td>
  112. </tr>
  113. </c:forEach>
  114. <tr>
  115. <td colspan="100">
  116. <c:if test="${pageInfo.pageNum > 1}">
  117. <input type="button" value="首页" onclick="fy(1)">
  118. <input type="button" value="上一页" onclick="fy(${pageInfo.pageNum-1})">
  119. </c:if>
  120. <c:if test="${pageInfo.pageNum < pageInfo.pages}">
  121. <input type="button" value="下一页" onclick="fy(${pageInfo.pageNum+1})">
  122. <input type="button" value="尾页" onclick="fy(${pageInfo.pages})">
  123. </c:if>
  124. </td>
  125. </tr>
  126. <tr>
  127. <td colspan="100">
  128. <span>当前第${pageInfo.pageNum}页,共${pageInfo.pages}页</span>
  129. </td>
  130. </tr>
  131. <tr>
  132. <td colspan="100">
  133. <input type="button" value="全选" onclick="qx()">
  134. <input type="button" value="全不选" onclick="qbx()">
  135. <input type="button" value="反选" onclick="fx()">
  136. <input type="button" value="批量删除" onclick="ps()">
  137. </td>
  138. </tr>
  139. </table>
  140. </body>
  141. </html>

项目源码链接:UNABLEEEEE/StudentManagment-3.0-SSM- (github.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/170219
推荐阅读
相关标签
  

闽ICP备14008679号