# course_manage_system **Repository Path**: iliweii/course_manage_system ## Basic Information - **Project Name**: course_manage_system - **Description**: 易管•学生课程管理系统🍗 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-05-09 - **Last Updated**: 2025-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 易管•学生课程管理系统 > 易管从客户资料管理系统,到信息管理系统,再到学生课程管理系统,不断完善中,我的专业知识水平也不断提升。 ## 环境 - java version 1.8.0_251 (jdk1.8) - MariaDB 10.4.10 (MySQL 5.7及更新) ## 开始 1. 数据库配置。 创建数据库course_manage_system,服务器连接排序规则为utf8_general_cii或者utf8mb4_general_ci 导入数据库文件course_manage_system.sql 2. 使用IntelliJ IDEA打开项目文件(Eclipse等其他编辑器未经过验证),点击右上角运行'Application' 或者按组合快捷键Shift + F10。 3. 浏览器打开http://localhost:8080/。项目运行正常。 运行截图 登录界面 主界面 ## 项目依赖 此处说明不用关心,具体见工程下pom.xml文件 ```xml org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-starter-jdbc org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java com.alibaba druid 1.1.12 org.apache.tomcat.embed tomcat-embed-jasper provided javax.servlet jstl com.google.code.gson gson ``` ## 功能简介 易管•学生课程管理系统提供四种身份:学生身份,教师身份,管理员身份和高级管理员身份。 除功能模块外,登录系统后系统右上角有当前时间和本地天气。非常银杏。 登录界面要输入验证码,防止机器人攻击。 ### 管理员模块 管理员功能分为四大模块,基本数据管理,课程安排管理,学生成绩管理,个人信息管理。 #### 基本数据管理 基本数据管理包括管理员维护(高级管理员独有)、学生信息维护、教师信息维护、班级信息维护、课程信息维护。 ##### 管理员维护(高级管理员独有) 管理员信息包括管理员登录名,姓名,密码。 对管理员进行增删改查,额外有批量删除功能、批量添加功能、分页功能,查询是根据管理员登录名模糊查询。 ##### 学生信息维护 学生信息包括学号、班级、姓名、密码、性别、年龄、邮箱、手机号。 对学生信息进行增删改查,额外有批量删除功能、批量添加功能、分页功能,查询是根据学号以及姓名模糊查询。 ##### 教师信息维护 教师信息包括教职工号、姓名、密码、邮箱、手机号。 对教师信息进行增删改查,额外有批量删除功能、批量添加功能、分页功能,查询是根据教职工号、姓名进行模糊查询。 ##### 班级信息维护 班级信息包括班级号,班级名,所属学院、班级人数。 对班级信息进行增删改查,额外功能有批量删除功能、批量修改功能、分页功能,查询是根据班级名称、学院进行模糊查询。 ##### 课程信息维护 课程信息包括课程编号、课程名称、课程人数。 对课程信息进行增删改查,额外功能有批量删除功能、批量修改功能、分页功能,查询是根据课程编号、名称进行模糊查询。 #### 课程安排管理 课程安排管理包括学生选课安排、教师授课安排、公选课安排。 ##### 学生选课安排 学生选课安排是对学生选课信息进行管理的功能模块。学生选课信息包括学号、学生姓名、课程编号、课程名称、状态。 对学生选课信息进行增删改查,额外功能包括批量删除、批量添加、通过选课、批量通过选课、分页功能,查询是根据学号、课程编号进行模糊查询,还可以查询全部未通过学生选课。 ##### 教师授课安排 教师授课安排是对教师授课信息进行管理的功能模块。教师授课信息包括教职工号、教师姓名、课程编号、课程名称、课程用书、状态。 对教师授课信息进行增删改查,额外功能还包括批量删除、批量添加、通过授课、批量通过授课、分页功能,查询是根据教职工号、课程编号进行模糊查询,还可以查询全部未通过教师授课。 ##### 公选课安排 公选课安排比较特殊,在本页面有三个下拉框,分别是选择班级下拉框、选择教师下拉框、选择课程下拉框。 通过三个下拉框选择班级、教师、课程后,点击提交会为该班级中的所有学生安排本课程,为该教师安排本授课。十分方便。 #### 学生成绩管理 学生成绩管理只包含学生成绩管理一个功能模块。 ##### 学生成绩管理 学生成绩信息包括课程编号、课程名称、学号、姓名、班级、授课教师、成绩。 对学生成绩信息进行删改查,额外功能包括批量删除、分页功能,查询可以根据学号、课程号进行模糊查询,还可以在下拉框中选择具体班级查看该班级中所有学生的成绩,还可以在下拉框中选择具体课程查看该课程中所有学生的成绩。 学生选课尚未通过者不显示在列表中。学生选课通过但未公布成绩者,成绩信息显示为/,已提交学生成绩的,成绩显示为具体数值。任课教师一列,显示的为该课程所有的授课教师。 #### 个人信息管理 个人信息管理包括修改个人信息(管理员独有)和退出登录。 ##### 修改个人信息(管理员独有) 允许管理员对自己的姓名或者密码进行修改。 ##### 退出登录 点击该模块后会退出登录。 ### 学生模块 学生功能分为两大模块:基本信息管理、个人信息管理。 #### 基本信息管理 基本信息管理包括我的成绩查询、我的选课查询、申请新课程。 ##### 我的成绩查询 学生成绩信息包括课程编号、课程名称、学号、姓名、班级、任课教师、成绩。未通过选课不会出现在列表中,未公布成绩中成绩信息显示未/,已公布成绩显示具体数值。任课教师一列,显示的为该课程所有的授课教师。 学生只能查询,不能对成绩进行其他操作。 ##### 我的选课查询 选课信息包括课程编号、课程名称、学号、学生姓名、状态。 学生只能查询,不能对选课进行其他操作。 ##### 申请新课程 申请新课程界面包括一个下拉框,在下拉框中选择课程之后点击申请,选课成功,即选课变为等待通过状态。最终结果要等管理员通过选课。 #### 个人信息管理 个人信息管理包括修改个人信息和退出登录。 ##### 修改个人信息 允许学生对自己的姓名、密码、性别、年龄、邮箱、手机号等信息进行修改。 ##### 退出登录 点击该模块后会退出登录。 ### 教师模块 教师功能分为两大模块:基本信息管理、个人信息管理。 #### 基本信息管理 基本信息管理包括学生成绩管理,我的授课查询,申请新授课。 ##### 学生成绩管理 学生成绩信息包括课程编号、课程名称、学号、姓名、班级、成绩。学生成绩信息为本教师所有授课课程下的学生成绩信息。 对学生成绩进行删改查,额外功能有批量删除、分页功能,查询根据学号、课程号进行模糊查询。 ##### 我的授课查询 授课信息包括教职工号、教师姓名、课程编号、课程名称、课程用书、状态。 教师只能查询信息,不能进行其他操作。 ##### 申请新授课 申请新授课界面包括一个下拉框,在下拉框中选择课程之后点击申请,选择授课成功,即授课变为等待通过状态。最终结果要等管理员通过授课。 #### 个人信息管理 个人信息管理包括修改个人信息和退出登录。 ##### 修改个人信息 允许学生对自己的姓名、密码、邮箱、手机号等信息进行修改。 ##### 退出登录 点击该模块后会退出登录。 ## 功能实现 ### 数据库层面 数据库中有8个数据表,分别是admin高级管理员表、tbuser管理员表、student学生表、teacher教师表、class班级表、course课程表、choose选课表、teaching授课表 ##### admin高级管理员表 ```mysql CREATE TABLE IF NOT EXISTS `admin` ( `aid` int(11) NOT NULL AUTO_INCREMENT, `aname` varchar(20) NOT NULL, `apwd` varchar(40) NOT NULL, PRIMARY KEY (`aid`), UNIQUE KEY `aname` (`aname`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='高级管理员表'; ``` ##### tbuser管理员表 ```mysql CREATE TABLE IF NOT EXISTS `tbuser` ( `tbid` int(11) NOT NULL AUTO_INCREMENT COMMENT '主码', `tbuser` varchar(100) NOT NULL COMMENT '管理员登录名', `tbname` varchar(100) NOT NULL COMMENT '姓名', `tbpwd` varchar(100) NOT NULL COMMENT '密码', PRIMARY KEY (`tbid`), UNIQUE KEY `tbuser` (`tbuser`) ) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb4 COMMENT='管理员用户表'; ``` ##### student学生表 ```mysql CREATE TABLE IF NOT EXISTS `student` ( `sid` int(11) NOT NULL AUTO_INCREMENT COMMENT '编码', `sno` varchar(20) NOT NULL COMMENT '学号', `cno` varchar(20) NOT NULL COMMENT '班级编号', `sname` varchar(15) NOT NULL COMMENT '姓名', `spwd` varchar(40) NOT NULL COMMENT '密码', `sex` int(11) DEFAULT NULL COMMENT '性别', `sage` int(11) DEFAULT NULL COMMENT '年龄', `email` varchar(40) DEFAULT NULL COMMENT '邮箱', `phone` varchar(20) DEFAULT NULL COMMENT '手机号', PRIMARY KEY (`sid`), UNIQUE KEY `sno` (`sno`) ) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COMMENT='学生表'; ``` teacher教师表 ```mysql CREATE TABLE IF NOT EXISTS `teacher` ( `tid` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', `tno` varchar(20) NOT NULL COMMENT '教师号', `tname` varchar(20) NOT NULL COMMENT '姓名', `tpwd` varchar(40) NOT NULL COMMENT '密码', `email` varchar(40) DEFAULT NULL COMMENT '邮箱', `phone` varchar(20) DEFAULT NULL COMMENT '手机号', PRIMARY KEY (`tid`), UNIQUE KEY `tno` (`tno`) ) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COMMENT='教师表'; ``` ##### class班级表 ```mysql CREATE TABLE IF NOT EXISTS `class` ( `cid` int(11) NOT NULL AUTO_INCREMENT COMMENT '班级编号', `cno` varchar(20) NOT NULL COMMENT '班级号', `cname` varchar(20) NOT NULL COMMENT '班级名', `college` varchar(40) NOT NULL COMMENT '所属学院', PRIMARY KEY (`cid`), UNIQUE KEY `cno` (`cno`) ) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COMMENT='班级表'; ``` ##### course课程表 ```mysql CREATE TABLE IF NOT EXISTS `course` ( `cid` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', `cno` varchar(20) NOT NULL COMMENT '课程编号', `cname` varchar(20) NOT NULL COMMENT '课程名', PRIMARY KEY (`cid`), UNIQUE KEY `cno` (`cno`) ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COMMENT='课程表'; ``` ##### choose选课表 ```mysql CREATE TABLE IF NOT EXISTS `choose` ( `scid` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', `sno` varchar(20) NOT NULL COMMENT '学号', `cno` varchar(20) NOT NULL COMMENT '课程编号', `status` int(11) NOT NULL DEFAULT 0 COMMENT '申请状态', `grade` double DEFAULT NULL COMMENT '成绩 ', PRIMARY KEY (`scid`) ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COMMENT='学生选课表'; ``` ##### teaching授课表 ```mysql CREATE TABLE IF NOT EXISTS `teacher` ( `tid` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', `tno` varchar(20) NOT NULL COMMENT '教师号', `tname` varchar(20) NOT NULL COMMENT '姓名', `tpwd` varchar(40) NOT NULL COMMENT '密码', `email` varchar(40) DEFAULT NULL COMMENT '邮箱', `phone` varchar(20) DEFAULT NULL COMMENT '手机号', PRIMARY KEY (`tid`), UNIQUE KEY `tno` (`tno`) ) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COMMENT='教师表'; ``` ### 后端 Spring Boot 框架作为技术依托,实现数据库访问层、业务逻辑层、表现层(api接口)。 同时实现过滤器等。 #### 数据库访问层 DAO 主要用到Mybatis的技术,在dao包下创建接口方法,在resources/mapping文件夹下完成与数据库交互。对接口使用@Repository注解对持久层注册到容器 #### 业务逻辑层 SERVICE 先在service包下创建接口方法,再在service/impl包下,实现接口。使用@Service注解对业务逻辑层自动注册到Spring容器,使用@Autowired注解完成自动装配。 #### 表现层(api接口) API 在api包下创建类,使用@RestController注解返回Return 里的内容,使用@PostMapping()注解处理前端的POST请求数据,使用@RequestParam()注解获取请求参数。 #### 其他后端实现 ##### 页面控制 Controller 类似于API,使用@Controller注解接收请求并返回一个页面(jsp)。 使用@RequestMapping()注解接收访问请求并return一个页面名。 **注:所有jsp页面请求均在PageController中实现。** ##### 过滤器 Filter 在filter包下创建类,使用@Component注解把普通pojo实例化到spring容器中,使用@ServletComponentScan注解使Filter注册,使用@WebFilter()注解,实现过滤器功能。 ##### 错误页 Error 在error包下创建类,继承ErrorPageRegistrar并实现registerErrorPages方法,使用@Configuration注解,即可自定义404界面。 ### 前端 前端使用了jsp,css,js(jquery)。其中jsp文件放在webapp/WEB-INF/jsp/下,css、js、fonts、img等静态资源放在resources/static/各自目录下。 #### JSP jsp文件中把head部分、secondnav部分、foot部分分离。 - head.jsp 部分用于实现系统名称声明,头部信息栏(当前时间、当地天气、登录者姓名),头部导航栏,导航栏下方标识线。 - secondnav.jsp 部分用于实现次级导航栏。 - foot.jsp 部分用于实现底部版权信息。 其他jsp文件基本与html类似,这里不过多赘述。 #### CSS font-awesome.css用于图标字体化,需配合fontawesome-webfont.woff2字体文件使用。 #### JS js主要依靠JQuery实现。 js文件中大量使用ajax技术,使用ajax请求后端接口(API)获取并展示数据。 gVerify.js用于验证码的生成和验证。 sweetalert.min.js用于弹窗提示。系统在展示登录、新增、删除、修改、部分查询等结果时,使用该弹窗提示返回结果。 ## 写在最后 创作不易,多多支持。