智能排课系统参考文档共50页

上传人:无*** 文档编号:112717001 上传时间:2022-06-23 格式:DOC 页数:50 大小:1.69MB
收藏 版权申诉 举报 下载
智能排课系统参考文档共50页_第1页
第1页 / 共50页
智能排课系统参考文档共50页_第2页
第2页 / 共50页
智能排课系统参考文档共50页_第3页
第3页 / 共50页
资源描述:

《智能排课系统参考文档共50页》由会员分享,可在线阅读,更多相关《智能排课系统参考文档共50页(50页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上智能排课系统设计与实现摘 要排课,是给学校各专业的教学计划中设置的课程安排合适的时间和地点,也就是给每个班的课程安排时间和地点。排课工作在教学管理中很重要也很繁琐,计算机智能排课系统,可以降低排课人员的工作量,减少排课中的人为因素1-2。但排课问题属于NP问题,即无法直接得到答案,只能通过猜测获取可能结果。通常NP问题虽无答案,却有算法,算法不能直接告诉答案,但可以用来判断可能的结果是否正确可行。因此,要做好排课工作,提高排课效率,实现智能排课是必不可少的。本文在查阅大量相关文献的基础上,对高校的排课问题进行了分析,设计和实现了该功能,此系统主要被分为三个部分:界面的

2、设计、排课算法的设计、以及报表的自动生成。本系统是采用Microsoft Visual Studio 2005作为前台开发工具,SQL Server2005作为后台数据库平台的管理系统。关键词:智能排课、贪心、分治、Visual Studio 2005、SQL Server 2005。目 录 专心-专注-专业1 绪论1.1系统开发背景在高校各项教学管理工作中,排课一直是最基本的、最重要的工作,其实质就是给教学计划中设置的课程安排合适的时问和地点,保证整个教学工作能够顺利地进行;同时,排课工作也是一项很复杂的工作,排课是一个NP问题,就是始终找不到一个最优的方法能够解决的问题,因为这个问题涉及了

3、多种因素进行组合规划,有教师、学生的因素,也有教室的因素。尤其在目前各高校规模不断扩大,教学资源面临紧张,教师总数不足的前提下,排课工作问题更为凸出。随着计算机技术的飞速发展,特别是计算机的应用已普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,利用计算机实现高校排课系统势在必行。对于各大高校来说,利用计算机支持学校管理员排课,是适应现代学校的制度要求、推动学校管理走向科学化、系统化、规范化的必要条件,从而达到提高校管理效率的目的。给同学和老师带来方便。1.2系统开

4、发环境及方法1.2.1.开发环境在计算机硬件和软件快速发展的今天,计算机硬件和软件已经远远满足本管理系统的要求。在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高了编程效率。选用Microsoft Visual Studio 2005中文版数据库开发的应用程序可以独立运行于windows平台,而且SQL Server2005产生的数据库适用范围广,因此本系统采用Microsoft Visual Studio 2005中文版来完成高校排课系统的设计。Visual Studio 是微软公司推出的开发环境。是目前最流行的

5、 Windows 平台应用程序开发环境。2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。 这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本。 使用Visual Studio 2005, 专业开发人员能够:(1)使用改进后的可视化设

6、计工具、编程语言和代码编辑器,享受高效率的开发环境 ;(2)在统一的开发环境中,开发并调试多层次的服务器应用程序 ;(3)使用集成的可视化数据库设计和报告工具,创建SQL Server 2005解决方案 ;(4)使用Visual Studio SDK创建可以扩展Visual Studio IDE的工具6-8。VB 2005是visual Studio 2005中最重要的组件之一,是新一代的VB,但它并不是VB.NET2003的简单升级,从开发界面到控件,VB 2005与VB.NET2003之间还是有比较大的区别6。新一版SQL Server的设计目标正是帮助企业单位应对上述挑战。作为Micro

7、soft公司的下一代数据管理与分析软件,SQL Server 2005有助于简化企业数据与分析应用的创建、部署和管理,并在解决方案伸缩性、可用性和安全性方面实现重大改进。 基于SQL Server 2000技术优势构建的SQL Server 2005将提供集成化信息管理解决方案,可帮助任何规模的组织机构: (1)创建并部署更具伸缩性、可靠性和安全性的企业级应用。 (2)降低数据库应用创建、部署与管理的复杂程度,进而实现IT效率最大化。 (3)凭借可供创建更具安全保障之数据库应用的丰富、灵活、现代化开发环境增强开发人员工作效能。 (4)跨越多种平台、应用和设备实现数据共享,进而简化内部系统与外部

8、系统连接。 (5)实现功能强劲的集成化商务智能解决方案,从而在整个企业范围内推进科学决策,提高工作效率。 (6)在不必牺牲性能表现、可用性或伸缩性的前提下控制成本费用水平9-10。1.2.2开发方法以各高校的排课需求为应用背景,开发一个典型的高校智能排课系统。考虑实际情况,本系统将采用结构化生命周期法进行系统分析和设计,并采用原型法进行系统实施。图1-1 原型法生命周期图原型法的基本思想是在投入大量的人力,物力之前,在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善

9、,直到完全满足用户的需求为止。这样能有效避免盲目开 发问题,同时能充分的发挥原型法的优势,能顺利实现系统的实施4-5。2 可行性分析2.1 技术可行性该系统对软、硬件系统要求较低,所需硬件设备,市场上销售且价格较低,甚至可以使用原有的设备。软件上,操作系统采用Windows系列操作系统、Microsoft Visual Studio 2005作为前台开发工具,它具有的“编辑后继续运行(edit and continue)”的特性,超越了旧的编辑编译测试模式。它还引入了面向对象的程序设计思想和“控件”概念,使得大量已经编好的Visual Basic程序可以直接拿来使用。同时,Visual Bas

10、ic又是最容易学习与应用的程序语言之一。它的功能非常强大,已成为一种专业化的开发语言和环境。采用SQL Server 2005作为后台数据库平台的管理系统,它在电子商务、数据仓库和数据库解决方案等应用中起着核心作用,可为企业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性、数据的安全性以及数据的可靠易用性等等。这些软件在高校排课系统开发中已被大量应用,技术上都比较成熟。因此在技术上是可行的。2.2 经济可行性当今学校内部没有完善的高校排课系统,管理水平差,学校课程不能得到合理分配。迫切需要提高现代化管理水平、管理质量和管理高校课程。高校排课系统的初步现

11、代化的开发和使用,能够大大提高学校管理者的工作效率,节省成本提高经济效益。它把从事教务管理的人员从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它重要的活动中去,从而达到节省人力、物力,财力的目标;它能使决策、计划和其它管理活动更加科学、精确、灵活。因此,开发一个专门针对高校排课系统,在经济上也是可行的。2.3 操作可行性本系统灵活方便,快捷迅速,适应处理多项数据。采用友好、直观的视窗界面,鼠标、键盘两种操作方式任意选择,方便快捷。界面统一规范,提示信息功能完整,稍一接触就可以上手进行所有操作。2.4 法律可行性本系统纯为个人设计,在开发过程中没有涉及合同、责任、版权等与国家相关

12、法律规定相抵触的方面。因此,本系统在法律上是可行的。3 系统需求分析3.1系统功能需求智能排课系统需要实现对学校教师、教室、班级、及课程的信息管理,对高校排课,都有智能的管理,主要实现如下的一些功能:班级各种信息的输入,包括班级号,班级名称,年级,班级人数,是否合班。教师各种信息的输入,包括教师号,教师姓名,职称,联系方式。学校课程的增加,删除,修改。学校课程计划的制定。学校的自定义排课,根据需要,人工排课。学校的智能排课,根据需要,随机智能排课。有一些相关的提示。课表查课界面,根据不同条件,查看课程安排。3.2系统非功能需求3.2.1排课中的基本原则在课程的编排中应遵循一定的规则, 只有按照

13、基本规则来进行课程的编排才能够减少冲突的发生, 这些基本规则主要有以下几条:1) 同一班级的学生在同一时间(某些特定的选修课时间除外) 不能安排两门课程2) 同一教师在同一时间不能安排两门课程3) 同一教室在同一时间不能安排两门课程4) 同一时间安排的课程总数不能大于所能提供的教室总数5) 某一课程参加学习的总人数不应大于所安排教室的座位数6) 所提供教室的属性与课程所需教室的属性一致在时间、教师、班级、教室、课程这五维关系中, 时间、教师、班级三者之间存在着紧密关系。相对而言, 教室与它们关系就不那么密切。3.2.2排课的基本要求课程的安排不是任意的, 为了达到最好的教学效果应遵循一定的要求

