基于SpringBoot的智能排课系统设计与实现

news2024/9/20 14:15:46

文未可获取一份本项目的java源码和数据库参考。

(一)选题来源与背景

高校的每学期伊始,排课是教务处工作中的重中之重。安排合理无资源冲突(教师、教室和设备等教学资源)的课表是教务工作必须面临的问题。传统的人工排课是一项十分繁锁而复杂的工作。出现教室资源冲突或教师资源冲突的情况是令人最为担忧的问题,一旦出现冲突,则工作繁琐,调整的工作量巨大。高校的排课是教学管理中最基本、最重要、十分繁重而复杂的工作,它涉及到全校全部的专业,全部的师生和全部的课程,它的本质就是为所有的课程安排一组适当的教学时间和地点,使教学能够顺利进行。随着各高校的扩招,教师和教室源越发紧张,使得本来就有难度的排课问题更加困难。

(二)研究目的

为了保证教学质量,制定一套严密、规范的教学计划和执行合理的课程安排是高校亟待解决的问题。排课作为教务处日常管理工作中最重要也最复杂的部分之一成为国内外学者重要的研究课题。但是,在整个排课过程中,自始至终充满了冲突。它属于一类涉及多种因素的组合规划问题,它必须使课程安排中的教室、教师和学生不发生冲突,这是最基本的要求。在此基础上要尽量满足教师提出的其它要求和教室资源的约束。然而在人工排课过程中实现这样的要求是有一定困难的,而且工作量非常大,并且手工排课的缺点会日益突出。而计算机恰好能帮助解决这个问题,它具有自动运行、计算速度快等特点,只要有相应的智能化的排课系统软件,就能很好地解决排课的困难,实现教学管理智能化。计算机应用技术用于日常工作安排是目前科技发展的趋势,为减轻人类工作的压力,将繁琐的判断与运算交给计算机来做可充分发挥计算机的优势并大大减少人的工作量,是社会科技进步的表现。智能排课系统投入使用后,无需繁琐的人工安排,教务处只需设置好学校基本情况及排课要求,利用系统排出课程表就能应用于新学期使用。

(三)国内外研究现状

在国外,早在20世纪50年代开始了这方面的研究,并在理论上论述了课表问题是NP完全的。但由于现代计算机尚未找到解决NP完全问题的多项式算法,此后的研究便更多地转向经验方式。进入90年代以后,国外对该课题的研究仍然很活跃,对于排课问题已使用的算法有:关联规则FP-growth算法、基于时间位图迭加匹配算法、基于资源匹配的算法、分组优化决策算法、分支定界法、有限回溯法、拉格朗日松弛法、二次分配型法等。由于课表约束复杂,进行问题描述时往往导致问题规模剧烈增大。具研究表明利用运筹学中分层规划的思想将问题分解,将是一个值得研究的方法。

在国内,我国对这一问题也进行了许多研究,特别在应用方面也出现了一些好的排课软件,80年代初期出现了对课表问题的研究。南京工学院的UTSS(AUniversityTimetableSchedulingSystem)系统,清华大学的TISER(TimetableSchedulER)系统,大连理工大学的智能教学组织管理与课程调度和西安交大的排课系统等是该阶段中比较有代表性的系统。它们在实际应用方面起到很好的作用,是很好的人/机交互式排课系统。还有些市场流行的很多排课系统比如:相似排课CIS,plsn智能排课系统,正信华课程安排管理系统,排课博士,排课无忧等等,这些排课软件在解决排课问题时大多数采用的算法都是回溯算法,排课的效果也都很好。但是该阶段的系统大多是以“班”为单位,运用启发式函数等方式模拟传统的手工排课来进行系统排课的,或多或少存在着问题。这些系统共同的弊端在于:使用的局限性。系统设计时依赖于学校的教学体制。实际上,80年代初期国内研制开发的排课系统在实用性上并不尽如人意。系统的定制性强,但是可扩充性很差,难以广泛推广使用。目前,已有许多学者尝试将其他领域的理论(如人工智能等)引入到排课系统中,并给出了不同的解决方案。各高校也曾根据自身实际的教学体制开发了自身定制的排课系统,虽然这些系统排课周期长、排课员工作量大,但在真正的机器智能排课系统出现之前,这些系统基本可以完成高校的排课任务。

