摘要排课,是给学校各专业的教学计划中设置的课程安排合适的时间和地点,也就是给每个班的课程安排时间和地点。排课工作在教学管理中很重要也很繁琐,计算机智能排课系统,可以降低排课人员的工作量,减少排课中的人为因素[1-2]。但排课问题属于NP问题,即无法直接得到答案,只能通过猜测获取可能结果。通常NP问题虽无答案,却有算法,算法不能直接告诉答案,但可以用来判断可能的结果是否正确可行。因此,要做好排课工作,提高排课效率,实现智能排课是必不可少的。
本文在查阅大量相关文献的基础上,对高校的排课问题进行了分析,设计和实现了该功能,此系统主要被分为三个部分:界面的设计、排课算法的设计、以及报表的自动生成。本系统是采用MicrosoftVisualStudio2005作为前台开发工具,SQLServer2005作为后台数据库平台的管理系统。
关键词:智能排课、贪心、分治、VisualStudio2005、SQLServer2005。
智能排课系统的设计与实现
目摘
录要..............................................................................................................................I
ABSTRACT......................................................................................错误!未定义书签。1
绪论............................................................................................................................11.1系统开发背景......................................................................................................11.2系统开发环境及方法.........................................................................................1
1.2.1.开发环境.....................................................................................................11.2.2开发方法.......................................................................................................32可行性分析..................................................................................................................42.1技术可行性..........................................................................................................42.2经济可行性..........................................................................................................42.3操作可行性..........................................................................................................52.4法律可行性..........................................................................................................53系统需求分析.............................................................................................................63.1系统功能需求......................................................................................................63.2系统非功能需求..................................................................................................6
3.2.1排课中的基本原则.....................................................................................63.2.2排课的基本要求..........................................................................................74总体设计......................................................................................................................84.1系统总体构架......................................................................................................84.2系统功能结构......................................................................................................84.3排课算法...............................................................................................................9
4.3.1目前常用算法..............................................................................................94.3.2排课问题描述...........................................................................................104.3.3排课问题的数学表示..............................................................................114.3.4排课问题的优先级问题...........................................................................11
II智能排课系统的设计与实现
4.3.5算法思想....................................................................................................124.3.6算法分析...................................................................................................135数据库设计................................................................................................................145.1系统数据表........................................................................................................145.2UML建模图........................................................................................................145.3数据字典.............................................................................................................155.4数据库关系图....................................................................................................186详细设计与实现.......................................................................................................196.1数据库访问模块................................................................................................196.2条件设置模块....................................................................................................226.3教学计划模块....................................................................................................256.4排课模块.............................................................................................................266.5课程表查询模块................................................................................................44结束语..........................................................................................错误!未定义书签。致谢..............................................................................................错误!未定义书签。参考文献........................................................................................................................46
III智能排课系统的设计与实现
1绪论
1.1系统开发背景
在高校各项教学管理工作中,排课一直是最基本的、最重要的工作,其实质就是给教学计划中设置的课程安排合适的时问和地点,保证整个教学工作能够顺利地进行;同时,排课工作也是一项很复杂的工作,排课是一个NP问题,就是始终找不到一个最优的方法能够解决的问题,因为这个问题涉及了多种因素进行组合规划,有教师、学生的因素,也有教室的因素。尤其在目前各高校规模不断扩大,教学资源面临紧张,教师总数不足的前提下,排课工作问题更为凸出。
随着计算机技术的飞速发展,特别是计算机的应用已普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,利用计算机实现高校排课系统势在必行。对于各大高校来说,利用计算机支持学校管理员排课,是适应现代学校的制度要求、推动学校管理走向科学化、系统化、规范化的必要条件,从而达到提高校管理效率的目的。给同学和老师带来方便。
1.2系统开发环境及方法
1.2.1.开发环境
在计算机硬件和软件快速发展的今天,计算机硬件和软件已经远远满足本管理系统的要求。在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高了编程效率。选用MicrosoftVisualStudio2005中文版数据库开发的应用程序可以运行于windows平台,而且SQLServer2005产生的数据库适用范围广,因此本系统采用MicrosoftVisualStudio2005中文版来完成高校排课系统的设计。
1智能排课系统的设计与实现
VisualStudio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。2005年,微软发布了VisualStudio2005。.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的VisualStudio包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的VisualStudioExpress版本。
使用VisualStudio2005,专业开发人员能够:
(1)使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境;
(2)在统一的开发环境中,开发并调试多层次的服务器应用程序;(3)使用集成的可视化数据库设计和报告工具,创建SQLServer2005解决方案;
(4)使用VisualStudioSDK创建可以扩展VisualStudioIDE的工具
[6-8]
。
VB2005是visualStudio2005中最重要的组件之一,是新一代的VB,但它并不是VB.NET2003的简单升级,从开发界面到控件,VB2005与VB.NET2003之间还是有比较大的区别[6]。
新一版SQLServer的设计目标正是帮助企业单位应对上述挑战。作为Microsoft公司的下一代数据管理与分析软件,SQLServer2005有助于简化企业数据与分析应用的创建、部署和管理,并在解决方案伸缩性、可用性和安全性方面实现重大改进。
基于SQLServer2000技术优势构建的SQLServer2005将提供集成化信息管理解决方案,可帮助任何规模的组织机构:
(1)创建并部署更具伸缩性、可靠性和安全性的企业级应用。
(2)降低数据库应用创建、部署与管理的复杂程度,进而实现IT效率最大化。
(3)凭借可供创建更具安全保障之数据库应用的丰富、灵活、现代化开发环境增强开发人员工作效能。
(4)跨越多种平台、应用和设备实现数据共享,进而简化内部系统与外部系统连接。
2智能排课系统的设计与实现
(5)实现功能强劲的集成化商务智能解决方案,从而在整个企业范围内推进科学决策,提高工作效率。
(6)在不必牺牲性能表现、可用性或伸缩性的前提下控制成本费用水平[9-10]。1.2.2开发方法
以各高校的排课需求为应用背景,开发一个典型的高校智能排课系统。考虑实际情况,本系统将采用结构化生命周期法进行系统分析和设计,并采用原型法进行系统实施。
图1-1原型法生命周期图原型法的基本思想是在投入大量的人力,物力之前,在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善,直到完全满足用户的需求为止。这样能有效避免盲目开发问题,同时能充分的发挥原型法的优势,能顺利实现系统的实施[4-5]。
3智能排课系统的设计与实现
2可行性分析
2.1技术可行性
该系统对软、硬件系统要求较低,所需硬件设备,市场上销售且价格较低,甚至可以使用原有的设备。软件上,操作系统采用Windows系列操作系统、MicrosoftVisualStudio2005作为前台开发工具,它具有的“编辑后继续运行(editandcontinue)”的特性,超越了旧的编辑—编译—测试模式。它还引入了面向对象的程序设计思想和“控件”概念,使得大量已经编好的VisualBasic程序可以直接拿来使用。同时,VisualBasic又是最容易学习与应用的程序语言之一。它的功能非常强大,已成为一种专业化的开发语言和环境。采用SQLServer2005作为后台数据库平台的管理系统,它在电子商务、数据仓库和数据库解决方案等应用中起着核心作用,可为企业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性、数据的安全性以及数据的可靠易用性等等。这些软件在高校排课系统开发中已被大量应用,技术上都比较成熟。因此在技术上是可行的。
2.2经济可行性
当今学校内部没有完善的高校排课系统,管理水平差,学校课程不能得到合理分配。迫切需要提高现代化管理水平、管理质量和管理高校课程。高校排课系统的初步现代化的开发和使用,能够大大提高学校管理者的工作效率,节省成本提高经济效益。它把从事教务管理的人员从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它重要的活动中去,从而达到节省人力、物力,财力的目标;它能使决策、计划和其它管理活动更加科学、精确、灵活。因此,开发一个专门针对高校排课系统,在经济上也是可行的。
4智能排课系统的设计与实现
2.3操作可行性
本系统灵活方便,快捷迅速,适应处理多项数据。采用友好、直观的视窗界面,鼠标、键盘两种操作方式任意选择,方便快捷。界面统一规范,提示信息功能完整,稍一接触就可以上手进行所有操作。
2.4法律可行性
本系统纯为个人设计,在开发过程中没有涉及合同、责任、版权等与国家相关法律规定相抵触的方面。因此,本系统在法律上是可行的。
5智能排课系统的设计与实现
3系统需求分析
3.1系统功能需求
智能排课系统需要实现对学校教师、教室、班级、及课程的信息管理,对高校排课,都有智能的管理,主要实现如下的一些功能:
班级各种信息的输入,包括班级号,班级名称,年级,班级人数,是否合班。教师各种信息的输入,包括教师号,教师姓名,职称,联系方式。学校课程的增加,删除,修改。学校课程计划的制定。
学校的自定义排课,根据需要,人工排课。学校的智能排课,根据需要,随机智能排课。有一些相关的提示。
课表查课界面,根据不同条件,查看课程安排。
3.2系统非功能需求
3.2.1排课中的基本原则
在课程的编排中应遵循一定的规则,只有按照基本规则来进行课程的编排才能够减少冲突的发生,这些基本规则主要有以下几条:
1)同一班级的学生在同一时间(某些特定的选修课时间除外)不能安排两门课程2)同一教师在同一时间不能安排两门课程3)同一教室在同一时间不能安排两门课程
4)同一时间安排的课程总数不能大于所能提供的教室总数5)某一课程参加学习的总人数不应大于所安排教室的座位数6)所提供教室的属性与课程所需教室的属性一致
6智能排课系统的设计与实现
在时间、教师、班级、教室、课程这五维关系中,时间、教师、班级三者之间存在着紧密关系。相对而言,教室与它们关系就不那么密切。3.2.2排课的基本要求
课程的安排不是任意的,为了达到最好的教学效果应遵循一定的要求。这些要求主要有:
1)要尽量为所排课程安排上该类课效果最好的时间2)课程在一周上多次时,要有一定的间隔性3)公共课等涉及面广、学时多的课程应优先处理
4)对同一教师,同一上课对象应尽量选择相对固定的几个教室5)对同一个班级的课程应选择相对固定的教室6)连着的课的教室选择不应相隔太远7)同一天有几门课时尽量把课分散
8)优先满足一些特殊要求(比如有些教室喜欢上上午的课,可以优先满足)
7智能排课系统的设计与实现
4总体设计
4.1系统总体构架
本系统采用客户/服务器(Client/Server)模式。又叫主从式架构,简称C/S结构,是一种网络架构,它把客户端(Client)(通常是一个采用图形用户界面的程序)与服务器(Server)区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
服务器客户机...客户机客户机. ..客户机图4-1系统体系结构图C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销对应的优点就是客户端响应速度快。
4.2系统功能结构
高校排课系统可以用于支持各高校完成高校排课的难题,有如下几个个方面的目标:支持各高校输入班级信息;支持各高校输入教师信息,班级教师的增删改等方面。支持输入教室,还有自定义排课和智能排课以及课表查询。
8智能排课系统的设计与实现
系统分为四大模块:条件设置、课程计划、排课管理、课表查询、系统管理。
图4-2功能模块图具体设计目标如下:
(1)界面友好,操作简单,帮您轻松上手。
(2)系统具有灵活、严格的权限设定功能,采用非常周密有效的权限设置,确保高校各类资料的可靠性和保密性,防止错误和违规操作。系统管理:可修改管理员权限及密码。
(3)高校排课系统,资料详细周到,同窗多页的界面方式让你轻松完成所有工作。
(4)友善的登录界面,包括学生登录,教师登录,和管理员登陆,根据身份不同,进入的界面也
4.3排课算法
4.3.1目前常用算法
目前,解决排课问题常用的方法有:着色算法
[11]
,通过研究时间资源库的形
成策略,分析基于时间资源的排课算法[12]。基于分层分治、贪心算法的排课系统的设计与实现[13],基于图论方法的自动优化排课模型研究[14],基于资源受限的非线性约束多目标排课模型及算法[15],整数规划解决排课问题[16],基于遗传禁忌算
9智能排课系统的设计与实现
法结合解决排课问题
[17]
等。这些方法虽然提高了搜索效率,但由于高校普遍存在
课程量大,教室、教师资源紧张,排课约束条件多且条件经常变化等问题,排课算法的应用仍然受到很大[19]。4.3.2排课问题描述
4.3.2.1排课问题的约束条件
排课即要满足一定的硬约束条件来协调处理教师、教室、学生、时间之间的冲突,同时还要尽可能满足一些软约束条件,从而使排出的课表更加合理,满足人性化需求。硬约束条件要求系统必须满足的条件,而软约束条件是在满足硬约束条件以后要考虑的约束条件,软约束条件不要求系统必须满足,但满足这些条件能得到较优解。常用的硬约束条件有:
(1)所有的课程都必须被安排;
(2)除合班课外,同一时间,一个教室只能被一个班级占用;(3)除选修课外,同一时间,一个班级只能安排一门课程;(4)同一时间,一个教师只能在一个教室上课;(5)同一个教师所上的不同课程不能发生在同一时间;(6)两门课程不能在同一个时间安排在同一个教室;(7)教室的类型必须与课程要求一致;
(8)教室的最大容纳人数必须大于等于在该教室上课的学生人数等;(9)不同课程时间段不同,如体育课只能在白天且不安排在第一节,选修课不能安排在早上等。常用的软约束条件有:
(1)同一门课程的上课时间尽量间隔均匀。例如某课程周学时为4学时,以2学时为一个教学单位,需安排两次。两次的安排时间尽量间隔一天或者一天以上;
(2)每个学生的课程均匀的分布在工作日中;
(3)学生的上课时间要尽量选择在较好的上课时间段;
(4)对班级、教室、教师的单双周上课时间点尽量匹配,以节约教学资源;
10智能排课系统的设计与实现
4.3.3排课问题的数学表示
如果用C表示课程、S表示班级、N表示时间、R表示教室,T表示教师,排课问题的目标就是找出满足约束条件的(C,S,N,R,T)组合。并且,这五种元素之间存在一定的对应关系:
①C与S之间的对应关系,即每个班级有其特定要上的课程;②C与T之间的对应关系,即每门课程有一定的任课教师;
③(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)优先级要考虑的因素有:
①(S,C,T)中课程C的类别,对于不同类别的课程,给它们设定相应的优先值,本算法中针对课程类别的优先级设定如下:专业基础课、公共基础课、专业限选课、专业选修课、公选课优先级别依次降低,其中专业基础课级别最高,公选课级别最低;
②(S,C,T)中课程C在一周内要上的次数。即一门课程周学时越多,优先级越高;
③(S,C,T)中班级S所需要上的课程总数的大小。即学生每周要上的课程总数越多,优先级越高;
④(S,C,T)中学生S中的人数的大小。
最后根据各个因素的重要性不同,给每个因素设置一定的权重系数p[0]、p[1]、p[2]、p[3],最后求四种因素的带权累加和,即得到一个(S,C,T)的优先级,每次按照(S,C,T)的优先级的降序次序来分配时空片。
11智能排课系统的设计与实现
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)最后分配上课的教室。同时在每一阶段的分配过程中,都要对资源总数和使用状况作统计和记录,从而防止不计后果的资源滥用。算法主要步骤如下:
Step1:初始化。
Step1.1:初始化,将所有教室按类型划分,并在每一类型中按教室容量统计可用教室资源的数目。例如,可将教室划分为:普通教室、多媒体教室、语音室、物理实验室、机房等。然后按教室可容纳人数分为0-60人、60-120人、120-140人这4个不同等级。然后统计记录每一类型不同容量范围的可用教室资源数目。
Step1.2:预排序,将待排的所有课程先按周学时降序排列,然后再将待排的所有课程先按所需教室类型升序排列,再按所需教室容量降序分配,即先为上课人数多的课程分配教室,防止较小的班级占用大教室,最后再将所有需要使用同一类型和容量教室的课程按优先级降序排序。
Step2:分配上课的星期数。按照排序后的次序,再参照剩余的可用资源记录来分配每组(S,C,T)在一周内要上课的星期数。同时参考总课表,使得班级和教师的上课时间在一周内尽可能均匀分布。
Step3:分配某天内上课的时间段。
Step3.1对每种类型和大小的教室资源按其在一周内的某一天的5个时段的分配情况作统计。
Step3.2在分配时间段的时候,从第一个时段到第5个时段依次查看是否还有剩余资源,若有,则为其分配相应的是时间段,否则看能否将某个已被占用的
12智能排课系统的设计与实现
时间段调整后再为其分配。分配的过程中要参照总课表,防止时间冲突。
Step3.3若有不能分配的,查找与其相关的已经分配了时间段的课程,并看看能否重新为它分配时间段,从而将原来的时间段让给不能成功找到时间段的那个课程使用。
Step4:分配上课的教室:根据每一课程要求的上课时间和教室类型及大小为其分配教室。对于每个已经分配了星期数和时间段的课程,一般来说,都是找得到可用教室的,因为在前两个分配阶段中,是严格按照资源剩余状况来进行分配的。同时在分配上课所用的教室时,也考虑到单双周情况,以便充分利用教室资源。
4.3.6算法分析
基于分治贪心相结合的排课算法主要分为3个阶段:即分配上课星期数、分配上课时间段、分配上课的教室。这里对算法的时间复杂度进行分析。
第一阶段:分配上课星期数,为每一门课程分配上课星期数的运算次数主要与课程数目有关;
第二阶段:分配上课的时段,为一次课分配上课时段所进行判断的次数最坏为5次,分配上课时段的运算次数主要和每周上的总课程次数有关。
第三阶段:根据上课星期数和上课时段分配教室;
因此该算法主要和问题的规模有关,即与要排课的课目数、课程的周学时数及教室数目有关。和基于贪心策略、基于随机分配时间片的排课算法进行比较,该算法的运行时间介于二者之间,效率略低于基于贪心策略的排课算法,比基于随机分配时间片的排课算法效率要高。但该算法在成功排课的数量上,性能比基于贪心策略的算法会略好。因为分治与贪心相结合的算法中是当有满足条件的资源时,便一定会为其分配。而贪心策略中,可能虽然存在可用资源时仍会遗漏可行解。
13智能排课系统的设计与实现
5数据库设计
5.1系统数据表
根据系统需求分析,以及考虑到数据表之间的关联性,系统需要建立7个表,2个视图,其用途说明如下表4.1所示。表5-1系统数据表数据表名称ClassHbTeacherClassroomCourseLesson_plansR_L表5-2系统视图数据表名称Lp_viewRL_view数据表描述保存需要排课的信息,利于排课保存教室安排信息,利于查询班级时间及教室时间数据表描述保存班级基本信息保存组成各合班的班级号记录教师信息记录教室信息保存课程信息保存教学计划存储总课表5.2UML建模图
下图主要是对应实体关系图,经过分析了各实体及其属性,用MicrosoftOfficeVisio2007画出下图。
14智能排课系统的设计与实现
图5-1UML建模图5.3数据字典
下列表5.2到表5.8给出7个数据表:班级信息表、合班表、教室信息表、教师信息表、课程信息表、教学计划表、总课表的具体描述,包括数据描述、数据名称、数据类型等。
表5-3Course-班级信息表字段名称Class_idClass_name说明班级编号班级名数据类型CharChar长度102015主/外键主键约束备注非空智能排课系统的设计与实现
DepartmentgradenumberHb专业年级人数是否合班CharCharIntint2010非空非空默认0(否)表5-4hb-合班表字段名称Hb_idClass_id说明合班号小班号数据类型CharChar长度1010主/外键主键外键非空约束备注表5-5classroom-教室信息表说明教室编号教室容量教室类别数据类型CharIntChar10非空长度10主/外键主键约束备注字段名称Cr_idCapacityCategory表5-6Teacher-教师信息表字段名称T_idT_nameprofessionageDepartment说明数据类型CharCharCharIntChar10长度101010主/外键主键非空约束备注教师编号教室姓名职称年龄所属学院表5-7Course-课程信息表字段名称C_idC_name说明数据类型CharChar长度1020主/外键主键非空约束备注课程号课程名16智能排课系统的设计与实现
表5-8lesson_plans-教学计划表说明课程计划号课程号班级号教师编号课程性质周节次总节次是否排课教室性质权重数据类型CharCharCharCharCharIntIntIntCharInt10自动计算默认为0(未排课)长度1010101010非空主/外键主键外键外键外键非空非空非空参照course表中的c_id参照class表中class_id参照Teacher表中t_id约束备注字段名称Lesson_idC_idClass_idT_idC_natureW_jieciZ_jieciPaikeCategoryQz表5-9R_L-总课表说明排课标号星期节次教室编号教学计划号时间可用单双周标记数据类型自动编号CharCharCharCharIntChar1010101010外键外键长度主/外主键非空非空非空非空非空参照classroom表参照lesson_plans表约束备注字段名称Kc_idWeekJieciCr_idLesson_idAvailableDsz17智能排课系统的设计与实现
5.4数据库关系图
R_Lkc_idjiecijcr_idweekwavailablelesson_iddszClassroomcr_idcapacitycategoryhbhb_idclass_idLesson_planslesson_idc_idclass_idt_idc_naturew_jieciz_jieciqzpaikecategoryCoursec_idc_nameClassclass_idclass_namedepartmentgradenumberhbTeachert_idt_nameprofessionagedepartment图5-2系统数据库关系图18智能排课系统的设计与实现
6详细设计与实现
6.1数据库访问模块
该模块中包含数据库连接、查询、插入、和更新。本系统将数据库操作做成一个公共模块,实现代码的重用。
建立数据库连接对象
PublicobjSqlConnectionAsSqlConnection=NewSqlConnection(\"datasource=(local);initialcatalog=智能排课;\"&\"integratedsecurity=SSPI;userid=sa;password=123\")数据查询方法,返回dataset类型。
PublicFunctionGetDataFromDB(ByValsqlstrAsString)AsDataSetobjDataSet=NewDataSet()objDataSet.Clear()TryobjSqlConnection.Open()objDataAdpter=NewSqlDataAdapter(sqlstr,objSqlConnection)objDataAdpter.Fill(objDataSet)objSqlConnection.Close()CatchexAsExceptionMsgBox(\"错误号:\"&Err.Number&\"错误描述:\"&Err.Description)EndTryReturnobjDataSetobjDataSet=NothingEndFunction数据更新方法,返回boolean型
PublicFunctionUpdateData(ByValsqlstrAsString)AsBooleanDimobjCommandAsSqlCommand=NewSqlCommand()Try19智能排课系统的设计与实现
objSqlConnection.Open()objCommand.Connection=objSqlConnectionobjCommand.CommandText=sqlstrobjCommand.CommandType=CommandType.TextobjCommand.ExecuteNonQuery()objSqlConnection.Close()CatchexAsExceptionMsgBox(\"错误号:\"&Err.Number&\"错误描述:\"&Err.Description)ReturnFalseEndTryReturnTrueEndFunction数据插入方法,返回boolean型
PublicFunctionInsertData(ByValsqlstrAsString)AsBooleanDimobjCommandAsSqlCommand=NewSqlCommand()TryobjSqlConnection.Open()objCommand.Connection=objSqlConnectionobjCommand.CommandText=sqlstrobjCommand.CommandType=CommandType.TextobjCommand.ExecuteNonQuery()objSqlConnection.Close()CatchexAsExceptionMsgBox(\"错误号:\"&Err.Number&\"错误描述:\"&Err.Description)ReturnFalseEndTryReturnTrueEndFunction数据删除方法,返回boolean型
PublicFunctionDeleteData(ByValsqlstrAsString)AsBoolean20智能排课系统的设计与实现
DimobjCommandAsSqlCommand=NewSqlCommand()TryobjSqlConnection.Open()objCommand.Connection=objSqlConnectionobjCommand.CommandText=sqlstrobjCommand.CommandType=CommandType.TextobjCommand.ExecuteNonQuery()objSqlConnection.Close()CatchexAsExceptionMsgBox(\"错误号:\"&Err.Number&\"错误描述:ReturnFalseEndTryReturnTrueEndFunction21\"&Err.Description)智能排课系统的设计与实现
6.2条件设置模块
图6-1班级信息管理运行界面22智能排课系统的设计与实现
图6-2插入班级信息运行界面添加合班的代码:
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimi,numberAsIntegerDimgradeAsStringDimmydsAsDataSetnumber=0grade=\"null\"sqlstr=\"insertintoclass(class_id,class_name,department,hb)values('\"&TextBox1.Text&\"','\"&TextBox2.Text&\"','\"&TextBox3.Text&\"','1')\"InsertData(sqlstr)Fori=0ToListBox1.Items.Count-1sqlstr=\"select*fromclasswhereclass_name='\"&ListBox1.Items.Item(i)&\"'\"23智能排课系统的设计与实现
myds=GetDataFromDB(sqlstr)number=myds.Tables(0).Rows(0)(\"number\")+numbergrade=myds.Tables(0).Rows(0)(\"grade\")sqlstr=\"insertintohb(hb_id,class_id)values('\"&TextBox1.Text&\"','\"&myds.Tables(0).Rows(0)(\"class_id\")&\"')\"InsertData(sqlstr)Nextsqlstr=\"updateclasssetgrade='\"&grade&\"',number='\"&number&\"'whereclass_id='\"&TextBox1.Text&\"'\"UpdateData(sqlstr)MessageBox.Show(\"插入合班成功\")bj_form.智能排课DataSet._Class.Clear()bj_form.ClassTableAdapter.Fill(bj_form.智能排课DataSet._Class)Me.Close()EndSub删除班级程序代码:
PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.ClickDimdeleteAsString=DataGridView1.SelectedCells(0).Value.ToStringDimhbAsInteger=DataGridView1.SelectedCells(4).Valuesqlstr=\"select*fromlesson_planswhereclass_id='\"&delete&\"'\"IfGetDataFromDB(sqlstr).Tables(0).Rows.Count>0ThenMessageBox.Show(\"该班已安排课程,请先删除教学计划\")ElseIfhb=0Thensqlstr=\"deletefromclasswhereclass_id='\"&delete&\"'\"DeleteData(sqlstr)MessageBox.Show(\"删除成功\")Elsesqlstr=\"deletefromhbwherehb_id='\"&delete&\"'\"24智能排课系统的设计与实现
DeleteData(sqlstr)sqlstr=\"deletefromclasswhereclass_id='\"&delete&\"'\"DeleteData(sqlstr)MessageBox.Show(\"删除成功\")EndIfMe.智能排课DataSet._Class.Clear()Me.ClassTableAdapter.Fill(Me.智能排课DataSet._Class)EndIfEndSub条件设置中其他三个功能,课程管理、教室管理、教师管理与班级管理类似,限于篇幅,在此不再叙述。
6.3教学计划模块
图6-3教学计划管理模块25智能排课系统的设计与实现
删除教学计划代码:
PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.ClickDimdeleteAsString=DataGridView1.SelectedCells(0).Value.ToStringsqlstr=\"select*fromrl_viewwherecr_id='\"&delete&\"'\"IfGetDataFromDB(sqlstr).Tables(0).Rows.Count>0ThenMessageBox.Show(\"该教学计划已安排,请先删除课表中涉及该教学计划的课程\")Elsesqlstr=\"deletefromlesson_planswherelesson_id='\"&delete&\"'\"DeleteData(sqlstr)MessageBox.Show(\"删除成功\")Me.智能排课DataSet.Lesson_plans.Clear()Me.Lesson_plansTableAdapter.Fill(Me.智能排课DataSet.Lesson_plans)EndIfEndSub6.4排课模块
智能排课模块程序代码:排课方法,返回boolean型
PublicFunctionArrangeLesson()AsBoolean'初始化及预排序,返回资源是否够分Test=InitQZ()IfTest=FalseThenReturnFalseEndIfsqlstr=\"deletefromR_l\"DeleteData(sqlstr)sqlstr=\"updatelesson_planssetpaike=0\"UpdateData(sqlstr)26智能排课系统的设计与实现
sqlstr=\"select*fromlp_vieworderbyqzdesc\"myds=GetDataFromDB(sqlstr)Fori=0Tomyds.Tables(0).Rows.Count-1'给出最合适的星期addkc=1myRow=myds.Tables(0).Rows(i)Test=ArrangeWeek(myRow)IfTest=FalseThenReturnFalseEndIf'安排节次Test=ArrangeJieci(myRow,week)IfTest=FalseThenTest=AdjustLesson(myRow)IfTest=FalseThenReturnFalseEndIfEndIfArrangeCRoom(myRow,week)IfmyRow(\"w_jieci\")=4ThenTest=ArrangeJieci(myRow,week1)IfTest=FalseThenTest=AdjustLesson(myRow,week)IfTest=FalseThenReturnFalseEndIfEndIfTest=ArrangeCRoom(myRow,week1)IfTest=FalseThenReturnFalse27智能排课系统的设计与实现
EndIfElseIfmyRow(\"w_jieci\")=3ThenTest=ArrangeDSZ(myRow)IfTest=FalseThenAdjustLesson(myRow,week1)Test=ArrangeCRoomDSZ(myRow,week1)EndIfEndIfsqlstr=\"updatelesson_planssetpaike=1wherelesson_id='\"&myRow(\"lesson_id\")&\"'\"UpdateData(sqlstr)NextReturnTrueEndFunction以下方法是初始化及预排序,返回资源是否够分
PublicFunctionInitQZ()AsBooleanDimqz,numberAsIntegerDimcategory,c_natureAsStringDimInitdsAsDataSetsqlstr=\"updateLP_viewsetqz=0\"UpdateData(sqlstr)sqlstr=\"select*fromLP_view\"Initds=GetDataFromDB(sqlstr)'初始化权重Fori=0ToInitds.Tables(0).Rows.Count-1qz=0myRow=Initds.Tables(0).Rows(i)'按周节次降序IfmyRow(\"w_jieci\")=4Thenqz=qz+228智能排课系统的设计与实现
ElseIfmyRow(\"w_jieci\")=3Thenqz=qz+1EndIf'按所需教室类型降序category=myRow(\"category\")Ifcategory.Trim=\"多媒体\"Thenqz=qz+60ElseIfcategory.Trim=\"普通教室\"Thenqz=qz+50ElseIfcategory.Trim=\"运动场\"Thenqz=qz+40ElseIfcategory.Trim=\"计算机实验室\"Thenqz=qz+30ElseIfcategory.Trim=\"语音室\"Thenqz=qz+20ElseIfcategory.Trim=\"物理实验室\"Thenqz=qz+10EndIf'按人数降序number=myRow(\"number\")Ifnumber<60Thenqz=qz+3000ElseIfnumber<120Thenqz=qz+2000ElseIfnumber<140Thenqz=qz+1000Else'特大班先排,如体育这些课qz=qz+10000EndIf29智能排课系统的设计与实现
'按课程性质降序c_nature=myRow(\"c_nature\")Ifc_nature.Trim=\"专业基础课\"Thenqz=qz+500ElseIfc_nature.Trim=\"专业公共课\"Thenqz=qz+400ElseIfc_nature.Trim=\"专业限选课\"Thenqz=qz+300ElseIfc_nature.Trim=\"专业任选课\"Thenqz=qz+200ElseIfc_nature.Trim=\"qz=qz+100EndIfsqlstr=\"updatelesson_planssetqz=\"&qz&\"wherelesson_id='\"&myRow(\"lesson_id\")&\"'\"UpdateData(sqlstr)Next'仅检查多媒体资源sqlstr=\"selectcount(*)fromclassroomwherecategory='多媒体'\"Initds=GetDataFromDB(sqlstr)Fori=0To6Forj=0To4dmt(i,j)=Initds.Tables(0).Rows(0)(0)NextNextsqlstr=\"selectsum(w_jieci)fromlp_viewwherecategory='多媒体'\"Initds=GetDataFromDB(sqlstr)IfInitds.Tables(0).Rows(0)(0)>dmt(0,0)*5*5ThenMessageBox.Show(\"教室不够安排\")ReturnFalse30公共选修课\"Then智能排课系统的设计与实现
EndIfReturnTrueEndFunction以下方法是给出合适的星期,即老师和班级的课程最少的一天,
PublicFunctionArrangeWeek(ByValRowAsDataRow)AsBooleanDimkAsIntegerDimtestds,fbdsAsDataSetDimmysqlstrAsStringFork=0To4weekn(k)=0Next'分班只加上合班每天的上课数IfRow(\"hb\")=0Then'计算本班每天上课数sqlstr=\"selectweek,count(*)ascountfromrl_viewRow(\"class_id\")&\"'groupbyweek\"testds=GetDataFromDB(sqlstr)AddWeek(testds)GetHBWeek(Row)Elsesqlstr=\"selectclass_idfromhbwherehb_id='\"&Row(\"class_id\")&\"'\"testds=GetDataFromDB(sqlstr)mysqlstr=\"selectdistincthb_idfromhbwhereclass_id='\"Fork=0Totestds.Tables(0).Rows.Count-1sqlstr=\"selectweek,count(*)ascountfromrl_viewwhereclass_id='\"&testds.Tables(0).Rows(k)(\"class_id\")&\"'groupbyweek\"fbds=GetDataFromDB(sqlstr)AddWeek(fbds)Ifk IfJ>10ThenReturnFalseEndIfReturnTrueEndFunction以下方法是得到老师每天上课数,用于计算最闲时间 PublicFunctionGetTeacherWeek(ByValrowAsDataRow)AsBooleanDimtdsAsDataSetsqlstr=\"selectweek,count(*)ascountfromRL_viewwheret_id='\"&row(\"t_id\")&\"'groupbyweek\"tds=GetDataFromDB(sqlstr)AddWeek(tds)ReturnTrueEndFunctionPublicFunctionGetHBWeek(ByValrowAsDataRow)AsBooleanDimhbds,testdsAsDataSetDimkAsIntegersqlstr=\"selecthb_idfromhbwhereclass_id='\"&row(\"class_id\")&\"'\"hbds=GetDataFromDB(sqlstr)Fork=0Tohbds.Tables(0).Rows.Count-1sqlstr=\"selectweek,count(*)ascountfromrl_viewwhereclass_id='\"&hbds.Tables(0).Rows(k)(\"hb_id\")&\"'groupbyweek\"testds=GetDataFromDB(sqlstr)AddWeek(testds)NextReturnTrueEndFunction下面的方法是给课程安排适合的节次 PublicFunctionArrangeJieci(ByValrowAsDataRow,ByValwAsString)AsBooleanDimjiecinumberAsInteger33智能排课系统的设计与实现 DimIsRightAsBooleanDimtestdsAsDataSetIfrow(\"c_name\").ToString.TrimLike\"体育\"Thenjiecinumber=2jieci=\"第二节\"ElseIfrow(\"c_nature\").ToString.TrimLike\"选\"Thenjiecinumber=3jieci=\"第三节\"Elsejiecinumber=1jieci=\"第一节\"EndIfIsRight=FalseWhile(IsRight=False)sqlstr=\"select*fromRL_viewwhereclass_id='\"&row(\"class_id\")&\"'andweek='\"&w&\"'andjieci='\"&jieci&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0Thenjiecinumber=jiecinumber+1jieci=NumberToJieci(jiecinumber)Ifrow(\"c_name\").ToString.TrimLike\"体育\"ThenIfjiecinumber>4ThenReturnFalseEndIfElseIfjiecinumber>5ThenReturnFalseEndIfEndIfElse34智能排课系统的设计与实现 sqlstr=\"select*fromRL_viewwheret_id='\"&row(\"t_id\")&\"'andweek='\"&w&\"'andjieci='\"&jieci&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0Thenjiecinumber=jiecinumber+1jieci=NumberToJieci(jiecinumber)Ifrow(\"c_name\").ToString.TrimLike\"体育\"ThenIfjiecinumber>4ThenReturnFalseEndIfElseIfjiecinumber>5ThenReturnFalseEndIfEndIfElseIsRight=TrueEndIfEndIfEndWhileReturnTrueEndFunction下面的方法是计算每天上课的节数 PublicFunctionAddWeek(ByValdsAsDataSet)AsBooleanDimkAsIntegerDimwAsStringFork=0Tods.Tables(0).Rows.Count-1w=ds.Tables(0).Rows(k)(\"week\")SelectCasew.TrimCase\"星期一\"35智能排课系统的设计与实现 weekn(0)=weekn(0)+ds.Tables(0).Rows(k)(\"count\")Case\"星期二\"weekn(1)=weekn(1)+ds.Tables(0).Rows(k)(\"count\")Case\"星期三\"weekn(2)=weekn(2)+ds.Tables(0).Rows(k)(\"count\")Case\"星期四\"weekn(3)=weekn(3)+ds.Tables(0).Rows(k)(\"count\")Case\"星期五\"weekn(4)=weekn(4)+ds.Tables(0).Rows(k)(\"count\")EndSelectNextReturnTrueEndFunction下面的方法是安排教室 PublicFunctionArrangeCRoom(ByValrowAsDataRow,ByValwAsString)AsBooleanDimcapacity,w_jieci,availableAsIntegerDimcategory,lesson_id,cr_id,kc_id,dszAsStringDimroomdsAsDataSetIfrow(\"paike\")=0Thencategory=row(\"category\")capacity=row(\"number\")sqlstr=\"selectcr_idfromClassroomwherecapacity>\"&capacity&\"andcategory='\"&category&\"'andcr_idnotin(selectcr_idfromR_Lwhereweek='\"&w&\"'andjieci='\"&jieci&\"')orderbycapacityasc\"roomds=GetDataFromDB(sqlstr)Ifroomds.Tables(0).Rows.Count<1ThenReturnFalseEndIfcr_id=roomds.Tables(0).Rows(0)(\"cr_id\")lesson_id=row(\"lesson_id\")36智能排课系统的设计与实现 w_jieci=row(\"w_jieci\")available=0dsz=\"\"kc_id=\"kc1\"&addkc&lesson_idaddkc=addkc+1sqlstr=\"insertintoR_L(kc_id,week,jieci,cr_id,available,lesson_id,dsz)values('\"&kc_id&\"','\"&w&\"','\"&jieci&\"','\"&cr_id&\"','\"&available&\"','\"&lesson_id&\"','\"&dsz&\"')\"InsertData(sqlstr)EndIfReturnTrueEndFunction下面的方法是安排周节次为3的课程及有单双周问题 PublicFunctionArrangeDSZ(ByValrowAsDataRow)AsBooleanDimtestds,roomds,fbds,hbdsAsDataSetDimk,jAsIntegerDimcr_id,class_id,kc_id,mysqlstrAsStringDimInsertAsBooleankc_id=\"kc31\"&row(\"lesson_id\")sqlstr=\"select*fromR_Lwhereavailable=1\"roomds=GetDataFromDB(sqlstr)Ifroomds.Tables(0).Rows.Count>0Then'如果有单周上教室能用的查看是否可以安排Fork=0Toroomds.Tables(0).Rows.Count-1Dimkc_id1AsString=roomds.Tables(0).Rows(k)(\"kc_id\")week=roomds.Tables(0).Rows(k)(\"week\")jieci=roomds.Tables(0).Rows(k)(\"jieci\")cr_id=roomds.Tables(0).Rows(k)(\"cr_id\")class_id=row(\"class_id\")sqlstr=\"select*fromRL_viewwherejieci='\"&jieci&\"'andweek='\"&week&\"'andclass_id='\"&class_id&\"'\"37智能排课系统的设计与实现 testds=GetDataFromDB(sqlstr)IsRight=TrueInsert=TrueWhile(IsRight=True)Iftestds.Tables(0).Rows.Count>0ThenIsRight=FalseInsert=FalseElse'本班没有课看是否是合班不是则安排时间成功否则看小班是否合适Ifrow(\"hb\")=1Then'是合班检查分班及组成的合班'本班有课sqlstr=\"selectclass_idfromhbwherehb_id='\"&row(\"class_id\")&\"'\"MessageBox.Show(row(\"class_id\"))fbds=GetDataFromDB(sqlstr)mysqlstr=\"selectdistincthb_idfromhbwhereclass_id='\"Forj=0Tofbds.Tables(0).Rows.Count-1sqlstr=\"select*fromRL_viewwherejieci='\"&jieci&\"'andweek='\"&week&\"'andclass_id='\"&fbds.Tables(0).Rows(j)(\"class_id\")&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0ThenIsRight=FalseInsert=FalseEndIfIfj=fbds.Tables(0).Rows.Count-1Thenmysqlstr=mysqlstr&fbds.Tables(0).Rows(j)(\"class_id\")&\"'\"Elsemysqlstr=mysqlstr&fbds.Tables(0).Rows(j)(\"class_id\")&\"'orclass_id='\"EndIf38智能排课系统的设计与实现 Nexthbds=GetDataFromDB(mysqlstr)Ifhbds.Tables.Count>0ThenForj=0Tohbds.Tables(0).Rows.Count-1sqlstr=\"select*fromrl_viewwherejieci='\"&jieci&\"'andweek='\"&week&\"'andclass_id='\"&hbds.Tables(0).Rows(j)(\"hb_id\")&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0ThenIsRight=FalseInsert=FalseEndIfNextEndIfMessageBox.Show(\"fbdehb\"&Insert)IfInsert=TrueThensqlstr=\"select*fromRL_viewwheret_id='\"&row(\"t_id\")&\"'andweek='\"&week&\"'andjieci='\"&jieci&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0ThenInsert=FalseEndIfEndIfMessageBox.Show(\"teacher\"&Insert)IfInsert=TrueThensqlstr=\"insertintoR_L(kc_id,week,jieci,cr_id,available,lesson_id,dsz)values('\"&kc_id&\"','\"&week&\"','\"&jieci&\"','\"&cr_id&\"',0,'\"&row(\"lesson_id\")&\"','双')\"InsertData(sqlstr)sqlstr=\"updateR_Lsetavailable=0wherekc_id='\"&kc_id1&\"'\"39智能排课系统的设计与实现 UpdateData(sqlstr)sqlstr=\"updatelesson_planssetpaike=1wherelesson_id='\"&row(\"lesson_id\")&\"'\"UpdateData(sqlstr)ReturnTrueEndIfElse'不是合班检查它构成的合班是否有课sqlstr=\"selecthb_idfromhbwhereclass_id='\"&row(\"class_id\")&\"'\"hbds=GetDataFromDB(sqlstr)Forj=0Tohbds.Tables(0).Rows.Count-1sqlstr=\"select*fromrl_viewhbds.Tables(0).Rows(j)(\"hb_id\")&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0ThenIsRight=FalseInsert=FalseEndIfIfInsert=TrueThensqlstr=\"select*fromRL_viewwheret_id='\"&row(\"t_id\")&\"'andweek='\"&week&\"'andjieci='\"&jieci&\"'\"testds=GetDataFromDB(sqlstr)Iftestds.Tables(0).Rows.Count>0ThenInsert=FalseEndIfEndIfIfInsert=TrueThensqlstr=\"insertintoR_L(kc_id,week,jieci,cr_id,available,lesson_id,dsz)values('\"&kc_id&\"','\"&week&\"','\"&jieci&\"','\"&cr_id&\"',0,'\"&row(\"lesson_id\")&\"','双')\"40whereclass_id='\"&智能排课系统的设计与实现 InsertData(sqlstr)sqlstr=\"updateR_Lsetavailable=0wherekc_id='\"&kc_id1&\"'\"UpdateData(sqlstr)sqlstr=\"updatelesson_planssetpaike=1wherelesson_id='\"&row(\"lesson_id\")&\"'\"UpdateData(sqlstr)ReturnTrueEndIfNextEndIfEndIfEndWhileNextEndIfTest=ArrangeJieci(row,week1)IfTest=TrueThensqlstr=\"selectcr_idfromClassroomwherecapacity>\"&row(\"number\")&\"andcategory='\"&row(\"category\")&\"'andcr_idnotin(selectcr_idfromR_Lwhereweek='\"&week1&\"'andjieci='\"&jieci&\"')orderbycapacityasc\"roomds=GetDataFromDB(sqlstr)Ifroomds.Tables(0).Rows.Count<1ThenReturnFalseEndIfcr_id=roomds.Tables(0).Rows(0)(\"cr_id\")sqlstr=\"insertintoR_L(kc_id,week,jieci,cr_id,available,lesson_id,dsz)values('\"&kc_id&\"','\"&week1&\"','\"&jieci&\"','\"&cr_id&\"',1,'\"&row(\"lesson_id\")&\"','单')\"InsertData(sqlstr)sqlstr=\"updatelesson_planssetpaike=1wherelesson_id='\"&row(\"lesson_id\")41智能排课系统的设计与实现 &\"'\"UpdateData(sqlstr)ReturnTrueEndIfEndFunction下面的方法是将数字转换为星期 PublicFunctionNumberToWeek(ByValwAsInteger)AsStringDimstrAsStringSelectCasewCase1str=\"星期一\"Case2str=\"星期二\"Case3str=\"星期三\"Case4str=\"星期四\"Case5str=\"星期五\"Case6str=\"星期六\"Case7str=\"星期日\"CaseElsestr=\"\"EndSelectReturnstrEndFunction下面的方法是将数字转换为节次 PublicFunctionNumberToJieci(ByValjAsInteger)AsString42智能排课系统的设计与实现 DimstrAsStringSelectCasejCase1str=\"第一节\"Case2str=\"第二节\"Case3str=\"第三节\"Case4str=\"第四节\"Case5str=\"第五节\"CaseElsestr=\"\"EndSelectReturnstrEndFunction下面的方法是将星期转换为数字 PublicFunctionWeekToNumber(ByValwAsString)AsIntegerDimiAsIntegerSelectCasewCase\"星期一\"i=1Case\"星期二\"i=2Case\"星期三\"i=3Case\"星期四\"i=4Case\"星期五\"43智能排课系统的设计与实现 i=5Case\"星期六\"i=6Case\"星期日\"i=7EndSelectReturniEndFunction下面的方法是将节次转换为数字 PublicFunctionJieciToNumber(ByValjAsString)AsIntegerDimiAsIntegerSelectCasejCase\"第一节\"i=1Case\"第二节\"i=2Case\"第三节\"i=3Case\"第四节\"i=4Case\"第五节\"i=5EndSelectReturniEndFunctionEndModule6.5课程表查询模块 课表查询功能可以查询班级课表,教室课表,以及教师课表。使用水晶报表 44智能排课系统的设计与实现 来显示课表,并可以提供打印功能。 图6-4课表查询运行界面45参考文献 [1] .杨怡,高等院校自动排课系统的设计与实现,北京工商大学硕士论文,2001[2] 王晓听,专家系统在自动排课中的应用研究,北京理工大人学硕士学位论文,2002[3][4][5][6][7] 崔雪梅,自动排课算法设计.延边人学学报,2000,V01.26,NO.3IanSommerville著《软件工程》机械工业出版社KarlE.Wiegers著《软件需求》清华大学出版社 2004.22007.09 徐天晟,赵丹亚编《SQL数据库使用速查手册》人民邮电出版社2009.02RobertVieira著《SQLServer2005高级程序设计》人民邮电出版社2008.04 [8]袁然编著《SQLServer2005中文版经典实例教程》电子工业出版社2006.11 [9]朱本城,王凤林编编著《VisualBasic.net2005全程指南》电子工业出版社 2008.03 2007.07 [10]李捷主编《VisualBasic2005程序设计教程》机械工业出版社 [11]孙波,钟声,匹配着色排课模型[J].计算机工程,2008,第34卷 第3期2008.2 [12]崔旭,崔荣一,金小峰,赵雅慧.基于时间资源的大学排课问题研究[J]. 延边大学学报(自然科学版),2006(12) [13]唐洪英,周敏,基于分层分次、贪心算法的排课系统的设计与实现[J].微 计算机信息,2006,1-3 [14]陶华亭;张桃改.基于图论方法的自动优化排课模型研究[J].微计算 机信息,2005,17 [15]马绍惠等.基于资源受限的非线性约束多目标排课模型及算法.计算机 智能排课系统的设计与实现 工程与设计,2007年2月Vol.28No.3 [16]KatjaSchimmelpfeng,StefanHelber.ApplicationofaReal-World University-CourseTimetablingModelSolvedbyIntegerProgrammingPublishedOnline:7December2006Springer-Verlag2006[7][17]陈守家等.基于遗传禁忌算法结合解决排课问题.计算机应用,2007[18]CateMcCoy,GordMaric著冯华英等译水晶报表CrystalReports9从 入门到精通;电子工业出版社,2003 [19]冯思玲,李艳梅,梁瑜;基于分治和贪心相结合的排课算法研究;现代 计算机(总第三零三期) 47
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务