14、。这些要求主要有:1) 要尽量为所排课程安排上该类课效果最好的时间2) 课程在一周上多次时,要有一定的间隔性3) 公共课等涉及面广、学时多的课程应优先处理4) 对同一教师,同一上课对象应尽量选择相对固定的几个教室5) 对同一个班级的课程应选择相对固定的教室6) 连着的课的教室选择不应相隔太远7)同一天有几门课时尽量把课分散8) 优先满足一些特殊要求(比如有些教室喜欢上上午的课,可以优先满足)4 总体设计4.1系统总体构架本系统采用客户/服务器(Client/Server)模式。又叫主从式架构,简称C/S结构,是一种网络架构,它把客户端 (Client) (通常是一个采用图形用户界面的程序)与服

15、务器 (Server) 区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。图4-1 系统体系结构图C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销对应的优点就是客户端响应速度快。4.2系统功能结构高校排课系统可以用于支持各高校完成高校排课的难题,有如下几个个方面的目标:支持各高校输入班级信息; 支持各高校输入教师信息,班级教师的增删改等方面。支持输入教室,还有自定义排课和智能排课以及课表查询。系统分为四大模块:条件设置、课程

16、计划、排课管理、课表查询、系统管理。图4-2 功能模块图具体设计目标如下:(1)界面友好,操作简单,帮您轻松上手。(2)系统具有灵活、严格的权限设定功能,采用非常周密有效的权限设置,确保高校各类资料的可靠性和保密性,防止错误和违规操作。系统管理:可修改管理员权限及密码。(3)高校排课系统,资料详细周到,同窗多页的界面方式让你轻松完成所有工作。(4)友善的登录界面,包括学生登录,教师登录,和管理员登陆,根据身份不同,进入的界面也4.3排课算法4.3.1目前常用算法目前,解决排课问题常用的方法有:着色算法11,通过研究时间资源库的形成策略,分析基于时间资源的排课算法12。基于分层分治、贪心算法的排