从目前情况看,无论国际还是国内,更为完整有效的自动排课算法还处于研究阶段。课程调度是教学管理最重要、最繁重的工作之一。科学地编制课程表,合理地进行课程搭配,适当地平衡师生负担,对稳定学校教学秩序,提高教学质量,有着重要作用。2000提出基于C/S的开放式智能排课系统的研制;用计算机辅助排课具有排课时间短、省人力和质量高的优点,设计了基于优先级的自动排课算法(Priority-basedCourseSchedulingAlgorithm,PCSA),本算法通过使用划分等价类、计算优先级等方法大大降低了课程调度的算法复杂度,实现了课程的合理编排功能;再如基于遗传算法的排课系统,遗传算法是一种借鉴生物界自然选择和达尔文的进化论发展起来。是一种随机搜索算法,并且非常有效的解决NP完全的组合优化问题,基于遗传算法解决在排课过程中的冲突问题。2006提出基于B/S结构的高校排课系统,系统采用的是目前比较先进的B/S网络结构,采用JSP动态网页技术开发工具,选用Mysql2000作为后台网络数据库,并详细介绍了系统的开发方案和相关技术的实现。由于排课问题是一个NP完全优化问题,该排课系统采用了遗传算法来搜索近似最优解。经过实验测试,认为本方法对实现高校网上排课,完善高校教务管理工作具有一定的参考价值;前后又出现基于贪心算法的排课系统、基于免疫算法的排课系统[6]等。但多数情况下对排课系统的数学抽象都过于简单而且有些不能符合实际情况。实际排课中非常规因素和干扰因素较多,特别是规模较大的高校,算法应用效果不佳。

(四)主要参考文献

[1] 费雅洁,许泓宁。基于 C/S 的开放式智能排课系统的研制[J], 沈阳电力高等专科学校学报, 2018年03期

[2] 曾光清 基于优先级的人性化排课算法研究[J] 信息与电脑 2019,16 (12) : 127 - 128

[3] 业宁,梁作鹏, 董逸生。一种基于遗传算法的TTP问题求解算法. 东南大学学报(自然科学版),2019(1):41-44

[4] 唐勇, 唐雪飞, 王玲。基于遗传算法的排课系统.计算机应用, 2017(1):93-94,97

[5] 基于 B/S 结构的高校排课系统的设计与实现.吉林大学, 2016

[6] 张晶,李广军等.智能排课算法综述[J].西南民族大学学报:自然科学版, 2019, 35 (3) : 675 - 678

[7] 王凤. 高效排课问题的图论模型及算法[J].计算机工程与应用, 2019, 45 (27) : 53 - 55

[8] 李振,王晓全,张子蛟,候跃生基于专家系统的交互式排课系统的实现. 郑州大学学

报工学版. 2018(4)

[9] 李玉吉,卢才武,刘冠.蚁群遗传算法在高校智能排课系统中的应用. 现代电子技术, 2019

年14期

[10]陆永祯,段慧坤,周芸, 等. SQL Server 2000 数据库管理和程序开发一周通[M]. 北京:中国铁道出版社, 2017.1

[11] Ronald J. Norman, Object-Oriented Systems Analysis And Design, Prentice-Hall, 2016.1

[12] Date C J. An Introduction to Database System(Ed.7) New York Computer Science Press ,2018.1

[13] Martin J. Principles of Database Management New YorkComputer Science Press, 2017.3

[14] S.Lidin. Inside Microsoft.NET IL Assembler, Redmond: Microsoft Press. 2016.

[15] Tsichritzis D CLochovsky F H. Data Models. Prentice-Hall2017.

(一)研究内容

系统包括课程信息管理模块:主要实现对所开设课程的相关信息的添加。教学任务信息管理模块:主要实现教研室对教师的教学任务安排。师教学工作量管理模块:主要实现教师教学工作量的提交和计算。自动排课功能,进行排课,模拟退火算法,排课智能化,尽量不手动调整,每次生成一个班的课表。

