温馨提示:本系统源码获取方式见文章末尾
Java精选项目大全:《Java项目精选|Java毕业设计项目源码》
教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋复杂繁重。如何把教务工作信息化,模块化,便捷化是现代高校发展的重点,因此研制开发一种综合教务管理软件,建成一个完整统一、技术先进、高效稳定、安全可靠的教务管理系统变得尤为重要。
本系统基于B/S结构,运用MVC(Model-View-Controller)模式,采用先进的Spring、SpringMVC、MyBatis等技术框架 ,实现了课程管理、教师管理、学生管理、院系管理、公告管理、个人信息管理等功能模块,为高校数字化校园建设提供先进实用、安全可靠、便于操作、易干扩展的应用解决方案。
JDK1.8 + Maven3.6.3 + MySQL5.7 + Tomcat9.0
管理员:
教师:
学生:
数据库详细设计见 “教务管理系统设计与实现(SSM+MySQL+JSP)
”源码包中 educational_manage.sql
文件。
源码包通过第09章节
下载
下载本项目源码并导入到开发工具后(下图为导入到Eclipse中的目录结构),项目的目录结构如下图所示:
部分代码:
package com.cya.controller;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.cya.entity.Userlogin;
/**
* @author 【IT学长】
* @version
*/
@Controller
public class LoginController {
// 登录跳转
@RequestMapping(value = "/login", method = { RequestMethod.GET })
public String loginUI() throws Exception {
return "../../login";
}
// 登录表单处理
@RequestMapping(value = "/login", method = { RequestMethod.POST })
public String login(Userlogin userlogin) throws Exception {
// Shiro实现登录
UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(), userlogin.getPassword());
Subject subject = SecurityUtils.getSubject();
subject.login(token);
if (subject.hasRole("admin")) {
return "redirect:/admin/index";
} else if (subject.hasRole("teacher")) {
return "redirect:/teacher/index";
} else if (subject.hasRole("student")) {
return "redirect:/student/index";
}
return "/login";
}
}
课程列表:
课程添加:
部分代码:
package com.cya.service.impl;
import com.cya.entity.*;
import com.cya.mapper.CollegeMapper;
import com.cya.mapper.CourseMapper;
import com.cya.mapper.CourseMapperCustom;
import com.cya.mapper.SelectedcourseMapper;
import com.cya.service.CourseService;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 【IT学长】
* @version 2022-10-6
*/
@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseMapper courseMapper;
@Autowired
private CourseMapperCustom courseMapperCustom;
@Autowired
private CollegeMapper collegeMapper;
@Autowired
private SelectedcourseMapper selectedcourseMapper;
public void upadteById(Integer id, CourseCustom courseCustom) throws Exception {
courseMapper.updateByPrimaryKey(courseCustom);
}
public Map<String, Object> removeById(Integer id) throws Exception {
Map<String, Object> resMap = new HashMap<String, Object>();
// 自定义查询条件
SelectedcourseExample example = new SelectedcourseExample();
SelectedcourseExample.Criteria criteria = example.createCriteria();
criteria.andCourseidEqualTo(id);
criteria.andMarkIsNull();
List<Selectedcourse> list = selectedcourseMapper.selectByExample(example);
if (list.size() == 0) {
courseMapper.deleteByPrimaryKey(id);
resMap.put("status", true);
resMap.put("message", "删除成功");
} else {
List<String> tempList = new ArrayList<String>();
for (Selectedcourse selectedcourse : list) {
tempList.add(selectedcourse.getStudentid().toString());
}
// 根据课程号查授课教师
Course course = courseMapper.selectByPrimaryKey(id);
resMap.put("status", false);
resMap.put("message", tempList);
if (course != null) {
resMap.put("teacherID", course.getTeacherid());
}
}
return resMap;
}
public List<CourseCustom> findByPaging(Integer toPageNo) throws Exception {
PagingVO pagingVO = new PagingVO();
pagingVO.setToPageNo(toPageNo);
List<CourseCustom> list = courseMapperCustom.findByPaging(pagingVO);
return list;
}
public Boolean save(CourseCustom couseCustom) throws Exception {
Course course = courseMapper.selectByPrimaryKey(couseCustom.getCourseid());
if (course == null) {
courseMapper.insert(couseCustom);
return true;
}
return false;
}
public int getCountCouse() throws Exception {
// 自定义查询对象
CourseExample courseExample = new CourseExample();
// 通过criteria构造查询条件
CourseExample.Criteria criteria = courseExample.createCriteria();
criteria.andCoursenameIsNotNull();
return courseMapper.countByExample(courseExample);
}
public CourseCustom findById(Integer id) throws Exception {
Course course = courseMapper.selectByPrimaryKey(id);
CourseCustom courseCustom = null;
if (course != null) {
courseCustom = new CourseCustom();
BeanUtils.copyProperties(courseCustom, course);
}
return courseCustom;
}
public List<CourseCustom> findByName(String name, Integer teacherId) throws Exception {
CourseExample courseExample = new CourseExample();
// 自定义查询条件
CourseExample.Criteria criteria = courseExample.createCriteria();
criteria.andCoursenameLike("%" + name + "%");
if (teacherId != null) {
criteria.andTeacheridEqualTo(teacherId);
}
List<Course> list = courseMapper.selectByExample(courseExample);
List<CourseCustom> courseCustomList = null;
if (list != null) {
courseCustomList = new ArrayList<CourseCustom>();
for (Course c : list) {
CourseCustom courseCustom = new CourseCustom();
// 类拷贝
org.springframework.beans.BeanUtils.copyProperties(c, courseCustom);
// 获取课程名
College college = collegeMapper.selectByPrimaryKey(c.getCollegeid());
courseCustom.setcollegeName(college.getCollegename());
courseCustomList.add(courseCustom);
}
}
return courseCustomList;
}
public List<CourseCustom> findByTeacherID(Integer id) throws Exception {
CourseExample courseExample = new CourseExample();
// 自定义查询条件
CourseExample.Criteria criteria = courseExample.createCriteria();
// 根据教师id查课程
criteria.andTeacheridEqualTo(id);
List<Course> list = courseMapper.selectByExample(courseExample);
List<CourseCustom> courseCustomList = null;
if (list.size() > 0) {
courseCustomList = new ArrayList<CourseCustom>();
for (Course c : list) {
CourseCustom courseCustom = new CourseCustom();
// 类拷贝
BeanUtils.copyProperties(courseCustom, c);
// 获取课程名
College college = collegeMapper.selectByPrimaryKey(c.getCollegeid());
courseCustom.setcollegeName(college.getCollegename());
courseCustomList.add(courseCustom);
}
}
return courseCustomList;
}
}
学生列表:
学生修改:
部分源码:
//查询个人信息
@RequestMapping(value = "/teacherInfo")
public String teacherInfo(Model model) throws Exception {
Subject subject = SecurityUtils.getSubject();
String username = (String) subject.getPrincipal();
TeacherCustom teacherCustom = teacherService.findById(Integer.parseInt(username));
if (teacherCustom == null) {
throw new CustomException("未找到此教师信息") ;
}
model.addAttribute("teacher", teacherCustom);
return "teacher/teacherInfo";
}
公告列表:
公告详情:
部分源码:
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cya.mapper.NoticeMapper">
<resultMap id="BaseResultMap" type="com.cya.entity.Notice">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="title" property="title" jdbcType="VARCHAR" />
<result column="date" property="date" jdbcType="TIMESTAMP" />
<result column="content" property="content"
jdbcType="LONGVARCHAR" />
<result column="type" property="type" jdbcType="VARCHAR" />
resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria"
separator="or">
<if test="criteria.valid">
<trim prefix="(" suffix=")" prefixOverrides="and">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and
#{criterion.secondValue}
when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem"
open="(" close=")" separator=",">
#{listItem}
foreach>
when>
choose>
foreach>
trim>
if>
foreach>
where>
sql>
<sql id="Base_Column_List">
id, title, date, content, type
sql>
<select id="selectByExample" resultMap="BaseResultMap"
parameterType="com.cya.entity.NoticeExample">
select
<if test="distinct">
distinct
if>
<include refid="Base_Column_List" />
from notice
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
if>
<if test="orderByClause != null">
order by ${orderByClause}
if>
select>
<select id="selectByPrimaryKey" resultMap="BaseResultMap"
parameterType="java.lang.Integer">
select
<include refid="Base_Column_List" />
from notice
where id = #{id,jdbcType=INTEGER}
select>
<delete id="deleteByPrimaryKey"
parameterType="java.lang.Integer">
delete from notice
where id = #{id,jdbcType=INTEGER}
delete>
<insert id="insert" parameterType="com.cya.entity.Notice">
insert into notice (id, title, date, content, type)
values (
#{id,jdbcType=INTEGER},
#{title,jdbcType=VARCHAR},
#{date,jdbcType=TIMESTAMP},
#{content,jdbcType=LONGVARCHAR},
#{type,jdbcType=VARCHAR}
)
insert>
<insert id="insertSelective"
parameterType="com.cya.entity.Notice">
insert into notice
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
if>
<if test="title != null">
title,
if>
<if test="date != null">
date,
if>
<if test="content != null">
content,
if>
<if test="type != null">
type,
if>
trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
if>
<if test="title != null">
#{title,jdbcType=VARCHAR},
if>
<if test="date != null">
#{date,jdbcType=TIMESTAMP},
if>
<if test="content != null">
#{content,jdbcType=LONGVARCHAR},
if>
<if test="type != null">
#{type,jdbcType=VARCHAR},
if>
trim>
insert>
<select id="countByExample"
parameterType="com.cya.entity.NoticeExample"
resultType="java.lang.Integer">
select count(*) from notice
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
if>
select>
<update id="updateByPrimaryKeySelective"
parameterType="com.cya.entity.Notice">
update notice
<set>
<if test="title != null">
title = #{title,jdbcType=VARCHAR},
if>
<if test="date != null">
date = #{date,jdbcType=TIMESTAMP},
if>
<if test="content != null">
content = #{content,jdbcType=LONGVARCHAR},
if>
<if test="type != null">
type = #{type,jdbcType=VARCHAR},
if>
set>
where id = #{id,jdbcType=INTEGER}
update>
<update id="updateByPrimaryKey"
parameterType="com.cya.entity.Notice">
update notice
set title = #{title,jdbcType=VARCHAR},
date = #{date,jdbcType=TIMESTAMP},
content = #{content,jdbcType=LONGVARCHAR},
type = #{type,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
update>
mapper>
详细运行步骤及常见问题解答请看“教务管理系统设计与实现(SSM+MySQL+JSP)
”源码包中 README.md
文件。
通过第09章节
下载源码包并解压后如下图所示:
本期内容就到这里,感谢你的阅读。获取本系统源码请微信搜索关注下方名片
,回复“20221102
”或“教务管理系统
”。关键词一定要输完整、输对哦!!