17、课系统的设计与实现13,基于图论方法的自动优化排课模型研究14,基于资源受限的非线性约束多目标排课模型及算法15,整数规划解决排课问题16,基于遗传禁忌算法结合解决排课问题17等。这些方法虽然提高了搜索效率,但由于高校普遍存在课程量大,教室、教师资源紧张,排课约束条件多且条件经常变化等问题,排课算法的应用仍然受到很大限制19。4.3.2 排课问题描述4.3.2.1 排课问题的约束条件 排课即要满足一定的硬约束条件来协调处理教师、教室、学生、时间之间的多维冲突,同时还要尽可能满足一些软约束条件,从而使排出的课表更加合理, 满足人性化需求。硬约束条件要求系统必须满足的条件,而软约束条件是在满足硬约

18、束条件以后要考虑的约束条件,软约束条件不要求系统必须满足,但满足这些条件能得到较优解。常用的硬约束条件有:(1) 所有的课程都必须被安排;(2) 除合班课外,同一时间,一个教室只能被一个班级占用;(3) 除选修课外,同一时间,一个班级只能安排一门课程;(4) 同一时间,一个教师只能在一个教室上课; (5) 同一个教师所上的不同课程不能发生在同一时间; (6) 两门课程不能在同一个时间安排在同一个教室;(7) 教室的类型必须与课程要求一致;(8) 教室的最大容纳人数必须大于等于在该教室上课的学生人数等;(9) 不同课程时间段不同,如体育课只能在白天且不安排在第一节,选修课不能安排在早上等。常用的

19、软约束条件有:(1) 同一门课程的上课时间尽量间隔均匀。例如某课程周学时为4学时,以2 学时为一个教学单位,需安排两次。两次的安排时间尽量间隔一天或者一天以上; (2) 每个学生的课程均匀的分布在工作日中; (3) 学生的上课时间要尽量选择在较好的上课时间段; (4) 对班级、教室、教师的单双周上课时间点尽量匹配,以节约教学资源; 4.3.3 排课问题的数学表示如果用C 表示课程、 S表示班级、N表示时间、 R表示教室,T表示教师, 排课问题的目标就是找出满足约束条件的(C,S,N,R,T)组合。并且,这五种元素之间存在一定的对应关系:C与S之间的对应关系,即每个班级有其特定要上的课程;C与T

