基于ssm框架和mysql的教务管理系统

到山东找蓝翔

发布日期: 2020-07-14 11:11:33 浏览量: 1203
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1、绪论

“教务网络管理系统”针对学校学生情况对学生各学年的成绩进行有效的管理。能够快速的查询出学生的各科成绩,以及所在班级等各种用途。

2、需求分析

能够存储一定数量的学生信息,并方便有效地进行相应的数据操作和管理,这主要包括学生信息的录入、删除和修改。学生各科成绩的多少关键字查询。

能够对一定数量的读者进行相应的信息存储和管理,这其中包括查询学生的信息的登记、删除及修改各科考试成绩的查询。学生资料的统计和查询。

能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份服务。
使网站更加容易管理和维护,不需要对过多人员培训,提高工作效率。

3、设计

本系统主要面对3个对象:管理员、教职工、学生。

3.1 业务功能分析

功能结构

E-R图

管理员状态图

学生状态图

教师状态图

3.1.1 学生模块

  • 所选课程:显示所有的选修课程以及上课时间和地点等详细信息

  • 已选课程:显示所有已选好课程,包括学分、上课时间、上课地点、授课老师

  • 已修课程:显示所有已经修完,老师已经给成绩的课程

3.1.2 教师模块

  • 我的课程:显示自己授课的课程列表,已经对学生进行打分

3.1.3 管理员模块

  • 课程管理:当课程已经有学生选课成功时,将不能删除

  • 学生管理:添加学生信息时,其信息也会被添加到登陆表

  • 教师管理:主要对教师的信息进行管理

3.2 数据库搭建

3.2.1 数据库设计

学院表(college)

字段名称 类型 约束 描述
collegeID int(11) NOT NULL PRIMARY KEY 学院ID
collegeNAME varchar(200) NOT NULL 学院名

课程表(course)

字段名称 类型 约束 描述
courseID int(11) NOT NULL PRIMARY KEY 课程ID
courseNAME varchar(200) NOT NULL 课程名称
teacherID int(11) NOT NULL 教师ID
courseTime varchar(200) DEFAULT NULL 上课时间
classRoom varchar(200) DEFAULT NULL 上课地点
courseWeek int(200) DEFAULT NULL 上课周数
courseType varchar(20) DEFAULT NULL 课程类型
collegeID intr(11) NOT NULL 所属学院
score int(11) NOT NULL 学分

角色表(role)

字段名称 类型 约束 描述
roleID int(11) NOT NULL PRIMARY KEY 角色ID
roleNAME varchar(20) NOT NULL 角色名称
permissions varchar(255) DEFAULT NULL 权限

选课表(selectedcourse)

字段名称 类型 约束 描述
courseID int(11) NOT NULL PRIMARY KEY 选课ID
studentID int(11) NOT NULL 学生ID
mark int(11) DEFAULT NULL 成绩

学生表(student)

字段名称 类型 约束 描述
userID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 学生ID
userNAME varchar(200) NOT NULL 学生姓名
sex varchar(20) DEFAULT NULL 性别
birthYear date DEFAULT NULL 出生日期
grade date DEFAULT NULT 入学日期
collegeID int(11) NOT NULT 院系ID

教师表(teacherr)

字段名称 类型 约束 描述
userID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 教师ID
userNAME varchar(200) NOT NULL 教师姓名
sex varchar(20) DEFAULT NULL 性别
birthYear date NOT NULL 出生日期
degree varchar(20) DEFAULT NULL 学历
title varchar(255) DEFAULT NULL 职称
grade date DEFAULT NULL 入职时间
collegeID int(11) NOT NULL 院系

登陆表(userlogin)

字段名称 类型 约束 描述
userID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 用户ID
userNAME varchar(200) NOT NULL 用户姓名
password varchar(200) NOT NULL 用户密码
role int(11) NOT NULL 角色权限

3.2.2 数据库实现

