摘 要
基于SpringBoot技术的排课系统旨在为学生、教师及管理员提供一个高效便捷的教学管理平台。对于学生用户,系统提供了注册登录、首页资讯、通知公告查看、教室信息、课程信息及个人账户管理等功能模块。学生可以通过该系统查询上课记录、学习任务,并进行评分评价以及反馈记录查看。
教师用户在具备基本功能的基础上,还拥有更多专业功能,如排课信息提交、授课报备、课程信息管理、布置学习任务、打分评价、审核反馈并回复以及课程统计等。这些功能帮助教师更好地管理和规划教学活动。
管理员后台管理系统则是整个系统的中枢,涵盖了从用户管理、教室和课程信息管理到系统配置维护的全方位服务。特别地,管理员能够实现自动排课、重置排课信息、管理资源及权限分配等功能,确保系统的高效运行和安全性。
本系统通过采用SpringBoot框架开发,不仅提高了开发效率,而且保证了系统的稳定性和扩展性,有效地支持了课程管理和调度需求,同时提升了用户体验,促进了师生间的良好互动与沟通。
关键词:排课系统;SpringBoot
Abstract
The intelligent class scheduling system based on SpringBoot technology aims to provide an efficient and convenient teaching management platform for students, teachers and administrators. For student users, the system provides functional modules such as registration and login, homepage information, notice and announcement view, classroom information, course information and personal account management. Students can check the class records and learning tasks, and feedback records.
On the basis of basic functions, teachers and users also have more professional functions, such as course scheduling information submission, teaching report, course information management, arrangement of learning tasks, scoring and evaluation, review, feedback and reply, and course statistics, etc. These functions help teachers to better manage and plan their teaching activities.
The administrator background management system is the center of the whole system, covering a full range of services from user management, classroom and course information management to system configuration and maintenance. In particular, administrators can realize the functions of automatic class scheduling, reset scheduling information, managing resources and authority allocation to ensure the efficient operation and security of the system.
By using the SpringBoot framework, the system not only improves the development efficiency, but also ensures the stability and expansibility of the system, effectively supports the course management and scheduling requirements, improves the user experience, and promotes the good interaction and communication between teachers and students.
Key words: The intelligent class scheduling system; SpringBoot
目 录
第1章绪 论
1.1 研究背景与意义
随着信息技术的飞速发展,教育领域的数字化转型已成为不可逆转的趋势。传统排课方式主要依赖手工操作和纸质记录,不仅效率低下,而且容易出错,难以满足现代教育机构对于高效、灵活管理的需求。特别是在大规模学校或教育机构中,课程安排涉及众多因素如教师时间、教室资源、学生选课意愿等,复杂度极高。因此,开发一套基于SpringBoot技术的排课系统显得尤为必要[1]。
在当前的教育环境中,越来越多的学校和教育机构开始采用信息化手段来优化教学管理流程。然而,现有的许多排课软件存在功能单一、用户体验差、灵活性不足等问题,无法完全满足实际需求。例如,一些系统缺乏自动排课功能,或者在处理复杂的排课逻辑时表现不佳。此外,随着移动互联网的发展,用户对系统的跨平台支持提出了更高的要求,希望能够随时随地访问和管理信息[2]。
本系统能够显著提高排课工作的效率和准确性。传统的排课方法往往需要耗费大量时间和人力,而排课系统则可以在短时间内生成最优的排课方案,减少人为错误的发生。学生可以通过系统查询课程信息、上课记录、学习任务,并直接向教师反馈意见;教师则可以布置学习任务、进行评分评价以及回复学生的反馈。这种双向交流机制有助于增强师生间的理解与合作,营造更加和谐的教学氛围。排课系统通过灵活的课程管理和搜索筛选功能,允许学生根据自己的兴趣和发展方向选择合适的课程。同时,教师也能够针对不同学生的特点布置个性化的学习任务,促进学生的全面发展[3]。
1.2国内外研究现状
排课管理系统的研究和应用近年来在国内外迅速发展,尤其是在信息化的推动下,越来越多的高校开始重视排课管理系统的建设。以下是国内和国外研究现状的整理与分析。
1.2.1 国外研究现状
国外对于排课系统的研究起步较早,积累了丰富的理论和技术经验。特别是在算法优化、系统集成以及用户体验等方面,取得了显著成果。
国外的研究还注重多功能集成和跨平台支持。外国学者开发了一套集成了课程管理、学生评价、教师反馈等多种功能于一体的综合教学管理系统,极大地丰富了系统的应用场景为了提高系统的可用性,许多研究都强调了跨平台支持的重要性,国外设计出一款支持Web端、移动端和平板设备的排课系统,确保用户可以在任何时间、任何地点进行操作。数据安全和隐私保护成为排课系统不可忽视的问题,外国学者探讨了如何在保证数据安全的前提下,实现数据共享和协同工作,为多校区或多机构间的联合排课提供了可能[4]。
1.2.2 国内研究现状
在国内,随着教育信息化的推进,排课系统的研究与应用逐渐成为热点。许多高校和科研机构致力于开发适合中国教育环境的排课系统,以提升教学管理效率和服务质量[5]。在系统架构方面,国内的研究主要集中在如何构建高效、灵活的排课平台,学者提出了一种基于微服务架构的排课系统设计方案,利用SpringBoot框架实现了模块化开发,使得系统具有良好的可扩展性和维护性[6]。用户体验也是国内研究的重要方向之一,通过对用户行为数据的分析,发现现有排课系统在界面设计和交互体验上存在不足并提出了基于用户反馈的改进策略[7]。一些研究还关注系统的功能扩展,如增加移动终端支持、在线学习资源等功能,以满足不同用户的需求。目前还开发了一款支持移动端操作的排课系统,用户可以通过手机随时随地访问和管理课程信息,大大提升了使用的便捷性[8]。
总体来看,国内外在排课系统的研究上各有侧重。国内的研究更多地关注于算法优化和系统架构设计,旨在解决实际应用中的效率和灵活性问题;而国外则更加注重用户体验、多功能集成以及数据安全等方面,力求提供全面、便捷的服务。
1.3 主要研究内容
在开发排课系统时,后端采用了Java作为编程语言,并利用了SpringBoot框架,这使得复杂的业务逻辑和数据操作得以高效完成。与此同时,系统的数据存储和管理通过MySQL数据库实现。在开发工具的选取上,使用了Eclipse,它的强大功能和易用性使得编程工作更为高效;而Navicat作为数据库管理工具,使得数据库操作更为方便和快捷。这样的技术选择,确保了管理系统的开发流程既高效又稳定。本系统面对对象主要分为学生用户、教师用户和管理员三大角色,实现了包括注册、登录、首页、系统管理、课程分类管理、排课信息管理等功能,能够很好地满足各方需求,简化高校排课管理流程,提高管理效率。
第2章开发环境及技术架构
2.1 开发环境与工具
排课系统使用Java语言作为主要语言,基于Web技术,利用SpringBoot框架开发而成,存储数据使用的是使用较为广泛的MySQL数据库。系统所使用的系统开发环境如下表2-1所示。
表2-1系统开发环境
| 操作系统版本: | Win10 |
| 数据库环境: | MySQL5.7 |
| JDK版本: | JDK1.8.0_191 |
| 主要技术: | Springboot2、Apache Tomcat8.5、Webpack 4.0、Element UI、Navicat、bootstrap…… |
| 浏览器: | Chrome |
MySQL是一款广受欢迎的关系数据库管理系统,它能够高效地存储和处理大量的数据。MySQL在Web应用程序中有着卓越的表现,是众多开发者的首选。MySQL遵循SQL语言的标准,这是一种通用的数据库操作语言,简单易学,功能强大。结合Apache服务器,MySQL可以构建出一个优秀的开发环境。
SpringBoot是一个新颖的框架,由Pivotal团队推出,旨在简化Spring应用的创建和开发过程。SpringBoot通过提供一些默认的配置和约定,避免了开发者重复编写模板化的代码。SpringBoot力求成为快速应用开发领域的领导者,让开发者能够更专注于业务逻辑。
Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程和高级映射。Mybatis可以消除大部分的JDBC代码和参数的手工设置,让开发者更方便地操作数据库。Mybatis可以和Spring框架完美地集成,提高开发效率和性能。
Tomcat是一种免费的服务器,它能够有效地处理大量的网络访问,特别是在访问量较少的情况下。当将Tomcat安装在电脑上时,它能够自动分析前端HTML页面的请求,从而提高网络的性能。事实上,Tomcat是对Apache的一种延伸,但它与Apache之间的关系更加紧密,因为它们在不同的进程中运行,而且它们之间也有着自己的独立性。
2.2 技术架构
本系统是基于SpringBoot、MySQL的后台信息管理系统。
2.2.1 B/S模式
B/S模式,即浏览器/服务器模式,是一种常见的网络应用架构模式。在B/S模式中,用户通过浏览器作为客户端与服务器进行交互。在浏览器/服务器(browser / Server Architecture)系统中,用户只需通过浏览器,就能够轻松地向分布在网络各处的众多服务器发送海量的请求。B/S系统大大地简化了客户端的工作,让用户体验更加便捷。
2.2.2 SpringBoot框架
Spring是一个知名的开源框架,它于2003年诞生于Rod Johnson的《Expert One-on-One Java EE Development and Design》一书中。Spring的初衷是为了解决高校级应用开发的复杂性,它让简单的JavaBean也能够实现原本只有EJB才能做到的功能。Spring不仅适用于服务器端的开发,它还能够为任何Java应用程序带来简洁、可测试和低耦合的优势。尽管Spring的组件代码很轻量级,但是它的配置却很繁琐。最初,Spring是使用XML配置的,但是随着项目的增长,XML配置也变得越来越多。
为了改进和优化Spring的缺点,SpringBoot框架应运而生,它基于约定优于配置的理念,让开发者无需编写大量的配置文件,只需遵循一些简单的规则即可。SpringBoot使开发者能够专注于业务逻辑的编码,而不用在配置和业务之间切换思维,这在很大程度上提高了开发效率,缩短了项目开发周期。
2.2.3MySQL数据库
MySQL数据库用于存储和管理排课系统的核心数据。作为一款流行的开源关系型数据库管理系统,MySQL以其高性能、可靠性和易用性被广泛应用。系统利用MySQL存储用户信息、商品信息、销售订单等数据,确保数据的持久化和安全性。MySQL支持复杂的SQL查询,能够快速检索大量数据,并通过事务处理功能保障数据操作的完整性和一致性。此外,MySQL还提供了强大的用户权限管理和数据加密功能,增强了数据的安全性和隐私保护。
2.2.4Java语言
在本研究中,Java语言是构建排课系统的核心技术之一。主要使用Java语言开发后端服务,采用SpringBoot框架来实现业务逻辑和数据交互。Java语言的跨平台特性和丰富的类库支持,使得系统具有良好的可移植性和可扩展性,能够适应不同的操作环境和业务需求。同时,Java的多线程和并发处理能力,使系统能够高效处理大量用户请求,保证系统的稳定性和响应速度。
第三章需求分析
3.1 可行性分析
可行性分析在系统开发的初期阶段至关重要,主要用于评估项目实施的可能性和风险,确保资源的有效利用,减少项目失败的概率。通过全面的可行性分析,可以为项目决策提供科学依据,确保项目的健康发展。
通过综合考虑经济、操作、技术等因素,可以对基于SpringBoot的排课系统的可行性进行全面评估。这将有助于确定项目的成功概率,并为项目规划提供坚实的基础。
3.1.1 经济可行性分析
经济可行性在此仅代表平台的开发成本,运维成本不在此考虑。
在项目上使用的工具大部分都是当下流行开源免费的,且所使用的开发工具皆在学校学习过,可以由本人独自开发设计,所以在开发前期,开发时用于项目的经费将会大大降低,不会让开发该软件在项目启动期受到经费的影响。此外,借助数字化系统所带来的自动化管理,高校在长期运营中将会节省大量人力资源和时间成本。
所以经济可行性没有问题。
3.1.2 操作可行性分析
操作可行性主要考虑系统的易用性和用户接受度。系统将参考几个该模式下系统的开发案例,对他们的操作界面分析,将众多案例结合在一起,设计出简洁友好的用户界面,方便用户和管理者能够快速上手。同时,可以提供必要的技术支持,确保所有用户能够有效使用系统。系统还支持多种终端设备的访问,包括PC和移动设备,增强使用的灵活性。
因此操作可行性也没有问题。
3.1.3 技术可行性分析
技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。
现有的JAVA语言能够迎合所有系统的搭建。开发这个排课系统的时候我采用了JAVA+SpringBoot+MySQL 用以运行整体程序。SpringBoot简化了Java EE应用的开发,使得构建高性能的微服务架构变得更加高效。系统可以利用Spring Security进行身份验证和权限管理,确保数据的安全性。同时,系统设计可采用RESTful API的方式,实现前后端的分离,提升系统的灵活性和扩展性。
综上所述技术可行性也没有问题。
经过综合分析,基于SpringBoot的排课系统在技术、经济和操作层面均具有较强的可行性。通过本系统的实施,不仅可以提高高校排课管理的效率与准确性,还有助于增强高校的竞争力与市场适应能力。因此,本项目值得深入开展。
3.2 功能需求分析
在设计基于SpringBoot的排课系统时,功能需求分析是确保系统满足用户需求的关键步骤。以下是对本系统各角色及其功能需求的详细分析:
- 学生用户角色:
① 注册登录:提供注册和登录系统的功能,学生用户可以通过注册拥有系统账户,注册信息需经过管理员审核通过才可登录系统,使用各项功能,并可对自己的个人信息和密码信息进行修改。
② 首页:向学生用户展示轮播图和校园资讯表中获取最新的校园资讯,包括标题、摘要、发布时间等信息展示在首页。
③ 通知公告:展示系统发布的重要通知,介绍系统的开发背景、团队信息等内容,提供学校的联系电话、邮箱等信息,还对系统的功能、使用方法等进行详细介绍。
④ 校园资讯:将校园最新资讯展示给学生,允许学生用户在校园资讯的标题、内容等字段中进行模糊查询。
⑤ 教室信息:学生输入教室名称或地点,系统在教室信息表中查找匹配的教室信息,并展示教室的状态(如空闲、占用等)。
⑥ 课程信息:学生输入课程名称、教师姓名等关键词,系统在课程信息表中进行查询,将匹配的课程信息展示给学生。
⑦ 我的账户:学生可以修改自己的邮箱等个人信息,学生输入原密码、新密码和确认密码,系统验证原密码是否正确,若正确则将新密码加密后更新到数据库中。
⑧ 个人中心:展示学生的基本信息,如姓名、学号、专业等,学生可以查询自己的上课记录,实现查看教师布置的学习任务和教师对自己的评分评价,查看教师对自己反馈的回复,收藏感兴趣的课程、资讯等,管理自己发表的评论,如删除评论等。
- 教师用户角色:
① 注册登录:向教师提供注册和登录系统的功能,教师可以通过注册拥有系统账户,注册信息需经过管理员审核通过才可登录系统,使用各项功能,并可对自己的个人信息和密码信息进行修改。
② 首页:向教师用户展示轮播图和校园资讯表中获取最新的校园资讯,包括标题、摘要、发布时间等信息展示在首页。
③ 通知公告:展示系统发布的重要通知,介绍系统的开发背景、团队信息等内容,提供学校的联系电话、邮箱等信息,还对系统的功能、使用方法等进行详细介绍。
④ 校园资讯:将校园最新资讯展示给教师,允许教师用户在校园资讯的标题、内容等字段中进行模糊查询。
⑤ 教室信息:学生输入教室名称或地点,系统在教室信息表中查找匹配的教室信息,并展示教室的状态(如空闲、占用等)。
⑥ 课程信息:教师输入课程名称、教师姓名等关键词将匹配的课程信息展示给教师。
⑦ 排课信息:教师可以查看自己的排课信息,了解课程的上课时间和地点。
⑧ 授课报备:教师提交排课意向,包括课程名称、上课时间、上课地点等信息。查看管理员对自己排课意向的审核结果,根据排课结果设置班级的课程表。
⑨ 我的账户:教师可以修改自己的邮箱等个人信息,学生输入原密码、新密码和确认密码,系统验证原密码是否正确,若正确则将新密码加密后更新到数据库中。
⑩ 个人中心:展示教师的基本信息,对自己所授课程进行管理,查看自己的上课记录,布置学习任务给学生,并对学生的学习情况进行评分评价和审核学生的反馈信息,收藏重要的资讯、课程等。
(3)管理员角色:
① 登录:管理员可直接使用账号密码登录系统后台,进行管理,可对自己的个人信息和密码信息进行修改。
② 后台首页:展示管理员的基本信息,如姓名、管理员编号等,可以修改自己的登录密码。
③ 系统用户:管理员管理用户账户,可以搜索、查询学生和教师的账户信息,对异常账户进行重置、禁用等操作。
④ 教室信息管理:管理员可以添加新的教室信息,删除不再使用的教室信息;修改教室的基本信息;查询教室的详细信息。
⑤ 课程信息管理:展示所有课程的信息列表,查询课程信息,修改课程的基本信息,删除不需要的课程。
⑥ 学科类别管理:管理员可以对学科类别进行添加、删除、重置、查询等操作,维护学科类别的信息。
⑦ 上课记录管理:管理员可以删除错误的上课记录,修改上课记录的信息,查询特定的上课记录。对上课记录进行审核,确保记录的准确性和真实性。
⑧ 学习任务管理:管理员可以删除无效的学习任务,修改学习任务的内容和截止时间,查询学习任务的详细信息,审核教师布置的学习任务是否合理。
⑨ 评分评价管理:管理员可以删除不良的评分评价信息,修改评分评价的内容,查询特定的评分评价,审核评分评价的公正性和客观性。
⑩ 反馈记录管理:管理员可以删除无效的反馈记录,修改反馈记录的内容,查询反馈记录的详细信息,审核反馈记录的真实性和有效性。
⑪ 课程统计管理:管理员可以添加新的课程统计信息,删除不需要的统计信息,修改统计信息的内容,查询特定的课程统计信息。
⑫ 排课信息管理:管理员可以使用系统的自动排课算法,删除不需要的排课记录,添加排课信息,满足特殊情况下的排课需求。
⑬ 授课报备管理:管理员可以查看教师的授课报备信息,对报备信息进行审核,决定是否通过教师的排课意向。
⑭ 系统管理:管理员可以上传、删除、修改轮播图的图片和链接信息,确保首页轮播图的更新和准确性。
⑮ 通知公告管理:管理员可以发布、编辑、删除通知公告,及时向学生和教师传达重要信息。
⑯ 资源管理:管理员可以发布、编辑、删除校园资讯,对校园资讯的分类进行管理,方便学生和教师查找资讯。
⑰ 权限管理:管理员可以根据用户名、角色等条件搜索用户账户,查询用户账户的详细信息,重置教师和学生的账户密码,解决用户忘记密码的问题。
排课系统学生用户角色用例图如下所示。