20、之间的对应关系,即每门课程有一定的任课教师;(N,R)与(S,C,T)之间的对应关系,即每个教室在某一时间段只能有一个班级上一门课程。排课问题的实质就是对于给定的一组(S,C,T)要分配其一个满足上课条件的时空片(N,R)。即找到(N,R)与(S,C,T)之间的一一对应关系。 4.3.4排课问题的优先级问题 排课中有很多等待分配时空片的(S,C,T),如何安排它们的分配次序,不仅关系到算法的性能、安排的合理性,更关系到最终能否求出可行解。因此,分配次序的好坏也是每个算法中要仔细处理的问题。在本文的算法中,是对每一组 (S,C,T)设定优先级,然后按照优先级的高低次序分配时空片。设定(S,C,T

21、) 优先级要考虑的因素有:(S,C,T)中课程C的类别,对于不同类别的课程,给它们设定相应的优先值,本算法中针对课程类别的优先级设定如下:专业基础课、公共基础课、专业限选课、专业选修课、公选课优先级别依次降低, 其中专业基础课级别最高,公选课级别最低;(S,C,T)中课程C在一周内要上的次数。即一门课程周学时越多,优先级越高;(S,C,T)中班级S所需要上的课程总数的大小。即学生每周要上的课程总数越多,优先级越高;(S,C,T)中学生S中的人数的大小。最后根据各个因素的重要性不同,给每个因素设置一定的权重系数p0、p1、p2、p3,最后求四种因素的带权累加和,即得到一个(S,C,T)的优先级,

22、每次按照(S,C,T)的优先级的降序次序来分配时空片。4.3.5算法思想该算法在选择每一组教学任务(S,C,T)时是按贪心策略来选择, 即按(S, C, T)优先级的降序次序选择优先级最高的教学任务。 接下来在进行时空片分配过程 中采用分治的策略,在分配过程中分为三个层次: 1)即先分配要上课的星期数(星期数是指星期一到星期五的任意一天),2)再分配其该天的上课时间段(在本文中某天的上课时间段分为5个时间段,上午1、2节为第1个时间段, 上午3、4 节为第2个时间段,下午1、2 节为第3个时间段,下午3、4节为第4个时间段,晚上1、2节或者1、2、3 节为第5个时间段),3)最后分配上课的教室

23、。同时在每一阶段的分配过程中,都要对资源总数和使用状况作统计和记录,从而防止不计后果的资源滥用。算法主要步骤如下:Step1:初始化。Step1.1:初始化,将所有教室按类型划分,并在每一类型中按教室容量统计可用教室资源的数目。例如,可将教室划分为:普通教室、多媒体教室、语音室、物理实验室、机房等。 然后按教室可容纳人数分为0-60 人、60-120 人、120-140人这4个不同等级。然后统计记录每一类型不同容量范围的可用教室资源数目。 Step1.2:预排序,将待排的所有课程先按周学时降序排列,然后再将待排的所有课程先按所需教室类型升序排列,再按所需教室容量降序分配,即先为上课人数多的课程

24、分配教室,防止较小的班级占用大教室,最后再将所有需要使用同一类型和容量教室的课程按优先级降序排序。Step2:分配上课的星期数。按照排序后的次序,再参照剩余的可用资源记录来分配每组(S,C,T)在一周内要上课的星期数。同时参考总课表,使得班级和教师的上课时间在一周内尽可能均匀分布。Step3:分配某天内上课的时间段。Step3.1 对每种类型和大小的教室资源按其在一周内的某一天的5个时段的分配情况作统计。 Step3.2 在分配时间段的时候, 从第一个时段到第5个时段依次查看是否还有剩余资源,若有,则为其分配相应的是时间段,否则看能否将某个已被占用的时间段调整后再为其分配。分配的过程中要参照总

