1 Star 3 Fork 3

Cyouagain / SSM+MySQL+JSP教务管理系统设计与实现(附源码下载地址)

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

Java项目精选:https://gitee.com/cyouagain/graduation

源码下载:获取本系统源码请微信搜索关注公众号【IT学长】,回复“20221102”或“教务管理系统

01 项目背景

教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋复杂繁重。如何把教务工作信息化,模块化,便捷化是现代高校发展的重点,因此研制开发一种综合教务管理软件,建成一个完整统一、技术先进、高效稳定、安全可靠的教务管理系统变得尤为重要。

本系统基于B/S结构,运用MVC(Model-View-Controller)模式,采用先进的Spring、SpringMVC、MyBatis等技术框架 ,实现了课程管理、教师管理、学生管理、院系管理、公告管理、个人信息管理等功能模块,为高校数字化校园建设提供先进实用、安全可靠、便于操作、易干扩展的应用解决方案。

02 使用技术

  • 数据表现层:Jsp+JavaScript+CSS+Bootstrap+JQuery
  • 业务逻辑层:Java+Spring+SpringMVC
  • 数据持久层:MySQL+MyBatis
  • 开发工具:IDEA / Eclipse
  • 安全框架:Shiro
  • 日志:log4j

03 运行环境

JDK1.8 + Maven3.6.3 + MySQL5.7 + Tomcat9.0

04 功能分析

管理员:

  1. 首页
    • 卡片方式展示系统管理员拥有的权限,点击卡片可快捷跳转到对应的功能模块
  2. 课程管理
    • 课程列表:显示已添加的课程信息,对课程进行搜索、修改、删除操作
    • 课程添加:添加课程信息,输入课程号、课程名称、授课教师、上课时间、上课地点、学时、课程类型、所属院系、学分进行课程信息添加
  3. 教师管理
    • 教师列表:显示已添加的教师信息,对教师进行搜索、修改、删除操作
    • 教师添加:添加教师信息,输入工号、姓名、性别、出生年份、学历、职称、入职时间、所属院系进行教师信息添加
  4. 学生管理
    • 学生列表:显示已添加的学生信息,对学生进行搜索、修改、删除操作
    • 学生添加:添加学生信息,输入学号、姓名、性别、出生年份、入学时间、所属院系进行学生信息添加
  5. 院系管理
    • 院系列表:显示已添加的院系信息,对院系进行搜索、修改操作
    • 院系添加:添加院系信息,输入院系ID、院系名称进行院系信息添加
  6. 公告管理
    • 公告列表:显示已发布的公告信息,对发布的公告进行搜索、修改、详情、删除操作
    • 公告发布:输入公告ID、公告标题,发布时间,公告内容、公告类型发布公告信息
  7. 密码重置
    • 重置其它用户密码(除管理员以外),输入账号(非管理员账号)、密码后重置用户密码
  8. 密码修改
    • 修改登录用户的密码

教师:

  1. 首页
    • 卡片方式展示教师拥有的权限,点击卡片可快捷跳转到对应的功能模块
  2. 我的课程
    • 课程列表:显示登录教师教授的所有课程,教师可通过关键词查询课程信息
    • 课程打分:教师对选修了该课程的学生打分
  3. 公告管理
    • 公告列表:显示公告类型为“全体可见”和“教师可见”的公告信息,登录教师可以对已经发布的公告进行搜索、详情操作
  4. 个人信息
    • 展示登录用户的Id、姓名、性别、出生年份、学历、职称、入职年份、所属院系信息
  5. 密码修改
    • 修改登录用户的密码

学生:

  1. 首页
    • 卡片方式展示学生拥有的权限,点击卡片可快捷跳转到对应的功能模块
  2. 所有课程
    • 课程列表:显示所有的课程信息,可通过关键词搜索课程,登录学生进行选课
  3. 已选课程
    • 课程列表:显示登录学生选修的课程信息,并且可以对非必修课进行退课操作
  4. 已修课程
    • 课程列表:显示登录学生已修的课程信息,查看成绩
  5. 公告管理
    • 公告列表:显示公告类型为“全体可见”和“学生可见”的公告信息,登录学生可以对已经发布的公告进行搜索、详情操作
  6. 个人信息
    • 展示登录用户的Id、姓名、性别、出生年份、入学时间、所属院系信息
  7. 密码修改
    • 修改登录用户的密码

05 数据库设计

数据库详细设计见 “教务管理系统设计与实现(SSM+MySQL+JSP)”源码包中 educational_manage.sql 文件。

源码包通过第09章节下载

06 项目工程结构

下载本项目源码并导入到开发工具后(下图为导入到Eclipse中的目录结构),项目的目录结构如下图所示:

07 部分功能展示及源码

7.1 登录页

部分代码:

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";
	}

}

7.2 管理员端--首页

7.3 管理员端--课程管理

课程列表:

课程添加:

部分代码:

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;
	}
}

7.4 管理员端--学生管理

学生列表:

学生修改:

7.5 教师端--首页

7.6 教师端--个人信息

部分源码:

 //查询个人信息
    @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";
    }

7.7 学生端--已修课程

7.8 学生端--公告管理

公告列表:

公告详情:

部分源码:

<?xml version="1.0" encoding="UTF-8" ?>
<!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.noValue" > and ${criterion.condition} 
									</when> -->
								<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>

08 运行教程

详细运行步骤及常见问题解答请看“教务管理系统设计与实现(SSM+MySQL+JSP)”源码包中 README.md 文件。

通过第09章节下载源码包并解压后如下图所示:

09 获取源码

获取本系统源码请微信搜索关注公众号【IT学长】,回复“20221102”或“教务管理系统”。关键词一定要输完整、输对哦!!

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

本系统基于B/S结构,采用先进的Spring、SpringMVC、MyBatis等技术框架 ,实现了课程管理、教师管理、学生管理、院系管理、公告管理、个人信息管理等功能模块,为高校数字化校园建设提供先进实用、安全可靠、便于操作、易干扩展的应用解决方案 展开 收起
Java
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/cyouagain/educationalManage.git
git@gitee.com:cyouagain/educationalManage.git
cyouagain
educationalManage
SSM+MySQL+JSP教务管理系统设计与实现(附源码下载地址)
master

搜索帮助