《某高等学校教务排课系统的设计与实现毕业设计论文.doc》由会员分享,可在线阅读,更多相关《某高等学校教务排课系统的设计与实现毕业设计论文.doc(36页珍藏版)》请在三一办公上搜索。
1、毕业设计(论文)某高等学校教务排课系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:某高等学校教务排课系统的设计与实现摘 要当第一台计算机出现时,不仅意味着新型革命的到来,也预示着科技时代的来临。尤其是踏入21世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科学性。在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问
2、题做出相应安排。在功能方面,它能实现查阅、修改、添加等比较基本的功能,也能够实现自动排课、权限管理等较复杂的功能。本设计采用C/S模式,主要用Delphi7.0作为前台开发工具,用SQL Server 2003作为后台数据库。经过测试后,本设计已可达到预想中的效果,能够实现简易的功能。关键字:动态加权算法;自动化;C/S模式;三级排课模式Design and Implementation of a University Academic Course Scheduling System AbstractThe appearance of the first computer means not
3、 only the arrival of a new type of revolution, also herald the advent of the technological era. Particularly in the advent of the 21st century, computer technology has been unprecedented development, and the popularity of the network made businesses do nothing without the assistance of computer. For
4、 colleges and universities, the automation of the teaching office has been more and more achieved, which could improve the efficiency of the work, standardize the operation of the teaching, and increase scientific. Based on the analysis of the former Course Scheduling System, the design put forward
5、to a method which is based on a dynamic weighted algorithm (greedy methods), it uses the manual pre-arrangement, automatic timetable and manual adjustment of the three models, and gets the necessary arrangements to some specific technical problems. Concerning the function of system, it achieves basi
6、c functions which include access, modify, add, and complex functions like automatically schedule and competence of management. The design uses C/S mode, with Delphi as front development tool, and SQL Server 2003 as backstage database. Though testing, the design can reach the desired effect and achie
7、ve the simple function. Key words: Dynamic weighted algorithm; Automation; C/S mode; Three Levels Course Scheduling Model目 录论文总页数:25页1 引 言12 基本理论知识介绍12.1 SQL Server 2003 数据库简介12.2 Delphi7.0简介22.3 C/S模式介绍43 教务排课系统的设计与实现43.1 教务排课系统简介43.2教务排课系统分析53.2.1 算法分析53.2.2 算法流程图63.2.3 功能分析73.2.4 需求分析73.3排课系统的功能模
8、块83.4 数据库设计93.5系统流程及代码分析113.5.1系统流程图113.5.2代码分析114 系统测试184.1 测试环境184.2 主要模块测试184.3 测试结果22结 论22参考文献23致 谢24声 明251 引 言随着计算机的发展和教育改革的不断深入,计算机网络技术的不断成熟,综合教学网络已广泛应用于学校教学、管理的各个领域,特别是教务排课系统的应用。它代表着学校教学管理的水平,是现代化管理的手段。目前大多数教务排课系统是采用各教学单位进行教学任务的指派,然后将教学任务单提交教务科,教务人员将数据输入计算机,进行排课、打印课程表等工作。这种教务排课系统只是在一定程度上减轻了教务
9、人员排课的负担。 近几年来,我国高等教育事业的快速发展,高校新生的扩招力度加大,各个高校中的多个校区、多个学院的教学管理模式已经随处可见,各高校都面临着教室资源紧张的问题。原来每个班有一个固定教室的模式已不存在,甚至原来一个系专用的教学楼也要考虑参加全校的教室资源统一调整。现在的本科院校包括研究生在内,一般都有上万人或几万人的规模。要在每个学期末的一个短时间内拿出一份涉及到有关全校教室统调的课表来,对高校的教务处来说确实是一个很艰巨的任务。排课系统的主要任务是根据现有的教学资源对课程进行合理的安排。由于高校班级数、课程门数较多,每门课有涉及很多信息,如果用手工进行排课,不可避免地出现教室资源冲
10、突或教师资源冲突的情况。如何更有效地利用人力、物力资源,充分发挥计算机的辅助作用,减轻教务人员的工作强度,在对需求进行详细的分析后,本文提出了基于教学大纲的教务排课设计思想,并对其算法进行了描述。本论文就该教务排课系统的设计实现进行了分析探讨:首先对系统的需求分析做了叙述,然后介绍了系统的设计和实现,最后进行了系统测试。本系统采用Delphi7.0作为前台开发工具,采用SQL Server 2003作为后台数据库。2 基本理论知识介绍2.1 SQL Server 2003 数据库简介Microsoft SQL Server 2003是Microsoft公司继SQL Server 6.5和SQL
11、 Server 7.0以后,推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。SQL Server 2003使用了先进的数据库结构,与Windows DNA紧密集成,具有强大的Web功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL Server 2003还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2003在数据库服务器自动管理技术方面处于数据库领域的领先地位,
12、它可以使用户免去繁琐复杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。关系型数据库系统是当前最流行的数据库管理系统。它是一个非常复杂的系统软件,对数据库的所有操作,包括定义、查询、更新和各种运行控制最终都通过它来实现的,因此它是使数据库系统具有数据共享、并发访问、数据独立等特性的根本保证。目前,Microsoft SQL Server 2003是在成熟和强大的关系型数据库中最受欢迎、应用最广泛的一个。就关系数据库管理系统(RDBMS)而言,它是位于用户与操作系统之间的一层数据管理软件,它主要负责强化数据库的结构,简单来说包括如下功能:(1) 维持数据库中数据的关系。(2)
13、 保障数据的正确存储,即保障定义数据之间的关系的种种规则不会被违背。(3) 在系统出错时,把数据恢复到一个能保证一致性的状态。SQL Server 2003系统之所以成为目前流行的大型商用数据库系统,有着其深刻的内在因素,这与它鲜明的特点是分不开的:(1) 与Internet的高度集成。(2) 高伸缩性和适应性。(3) 企业级数据库功能强。(4) 易于安装和使用。(5) 具有决策支持的资料仓库。2.2 Delphi7.0简介Delphi是Borland公司发布的用于开发数据库应用程序的工具,它是目前开发客户/服务器数据库应用程序的强有力的工具。Delphi是具有可视化界面的面向对象编程语言.而
14、最新的Delphi 7.0 具有以下新特点:和以往Delphi的每一个新版本一样,Delphi 7继续改善了开发环境,帮助程序员提高效率。Delphi 7在集成开发环境中加入了很多让程序员爱不释手的新功能,下面是对它们的一个简单介绍。 (1)Code Complete(代码完成) Code Complete功能在Delphi 5中就已经加入了,这项功能非常受程序员的欢迎,因为Code Complete可以大幅度地减少程序员需要键入的程序代码,并且减少键入错误。 Delphi 7的Code Complete功能在原有的基础上继续改善,新的Code Complete窗口不但可以由程序员自行调整大小
15、,而且可以使用不同的颜色代表不同的对象,例如变量、方法和特性等。(2)Object TreeView(对象树视图) 另外一个新功能就是Delphi 7的Object TreeView窗口。这个新的窗口除了可以显示窗体中所有的对象之外,也可以以分层方式表达组件之间的关系。当程序员在Object TreeView窗口中单击了一个组件之后,这个组件会立刻出现在对象查看器之中,这时程序员可以改变这个对象的特性值和事件处理程序。 当窗体复杂,拥有大量的组件时,Object TreeView窗口可以让用户迅速找到这个组件,并且知道与当前组件相关的组件,非常方便。 (3)可定制的View窗口 Delphi
16、7最强劲的集成开发环境功能应该要算是新的可定制的View窗口了。在 Delphi 7中,编辑器不但可以让程序员观看和编辑Object Pascal的程序代码,而且如果程序员编辑的是Web应用程序,那么还可以直接在编辑器中查看HTML程序代码、脚本语言程序代码,预览Web应用程序执行结果的画面以及Web应用程序产生的HTML程序代码。 (4)新添加Indy Intercepts和Indy I/O Handler构件组 企业版的Delphi 7 中,这两个构件组基本上提供了针对现今流行的Internet协议编程的构件。可以进行更为底层的操作。 (5)新添加IW Standard、IW Data、I
17、W Client Side和IW Control构件组 这些构件也是Delphi 7的显著改革之一,将Intraweb集成到了标准的构件板中,我们就可以很方便地开发基于Web的应用程序。 (6)新添加的Rave报表构件组 Delphi 7的标准构件板中已经没有了原来的QuickReport构件组,取而代之的是RAVE报表制作组件,并且提供专门的报表制作工具Rave Designer。 Rave报表构件是一个可视化的报表设计工具,大大简化了在应用程序中加入报表的工作。用Rave报表构件可以做出各种不同的报表,从最简单的到非常复杂、个性化的报表都可以完成。它的功能包括:图片支持、对齐、精确页面定位
18、、打印机设置、字体控制、打印预览、报表内容重用,并支持PDF、HTML、RTF等文本格式。随着Active X数据对象(ADO)的推出,它能让应用程序通过任意的OLE DB提供者访问和操作数据库,其强大功能使得任何数据访问技术都黯然失色。而在数据集方面,与BDE不同ADO是Microsoft推出的新一代数据访问规范,在Delphi7中它的地位等同于一个和BDE并列的数据引擎。本系统采用的就是ADO数据集。虽然ADO的功能比BDE比起来弱一些,但和BDE相比ADO有一些重要的优势,比如:ADO将会内制在从Windows2000开始Microsoft新出的所有操作系统中,单就这一点就足以给其他的数
19、据访问方式画上问号。在Delphi7中提供了对ADO的全力支持,提供了很多ADO组件,还增加了一些新的字段类型如:WideString,GUID,Variant,interface,IDispatch等。ADO是面向各种数据的层次很高的接口,它提供了强大的数据访问功能,可以访问的数据对象有:a.关系数据库中的各种数据;b.非关系型数据库,如层次型数据库,网状数据库等;c.电子邮件与文件系统;d.文本与图象,声音;e.客户事务对象。Delphi5.0版本成功地引入了这项技术,极大程度地扩展了数据库处理能力,为Delphi程序员带来前所未有的广阔空间。Delphi以其功能强大、简单易用等诸多特性,
20、深受编程人员的欢迎。所以我选择了Delphi7.0作为开发工具。2.3 C/S模式介绍C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展
21、出新的应用系统。这也就是目前应用系统的发展方向。3 教务排课系统的设计与实现3.1 教务排课系统简介课程编排作为高等院校教务管理中的一项重要而且繁重的工作,从一般意义上讲,其实质就是对学校学期开设的每门课程合理地分配时间资源和教室资源的过程。其中涉及教师、教室、时间和学生等多种因素,人为要求也比较多,另外由于这几年的高校扩招导致教室资源比较紧张,诸多因素就加重了课程编排工作的难度和复杂度。如果完全由人工来编排课表,费时费力,其科学性、方便性更是难以保证,所以利用计算机进行自动排课的想法自然而生。目前,经研究用来解决排课问题的方法有:模拟手工排课法、图论方法、模拟退火法等。国内针对课表问题也相继
22、研制出了一些排课软件,但是软件的通用性差,因各学校教学资源不尽相同,管理课表的方法也不乏个性,很难完全规范化、程序化。本文根据某高校的实际情况,结合以往的排课经验,通过静态设置教学任务的优先级、分配时间片资源和教室资源时根据相关参数动态设置其优先级的算法设计并实现了一个高校智能排课系统。如何充分利用有限的教室和时间资源合理地编排课表,是本文致力研究的主要问题。3.2教务排课系统分析3.2.1 算法分析在排课系统中,关键的部分在于算法的选择。好的算法不仅可以节省时间,更可以提高效率。几种排课算法比较:(1)自动排课算法:此算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快
23、的特点。但其未对数据进行择优选取,所以不能对教学资源(教师、教室)合理分配,也不能满足一些特殊要求(比如有些老师喜欢上午上课,有些老师偏向于集中式上课;有些课程安排在上午更合适些,有些课程不能安排到上午等)。(2)基于优先级的排课算法:从数学上讲, 排课问题是一个在时间、教师、学生和教室四维空间, 以教学计划和各种特殊要求为约束条件的组合规划问题。其实质就是解决各因素之间的冲突。在设计算法时, 为了降低课程调度的算法复杂性, 可采用化整为零的思想此算法对班级及教室划分等价类,对学校资源进行了合理的利用。但对一些特殊要求还是无法具体体现出来。(3)基于时间片优先级排课算法:此算法属于贪婪算法。每
24、次对教师、教室资源的选取都是取当前最优的数据。按照教师、教室、班级的优先级取最优值,所以对各对象的一些特殊要求会很明显的体现出来,在教师、教室资源不紧缺的情况下,此算法能排出相对合理的课程。相对于之前介绍的两个算法,在处理各种特殊要求的能力上有明显的优势。本系统采用的是动态加权算法即贪婪算法。贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况。在解决排课冲突时,为减少贪婪法的缺点,特在自动排课功能后加入手动调节功能,使用者可对不满意的课程再
25、次调节。以下为算法过程:(1) 初始化排课数组、课程申请数组。(2) 赋初始权值并对课程申请数组排序。(3) 将课程申请码按序进行排课,结果存储在排课数组中。(4) 排课思想是将一星期分为几个层:星期一至五的上午和下午一二节、星期一至五的上午及下午三四节、星期六全天、星期一至五的晚间。对不同的层进行排课,可避免同一天同一老师授同一门课的问题。(5) 若全部排完,则转(7);否则,计算并重新赋相应权值。(6) 对申请数组重新排序,转到(3)。(7) 结束。3.2.2 算法流程图 系统的算法流程图,如图1所示。图1 算法流程图说明:不管是否首次排课,首先进行清空排课记录,对各种信息的初始化后,计算
26、权值和总周课数,就可以将排课记录写入数据库,这实际也是自动排课的过程。排完后系统会进行检测冲突,若有冲突则弹出提示框,进行异常函数的处理。有需要的,可打印课表。 3.2.3 功能分析由于排课算法以及冲突检测在细节上有很多限制,在设计之前我们做了详细的讨论和分析,得出了排课系统功能的细节问题:(1) “公共基础课和公选课优先固定”,由于这两种课一般由教务处制订课程计划,因此应该在自动排课之前将它们优先固定。(2) “一师多课”冲突情况,即一位教师在同一时间内排了一门以上的课。(3) “一室多课”冲突情况,即一个教室在同一时间内排了一门以上的课。(4) “一班多课”冲突情况,即一个班级在同一时间内
27、排了一门以上的课。(5) “教室容量匹配”情况,即上课班级人数应该与所在教室的人数匹配。(6) “合班和分班课程”情况,即在排课时考虑像英语这样的分班课和政治这样的合班课如何排课。(7) “课程单双周”情况,即某些总课时较少的课程,可以考虑在单周或双周排课。(8) “同一课程间隔”尽量让同一课程在一周内课时内的排课分布均匀。(9) “课程优先级”尽量让学分值高的,重要的课程排在黄金时间,课程优先级低的排在其他时间。(10) “课程扩充”如果正常情况下无法满足课程的需要,就要在晚上或者周六日进行课时的扩充。(11) “课程与教室匹配”情况,课程要求的条件必须与教室设备条件相匹配,如是否需要多媒体
28、授课等。3.2.4 需求分析针对功能分析中的各种问题,我们在查阅了一些关于排课设计的资料以及试用了几种排课软件之后,认为在排课设计中需要实现以下几个需求:(1) 手动预排课。由于存在公共基础课以及公选课,而这些课程的设置完全有教务处制定,因此这些课程应该预先设置。(2) 自动排课。根据输入的基本信息,进行自动排课,生成课表。在自动排课完成后,将排课异常信息给予反馈。(3) 手动调节。完全依赖自动排课排出的课表不能完全符合客观需求,同时我们在算法及优先级确定的精确度方面的水平也有限,因此,应该增加手动调节功能,以进一步确保合理性。(4) 设置冲突检测方法。主要是针对手动预排课和手动调节功能可能出
29、现的冲突情况,完善手动排课。(5) 系统友好性。排课系统与使用者应具有交互性,可以增加排课向导提示用户的使用。(6) 权限管理。主要针对管理员权限的用户可以进行拥护的添加、修改和删除。3.3排课系统的功能模块在系统分析的基础上,我们提出了系统的功能模块,如图2所示。图2 功能模块图前面描述了教务排课系统的功能模块划分,但没给出各模块之间的关系。在本系统中,可以把模块分为三个功能集合:(1) 系统管理功能集合。该集合包括权限管理和系统帮助两个模块。当使用者为管理员时可进行权限管理功能,它能够添加新的使用者,也可对已有的用户进行名称、密码的修改和删除。系统帮助功能介绍了开发系统的相干信息。(2)
30、基本信息管理功能集合。该集合包括教师信息管理、教室信息管理、班级信息管理、课程信息管理、课程申请管理五个模块。在该集合内可查看相应的数据表,对于管理员级别的用户可对以上表的内容进行添加、修改、删除的功能。对于一般用户,只能实现查看信息的基本功能。(3) 排课管理功能集合。在基本信息设置模块中,可查看当前日期,又可设置限制排课的条件,如不加限制排课、不在晚上和星期六排课等。而一般用户只能查看管理员设置的条件。在排课时,管理员先在课程信息管理中设置好要预先排课的课程,然后调节限制排课的条件,就可以使用自动排课功能。用户可在排好后的课表中查看课表,对于不满意的课程安排可用手动进行相应的调节,而手动排
31、课也可针对实验课等灵活性的课程。3.4 数据库设计(1)课程信息数据表其中课程代码唯一标识一门课程,课程类型用来确定课程优先级,而课程性质是课程所需教室条件的信息。如表1所示。表1 课程信息表字段名称数据结构说明课程名称varchar课程类别varchar考核方式varchar有考试、考查等课程性质varchar有公共课、必修课等说明varchar(2)班级信息数据表其中申请代码唯一标识一个申请记录,是否合班,合班班级,是否分班分别针对合班课与分班课设置。如表2所示。表2 班级信息表字段名称数据结构说明班级名称varchar班级人数int专业varchar包括系别年级varchar班级码int
32、班级的编号(3)教室信息数据表其中教室代码唯一标识一个教室,教室容量和性质分别判断是否与班级和课程性质的相匹配。如表3所示。表3 教室信息表字段名称数据结构说明教室名称varchar教室容量int即最大限度的上课人数教室性质varchar一般教室、多媒体教室等教室码int教室的编号(4)老师信息数据表其中教师代码唯一标识一位教师,教师职称和学位确定教师优先级,住所判断老师是否在校外居住,排课时给予一定的优先级。如表4所示。 表4 老师信息表字段名称数据结构说明老师姓名varchar无职称varchar无学位varchar本科、硕士、博士住所varchar校内、校外(5)课表信息数据表表5是在用
33、户使用系统的“保存课表”功能键时自动生成。它实现自动清除、自动添加,具有流动性和可操作性。如表5所示。表5 课程安排信息表字段名称数据结构说明申请码int课程的编号课程名varchar无星期一varchar无星期二varchar无星期三varchar无星期四varchar无星期五varchar无星期六varchar无教室名varchar无老师名varchar无班级名varchar无周课数int一周上课的次数学分int无开始周int从第几周开始上课周数int共上几周的课时是否预排课bit无3.5系统流程及代码分析3.5.1系统流程图系统流程图,如图3所示。图3 系统流程图系统流程图主要针对排课过
34、程,即当用户设置好相应的排课条件、点击“自动排课”项,系统所进行的流程。其中的“冲突解决”项有两种解决方法:一是在系统运行时进行的自我调节,另一种是运用手动排课功能解决。“写入课表”项,是在运行时已完成写入课表的功能,若用户需要,可单击“保存课表”项生成Excel格式的文本。3.5.2代码分析本系统主要由三部分构成:权限管理,各类信息管理,排课管理。(1)权限管理模块该模块可实现管理员级别用户可以对所有用户进行添加、删除、修改的功能。以下摘录保存功能的代码:procedure Tfrm_yh.save_ButtonClick(Sender: TObject);beginif ( bSign =
35、 0 )then MessageDlg(请先添加或修改记录!,mtInformation, mbOk,0)elsebeginif ( bSign = 1 )/添加thenwith Table1 dobeginTable1.First;while (not Eof) and (FieldValues用户名称Name_Edit.Text) do Next;if FieldValues用户名称=Name_Edit.Text thenShowMessageFmt(已有一个名为%s的用户+#13+请选另一个用户名,Name_Edit.Text)else if( Name_Edit.Text = )or
36、(PW_Edit.Text = )or ( QX_ComboBox.Text = )then ShowMessage(你输入的信息不全!)elseInsertRecord(Name_Edit.Text,PW_Edit.Text,QX_ComboBox.Text);ShowMessage(添加用户成功!);endelsebeginTable1.Delete;Table1.InsertRecord(Name_Edit.Text,PW_Edit.Text,QX_ComboBox.Text);MessageDlg(修改成功!,mtInformation,mbOk,0);end;Name_Edit.Te
37、xt:= ;PW_Edit.Text:= ;QX_ComboBox.Text :=;Name_Edit.SetFocus;Delete_Button.Enabled := true;Modify_Button.Enabled := true;end(2)各类信息管理模块 该模块包括课程申请管理、教室管理、老师管理、班级管理、课程信息管理。以下摘录课程申请管理中的保存功能代码:procedure Tfrm_Apply.Save_ButtonClick(Sender: TObject);beginif ( iSign = 0 )then ShowMessage(请先添加或修改记录!)elseif
38、( iSign = 1 ) /添加thenbeginif ( kcname_ComboBox.Text = )or ( lsname_ComboBox.Text = )or ( bjname_ComboBox.Text = )or ( zks_Edit.Text =0)or ( xf_Edit.Text =0)or ( bweek_edit.Text=0)or ( weeknum_edit.Text=0)then ShowMessage(你输入的信息不全!)elsebeginApply_ADOTable.InsertRecord(NULL,kcname_ComboBox.Text,lsname
39、_ComboBox.Text,bjname_ComboBox.Text,(StrToInt(zks_edit.Text),(StrToInt(xf_edit.Text),(StrToInt(bweek_edit.Text),(StrToInt(weeknum_edit.Text),YP_RadioButton.Checked); ShowMessage(添加成功!); ClearCaption; EditUnEnable; ButtonEnable; end end else begin with Apply_ADOTable do begin Edit; FieldValues课程名称:=k
40、cname_ComboBox.Text; FieldValues教师姓名:=lsname_ComboBox.Text; FieldValues班级名称:=bjname_ComboBox.Text; FieldValues周课数:=StrToInt(zks_edit.Text); FieldValues学分:=StrToInt(xf_edit.Text); FieldValues开始周:=StrToInt(bweek_edit.Text); FieldValues周数:=StrToInt(weeknum_edit.Text); FieldValues是否预排课:= YP_RadioButton.
41、Checked;Post; end; ShowMessage(修改成功!); ClearCaption; bSign := false; EditUnEnable; ButtonEnable; end; iSign := 0;Save_Button.Enabled := false;end;(3)排课管理模块 该模块可进行预排课的设置、自动排课、手动调节功能。在自动排课中分为三步:首先赋权值,其次再检测各种冲突,最后实现排课过程。a.权值计算:设置的权值有:课程信息的权值(包括课程类别、课程性质),班级信息的权值(包括年级),教师信息的权值(包括职称、学位)。以班级信息权值设置为例:with
42、bjADOTable dofor i := 0 to appNum - 1 dobeginFirst;while FieldValues班级名称 appi.className doNext;if FieldValues年级 = 1年级 thenappi.currentValue := appi.currentValue + 12else if FieldValues年级 = 2年级 thenappi.currentValue := appi.currentValue + 9else if FieldValues年级 = 3年级 thenappi.currentValue := appi.cur
43、rentValue + 6else if FieldValues年级 = 4年级 thenappi.currentValue := appi.currentValue + 3;b.检测冲突:检测的冲突有:在同一天是否已经排过课,(预)排课的教室冲突,所安排的教室是否合适(包括教室人数、容量、性质)。以(预)排课的教室冲突为例:function Tfrm_Main.dynamicTest( day : integer; time : integer; current : integer ):Boolean;vart1,t2,room:integer;begindynamicTest := tru
44、e;for room := 0 to roomNum - 1 doif( arrdaytimeroom0 = 0 ) thencontinueelsebegint1 := 0;t2 := 0;while appt1.appKey arrdaytimeroom0 dot1 := t1 + 1;if arrdaytimeroom1 0 thenwhile appt2.appKey arrdaytimeroom1 dot2 := t2 + 1elset2 := t1;if( appt1.teaName = appcurrent.teaName ) or ( appt1.className = app
45、current.className ) or ( appt2.teaName = appcurrent.teaName ) or ( appt2.className = appcurrent.className ) thenbegindynamicTest := false;break;end;end;end;c.排课算法:摘录设置为“不加限制排课”的代码为例:procedure Tfrm_Main.FirstFind1( m : integer;var a : appRecord );vari, j, k : Integer;succ: boolean;begini := 0;/星期j := 0;/节数k := 0;/教室号succ := true;while( arrijk0 0 )or (not RoomCheck(a,k)or (not dynamicTest( i, j, m ) doif( k roomNum - 1 ) thenk := k + 1elseif (i5) and (j=0)or(j=2) thenbeginj:=j+1;k:=0;endelse if (i4) and (j=1)or(j=3)
链接地址:https://www.31ppt.com/p-3946179.html