25、课表,防止时间冲突。 Step3.3 若有不能分配的, 查找与其相关的已经分配了时间段的课程,并看看能否重新为它分配时间段,从而将原来的时间段让给不能成功找到时间段的那个课程使用。 Step4:分配上课的教室:根据每一课程要求的上课时间和教室类型及大小为其分配教室。对于每个已经分配了星期数和时间段的课程,一般来说,都是找得到可用教室的,因为在前两个分配阶段中,是严格按照资源剩余状况来进行分配的。同时在分配上课所用的教室时,也考虑到单双周情况,以便充分利用教室资源。4.3.6 算法分析基于分治贪心相结合的排课算法主要分为3个阶段:即分配上课星期数、分 配上课时间段、分配上课的教室。这里对算法的时

26、间复杂度进行分析。 第一阶段:分配上课星期数,为每一门课程分配上课星期数的运算次数主要与课程数目有关;第二阶段:分配上课的时段,为一次课分配上课时段所进行判断的次数最坏 为5 次,分配上课时段的运算次数主要和每周上的总课程次数有关。第三阶段: 根据上课星期数和上课时段分配教室;因此该算法主要和问题的规模有关, 即与要排课的课目数、课程的周学时数及教室数目有关。和基于贪心策略、基于随机分配时间片的排课算法进行比较,该算法的运行时间介于二者之间,效率略低于基于贪心策略的排课算法, 比基于随机分配时间片的排课算法效率要高。但该算法在成功排课的数量上,性能比基于贪心策略的算法会略好。 因为分治与贪心相

27、结合的算法中是当有满足条件的资源时,便一定会为其分配。而贪心策略中,可能虽然存在可用资源时仍会遗漏可行解。5 数据库设计5.1系统数据表根据系统需求分析,以及考虑到数据表之间的关联性,系统需要建立7个表,2个视图,其用途说明如下表4.1所示。表5-1 系统数据表数据表名称数据表描述Class保存班级基本信息Hb保存组成各合班的班级号Teacher记录教师信息Classroom记录教室信息Course保存课程信息Lesson_plans保存教学计划R_L存储总课表表5-2系统视图数据表名称数据表描述Lp_view保存需要排课的信息,利于排课RL_view保存教室安排信息,利于查询班级时间及教室时

28、间5.2 UML建模图下图主要是对应实体关系图,经过分析了各实体及其属性,用Microsoft Office Visio 2007画出下图。图5-1 UML建模图5.3数据字典下列表5.2到表5.8给出7个数据表:班级信息表、合班表、教室信息表、教师信息表、课程信息表、教学计划表、总课表的具体描述,包括数据描述、数据名称、数据类型等。表5-3 Course-班级信息表字段名称说明数据类型长度主/外键约束备注Class_id班级编号Char10主键Class_name班级名Char20非空Department专业Char20grade年级Char10number人数Int非空Hb是否合班int非

29、空默认0(否)表5-4 hb-合班表字段名称说明数据类型长度主/外键约束备注Hb_id合班号Char10主键Class_id小班号Char10外键非空表5-5 classroom-教室信息表字段名称说明数据类型长度主/外键约束备注Cr_id教室编号Char10主键Capacity教室容量IntCategory教室类别Char10非空表5-6 Teacher-教师信息表字段名称说明数据类型长度主/外键约束备注T_id教师编号Char10主键T_name教室姓名Char10非空profession职称Char10age年龄IntDepartment所属学院Char10表5-7 Course-课程信

30、息表字段名称说明数据类型长度主/外键约束备注C_id课程号Char10主键C_name课程名Char20非空表5-8 lesson_plans-教学计划表字段名称说明数据类型长度主/外键约束备注Lesson_id课程计划号Char10主键C_id课程号Char10外键非空参照course表中的c_idClass_id班级号Char10外键非空参照class表中class_idT_id教师编号Char10外键非空参照Teacher表中t_idC_nature课程性质Char10W_jieci周节次Int非空Z_jieci总节次IntPaike是否排课Int默认为0(未排课)Category教室性

31、质Char10Qz权重Int 自动计算表5-9 R_L-总课表字段名称说明数据类型长度主/外键约束备注Kc_id排课标号自动编号主键Week星期Char10非空Jieci节次Char10非空Cr_id教室编号Char10外键非空参照classroom表Lesson_id教学计划号Char10外键非空参照lesson_plans表Available时间可用Int非空Dsz单双周标记Char105.4数据库关系图图5-2 系统数据库关系图6 详细设计与实现6.1数据库访问模块该模块中包含数据库连接、查询、插入、和更新。本系统将数据库操作做成一个公共模块,实现代码的重用。建立数据库连接对象Publi