学院表

  1. DROP TABLE IF EXISTS `college`;
  2. CREATE TABLE `college` (
  3. `collegeID` int(11) NOT NULL,
  4. `collegeName` varchar(200) NOT NULL COMMENT '课程名',
  5. PRIMARY KEY (`collegeID`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

课程表

  1. DROP TABLE IF EXISTS `course`;
  2. CREATE TABLE `course` (
  3. `courseID` int(11) NOT NULL,
  4. `courseName` varchar(200) NOT NULL COMMENT '课程名称',
  5. `teacherID` int(11) NOT NULL,
  6. `courseTime` varchar(200) DEFAULT NULL COMMENT '开课时间',
  7. `courseRoom` varchar(200) DEFAULT NULL COMMENT '开课地点',
  8. `courseWeek` int(200) DEFAULT NULL COMMENT '学时',
  9. `courseType` varchar(20) DEFAULT NULL COMMENT '课程类型',
  10. `collegeID` int(11) NOT NULL COMMENT '所属院系',
  11. `score` int(11) NOT NULL COMMENT '学分',
  12. PRIMARY KEY (`courseID`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

角色表

  1. DROP TABLE IF EXISTS `role`;
  2. CREATE TABLE `role` (
  3. `roleID` int(11) NOT NULL,
  4. `roleName` varchar(20) NOT NULL,
  5. `permissions` varchar(255) DEFAULT NULL COMMENT '权限',
  6. PRIMARY KEY (`roleID`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

选课表

  1. DROP TABLE IF EXISTS `selectedcourse`;
  2. CREATE TABLE `selectedcourse` (
  3. `courseID` int(11) primary key NOT NULL,
  4. `studentID` int(11) NOT NULL,
  5. `mark` int(11) DEFAULT NULL COMMENT '成绩'
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

学生表

  1. DROP TABLE IF EXISTS `student`;
  2. CREATE TABLE `student` (
  3. `userID` int(11) NOT NULL AUTO_INCREMENT,
  4. `userName` varchar(200) NOT NULL,
  5. `sex` varchar(20) DEFAULT NULL,
  6. `birthYear` date DEFAULT NULL COMMENT '出生日期',
  7. `grade` date DEFAULT NULL COMMENT '入学日期',
  8. `collegeID` int(11) NOT NULL COMMENT '院系id',
  9. PRIMARY KEY (`userID`)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=10007 DEFAULT CHARSET=utf8;

教师表

  1. DROP TABLE IF EXISTS `teacher`;
  2. CREATE TABLE `teacher` (
  3. `userID` int(11) NOT NULL AUTO_INCREMENT,
  4. `userName` varchar(200) NOT NULL,
  5. `sex` varchar(20) DEFAULT NULL,
  6. `birthYear` date DEFAULT NULL COMMENT '出生日期',
  7. `degree` varchar(20) DEFAULT NULL COMMENT '学历',
  8. `title` varchar(255) DEFAULT NULL COMMENT '职称',
  9. `grade` date DEFAULT NULL COMMENT '入职时间',
  10. `collegeID` int(11) NOT NULL COMMENT '院系',
  11. PRIMARY KEY (`userID`)
  12. ) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8;

用户登陆表

  1. DROP TABLE IF EXISTS `userlogin`;
  2. CREATE TABLE `userlogin` (
  3. `userID` int(11) NOT NULL AUTO_INCREMENT,
  4. `userName` varchar(200) NOT NULL,
  5. `password` varchar(200) NOT NULL,
  6. `role` int(11) NOT NULL DEFAULT '2' COMMENT '角色权限',
  7. PRIMARY KEY (`userID`)
  8. ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

4、编码

4.1 后台功能实现

4.1.1 College pojo类

  1. package com.system.po;
  2. public class College {
  3. private Integer collegeid;
  4. private String collegename;
  5. public Integer getCollegeid() {
  6. return collegeid;
  7. }
  8. public void setCollegeid(Integer collegeid) {
  9. this.collegeid = collegeid;
  10. }
  11. public String getCollegename() {
  12. return collegename;
  13. }
  14. public void setCollegename(String collegename) {
  15. this.collegename = collegename == null ? null : collegename.trim();
  16. }
  17. }

4.1.2 cpllege servic类

  1. package com.system.service;
  2. import com.system.po.College;
  3. import java.util.List;
  4. public interface CollegeService {
  5. List<College> finAll() throws Exception;
  6. }

4.1.3 college impl类

  1. package com.system.service.impl;
  2. import com.system.mapper.CollegeMapper;
  3. import com.system.po.College;
  4. import com.system.po.CollegeExample;
  5. import com.system.service.CollegeService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import java.util.List;
  9. @Service
  10. public class CollegeServiceImpl implements CollegeService {
  11. @Autowired
  12. private CollegeMapper collegeMapper;
  13. public List<College> finAll() throws Exception {
  14. CollegeExample collegeExample = new CollegeExample();
  15. CollegeExample.Criteria criteria = collegeExample.createCriteria();
  16. criteria.andCollegeidIsNotNull();
  17. return collegeMapper.selectByExample(collegeExample);
  18. }
  19. }

4.1.4 college mapper 映射

  1. package com.system.mapper;
  2. import com.system.po.College;
  3. import com.system.po.CollegeExample;
  4. import org.apache.ibatis.annotations.Param;
  5. import java.util.List;
  6. public interface CollegeMapper {
  7. int countByExample(CollegeExample example);
  8. int deleteByExample(CollegeExample example);
  9. int deleteByPrimaryKey(Integer collegeid);
  10. int insert(College record);
  11. int insertSelective(College record);
  12. List<College> selectByExample(CollegeExample example);
  13. College selectByPrimaryKey(Integer collegeid);
  14. int updateByExampleSelective(@Param("record") College record, @Param("example") CollegeExample example);
  15. int updateByExample(@Param("record") College record, @Param("example") CollegeExample example);
  16. int updateByPrimaryKeySelective(College record);
  17. int updateByPrimaryKey(College record);
  18. }

4.1.5 login controller层

  1. package com.system.controller;
  2. import com.system.po.Userlogin;
  3. import org.apache.shiro.SecurityUtils;
  4. import org.apache.shiro.authc.UsernamePasswordToken;
  5. import org.apache.shiro.subject.Subject;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestMethod;
  9. @Controller
  10. public class LoginController {
  11. //登录跳转
  12. @RequestMapping(value = "/login", method = {RequestMethod.GET})
  13. public String loginUI() throws Exception {
  14. return "../../login";
  15. }
  16. //登录表单处理
  17. @RequestMapping(value = "/login", method = {RequestMethod.POST})
  18. public String login(Userlogin userlogin) throws Exception {
  19. //Shiro实现登录
  20. UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),
  21. userlogin.getPassword());
  22. Subject subject = SecurityUtils.getSubject();
  23. //如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常
  24. subject.login(token);
  25. if (subject.hasRole("admin")) {
  26. return "redirect:/admin/showStudent";
  27. } else if (subject.hasRole("teacher")) {
  28. return "redirect:/teacher/showCourse";
  29. } else if (subject.hasRole("student")) {
  30. return "redirect:/student/showCourse";
  31. }
  32. return "/login";
  33. }
  34. }

4.2 前端页面实现

4.2.1 菜单页面实现

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <div class="col-md-2">
  3. <ul class="nav nav-pills nav-stacked" id="nav">
  4. <li><a href="${pageContext.request.contextPath}/student/showCourse">所有课程<span class="badge pull-right"></span></a></li>
  5. <li><a href="${pageContext.request.contextPath}/student/selectedCourse">已选课程<span class="badge pull-right"></span></a></li>
  6. <li><a href="${pageContext.request.contextPath}/student/overCourse">已修课程<span class="badge pull-right"></span></a></li>
  7. <li><a href="${pageContext.request.contextPath}/student/passwordRest">修改密码<sapn class="" /></a></li>
  8. <li><a href="${pageContext.request.contextPath}/logout">退出系统<sapn class="" /></a></li>
  9. </ul>
  10. </div>

4.2.2 头页面实现

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%--shiro标签--%>
  3. <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
  4. <!-- 顶栏 -->
  5. <div class="container" id="top">
  6. <div class="row">
  7. <div class="col-md-12">
  8. <!--加入导航条标题-->
  9. <div class="navbar navbar-default" role="navigation">
  10.  <div class="navbar-header">
  11.   <a href="##" class="navbar-brand">广东白云学院教务网络管理系统(学生)</a>
  12.  </div>
  13. <form action="##" class="navbar-form navbar-right" rol="search">
  14. <div class="dropdown">
  15. <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" style="margin-right: 20px; ">
  16. <%--登录用户名--%>
  17. <span class=""><shiro:principal/></span>
  18. <span class=""></span>
  19. </button>
  20. <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
  21. <li role="presentation">
  22. <a role="menuitem" tabindex="-1" href="#">
  23. <span class="glyphicon glyphicon-cog pull-right"></span>
  24. 修改个人信息
  25. </a>
  26. </li>
  27. <!-分割线--->
  28. <li role="presentation" class="divider"></li>
  29. <li role="presentation">
  30. <a role="menuitem" tabindex="-1" href="/Baiyun/logout">
  31. <span class="glyphicon glyphicon-off pull-right"></span>
  32. 注销
  33. </a>
  34. </li>
  35. </ul>
  36. </div>
  37. </form>
  38. </div>
  39. </div>
  40. </div>
  41. </div>

4.2.3 学生显示页面

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title>课程信息显示</title>
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9. <!-- 引入bootstrap -->
  10. <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/bootstrap.min.css">
  11. <!-- 引入JQuery bootstrap.js-->
  12. <script src="${pageContext.request.contextPath}/js/jquery-3.2.1.min.js"></script>
  13. <script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
  14. <%--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">--%>
  15. </head>
  16. <body>
  17. <!-- 顶栏 -->
  18. <jsp:include page="top.jsp"></jsp:include>
  19. <!-- 中间主体 -->
  20. <div class="container" id="content">
  21. <div class="row">
  22. <jsp:include page="menu.jsp"></jsp:include>
  23. <div class="col-md-10">
  24. <div class="panel panel-default">
  25. <div class="panel-heading">
  26. <div class="row">
  27. <h1 class="col-md-5">课程列表</h1>
  28. <form class="bs-example bs-example-form col-md-5" role="form" style="margin: 20px 0 10px 0;" action="${pageContext.request.contextPath}/admin/selectCourse" id="form1" method="post">
  29. <div class="input-group">
  30. <input type="text" class="form-control" placeholder="请输入课程名" name="findByName">
  31. <span class="input-group-addon btn" onclick="document.getElementById('form1').submit" id="sub">搜索</span>
  32. </div>
  33. </form>
  34. </div>
  35. </div>
  36. <table class="table table-bordered">
  37. <thead>
  38. <tr>
  39. <th>课程号</th>
  40. <th>课程名称</th>
  41. <th>授课老师编号</th>
  42. <th>上课时间</th>
  43. <th>上课地点</th>
  44. <th>周数</th>
  45. <th>课程类型</th>
  46. <th>学分</th>
  47. <th>操作</th>
  48. </tr>
  49. </thead>
  50. <tbody>
  51. <c:forEach items="${courseList}" var="item">
  52. <tr>
  53. <td>${item.courseid}</td>
  54. <td>${item.coursename}</td>
  55. <td>${item.teacherid}</td>
  56. <td>${item.coursetime}</td>
  57. <td>${item.classroom}</td>
  58. <td>${item.courseweek}</td>
  59. <td>${item.coursetype}</td>
  60. <td>${item.score}</td>
  61. <td>
  62. <button class="btn btn-default btn-xs btn-info" onClick="location.href='/Baiyun/student/stuSelectedCourse?id=${item.courseid}'">选课</button>
  63. <!--弹出框-->
  64. </td>
  65. </tr>
  66. </c:forEach>
  67. </tbody>
  68. </table>
  69. <div class="panel-footer">
  70. <c:if test="${pagingVO != null}">
  71. <nav style="text-align: center">
  72. <ul class="pagination">
  73. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.upPageNo}">&laquo;上一页</a></li>
  74. <li class="active"><a href="">${pagingVO.curentPageNo}</a></li>
  75. <c:if test="${pagingVO.curentPageNo+1 <= pagingVO.totalCount}">
  76. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.curentPageNo+1}">${pagingVO.curentPageNo+1}</a></li>
  77. </c:if>
  78. <c:if test="${pagingVO.curentPageNo+2 <= pagingVO.totalCount}">
  79. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.curentPageNo+2}">${pagingVO.curentPageNo+2}</a></li>
  80. </c:if>
  81. <c:if test="${pagingVO.curentPageNo+3 <= pagingVO.totalCount}">
  82. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.curentPageNo+3}">${pagingVO.curentPageNo+3}</a></li>
  83. </c:if>
  84. <c:if test="${pagingVO.curentPageNo+4 <= pagingVO.totalCount}">
  85. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.curentPageNo+4}">${pagingVO.curentPageNo+4}</a></li>
  86. </c:if>
  87. <li><a href="${pageContext.request.contextPath}/student/showCourse?page=${pagingVO.totalCount}">最后一页&raquo;</a></li>
  88. </ul>
  89. </nav>
  90. </c:if>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="container" id="footer">
  97. <div class="row">
  98. <div class="col-md-12"></div>
  99. </div>
  100. </div>
  101. </body>
  102. <script type="text/javascript">
  103. <%--设置菜单中--%>
  104. $("#nav li:nth-child(1)").addClass("active")
  105. <c:if test="${pagingVO != null}">
  106. if (${pagingVO.curentPageNo} == ${pagingVO.totalCount}) {
  107. $(".pagination li:last-child").addClass("disabled")
  108. };
  109. if (${pagingVO.curentPageNo} == ${1}) {
  110. $(".pagination li:nth-child(1)").addClass("disabled")
  111. };
  112. </c:if>
  113. function confirmd() {
  114. var msg = "您真的确定要删除吗?!";
  115. if (confirm(msg)==true){
  116. return true;
  117. }else{
  118. return false;
  119. }
  120. }
  121. $("#sub").click(function () {
  122. $("#form1").submit();
  123. });
  124. </script>
  125. </html>

5、测试

5.1 登陆测试

5.2 管理员界面测试

5.2.1 管理学生

5.2.2 学生添加

5.2.3 查询学生测试

5.2.4 修改学生测试

5.2.5 删除学生测试

5.2.6 重置密码

5.2.7 退出系统

5.3 学生功能测试

5.3.1 选课

5.3.2 退课

5.3.3 已修

5.4 教师页面

5.4.1 成绩打分

6、总结

使用SSM框架,非常的不熟悉,本来使用maven工程创建项目,但在配置时,有些war包下载不下来,后转为建造web项目。此项目基本代码都来源于网络和课本,虽然这样,但我在弄这整个项目过程中,知道SSM框架的大体流程,在完成这个项目前并不知道需要去配置web.xml这个文件夹,因为我建的时servlet是3.1的,并没有web.xml这个文件,而我在网络上有学到servl3.0开始可以注解,不用web.xml这个文件。导致项目一直运行不成功,后来才在网络上查到有其他框架时候要配置web.xml文件。在运行过程中还出现过中文变成问号的问题,虽然用了两个多星期来完成这个项目,基本是在用他人的东西,但在这个过程中我加深了对spring 、springmvc、mybatis的理解及它们之间是如何整合的。

上传的附件 cloud_download schoolmanage.zip ( 17.98mb, 55次下载 ) cloud_download 报告.docx ( 2.75mb, 29次下载 )
error_outline 下载需要14点积分

keyboard_arrow_left上一篇 : 基于python实现的电影推荐系统 基于JAVA和MYSQL数据库实现的学生信息管理系统 : 下一篇keyboard_arrow_right



小心思1
2020-07-16 16:26:56
大佬求带
一只迷路了的麋鹿
2020-10-07 21:17:43
大佬 这个为什么运行不了?
好名字
2020-11-16 19:22:48
大佬,跪求源码及报告416226570@qq.com
wuder
2021-03-12 14:55:32
666666

发送私信

会冒泡的可乐

12
文章数
7
评论数
最近文章
eject