(二)研究思路

通过基于JAVA的高校智能排课系统的需求分析;进行数据库分析,设计数据库;构建程序模块图,根据高校智能排课系统模块图建立程序主体与框架;设计并实现各模块功能; 链接程序与数据库,调试运行;多次测试,直至程序稳定运行,完成系统设计。

(三)研究方法

(1)总体设计,确定软件系统的结构,对全局数据结构进行设计,进行模块划分,确定每个模块的功能及模块间的调用关系,生成结构图及概要设计说明书。

(2)详细设计,对智能排课管理系统进行设计和美化工作,并对局部功能结构进行设计,编写代码,生成源程序代码、内部文档,并对局部功能结构进行设计,调试,编写详细的设计说明书。

(3)系统测试,针对系统中的错误和缺陷,经过不断修改和调试,使所设计的系统更加完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

规模化电动汽车接入配电网调度方法

规模日益增长的电动汽车和可再生能源带来的不确定性给配电网的安全运营带来了严峻挑战。为综合考虑多重不确定性、平衡运营成本与系统可靠性,首先,提出一种基于分布鲁棒联合机会约束的电动汽车-配电网充放电调度模型。该模型将节点电压、支路功率、备用需求等通过联合机会约束建…

由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)

概述 在 WWDC 24 中,苹果推出了数据库框架 SwiftData 2.0 版本。听说里面新增了能让数据记录“借尸还魂”的绝妙法器,到底是真是假呢? 我们在上篇博文中介绍了 History Trace 是如何稳妥的处理数据删除操作的。而在这里,我们将继续介绍 SwiftData 2.0 中另一个新特性:“墓…

Prometheus - nVisual插件让运维更轻松

Prometheus 是一个开源的服务监控系统和时间序列数据库,常用于对基础设施的监控,监控范围涵盖了硬件层、操作系统层、中间件层、应用层等运维所需的所有监控指标类型,同时可利用第三方可视化工具Grafana实现时序数据的展示。然而,…

Redis基础(数据结构和内部编码)

目录 前言 Redis的数据结构和内部编码 string结构和内部编码 string数据机构的特点 string数据结构的内部编码 list结构和内部编码 List 数据结构的特点 List 的内部编码 1. ziplist(压缩列表) 2. quicklist hash结构和内部编码 hash数据结构…

OpenCV特征检测(3)计算图像中每个像素处的特征值和特征向量函数cornerEigenValsAndVecs()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算图像块的特征值和特征向量用于角点检测。 对于每一个像素 p ,函数 cornerEigenValsAndVecs 考虑一个 blockSize blockSize 的邻…

Java 在 GIS 领域的学习路线?

Java是一门广泛应用于企业级开发的编程语言,而GIS则是一种常用于地理信息处理和分析的技术。将Java与GIS结合起来,可以在企业级应用中实现更多的功能和业务需求,且在实际领域越来越广泛。 Java在GIS中重要的作用 1、跨平台性 Java具有跨平台…

基于C语言+SQL Server2008实现(控制台)图书管理系统

第1章 概述 1.1项目背景 随着科技的发展,尤其是计算机技术的迅猛发展,图书馆管理的问题从以往的人工管理,到现在的电脑化,系统化,是对图书馆管理方法的质的飞跃,这些技术不仅让图书馆管理变得更加方便、快…

美国联邦基金有效利率及目标利率历史数据集(1990.1-2024.9)

美联储在2024年9月18日宣布将其调50个基点,降至4.75%至5.00%之间的水平。这是美联储自2020年3月以来首次降息,也是自2023年7月将利率水平调升至历史高位后的首次下调,标志着货币政策由紧缩周期向宽松周期的转向。一、数据介绍 数据名称&…

web基础—dvwa靶场(八)XSS

XSS(DOM) 跨站点脚本(XSS)攻击是一种注入攻击,恶意脚本会被注入到可信的网站中。当攻击者使用 web 应用程序将恶意代码(通常以浏览器端脚本的形式)发送给其他最终用户时,就会发生 XSS 攻击。允许这些攻击成…