32、c objSqlConnection As SqlConnection = New SqlConnection(data source=(local);initial catalog=智能排课; & integrated security=SSPI;user id=sa;password=123)数据查询方法,返回dataset类型。 Public Function GetDataFromDB(ByVal sqlstr As String) As DataSet objDataSet = New DataSet() objDataSet.Clear() Try objSqlConnection

33、.Open() objDataAdpter = New SqlDataAdapter(sqlstr, objSqlConnection) objDataAdpter.Fill(objDataSet) objSqlConnection.Close() Catch ex As Exception MsgBox(错误号: & Err.Number & 错误描述: & Err.Description) End Try Return objDataSet objDataSet = NothingEnd Function数据更新方法,返回boolean型 Public Function UpdateDat

34、a(ByVal sqlstr As String) As Boolean Dim objCommand As SqlCommand = New SqlCommand() Try objSqlConnection.Open() objCommand.Connection = objSqlConnection objCommand.CommandText = sqlstr objCommand.CommandType = CommandType.Text objCommand.ExecuteNonQuery() objSqlConnection.Close() Catch ex As Except

35、ion MsgBox(错误号: & Err.Number & 错误描述: & Err.Description) Return False End Try Return TrueEnd Function数据插入方法,返回boolean型 Public Function InsertData(ByVal sqlstr As String) As Boolean Dim objCommand As SqlCommand = New SqlCommand() Try objSqlConnection.Open() objCommand.Connection = objSqlConnection obj

36、Command.CommandText = sqlstr objCommand.CommandType = CommandType.Text objCommand.ExecuteNonQuery() objSqlConnection.Close() Catch ex As Exception MsgBox(错误号: & Err.Number & 错误描述: & Err.Description) Return False End Try Return True End Function 数据删除方法,返回boolean型Public Function DeleteData(ByVal sqlst

37、r As String) As Boolean Dim objCommand As SqlCommand = New SqlCommand() Try objSqlConnection.Open() objCommand.Connection = objSqlConnection objCommand.CommandText = sqlstr objCommand.CommandType = CommandType.Text objCommand.ExecuteNonQuery() objSqlConnection.Close() Catch ex As Exception MsgBox(错误

38、号: & Err.Number & 错误描述: & Err.Description) Return False End Try Return True End Function6.2条件设置模块图6-1 班级信息管理运行界面图6-2 插入班级信息运行界面添加合班的代码:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, number As Integer Dim grade As String Dim myds As

39、DataSet number = 0 grade = null sqlstr = insert into class(class_id,class_name,department,hb) values( & TextBox1.Text & , & TextBox2.Text & , & TextBox3.Text & ,1) InsertData(sqlstr) For i = 0 To ListBox1.Items.Count - 1 sqlstr = select * from class where class_name= & ListBox1.Items.Item(i) & myds

40、= GetDataFromDB(sqlstr) number = myds.Tables(0).Rows(0)(number) + number grade = myds.Tables(0).Rows(0)(grade) sqlstr = insert into hb(hb_id,class_id) values( & TextBox1.Text & , & myds.Tables(0).Rows(0)(class_id) & ) InsertData(sqlstr) Next sqlstr = update class set grade= & grade & , number= & num

41、ber & where class_id= & TextBox1.Text & UpdateData(sqlstr) MessageBox.Show(插入合班成功) bj_form.智能排课DataSet._Class.Clear() bj_form.ClassTableAdapter.Fill(bj_form.智能排课DataSet._Class) Me.Close() End Sub删除班级程序代码:Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bu

42、tton5.Click Dim delete As String = DataGridView1.SelectedCells(0).Value.ToString Dim hb As Integer = DataGridView1.SelectedCells(4).Value sqlstr = select * from lesson_plans where class_id= & delete & If GetDataFromDB(sqlstr).Tables(0).Rows.Count 0 Then MessageBox.Show(该班已安排课程,请先删除教学计划) Else If hb =

43、 0 Then sqlstr = delete from class where class_id= & delete & DeleteData(sqlstr) MessageBox.Show(删除成功) Else sqlstr = delete from hb where hb_id= & delete & DeleteData(sqlstr) sqlstr = delete from class where class_id= & delete & DeleteData(sqlstr) MessageBox.Show(删除成功) End If Me.智能排课DataSet._Class.C