图3-1 学生用户角色用例图
排课系统教师用户角色用例图如下所示。

图3-2 教师用户角色用例图
排课系统管理员角色用例图如下所示。

图3-3 管理员角色用例图
3.3 性能需求分析
用户操作响应时间:系统应保证用户在操作平台时的响应速度,例如浏览、搜索、添加等操作应该迅速响应。
系统稳定性:平台应具备一定的容错能力和稳定性,防止因为意外情况导致系统崩溃。
数据安全:用户信息等敏感数据需要加密存储,确保数据安全性。
系统并发能力:平台应考虑到可能大量用户同时访问的情况,保证系统的并发处理能力。
日志记录:系统需要记录用户操作日志、异常日志等,便于排查问题和分析用户行为。
基于以上性能需求将确保排课系统能够稳定、高效地运行,能够很好地满足用户和管理员的需求。
3.4 系统流程分析
3.4.1 用户注册流程图
注册的过程,第一部分是账号的注册,第二部分是信息完善。在业务开展过程中,管理员可对用户信息进行修改等管理操作,注册流程如图3-4用户注册流程图所示。

图3-4 用户注册流程图
3.4.2 用户登录流程图
登录时,用户填写用户名、密码、选择身份进行登录,在登录过程中后端会对发送过来的信息进行验证和判断,具体的登录流程如图3-5用户登录流程图所示。

