✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取项目下载方式🍅
一、项目背景介绍:
在这个背景下,本研究提出了一个基于SpringBoot和Vue的大学排课系统,旨在结合现代Web开发技术的优势,提供一个既高效又易用的解决方案。SpringBoot可以快速搭建和部署高性能的后端服务,而Vue框架则能够创建动态的、交互性强的前端用户界面。结合这两种技术,本排课系统旨在提供一个全面、灵活、易于操作的排课管理平台,不仅可以提高排课效率,还能够改善用户体验,满足不同用户群体的需求。
二、项目技术简介:
- JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。 - Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
- SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
三、系统功能模块介绍:
四、数据库设计:
1:‘管理员用户表’(admin)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
admin_no | varchar | NULL | 管理员编号 |
username | varchar | NULL | 用户名 |
password | varchar | NULL | 密码 |
realname | varchar | NULL | 真实姓名 |
user_type | tinyint | NULL | 用户类型[1:管理员,2:教师,3:学生] |
jobtitle | varchar | NULL | 职称 |
license | varchar | NULL | 证件照地址 |
telephone | varchar | NULL | 联系电话 |
varchar | NULL | 电子邮件 | |
address | varchar | NULL | 地址 |
age | int | NULL | 年龄 |
avatar | varchar | NULL | 头像 |
description | varchar | NULL | 签名 |
remark | varchar | NULL | 备注 |
status | tinyint | NULL | 账号状态[0:无效,1:有效] |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
2:‘班级表’(class_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
grade_no | varchar | NULL | 年级编号 |
class_no | varchar | NULL | 班级编号 |
class_name | varchar | NULL | 班级名称 |
num | int | NULL | 班级人数 |
teacher_no | int | NULL | 班主任id |
remark | varchar | NULL | 备注 |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
3:‘排课任务表,每个班级需要上哪些课’(class_task)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
semester | varchar | NULL | 学期 |
grade_no | varchar | NULL | 年级编号 |
class_no | varchar | NULL | 班级编号 |
course_no | varchar | NULL | 课程编号 |
teacher_no | varchar | NULL | 教师编号 |
course_room_attr | varchar | NULL | 课程属性[01:普通课程,02:美术课,03:音乐课,04:体育课] |
student_num | int | NULL | 学生人数 |
weeks_sum | int | NULL | 周数 |
weeks_number | int | NULL | 周学时,就是每周几节课(这里按大节计算=周学时/2) |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
4:‘教室表’(classroom)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 教室id |
classroom_no | varchar | NULL | 教室编号 |
classroom_name | varchar | NULL | 教室名称 |
teachbuild_no | varchar | NULL | 所在教学楼编号 |
capacity | int | NULL | 教室人数容量 |
room_attr | varchar | NULL | 教室属性[01:普通教室,02:美术教室,03:音乐教室,04:操场] |
remark | varchar | NULL | 备注 |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
5:‘课程信息表’(course_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
course_no | varchar | NULL | 课程编号 |
course_name | varchar | NULL | 课程名 |
course_attr | varchar | NULL | 课程属性[01:必修,02:选修] |
publisher | varchar | NULL | 书本出版社 |
status | tinyint | NULL | 课程状态[0:未开课,1:已开课] |
remark | varchar | NULL | 备注 |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
6:‘最终生成的排课计划,保证 年级编号+班级编号+课程编号+讲师编号+教室编号+上课时间 唯一(不冲突)’(course_plan)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
grade_no | varchar | NULL | 年级编号 |
class_no | varchar | NULL | 班级编号,对应class_info表 |
course_no | varchar | NULL | 课程编号,对应course_info表 |
teacher_no | varchar | NULL | 讲师编号,对应teacher表 |
classroom_no | varchar | NULL | 教室编号,对应classroom表 |
time_no | varchar | NULL | 上课时间,对应timeslot表数据 |
7:‘年级表’(grade_info) |
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id,年级表 |
grade_no | varchar | NULL | 年级编号 |
grade_name | varchar | NULL | 年级名称 |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
8:‘位置信息,年级上课教学楼安排’(location_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 主键id |
teachbuild_no | varchar | NULL | 教学楼编号,放教学楼表中编号 |
grade_no | varchar | NULL | 年级编号,放年级表中的id |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
9:‘学期表’(semester)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | id |
semester_no | varchar | NULL | 学期编号 |
semester_name | varchar | NULL | 学期名称 |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
10:‘学生表’(student)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 学生id |
student_no | varchar | NULL | 学号,可以用于登录 |
username | varchar | NULL | 昵称,可以用于登录 |
password | varchar | NULL | 密码 |
realname | varchar | NULL | 真实姓名 |
user_type | tinyint | NULL | 用户类型[1:管理员,2:教师,3:学生] |
grade | varchar | NULL | 所在年级 |
class_no | varchar | NULL | 所在班级 |
age | int | NULL | 年龄 |
address | varchar | NULL | 当前住址 |
telephone | varchar | NULL | 联系电话 |
varchar | NULL | 邮箱 | |
avatar | varchar | NULL | 头像 |
description | varchar | NULL | 签名 |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
status | tinyint | NULL | 账号状态[0:无效,1:有效] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
11:‘教学楼信息表’(teach_build_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 建筑属性[01:普通课程,02:美术课,03:音乐课,04:体育课] |
teach_build_no | varchar | NULL | 教学楼编号 |
teach_build_name | varchar | NULL | 教学楼名称 |
teach_build_location | varchar | NULL | 教学楼位置 |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
12:‘教师表’(teacher)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 主键id |
teacher_no | varchar | NULL | 教师编号 |
username | varchar | NULL | 昵称(用户名) |
password | varchar | NULL | 密码 |
realname | varchar | NULL | 真实姓名 |
user_type | tinyint | NULL | 用户类型[1:管理员,2:教师,3:学生] |
jobtitle | varchar | NULL | 职称 |
license | varchar | NULL | 证件照(地址) |
teach | varchar | NULL | 教授科目 |
age | int | NULL | 年龄 |
telephone | varchar | NULL | 联系电话 |
varchar | NULL | 电子邮件 | |
address | varchar | NULL | 地址 |
avatar | varchar | NULL | 头像 |
description | varchar | NULL | 描述(签名) |
status | tinyint | NULL | 账号状态[0:无效,1:有效] |
deleted | tinyint | NULL | 是否删除[0:未删除,1:已删除] |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
13:‘课程时间信息’(timeslot)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int | NULL | 主键id |
time_no | varchar | NULL | 时间编号 |
timeslot | varchar | NULL | 课程时间名称 |
time | varchar | NULL | 课程时间 |
create_time | datetime | NULL | 创建时间 |
update_time | datetime | NULL | 更新时间 |
五、功能模块:
-
个人中心:个人中心允许用户(管理员、教师、学生)在系统中管理自己的个人资料,包括更新联系信息、修改密码等。这个模块是系统与用户交互的基础,保证了用户信息的时效性和安全性。
-
管理员信息管理:管理员信息管理专为系统管理员设计,提供对系统中管理员账户的完整管理功能,包括新增、删除、修改和查询管理员信息。这个模块是系统安全和管理层级结构的基石。
-
教师信息管理:教师信息管理允许管理员管理教师的相关信息,如个人资料、授课科目等。通过这个模块,可以确保教师资源的合理分配和及时更新。
-
学生信息管理:学生信息管理提供学生信息的管理功能,包括学生的录入、信息更新、查询和删除。这个模块帮助系统精确地追踪学生的学习情况。
-
课程信息管理:课程信息管理允许添加、更新、删除和查询课程信息,包括课程名称、课程代码、授课教师等。
-
教室信息管理:教室信息管理管理教室资源,包括教室的添加、修改、删除和查询。这个模块确保了教室资源的合理利用。
-
排课任务发布管理:排课任务发布管理发布新的排课任务,定义课程、教师、预期的教室类型和时间等。这个模块是实现高效排课的核心,允许系统管理员根据实际需求和资源情况安排课程。
-
排课结果查看:排课结果查看可以查看已完成的排课结果,包括课程安排、教室分配和时间表。这个模块为管理员提供了一个清晰的课程安排视图,有助于评估和优化排课方案。
六、代码示例:
// 查询课表信息 班级
@PostMapping("/schedule/info")
public ReturnMsg getClassTable(@RequestBody CoursePlanDTO coursePlanDTO) {
if (StringUtils.isEmpty(coursePlanDTO.getClassNo()) && StringUtils.isEmpty(coursePlanDTO.getTeacherNo())) {
return ReturnMsg.ok(Collections.emptyList());
}
List<CoursePlanDTO> list = baseService.findList(coursePlanDTO);
// 需要按照课程时间分组
Map<Integer, List<CoursePlanDTO>> map = list.stream().map(obj -> {
obj.setWeek(Integer.valueOf(obj.getTimeNo().split("-")[0]));
obj.setIndex(Integer.valueOf(obj.getTimeNo().split("-0")[1]));
return obj;
}
).collect(Collectors.groupingBy(CoursePlanDTO::getWeek, Collectors.toList()));
List<ClassTableVO> result = new ArrayList<>(Collections.nCopies(7, new ClassTableVO()));
for (int i = 1; i < 8; i++) {
ClassTableVO classTableVO = new ClassTableVO();
classTableVO.setWeek(i-1);
List<CoursePlanDTO> subResult = new ArrayList<>(Collections.nCopies(7, new CoursePlanDTO()));
if (!CollectionUtils.isEmpty(map.get(i))) {
Map<Integer,CoursePlanDTO> subMap=map.get(i).stream().collect(Collectors.toMap(CoursePlanDTO::getIndex, Function.identity()));
for (int j=1;j<8;j++) {
CoursePlanDTO coursePlan=new CoursePlanDTO();
if (subMap.get(j)!=null) {
coursePlan=subMap.get(j);
}
subResult.set(j-1,coursePlan);
}
}
classTableVO.setCourses(subResult);
result.set(i-1, classTableVO);
}
return ReturnMsg.ok(result);
}
七、项目总结:
基于SpringBoot+Vue的前后端分离的大学自动排课系统的整体功能模块的实现,主要是对自己在大学这几年时间所学内容的一个测试,对于系统,主要是通过现在智能化的基于SpringBoot+Vue的前后端分离的大学自动排课系统进行开始系统的实现,经过一个学期的毕业设计的实现完成已接近尾声,到目前为止,当我回想起整个学期的系统开发日,收获颇丰。毕业设计的主要任务是建立一个智能化的基于SpringBoot+Vue的前后端分离的大学自动排课系统 ,主要使用JAVA和Mysql数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。
基于SpringBoot+Vue的前后端分离的大学自动排课系统平台的开发对我大学学习的改进有很大帮助。它使我能够学习计算机知识的相关技术方面问题及与人交往的沟通交流方面,让我意识到无论我们做什么,我们都需要坚持不懈,努力工作,只有这样尝试了并且坚持去做了,我们才可以成功,才可以获得成功的喜悦,如果没有尝试,知识想,那连成功的机会都没有,实际操作进行做了,才会越来越近的靠近成功,随着道路一路向前,未来的路是美好的。对于驾校管理平台的实现,是自己第一次完成的设计一个管理系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力,从系统的开发到设计完成,我完成了一个更全面、更完善、更安全的平台管理系统,这也让我取得了很大的成就感,也使我对未来的生活更有信心。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻
链接:https://pan.baidu.com/s/1dkpBBFXiZ_6l9o-iqyB35w?pwd=32t9
链接失效私信或者联系站长