网络-内核是如何与用户进程交互

1、socket的直接创建 net/socket.cSYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) {...retval sock_create(family, type, protocol, &sock);... }int sock_create(int family, int type, int protocol, struct socket **res) {return __sock_create(cu…

字符串函数的使用与模拟(2)——C语言内存函数

目录 1. memcpy函数的使用与模拟 2. memmove函数的使用与模拟 3. memset函数的使用 4. memcmp函数的使用 5. memchr函数的使用 前言&#xff1a;C语言内存函数是一组用于直接操作计算机内存的内置函数。使用时要包含头文件<string.h> 1. memcpy函数的使用与模拟 函…

【MYSQL表的增删改查(进阶)】

MYSQL表的增删改查&#xff08;进阶&#xff09; 一、新增二、查询2.1 聚合查询2.1.1 聚合函数count&#xff08;&#xff09;sum&#xff08;&#xff09;AVG&#xff08;&#xff09;MAX&#xff08;&#xff09;&#xff0c;MIN&#xff08;&#xff09;GROUP_CONCAT() 2.1.…

前端学习杂乱记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Html二、CSS1. BFC布局2. 定位总结3. 动画1. transform变换2. transition过渡3. keyframes 和 animation 3. 伸缩盒模型&#xff1a;flex布局 三、JS1. 逻辑中断…

nvm安装实现node多版本的切换

nvm安装实现node多版本的切换 方式一 下载安装包安装下载安装包解压安装设置 nvm 环境变量查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本 方式二 一键脚本安装下载安装查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本nvm相关命令…

PyTorch中的学习率预热(warmup)

PyTorch提供了学习率调度器(learning rate schedulers)&#xff0c;用于在训练过程中实现各种调整学习率的方法。实现在torch.optim.lr_scheduler.py中&#xff0c;根据epoch数调整学习率。大多数学习率调度器可以称为背对背(back-to-back)&#xff0c;也称为链式调度器&#x…

Linux入门2

文章目录 一、Linux基本命令1.1 文件的创建和查看命令1.2 文件的复制移动删除等命令1.3 查找命令1.4 文件的筛选和管道的使用1.5 echo、tail和重定向符 二、via编辑器三、权限控制3.1 root用户&#xff08;超级管理员&#xff09;3.2 用户和用户组3.3 权限信息3.4 chmod命令 一…

Streamlit:使用 Python 快速开发 Web 应用

一、简单介绍 Streamlit 是一个开源 Python 库&#xff0c;官网地址&#xff1a; https://streamlit.io/http://StreamlitStreamlit 是一个开源的 Python 框架&#xff0c;旨在为数据科学家和 后端工程师们提供只需几行代码即可创建动态数据应用的功能。 让没有任何前端基础…

C#软键盘设计字母数字按键处理相关事件函数

应用场景&#xff1a;便携式设备和检测设备等小型设备经常使用触摸屏来代替键盘鼠标的使用&#xff0c;因此在查询和输入界面的文本或者数字输入控件中使用软件盘来代替真正键盘的输入。 软键盘界面&#xff1a;软键盘界面实质上就是一个普通的窗体上面摆放了很多图片按钮&…

使用SpringCloud构建可伸缩的微服务架构

Spring Cloud是一个用于构建分布式系统的开源框架。它基于Spring Boot构建&#xff0c;并提供了一系列的工具和组件&#xff0c;用于简化开发分布式系统的难度。Spring Cloud可以帮助开发人员快速构建可伸缩的微服务架构。 要使用Spring Cloud构建可伸缩的微服务架构&#xff0…

实时监控局域网计算机桌面怎么设置!五个可实现的方法分享,绝了!

员工在工作时间里究竟在做什么&#xff1f;他们的网络活动是否合规&#xff1f;如何确保敏感信息不被泄露&#xff1f; 在企业管理层面&#xff0c;实时监控局域网计算机桌面已成为提升工作效率、确保数据安全与规范员工行为的重要手段。 技术的不断进步&#xff0c;多种解决…