图3-5 用户登录流程图
第4章系统设计
4.1 系统功能设计
基于SpringBoot的排课系统程序采用模块化设计方案,可以划分为三大模块,分别为学生用户模块、教师用户模块和管理员模块,下面又细分不同的分支,各自功能有所交叉相似但又职能各有不同。系统功能模块图如下图所示。
图4-1系统功能模块图
4.2 数据库设计
数据库的设计是系统的设计中比较重要的一部分内容,数据库设计是一切系统设计的基础,首先需要进行概念模型E-R图的设计,然后进行关系模型物理模型的建立。
4.2.1 概念模型
本文在系统分析阶段就抽取了一些实体,根据实体之间的关系,经过分析进行系统E-R图的设计。排课系统总体E-R图如下图所示。
图4-2 系统总体E-R图
4.2.2 物理模型
本系统采用MySQL数据库管理系统对数据进行管理。下面是对各个表中的表中各个字段数据类型、大小等做简短描述。排课系统所需要的部分数据结构表如下表所示。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-classroom_information(教室信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | classroom_information_id | int | 是 | 是 | 教室信息ID | |
| 2 | classroom_name | varchar | 64 | 否 | 否 | 教室名称 |
| 3 | classroom_location | varchar | 64 | 否 | 否 | 教室地点 |
| 4 | classroom_status | varchar | 64 | 否 | 否 | 教室状态 |
| 5 | classroom_pictures | varchar | 255 | 否 | 否 | 教室图片 |
| 6 | classroom_details | longtext | 4294967295 | 否 | 否 | 教室详情 |
| 7 | praise_len | int | 是 | 否 | 点赞数 | |
| 8 | collect_len | int | 是 | 否 | 收藏数 | |
| 9 | comment_len | int | 是 | 否 | 评论数 | |
| 10 | create_time | datetime | 是 | 否 | 创建时间 | |
| 11 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-class_record(上课记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | class_record_id | int | 是 | 是 | 上课记录ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | subject_category | varchar | 64 | 否 | 否 | 学科类别 |
| 6 | class_time | varchar | 64 | 否 | 否 | 上课时间 |
| 7 | class_location | varchar | 64 | 否 | 否 | 上课地点 |
| 8 | student_users | int | 否 | 否 | 学生用户 | |
| 9 | sname | varchar | 64 | 否 | 否 | 学生姓名 |
| 10 | student_mobile_phone | varchar | 64 | 否 | 否 | 学生手机 |
| 11 | number_of_classes | varchar | 64 | 否 | 否 | 上课人数 |
| 12 | status_information | varchar | 64 | 否 | 否 | 状态信息 |
| 13 | learning_time | datetime | 否 | 否 | 学习时间 | |
| 14 | learning_notes | text | 65535 | 否 | 否 | 学习备注 |
| 15 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 16 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 17 | feedback_record_limit_times | int | 是 | 否 | 课程反馈限制次数 | |
| 18 | scoring_evaluation_limit_times | int | 是 | 否 | 课程评分限制次数 | |
| 19 | learning_task_limit_times | int | 是 | 否 | 学习任务限制次数 | |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 22 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 23 | source_id | int | 否 | 否 | 来源ID | |
| 24 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-7-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-10-course_information(课程信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | course_information_id | int | 是 | 是 | 课程信息ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | subject_category | varchar | 64 | 否 | 否 | 学科类别 |
| 6 | course_duration | varchar | 64 | 否 | 否 | 课程时长 |
| 7 | class_time | datetime | 否 | 否 | 上课时间 | |
| 8 | class_location | varchar | 64 | 否 | 否 | 上课地点 |
| 9 | course_credits | double | 否 | 否 | 课程学分 | |
| 10 | course_cover | varchar | 255 | 否 | 否 | 课程封面 |
| 11 | course_introduction | longtext | 4294967295 | 否 | 否 | 课程介绍 |
| 12 | hits | int | 是 | 否 | 点击数 | |
| 13 | praise_len | int | 是 | 否 | 点赞数 | |
| 14 | collect_len | int | 是 | 否 | 收藏数 | |
| 15 | comment_len | int | 是 | 否 | 评论数 | |
| 16 | recommend | int | 是 | 否 | 智能推荐 | |
| 17 | course_statistics_limit_times | int | 是 | 否 | 课程统计限制次数 | |
| 18 | class_record_limit_times | int | 是 | 否 | 上课学习限制次数 | |
| 19 | create_time | datetime | 是 | 否 | 创建时间 | |
| 20 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-course_scheduling_information(排课信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | course_scheduling_information_id | int | 是 | 是 | 排课信息ID | |
| 2 | course_scheduling_name | varchar | 64 | 否 | 否 | 排课名称 |
| 3 | course_arrangement_classroom | varchar | 64 | 否 | 否 | 排课教室 |
| 4 | course_scheduling_staff | varchar | 64 | 否 | 否 | 排课人员 |
| 5 | scheduling_number | int | 是 | 否 | 单日最多排次数 | |
| 6 | scheduling_period | enum | 1 | 是 | 否 | 周期 |
| 7 | scheduling_date_options | text | 65535 | 否 | 否 | 时间设置 |
| 8 | timetable | text | 65535 | 否 | 否 | 排期表 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-course_statistics(课程统计)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | course_statistics_id | int | 是 | 是 | 课程统计ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | number_of_skipping_classes | double | 否 | 否 | 逃课人数 | |
| 5 | number_of_classes | double | 否 | 否 | 上课人数 | |
| 6 | statistical_remarks | text | 65535 | 否 | 否 | 统计备注 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_id | int | 否 | 否 | 来源ID | |
| 11 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-13-feedback_record(反馈记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | feedback_record_id | int | 是 | 是 | 反馈记录ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | subject_category | varchar | 64 | 否 | 否 | 学科类别 |
| 6 | class_time | varchar | 64 | 否 | 否 | 上课时间 |
| 7 | class_location | varchar | 64 | 否 | 否 | 上课地点 |
| 8 | student_users | int | 否 | 否 | 学生用户 | |
| 9 | sname | varchar | 64 | 否 | 否 | 学生姓名 |
| 10 | student_mobile_phone | varchar | 64 | 否 | 否 | 学生手机 |
| 11 | learning_time | varchar | 64 | 否 | 否 | 学习时间 |
| 12 | feedback_time | date | 否 | 否 | 反馈时间 | |
| 13 | feedback_content | text | 65535 | 否 | 否 | 反馈内容 |
| 14 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 15 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 16 | create_time | datetime | 是 | 否 | 创建时间 | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 18 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 19 | source_id | int | 否 | 否 | 来源ID | |
| 20 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-14-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-15-learning_task(学习任务)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | learning_task_id | int | 是 | 是 | 学习任务ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 5 | student_users | int | 否 | 否 | 学生用户 | |
| 6 | sname | varchar | 64 | 否 | 否 | 学生姓名 |
| 7 | task_title | varchar | 64 | 否 | 否 | 任务标题 |
| 8 | task_content | text | 65535 | 否 | 否 | 任务内容 |
| 9 | completion_time | date | 否 | 否 | 完成时间 | |
| 10 | completion_status | varchar | 64 | 否 | 否 | 完成情况 |
| 11 | complete_notes | text | 65535 | 否 | 否 | 完成备注 |
| 12 | create_time | datetime | 是 | 否 | 创建时间 | |
| 13 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 14 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 15 | source_id | int | 否 | 否 | 来源ID | |
| 16 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-16-lecture_reporting(授课报备)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | lecture_reporting_id | int | 是 | 是 | 授课报备ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 4 | available_time | varchar | 64 | 否 | 否 | 可用时间 |
| 5 | intention_to_teach | varchar | 64 | 否 | 否 | 授课意向 |
| 6 | course_scheduling_application | text | 65535 | 否 | 否 | 排课申请 |
| 7 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 8 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-19-schedule(日程管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | 是 | 是 | 日程ID | |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | datetime | 否 | 否 | 创建时间 | |
| 6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-20-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 4-21-scoring_evaluation(评分评价)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | scoring_evaluation_id | int | 是 | 是 | 评分评价ID | |
| 2 | teacher_user | int | 否 | 否 | 教师用户 | |
| 3 | course_name | varchar | 64 | 否 | 否 | 课程名称 |
| 4 | student_users | int | 否 | 否 | 学生用户 | |
| 5 | sname | varchar | 64 | 否 | 否 | 学生姓名 |
| 6 | learning_time | varchar | 64 | 否 | 否 | 学习时间 |
| 7 | course_grading | double | 否 | 否 | 课程评分 | |
| 8 | course_comments | text | 65535 | 否 | 否 | 课程评语 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 11 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 12 | source_id | int | 否 | 否 | 来源ID | |
| 13 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-22-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-23-student_users(学生用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | student_users_id | int | 是 | 是 | 学生用户ID | |
| 2 | sname | varchar | 64 | 否 | 否 | 学生姓名 |
| 3 | student_gender | varchar | 64 | 否 | 否 | 学生性别 |
| 4 | student_mobile_phone | varchar | 16 | 否 | 否 | 学生手机 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-24-subject_category(学科类别)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | subject_category_id | int | 是 | 是 | 学科类别ID | |
| 2 | subject_category | varchar | 64 | 否 | 否 | 学科类别 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-25-teacher_user(教师用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | teacher_user_id | int | 是 | 是 | 教师用户ID | |
| 2 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 3 | teacher_gender | varchar | 64 | 否 | 否 | 教师性别 |
| 4 | teachers_phone_number | varchar | 16 | 否 | 否 | 教师电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-26-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-27-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-28-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
第5章系统实现
本文研究的排课系统基于SpringBoot框架开发,旨在为用户提供一个便捷、高效、安全的学生内部培训工具。系统支持用户注册和登录,学生用户和培训学生用户搜索和浏览系统公告等信息,提交培训学校等信息,申请信息经由管理员审批审核。整体设计追求简洁高效,以提升用户体验和平台运行效率为目标。
本设计的系统每个页面都具备必要的交互设计,较好地呈现了排课系统的基础功能。组件的构建上思路清晰,易于理解,扁平风格突出简洁,配色清新。学生注册信息需经过管理员审核通过即可登录系统实现各项操作。
5.1 学生用户模块
5.1.1用户登录界面
学生用户输入用户名和密码后,系统首先对这些输入进行基本的格式验证,确保用户名和密码符合系统设定的格式要求。系统接收到学生用户输入后,会根据用户名查找系统中存储的用户信息数据库或者其他持久化存储方式。系统需要验证密码的正确性,验证成功即可成功登录。
图5-1 学生登录UI界面
学生登录关键代码如下:
| /** * 登录 * @param data * @param httpServletRequest * @return */ @PostMapping("login") public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) { log.info("[执行登录接口]"); String username = data.get("username"); String email = data.get("email"); String phone = data.get("phone"); String password = data.get("password"); List resultList = null; Map<String, String> map = new HashMap<>(); if(username != null && "".equals(username) == false){ map.put("username", username); resultList = service.selectBaseList(service.select(map, new HashMap<>())); } else if(email != null && "".equals(email) == false){ map.put("email", email); resultList = service.selectBaseList(service.select(map, new HashMap<>())); } else if(phone != null && "".equals(phone) == false){ map.put("phone", phone); resultList = service.selectBaseList(service.select(map, new HashMap<>())); }else{ return error(30000, "账号或密码不能为空"); } if (resultList == null || password == null) { return error(30000, "账号或密码不能为空"); } |
5.1.2用户注册界面
用户注册时,系统要求学生用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由学生用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新学生用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。
图5-2 系统注册UI界面
系统注册关键代码如下:
| /** * 注册 * @param user * @return */ @PostMapping("register") public Map<String, Object> signUp(@RequestBody User user) { // 查询用户 Map<String, String> query = new HashMap<>(); Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user)); query.put("username",user.getUsername()); List list = service.selectBaseList(service.select(query, new HashMap<>())); if (list.size()>0){ return error(30000, "用户已存在"); } map.put("password",service.encryption(String.valueOf(map.get("password")))); service.insert(map); return success(1); } |
5.1.3首页界面
首页模块为学生用户提供系统功能导航和重要信息、用户个人信息展示以及数据分析统计图表,便于用户能够快速上手使用。首页界面布局如下图:
图5-3 首页UI界面
5.1.4通知公告界面
通知公告界面展示系统发布的重要通知,介绍系统的开发背景、团队信息等内容,提供学校的联系电话、邮箱等信息,方便学生咨询问题。对系统的功能、使用方法等进行详细介绍,帮助学生快速了解系统。
通知公告界面布局如下图:
图5-4 通知公告UI界面
5.1.5校园资讯界面
校园资讯界面,学生用户能很容易地看到校内公告,支持按照资讯类型、发布时间等条件进行筛选,提高学生查找资讯的效率。学生可以对感兴趣的资讯进行点赞操作,系统会在数据库的资讯点赞表中记录点赞信息,同时更新资讯表中的点赞数。
校园资讯界面布局如下图:
图5-5 校园资讯界面UI界面
5.1.6教室信息界面
教室信息界面,学生输入教室名称或地点,系统在教室信息表中查找匹配的教室信息,并展示教室的状态。学生可以对教室进行评论,表达自己对教室环境、设施等方面的看法。评论内容会存储在数据库的教室评论表中,同时展示在教室信息页面。
教室信息界面布局如下图:
图5-6 教室信息UI界面
5.1.7课程信息界面
课程信息界面详细介绍了每个课程的内容,提供搜索功能以便于找到特定课程。学生输入课程名称、教师姓名等关键词,系统在课程信息表中进行查询,将匹配的课程信息展示给学生。课程信息界面布局如下图:
图5-7 课程信息UI界面
-
- 教师模块
- 排课信息界面
- 教师模块
排课信息界面,教师可以查看自己的排课信息,了解课程的上课时间和地点。排课信息界面布局如下图:
图5-8 排课信息UI界面
-
-
- 授课报备界面
-
授课信息界面,教师提交排课意向,包括课程名称、上课时间、上课地点等信息。系统将排课意向信息存入数据库的授课报备表中。教师可以查看管理员对自己排课意向的审核结果,若审核通过,系统会自动生成排课信息。教师可以根据排课结果设置班级的课程表,方便学生查看。
授课信息界面布局如下图:
图5-9 课程信息UI界面
个人中心界面,展示教师的基本信息,对自己所授课程进行管理,查看自己的上课记录,布置学习任务给学生,并对学生的学习情况进行评分评价和审核学生的反馈信息,收藏重要的资讯、课程等。
个人中心界面布局如下图:
图5-10 个人中心信息UI界面
5.3 管理员模块
5.3.1 系统公告管理模块
系统公告管理功能模块可以为用户和管理提供全面系统公告信息展示和管理。
管理员可管理平台发布的系统公告信息,包括可新增、编辑、删除、查询系统公告,方便学生及时获取系统各类通知、公告信息。学生用户和教师用户可在系统公告管理模块,搜索和浏览管理员发布的公告信息。
系统公告管理界面布局如下图:
图5-11 系统公告管理UI界面
管理员添加系统公告界面布局如下图:
图5-12 添加系统公告信息UI界面
管理员添加系统公告信息关键代码如下所示:
| @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } public Map<String, Object> addMap(Map<String,Object> map){ service.insert(map); return success(1); } |
5.3.2 上课记录管理模块
上课记录界面,管理员可以删除错误的上课记录,修改上课记录的信息,查询特定的上课记录。对上课记录进行审核,确保记录的准确性和真实性。
上课记录界面布局如下图:
图5-13 上课记录管理UI界面
5.3.3 学科类别管理模块
学科分类管理是系统中的重要组成部分,主要提供学生学科信息的展示和管理功能,旨在为用户提供便捷的师生课程信息查询和申请,为管理员提交高效的学生课程信息的增改删查等管理功能。
管理员可管理所有学科查询信息的添加、删除、更新等操作,支持关键词搜索。
管理员添加学科分类界面布局如下图:
图5-14 学科类别管理UI界面
管理员添加学科类别管理查询信息关键代码如下所示:
| @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } public Map<String, Object> addMap(Map<String,Object> map){ service.insert(map); return success(1); } |
在对本系统进行完详细设计和编码之后,就要对排课系统的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。系统测试的目的在于确保软件正常运作,并实现其应有的功能,促进行中出现的错误和逻辑问题。系统测试不但可以找见程序运行中的系统错误,还可以找见程序运行的需要改进的地方,并去协助改良程序运行使其获得最高幅度的完备。世界一流的安装测试员可以增加软件品质,将软件系统错误概率降至最低。
用户登录前首先需注册成为系统用户,使用账号和密码可进行登录。用户登录功能测试用例设计如下表所示:
表6-1 用户登录功能测试用例
| 测试编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
| TC001 | 验证有效登录 | 1. 输入正确的用户名和密码 2. 点击登录按钮 | 显示登录成功,跳转至用户首页 | 登录成功,跳转至用户首页 | 通过 |
| TC002 | 验证空用户名登录 | 1. 不输入用户名,输入正确密码 2. 点击登录按钮 | 显示用户名不能为空提示信息 | 显示用户名不能为空提示信息 | 通过 |
| TC003 | 验证空密码登录 | 1. 输入正确用户名,不输入密码 2. 点击登录按钮 | 显示密码不能为空提示信息 | 显示密码不能为空提示信息 | 通过 |
| TC004 | 验证错误用户名登录 | 1. 输入错误的用户名和正确密码 2. 点击登录按钮 | 显示用户名或密码错误提示信息 | 显示用户名或密码错误提示信息 | 通过 |
| TC005 | 验证错误密码登录 | 1. 输入正确用户名和错误密码 2. 点击登录按钮 | 显示用户名或密码错误提示信息 | 显示用户名或密码错误提示信息 | 通过 |
- 排课查询信息模块功能测试
排课查询信息模块测试包括排课查询信息展示功能测试、排课查询信息添加功能测试、排课查询信息搜索、排课查询信息功能测试。排课查询信息模块测试用例如表6.2-6.5所示。
排课查询信息展示功能测试用例设计如下表所示:
表6-2 排课查询信息展示功能测试用例
| 测试编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
| TC001 | 验证正常展示排课查询信息 | 1. 进入排课查询信息展示页面 2. 浏览展示的排课查询信息内容 | 能够正常显示排课查询信息内容 | 排课查询信息内容正常显示 | 通过 |
| TC002 | 验证排课查询信息链接跳转 | 1. 进入排课查询信息展示页面 2. 点击排课查询信息链接 | 能够跳转至相应排课查询信息详情页面 | 成功跳转至排课查询信息详情页面 | 通过 |
| TC003 | 验证搜索功能 | 1. 进入排课查询信息展示页面 2. 使用搜索功能搜索排课查询信息 | 显示符合搜索条件的排课查询信息列表 | 显示符合搜索条件的排课查询信息列表 | 通过 |
排课查询信息添加功能测试用例设计如下表所示:
表6-3 排课查询信息添加功能测试用例
| 测试编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
| TC001 | 验证添加排课查询信息 | 1. 进入排课查询信息添加界面 2. 输入排课查询信息 3. 点击添加按钮 | 排课查询信息成功添加到系统页面中 | 排课查询信息成功添加到系统页面中 | 通过 |
| TC002 | 验证排课查询信息内容输入 | 1. 进入排课查询信息添加界面 2. 输入正确排课查询信息内容和答案 3. 点击添加按钮 | 排课查询信息内容成功录入系统 | 排课查询信息内容成功录入系统 | 通过 |
| TC003 | 验证排课查询信息图片上传 | 1. 进入排课查询信息添加界面 2. 上传排课查询信息相关图片 3. 点击添加按钮 | 图片成功上传并与排课查询信息关联 | 图片成功上传并与排课查询信息关联 | 通过 |
排课查询信息搜索功能测试用例设计如下表所示:
表6-4 排课查询信息搜索功能测试用例
| 测试编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
| TC001 | 验证排课查询信息输入课程名称搜索 | 1. 进入排课查询信息搜索界面 2. 输入课程名称 3. 确认并搜索 | 根据选择的课程名称关键词显示相关排课查询信息 | 根据选择的课程名称关键词成功显示相关排课查询信息 | 通过 |
| TC002 | 验证排课查询信息输入课程类型搜索 | 1. 进入排课查询信息搜索界面 2. 输入课程类型 3. 确认并搜索 | 根据选择的课程类型关键词显示相关排课查询信息 | 根据选择的课程类型关键词成功显示相关排课查询信息 | 通过 |
授课报备功能测试用例设计如下表所示:
表6-5 授课报备功能测试用例
| 测试编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 是否通过 |
| TC001 | 验证添加教师申请信息 | 1. 点击“授课报备”进入排课意向添加界面 2. 输入教师申请信息 3. 点击添加按钮 | 排课意向信息成功添加到系统页面中 | 排课意向信息成功添加到系统页面中 | 通过 |
| TC001 | 验证添加教师申请信息 | 1. 点击“申请”进入排课意向信息添加界面 2. 输入教师申请信息 3. 点击添加按钮 | 排课意向信息成功添加到系统页面中 | 排课意向信息成功添加到系统页面中 | 通过 |
| TC002 | 验证排课查询信息内容输入 | 1. 进入排课意向信息添加界面 2. 输入正确排课查询信息内容 3. 点击添加按钮 | 排课意向信息内容成功录入系统 | 排课意向信息内容成功录入系统 | 通过 |
| TC003 | 验证审核排课查询信息 | 1. 管理员进入授课报备信息详情界面 2. 更新审核状态并编辑审核回复内容 3. 点击提交按钮 | 排课意向信息审核内容成功录入系统 | 排课意向信息审核内容成功录入系统 | 通过 |
- 兼容性测试
表6-6 兼容性测试用例
| 用例编号 | 测试类型 | 测试目标 | 操作过程 | 预期结果 |
| 兼容性_01 | 设备兼容性 | 测试系统在不同设备上的表现 | 在多种设备上访问系统并记录表现 | 系统在各种设备上都能正常加载和显示页面 |
| 兼容性_02 | 浏览器兼容性 | 测试系统在不同浏览器上的表现 | 在多种浏览器中访问系统并记录表现 | 系统在各种主流浏览器上都能正常加载和显示页面 |
| 兼容性_03 | 分辨率兼容性 | 测试系统在不同分辨率下的显示效果 | 在不同分辨率的设备上访问系统并记录表现 | 系统在各种分辨率下都能适应并正常显示内容 |
| 兼容性_04 | 操作系统兼容性 | 测试系统在不同操作系统上的运行情况 | 在不同操作系统上访问系统并记录表现 | 系统能够在常用操作系统上正常运行和显示 |
- 性能测试
表6-7 性能测试用例
| 用例编号 | 测试类型 | 测试目标 | 操作过程 | 预期结果 |
| 性能_01 | 负载测试 | 测试系统在正常负载下的性能 | 逐步增加用户数来模拟不同的负载情况 | 系统能够稳定处理并响应不同数量的用户请求 |
| 性能_02 | 压力测试 | 测试系统在极端负载下的性能 | 以超过系统承受极限的用户数来测试系统 | 系统能够在高负载情况下仍然保持正常运行 |
| 性能_03 | 并发测试 | 测试系统能同时处理多少并发用户请求 | 同时发送多个并发用户请求来测试系统性能 | 系统能够有效地处理多个并发请求 |
| 性能_04 | 数据量测试 | 测试系统在大数据量下的性能 | 向系统添加大量数据并测试系统响应时间 | 系统能够在大数据量情况下保持较快的响应时间 |
全部测试用例都已通过,且不存在漏洞,实现了本论文开始时所作要求和期望。本系统运行稳定,使用流畅,可以满足客户需求。试运行后进行系统评估,可以认为本系统达到预期的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预期目标所需。在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
简而言之,经过严格的测试,可以发现本系统的功能和性能非常出色,它的精度、可靠性、稳健性都达到了极高的水平,而且它还支持快速、精细的点击操作,使用者的使用感受更加良好。此外,它还支持各种主流浏览器,满足不同的使用要求。
总结与展望
基于SpringBoot技术的智能排课系统的研究与实现,标志着教育管理领域的一次重要进步。通过整合先进的算法、灵活的系统架构和用户友好的界面设计,系统显著提升了排课工作的效率和准确性,有效解决了传统手工排课方式中存在的诸多问题。学生、教师和管理员三方用户能够在一个统一平台上高效协作,不仅简化了日常管理工作,还促进了师生间的互动与沟通。
在实际应用中,该系统展示了其强大的功能和良好的用户体验。学生可以方便地查询课程信息、上课记录以及完成学习任务;教师能够灵活管理自己的课程安排,并及时反馈学生的评价;而管理员则可以通过自动排课、权限管理和资源调配等功能,确保整个教学过程的顺利进行。系统的跨平台支持使得用户可以在任何时间、任何地点访问和管理信息,极大地提高了使用的便捷性。智能排课系统的发展前景广阔,它未来将在提高教育管理效率、促进教育资源共享等方面发挥越来越重要的作用,助力教育事业迈向新的高度。
参考文献
- 薛芳.智慧校园背景下高校计算机专业教学管理信息化改革路径研究[J].中国管理信息化,2025,28(02):221-223.
- 刘涛.基于SpringBoot的实验室预约排课系统的设计与实现[J].办公自动化,2024,29(23):90-92.
- 周游,郝冰.军机技术培训智能排课系统的设计与应用[C]//中国航空学会.第七届中国航空科学技术大会论文集.航空工业成都飞机设计研究所飞保部;,2024:1270-1276.
- 杨淼.基于遗传算法的高职院校排课模型的研究[J].电脑与信息技术,2024,32(03):42-44.DOI:10.19414/j.cnki.1005-1228.2024.03.033.
- 关竹聪.学分制下对排课管理模式的研究与思考——以L大学为例[J].辽宁经济职业技术学院.辽宁经济管理干部学院学报,2024,(03):145-149.
- 倪佳兴.智能儿童康复管理平台的关键技术研究与系统实现[D].济南大学,2024.
- 黄玉蕾,雷丽莎,高均,等.基于B/S结构的排课系统数据库设计[J].信息与电脑(理论版),2024,36(06):167-170.
- 曹红伟.改进遗传算法与Gurobi求解器在高校排课中的研究与应用[D].重庆理工大学,2024.
- 刘莉,栗超.基于遗传算法的智能排课系统的设计[J].成都工业学院学报,2023,26(06):52-55.
- Raza M Rashid.Getting Skilled with Java:Learn Java Programming from Scratch with Realistic Applications and Problem Solving Programmes (English Edition)[M].BPB Publishers:2022-01-31.DOI:10.0000/9789391392499
- Gordon V Scott,Clevenger John L.Computer Graphics Programming in OpenGL with Java[M].Mercury Learning and Information:2021-09-02.
- Malhotra D,Malhotra N.Data Structures and Program Design Using Java:A Self-Teaching Introduction[M].Mercury Learning & Information:2020-02-18.
- 齐振中,校园排课统计系统.山西省,山西拓思至美科技有限公司,2023-09-01.
- 韦芳萍.基于蚁群算法的高校排课问题的研究[J].电脑编程技巧与维护,2023,(07):32-34+44.
- 李印坤,任宣宇.遗传蚁群混合算法在高职院校排课系统中的应用[J].信息系统工程,2023,(07):20-23.
- 郭欣奇.基于改进遗传算法的排课系统研究与设计[D].哈尔滨师范大学,2023.DOI:10.27064/d.cnki.ghasu.2023.001287.
- 史昊天.基于改进遗传算法的研究生排课与组卷系统的设计与实现[D].西安石油大学,2023.
- 周国栋.基于改进双种群遗传算法的智能排课方法在高校排课系统中的研究与应用[D].华中师范大学,2023.
- 朱婷婷.基于改进遗传算法的职业院校自动排课系统研究与实现[J].科学技术创新,2023,(08):112-115.
- 王艳华,李向阳,任世存.以本为本理念下高校排课工作约束因素分析——以中国矿业大学为例[J].吉林广播电视大学学报,2023,(02):121-123.
致 谢
在完成本论文的研究与写作过程中,我深切感受到了来自各方的帮助和支持。在此,我衷心地向所有给予我帮助的人表示最诚挚的感谢。
首先,我要特别感谢我的导师,不仅在学术上给予我无私的指导,而且在生活上给予我关怀和支持。是您严谨的学术态度和勤奋的工作精神将永远激励我不断前进。
其次,我要感谢所有教导过我的老师们,是你们精彩课堂和深入的指导为我的研究工作提供了宝贵的知识和灵感。
我还要感谢我的家人,他们的理解和支持是我完成学业的坚强后盾。在我遇到困难和挑战时,他们总是给予我鼓励和力量。
此外,我也要感谢我的朋友和同学们,你们的陪伴和帮助使我的研究生活更加丰富多彩。我们共同度过的时光将成为我一生中宝贵的回忆。
最后,我要感谢所有支持本项目,为本项目提供建设性意见的人员,没有他们的协助,本论文无法顺利完成。
再次感谢所有帮助和支持我的人,是你们的帮助使我的研究之路不再孤单
请关注点赞+私信博主,免费领取项目源码
2084

被折叠的 条评论
为什么被折叠?