44、lear() Me.ClassTableAdapter.Fill(Me.智能排课DataSet._Class) End If End Sub条件设置中其他三个功能,课程管理、教室管理、教师管理与班级管理类似,限于篇幅,在此不再叙述。6.3教学计划模块图6-3教学计划管理模块删除教学计划代码:Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim delete As String = DataGridView1.SelectedC

45、ells(0).Value.ToString sqlstr = select * from rl_view where cr_id= & delete & If GetDataFromDB(sqlstr).Tables(0).Rows.Count 0 Then MessageBox.Show(该教学计划已安排,请先删除课表中涉及该教学计划的课程) Else sqlstr = delete from lesson_plans where lesson_id= & delete & DeleteData(sqlstr) MessageBox.Show(删除成功) Me.智能排课DataSet.Le

46、sson_plans.Clear() Me.Lesson_plansTableAdapter.Fill(Me.智能排课DataSet.Lesson_plans) End If End Sub6.4排课模块智能排课模块程序代码:排课方法,返回boolean型 Public Function ArrangeLesson() As Boolean 初始化及预排序,返回资源是否够分 Test = InitQZ() If Test = False Then Return False End If sqlstr = delete from R_l DeleteData(sqlstr) sqlstr = u

47、pdate lesson_plans set paike=0 UpdateData(sqlstr) sqlstr = select * from lp_view order by qz desc myds = GetDataFromDB(sqlstr) For i = 0 To myds.Tables(0).Rows.Count - 1 给出最合适的星期 addkc = 1 myRow = myds.Tables(0).Rows(i) Test = ArrangeWeek(myRow) If Test = False Then Return False End If 安排节次 Test = A

48、rrangeJieci(myRow, week) If Test = False Then Test = AdjustLesson(myRow) If Test = False Then Return False End If End If ArrangeCRoom(myRow, week) If myRow(w_jieci) = 4 Then Test = ArrangeJieci(myRow, week1) If Test = False Then Test = AdjustLesson(myRow, week) If Test = False Then Return False End

49、If End If Test = ArrangeCRoom(myRow, week1) If Test = False Then Return False End If ElseIf myRow(w_jieci) = 3 Then Test = ArrangeDSZ(myRow) If Test = False Then AdjustLesson(myRow, week1) Test = ArrangeCRoomDSZ(myRow, week1) End If End If sqlstr = update lesson_plans set paike=1 where lesson_id= &

50、myRow(lesson_id) & UpdateData(sqlstr) Next Return True End Function 以下方法是初始化及预排序,返回资源是否够分 Public Function InitQZ() As Boolean Dim qz, number As Integer Dim category, c_nature As String Dim Initds As DataSet sqlstr = update LP_view set qz=0 UpdateData(sqlstr) sqlstr = select * from LP_view Initds = G

51、etDataFromDB(sqlstr) 初始化权重 For i = 0 To Initds.Tables(0).Rows.Count - 1 qz = 0 myRow = Initds.Tables(0).Rows(i) 按周节次降序 If myRow(w_jieci) = 4 Then qz = qz + 2 ElseIf myRow(w_jieci) = 3 Then qz = qz + 1 End If 按所需教室类型降序 category = myRow(category) If category.Trim = 多媒体 Then qz = qz + 60 ElseIf categor

52、y.Trim = 普通教室 Then qz = qz + 50 ElseIf category.Trim = 运动场 Then qz = qz + 40 ElseIf category.Trim = 计算机实验室 Then qz = qz + 30 ElseIf category.Trim = 语音室 Then qz = qz + 20 ElseIf category.Trim = 物理实验室 Then qz = qz + 10 End If 按人数降序 number = myRow(number) If number 60 Then qz = qz + 3000 ElseIf number 120 Then qz = qz + 2000 ElseIf number 140 Then qz = qz + 1000 Else 特大班先排,如体育这些课 qz = qz + 10000 End If 按课程性质降序 c_nature = myRow(c_nature) If c_nature.Trim = 专业基础课 Then qz = qz + 500 ElseIf c_nature.Trim = 专业公共课 Then qz = qz + 400 ElseIf c_nature.Trim = 专业限选课 Then

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!