某高等学校教务排课系统的设计与实现-无忧无虑毕设网_第1页
某高等学校教务排课系统的设计与实现-无忧无虑毕设网_第2页
某高等学校教务排课系统的设计与实现-无忧无虑毕设网_第3页
某高等学校教务排课系统的设计与实现-无忧无虑毕设网_第4页
某高等学校教务排课系统的设计与实现-无忧无虑毕设网_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 本文配套程序下载地址 : 无忧无虑毕设网 ()-大学生毕业设计站 ,免费毕业设计论文 ,无忧无虑毕设网 大学生毕业设计 ,出售各类毕业设计源码 ,论文 ,程序源码 ,网站源码 ,免费视频教程 ,我们将竭诚为您服务! 分类号 : TP311 U D C: D10621-408-(2007) 5796-0 密 级:公 开 编 号: 2003211064 成 都 信 息 工 程 学 院 学 位 论 文 某高等学校教务排课系统的设计与 实现 论文作者姓名: 胡 彦 妮 申请学位专业: 网 络 工 程 申请学位类别: 工 学 学 士 指导教师姓名(职称): 王 翔 论文提交日期: 2007 年 06月 10 日 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 某高等学校教务排课系统的设计与实现 摘 要 当第一台计算机出现时,不仅意味着新型革命的到来,也预示着科技时代的来临。尤其是踏入 21 世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科 学性。 在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、修改、添加等比较基本的功能,也能够实现自动排课、权限管理等较复杂的功能。本设计采用 C/S 模式,主要用 Delphi7.0 作为前台开发工具,用 SQL Server 2003作为后台数据库。 经过测试后,本设计已可达到预想中的效果,能够实现简易的功能。 关键字 : 动态加权算法;自动化; C/S 模式;三级排课模 式 Design and Implementation of a University Academic Course Scheduling System Abstract The appearance of the first computer means not 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 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 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 basic 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 achieve the simple function. Key words: Dynamic weighted algorithm; Automation; C/S mode; Three Levels Course Scheduling Model 目 录 论文总页数: 25 页 1 引 言 . 1 2 基本理论知识介绍 . 1 2.1 SQL Server 2003 数据库简介 . 1 2.2 Delphi7.0 简介 . 2 2.3 C/S 模式介绍 . 4 3 教务排课系统的设计与实现 . 4 3.1 教务排课系统简介 . 4 3.2 教务排课系统分析 . 5 3.2.1 算法分析 . 5 3.2.2 算法流程图 . 6 3.2.3 功能分析 . 7 3.2.4 需求分析 . 7 3.3 排课系统的功能模块 . 8 3.4 数据库设计 . 9 3.5 系统流程及代码分析 . 11 3.5.1 系统流程图 . 11 3.5.2 代码分析 . 11 4 系统测试 . 18 4.1 测试环境 . 18 4.2 主要模块测试 . 18 4.3 测试结果 . 22 结 论 . 22 参考文献 . 23 致 谢 . 24 声 明 . 25 第 1 页 共 25 页 1 引 言 随着计算机的发展和教育改革的不断深入,计算机网络技术的不断成熟,综合教学网络已广泛应用于学校教学、管理的各个领域,特别是 教务 排课系统的应用。它代表着学校教学管理的水平,是现代化管理的手段。目前大多数 教务 排课系统是采用各教学单位进行教学任务的指派,然后将教学任务单提交教务科,教务人员将数据输入 计算 机,进行排课、打印课程表等工作。这种 教务 排课系统只是在一定程度上减轻了教务人员排 课的负担。 近几年来,我国高等教育事业的快速发展,高校新生的扩招力度加大,各个高校中的多个校区、多个学院的教学管理模式已经随处可见,各高校都面临着教室资源紧张的问题 。 原来每个班有一个固定教室的模式已不存在,甚至原来一个系专用的教学楼也要考虑参加全校的教室资源统一调整。现在的本科院校包括研究生在内,一般都有上万人或几万人的规模 。 要在每个学期末的一个短时间内拿出一份涉及到有关全校教室统调的课表来,对高校的教务处来说确实是一个很艰巨的任务。 排课系统的主要任务是根据现有的教学资源对课程进行合理的安排。由于高校班 级数、课程门数较多,每门课有涉及很多信息,如果用手工进行排课,不可避免地出现教室资源冲突或教师资源冲突的情况。 如何更有效地利用人力、物力资源,充分发挥计算机的辅助作用,减轻教务人员的工作强度,在对需求进行详细的分析后,本文提出了基于教学大纲的教务排课设计思想,并对其算法进行了描述。 本论文就该教务排课系统的设计实现进行了分析探讨:首先对系统的需求分析做了叙述,然后介绍了系统的设计和实现,最后进行了系统测试。本系统采用 Delphi7.0作为前台开发工具,采用 SQL Server 2003 作为后台数据库。 2 基本理论知识介绍 2.1 SQL Server 2003 数据库简介 Microsoft SQL Server 2003 是 Microsoft 公司继 SQL Server 6.5 和 SQL Server 7.0 以后,推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。 SQL Server 2003 使用了先进的数据库结构,与 Windows DNA 紧密集成,具有强大的 Web 功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的 Web 站点和企业应用提供优良的扩展性和可靠性,使用户 能够在 Internet 领域快速建立服务系统,为占领市场赢得宝贵的时间。 同时 , SQL Server 2003 还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外 ,SQL Server 2003 在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作第 2 页 共 25 页 量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。 关系型数据库系统是当前最流行的数据库 管理 系统。它是一个非常复杂的系统软件,对数据库的所有操作,包括定义、查询、更新和各种运行控制最终都通过它来实现的 ,因 此 它是使数据库系统具有 数据 共享、并发访问、 数据 独立等特性的根本保证。 目前, Microsoft SQL Server 2003 是在成熟和强大的关系型数据库中最受欢迎、应用最广泛的一个。 就关系数据库管理系统 (RDBMS)而言,它是位于用 户 与操作系统之间的一层数据管理软件,它主要负责强化数据库的结构,简单来说包括如下功能: (1) 维持数据库中 数据 的关系。 (2) 保障 数据 的正确存储,即保障定义 数据 之间的关系的种种规则不会被违背。 (3) 在系统出错时,把 数据 恢复到一个能保证一致性的状态。 SQL Server 2003 系统之所以成为目前流行的大型商用数据库系统,有着其深刻的内在因素,这与它鲜明的特点是分不开的: (1) 与 Internet 的高度集成 。 (2) 高伸缩性和适应性 。 (3) 企业级数据库功能强 。 (4) 易于安装和使用 。 (5) 具有决策支持的资料仓库 。 2.2 Delphi7.0 简介 Delphi 是 Borland 公司发布的用于开发数据库应用程序的工具,它是目前开发客户 /服务器数据库应用程序的强有力的工具。 Delphi 是具有可视化界面的面向对象编程语言 .而最新的 Delphi 7.0 具有以下新特 点: 和以往 Delphi 的每一个新版本一样, Delphi 7 继续改善了开发环境,帮助程序员提高效率。 Delphi 7 在集成开发环境中加入了很多让程序员爱不释手的新功能,下面是对它们的一个简单介绍。 ( 1) Code Complete(代码完成) Code Complete 功能在 Delphi 5 中就已经加入了,这项功能非常受程序员的欢迎,因为 Code Complete 可以大幅度地减少程序员需要键入的程序代码,并且减少键入错误。 Delphi 7 的 Code Complete 功能在原有的基础上继续改善,新的 Code Complete 窗口不但可以由程序员自行调整大小,而且可以使用不同的颜色代表不同的对象,例如变量、方法和特性等。 ( 2) Object TreeView(对象树视图) 另外一个新功能就是 Delphi 7 的 Object TreeView 窗口。这个新的窗口除第 3 页 共 25 页 了可以显示窗体中所有的对象之外,也可以以分层方式表达组件之间的关系。当程序员在 Object TreeView 窗口中单击了一个组件之后,这个组件会立刻出现在对象查看器之中,这时程序员可以改变这个对象的特性值和事件处理程序。 当窗体复杂,拥有大量的组件时 , Object TreeView 窗口可以让用户迅速找到这个组件,并且知道与当前组件相关的组件,非常方便。 ( 3)可定制的 View 窗口 Delphi 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、 IW Client Side 和 IW Control 构件组 这些构件也是 Delphi 7 的显著改革之一,将 Intraweb 集成到了标准的构件板中,我们就可以很方便地开发基于 Web 的应用程序。 ( 6)新添加的 Rave 报表构件组 Delphi 7 的标准构件板中已经没有 了原来的 QuickReport 构件组,取而代之的是 RAVE 报表制作组件,并且提供专门的报表制作工具 Rave Designer。 Rave 报表构件是一个可视化的报表设计工具,大大简化了在应用程序中加入报表的工作。用 Rave 报表构件可以做出各种不同的报表,从最简单的到非常复杂、个性化的报表都可以完成。它的功能包括:图片支持、对齐、精确页面定位、打印机设置、字体控制、打印预览、报表内容重用,并支持 PDF、 HTML、 RTF等文本格式。随着 Active X 数据对象( ADO)的推出,它能让应用程序通过任意的 OLE DB 提供者访问和操作数据库,其强大功能使得任何数据访问技术都黯然失色。 而在数据集方面,与 BDE不同 ADO是 Microsoft推出的新一代数据访问规范,在 Delphi7 中它的地位等同于一个和 BDE 并列的数据引擎。本系统采用的就是ADO 数据集。 虽然 ADO的功能比 BDE比起来弱一些 ,但和 BDE相比 ADO有一些重要的优势,比如: ADO 将会内制在从 Windows2000 开始 Microsoft 新出的所有操作系统中,单第 4 页 共 25 页 就这一点就足以给其他的数据访问方式画上问号。 在 Delphi7 中提供了对 ADO 的全力支持,提供了很多 ADO 组件,还增加了一些新的字段类型如: WideString, GUID, Variant, interface, IDispatch 等。 ADO 是面向各种数据的层次很高的接口,它提供了强大的数据访问功能,可以访问的数据对象有: a.关系数据库中的各种数据; b.非关系型数据库,如层次型数据库,网状数据库等; c.电子邮件与文件系统; d.文本与图象,声音; e.客户事务对象。 Delphi5.0版本成功地引入了这项技术,极大程度地扩展了数据库处理能力,为 Delphi 程序员带来前所未有的广阔空间。 Delphi 以其功 能强大、简单易用等诸多特性,深受编程人员的欢迎。所以我选择了 Delphi7.0 作为开发工具。 2.3 C/S 模式介绍 C/S ( Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和 Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是 Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的 Web 应用发展, Web 和 Client/Server 应用都可以进行同样的业务处 理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 3 教务排课系统的设计与实现 3.1 教务排课系统简介 课程编排作为高等院校教务管理中的一项重要而且繁重的工作,从一般意义上讲,其实质就是对学校学期开设的每门课程合理地分配时间资源和教室资源的过程。其中涉及教师、教室、时间和学生等多种因素,人为要求也比较多,另外由于这几年的高校扩招导致教室资源比较紧张,诸多因素就加重了课程编排工作的难度和复 杂度。如果完全由人工来编排课表,费时费力,其科学性、方便性更是难以保证,所以利用计算机进行自动排课的想法自然而生。目前,经研究用来解决排课问题的方法有 :模拟手工排课法、图论方法、模拟退火法等。国内针对课表问题也相继研制出了一些排课软件,但是软件的通用性差,因各学校教学资源不尽相同,管理课表的方法也不乏个性,很难完全规范化、程序化。本文根据某高校的实际情况,结合以往的排课经验,通过静态设置教学任务的优先级、分第 5 页 共 25 页 配时间片资源和教室资源时根据相关参数动态设置其优先级的算法设计并实现了一个高校智能排课系统。如何充分利 用有限的教室和时间资源合理地编排课表,是本文致力研究的主要问题。 3.2 教务排课系统分析 3.2.1 算法分析 在排课系统中,关键的部分在于算法的选择。好的算法不仅可以节省时间,更可以提高效率。 几种排课算法比较: ( 1)自动排课算法:此算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。但其未对数据进行择优选取,所以不能对教学资源(教师、教室)合理分配,也不能满足一些特殊要求(比如有些老师喜欢上午上课,有些老师偏向于集中式上课;有些课程安排在上午更合适些,有些课程不能安排到 上午等)。 ( 2)基于优先级的排课算法:从数学上讲 , 排课问题是一个在时间、教师、学生和教室四维空间 , 以教学计划和各种特殊要求为约束条件的组合规划问题。其实质就是解决各因素之间的冲突。在设计算法时 , 为了降低课程调度的算法复杂性 , 可采用化整为零的思想 此算法对班级及教室划分等价类,对学校资源进行了合理的利用。但对一些特殊要求还是无法具体体现出来。 ( 3)基于时间片优先级排课算法:此算法属于贪婪算法。每次对教师、教室资源的选取都是取当前最优的数据。按照教师、教室、班级的优先级取最优值,所以对各对象的一些特 殊要求会很明显的体现出来,在教师、教室资源不紧缺的情况下,此算法能排出相对合理的课程。相对于之前介绍的两个算法,在处理各种特殊要求的能力上有明显的优势。 本系统采用的是动态加权算法即贪婪算法。贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况。在解决排课冲突时,为减少贪婪法的缺点,特在自动排课功能后加入手动调节功能,使用者可对不满意的课程再次调节。以下为 算法过程: ( 1) 初始化排课数组、课程申请数组。 ( 2) 赋初始权值并对课程申请数组排序。 ( 3) 将课程申请码按序进行排课,结果存储在排课数组中。 ( 4) 排课思想是将一星期分为几个层:星期一至五的上午和下午一二节、第 6 页 共 25 页 星期一至五的上午及下午三四节、星期六全天、星期一至五的晚间。对不同的层进行排课,可避免同一天同一老师授同一门课的问题。 ( 5) 若全部排完,则转( 7);否则,计算并重新赋相应权值。 ( 6) 对申请数组重新排序,转到( 3)。 ( 7) 结束。 3.2.2 算法流程图 系统的算法流程图,如图 1 所示。 清 空 排 课 记 录各 种 信 息 初 始 化计 算 权 值计 算 总 周 课 数将 排 课 记 录 写 入 数 据 库检 测 冲 突异 常 函 数 处 理打 印 课 表结 束开 始 图 1 算法流程图 说明:不管是否首次排课,首先进行清空排课记录,对各种信息的初始化后,计算权值和总周课数,就可以将排课记录写入数据库,这实际也是自动排课的过程。排完后系统会进行检测冲突,若有冲突则弹出提示框,进行异常函数的处理。第 7 页 共 25 页 有需要的,可打印课表。 3.2.3 功能分析 由于排课算法以及冲突检测在细节上有很多限制,在设计之前我们做了详细的讨论和分析,得出了排课系统功能的细节问题: ( 1) “公共基础课和公选课优先固定”,由于这两种课一 般由教务处制订课程计划,因此应该在自动排课之前将它们优先固定。 ( 2) “一师多课”冲突情况,即一位教师在同一时间内排了一门以上的课。 ( 3) “一室多课”冲突情况,即一个教室在同一时间内排了一门以上的课。 ( 4) “一班多课”冲突情况,即一个班级在同一时间内排了一门以上的课。 ( 5) “教室容量匹配”情况,即上课班级人数应该与所在教室的人数匹配。 ( 6) “合班和分班课程”情况,即在排课时考虑像英语这样的分班课和政治这样的合班课如何排课。 ( 7) “课程单双周”情况,即某些总课时较少的课程,可以考虑在单周 或双周排课。 ( 8) “同一课程间隔”尽量让同一课程在一周内课时内的排课分布均匀。 ( 9) “课程优先级”尽量让学分值高的,重要的课程排在黄金时间,课程优先级低的排在其他时间。 ( 10) “课程扩充”如果正常情况下无法满足课程的需要,就要在晚上或者周六日进行课时的扩充。 ( 11) “ 课程与教室匹配”情况,课程要求的条件必须与教室设备条件相匹配,如是否需要多媒体授课等。 3.2.4 需求分析 针对功能分析中的各种问题,我们在查阅了一些关于排课设计的资料以及试用了几种排课软件之后,认为在排课设计中需要实现以下几 个需求: ( 1) 手动预排课。由于存在公共基础课以及公选课,而这些课程的设置完全有教务处制定,因此这些课程应该预先设置。 ( 2) 自动排课。根据输入的基本信息,进行自动排课,生成课表。在自动排课完成后,将排课异常信息给予反馈。 ( 3) 手动调节。完全依赖自动排课排出的课表不能完全符合客观需求,同时我们在算法及优先级确定的精确度方面的水平也有限,因此,应该增加手动调节功能,以进一步确保合理性。 ( 4) 设置冲突检测方法。主要是针对手动预排课和手动调节功能可能出现的冲突情况,完善手动排课。 第 8 页 共 25 页 ( 5) 系统友好性。 排课系统与使用者应具有交互性,可以增加排课向导提示用户的使用。 ( 6) 权限管理。主要针对管理员权限的用户可以进行拥护的添加、修改和删除。 3.3 排课系统的功能模块 在系统分析的基础上,我们提出了系统的功能模块,如图 2 所示。 教 务 排 课 系 统系 统 管 理 基 本 信 息 管 理 排 课 管 理系统帮助权限管理教师信息管理教室信息管理班级信息管理课程信息管理课程申请管理手动预排管理自动排课管理手动调节管理基本信息设置 图 2 功能模块图 前面描述了教务排课系统的功能模块划分,但没给出各模块之间的关系。在本系统中,可以把模块分为三个功能集合: (1) 系统管理功能集合。该集合包括权限管理和系统帮助两个模块。当使用者为管理员时可进行权限管理功能, 它能够添加新的使用者,也可对已有的用户进行名称、密码的修改和删除。系统帮助功能介绍了开发系统的相干信息。 (2) 基本信息管理功能集合。该集合包括教师信息管理、教室信息管理、班级信息管理、课程信息管理、课程申请管理五个模块。在该集合内可查看相应的数据表,对于管理员级别的用户可对以上表的内容进行添加、修改、删除的功能。对于一般用户,只能实现查看信息的基本功能。 (3) 排课管理功能集合。在基本信息设置模块中,可查看当前日期,又可设置限制排课的条件,如不加限制排课、不在晚上和星期六排课等。而一般用户只能查看管理 员设置的条件。在排课时,管理员先在课程信息管理中设置好要预先排课的课程,然后调节限制排课的条件,就可以使用自动排课功能。用户可在排好后的课表中查看课表,对于不满意的课程安排可用手动进行相应的调节,而手动排课也可针对实验课等灵活性的课程。 第 9 页 共 25 页 3.4 数据库设计 ( 1)课程信息数据表 其中课程代码唯一标识一门课程,课程类型用来确定课程优先级,而课程性质是课程所需教室条件的信息。如表 1 所示。 表 1 课程信息表 字段名称 数据结构 说明 课程名称 varchar 课程类别 varchar 考核方式 varchar 有考试、考查等 课程性质 varchar 有公共课、必修课等 说明 varchar ( 2)班级信息数据表 其中申请代码唯一标识一个申请记录,是否合班,合班班级,是否分班分别针对合班课与分班课设置。如表 2 所示。 表 2 班级信息表 字段名称 数据结构 说明 班级名称 varchar 班级人数 int 专业 varchar 包括系别 年级 varchar 班级码 int 班级的编号 ( 3)教室信息数据表 其中教室代码唯一标识一个教室,教室容量和性质分别判断是否与班级和课程性质的相 匹配。如表 3 所示。 表 3 教室信息表 字段名称 数据结构 说明 教室名称 varchar 教室容量 int 即最大限度的上课人数 教室性质 varchar 一般教室、多媒体教室等 教室码 int 教室的编号 第 10 页 共 25 页 ( 4)老师信息数据表 其中教师代码唯一标识一位教师,教师职称和学位确定教师优先级,住所判断老师是否在校外居住,排课时给予一定的优先级。如表 4 所示。 表 4 老师信息表 字段名称 数据结构 说明 老师姓名 varchar 无 职称 varchar 无 学位 varchar 本科、硕士、博 士 住所 varchar 校内、校外 ( 5)课表信息数据表 表 5 是在用户使用系统的“保存课表”功能键时自动生成。它实现自动清除、自动添加,具有流动性和可操作性。如表 5 所示。 表 5 课程安排信息表 字段名称 数据结构 说明 申请码 int 课程的编号 课程名 varchar 无 星期一 varchar 无 星期二 varchar 无 星期三 varchar 无 星期四 varchar 无 星期五 varchar 无 星期六 varchar 无 教室名 varchar 无 老师名 varchar 无 班级名 varchar 无 周课数 int 一周上课的次数 学分 int 无 开始周 int 从第几周开始上课 周数 int 共上几周的课时 是否预排课 bit 无 第 11 页 共 25 页 3.5 系统流程及代码分析 3.5.1 系统流程图 系统流程图,如图 3 所示。 计 算 总 课 时总 课 时 合 适 ?置 标 志读 数 据 库当 前 位 置 排 课 ?有 无 冲 突 ?写 入 课 表排 课 结 束 ?保 存YNY冲 突 解 决YNYN结 束开 始N 图 3 系统流程图 系统流程图主要针对排课过程 ,即当用户设置好相应的排课条件、点击“自动排课”项,系统所进行的流程。其中的“冲突解决”项有两种解决方法:一是在系统运行时进行的自我调节,另 一种是运用手动排课功能解决。“写入课表”项,是在运行时已完成写入课表的功能,若用户需要,可单击“保存课表”项生成 Excel 格式的文本。 3.5.2 代码分析 本系统主要由三部分构成:权限管理,各类信息管理,排课管理。 ( 1)权限管理模块 第 12 页 共 25 页 该模块可实现管理员级别用户可以对所有用户进行添加、删除、修改的功能。以下摘录保存功能的代码: procedure Tfrm_yh.save_ButtonClick(Sender: TObject); begin if ( bSign = 0 ) then MessageDlg(请先添加或修改记录! , mtInformation, mbOk,0) else begin if ( bSign = 1 )/添加 then with Table1 do begin Table1.First; while (not Eof) and (FieldValues用户名称 Name_Edit.Text) do Next; if FieldValues用户名称 =Name_Edit.Text then ShowMessageFmt(已有一个名为 %s 的用户 +#13+请选另一个用户名,Name_Edit.Text) else if( Name_Edit.Text = )or (PW_Edit.Text = )or ( QX_ComboBox.Text = ) then ShowMessage(你输入的信息不全 !) else InsertRecord(Name_Edit.Text, PW_Edit.Text, QX_ComboBox.Text); ShowMessage(添加用户成功 !); end else begin Table1.Delete; Table1.InsertRecord(Name_Edit.Text, PW_Edit.Text, QX_ComboBox.Text); 第 13 页 共 25 页 MessageDlg(修改成功! , mtInformation, mbOk, 0); end; Name_Edit.Text:= ; 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); begin if ( iSign = 0 ) then ShowMessage(请先添加或修改记录 !) else if ( iSign = 1 ) /添加 then begin if ( 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(你输入的信息不全 !) else begin Apply_ADOTable.InsertRecord(NULL, 第 14 页 共 25 页 kcname_ComboBox.Text,lsname_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课程名称 :=kcname_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.Checked; Post; end; ShowMessage(修改成功 !); ClearCaption; bSign := false; EditUnEnable; ButtonEnable; end; iSign := 0; Save_Button.Enabled := false; end; ( 3)排课管理模块 第 15 页 共 25 页 该模块可进行预排课的设置、自动排课、手动调节功能。在自动排课中分为三步:首先赋权值,其次再检测各种冲突,最后实现排课过程。 a.权值计算: 设置的权值有:课程信息的权值(包括课程类别、课程性质),班级信息的权值(包括年级),教师信息的权值(包括职称、学位)。 以班级信息权值设 置为例: with bjADOTable do for i := 0 to appNum - 1 do begin First; while FieldValues班级名称 appi.className do Next; if FieldValues年级 = 1 年级 then appi.currentValue := appi.currentValue + 12 else if FieldValues年级 = 2 年级 then appi.currentValue := appi.currentValue + 9 else if FieldValues年级 = 3 年级 then appi.currentValue := appi.currentValue + 6 else if FieldValues年级 = 4 年级 then appi.currentValue := appi.currentValue + 3; b.检测冲突: 检测的冲突有:在同一天是否已经排过课,(预)排课的教室冲突,所安排的教室是否合适(包 括教室人数、容量、性质)。 以(预)排课的教室冲突为例: function Tfrm_Main.dynamicTest( day : integer; time : integer; current : integer ):Boolean; var t1,t2,room:integer; begin dynamicTest := true; for room := 0 to roomNum - 1 do if( arrdaytimeroom0 = 0 ) then continue else 第 16 页 共 25 页 begin t1 := 0; t2 := 0; while appt1.appKey arrdaytimeroom0 do t1 := t1 + 1; if arrdaytimeroom1 0 then while appt2.appKey arrdaytimeroom1 do t2 := t2 + 1 else t2 := t1; if( appt1.teaName = appcurrent.teaName ) or ( appt1.className = appcurrent.className ) or ( appt2.teaName = appcurrent.teaName ) or ( appt2.className = appcurrent.className ) then begin dynamicTest := false; break; end; end; end; c.排课算法: 摘录设置为“不加限制排课”的代码为例: procedure Tfrm_Main.FirstFind1( m : integer;var a : appRecord ); var i, j, k : Integer; succ: boolean; begin i := 0;/星期 j := 0;/节数 k := 0;/教室号 succ := true; while( arrijk0 0 )or (not RoomCheck(a,k)or (not dynamicTest( i, j, m ) 第 17 页 共 25 页 ) do if( k roomNum - 1 ) then k := k + 1 else if (i5) and (j=0)or(j=2) then begin j:=j+1; k:=0; end else if (i4) and (j=1)or(j=3) then begin i:=i+1; j:=j-1; k:=0; end else if (i=4) and (j=1)or(j=3) then begin i:=i-4; j:=j+1; k:=0; end else if (i4) and (j=4) then begin i:=i+1; k:=0; end else if (i=4) and (j=4) then begin i:=i+1; j:=j-4; k:=0; end else if (i=5) and (jRun 命令,则会出现系统的登录界面。 a. 登录界面,如图 5 所示: 第 19 页 共 25 页 图 5 登录界面 说明 :输入用户名和密码,单击“确定”按钮,当身份验证成功后进入档案管理系统主界面。单击“取消”退出登录窗口。 b. 主界面,如图 6 所示: 图 6 主界面 说明 :主界面由三部分组成:基本信息管理、基本条件设置、预排课、自动排课及手动调节。在菜单栏中,分为系统、信息管理、帮助菜单。“系统”菜单含用户管理和退出功能。“信息管理 ”可查看基本信息。“帮助”中可查看教务排课系统的相应信息。 c. 如身份验证失败,则出现如图 7 所示的提示信息框 图 7 错误提示信息 说明 : 点击 “ OK” 返回登录界面 ,重新输入用户名和密码。 d. 点击 “ 基本信息管理 ” 中的 课程申请管理界面为例 ,如图 8 所示: 第 20 页 共 25 页 图 8 课程申请管理 说明 :选中某一记录后可进行删除和修改的功能 ,也可直接添加记录 ,修改完后点击保存或退出完成管理。 e. 基本条件设置管理界面 ,如图 9 所示: 图 9 基本条件设置 说明:教学公历上显示为当前日期 ,“ 排课条件设置 ” 中设置需要的排课条件 。 f. 排课管理界面 ,如图 10 所示: 第 21 页 共 25 页 图 10 排课管理 说明:点击“清空”可清空上次所排信息,点击“自动排课”能实现自动排课功能,点击“检测冲突”可检测当前排课有无冲突。点击“保存课表”能将排课信息保存为 excel 格式。 g. 权限管理界面 ,如图 11 所示: 图 11 权限管理 说明:权限管理是当管理员用户在“系统”菜单内的设置。在这里可进行用户的添加、删除、修改等功能。 ( 2)一般用户权限 一般用户与管理员用户的区别在于他只能查看相应信息,不能进行其他操作。以排课管理界面为例 ,如图 12 所示: 第 22 页 共 25 页 图 12 一般用户界面 说明:一般用户的界面设计上与管理员用户基本相同,只有某些按钮被屏蔽,不能实现相应功能。 其中的清空、自动排课、保存课表键被屏蔽,用户无法进行操作。 4.3 测试结果 教务排课系统是一款基于动态加权算法的人性化的教务软件,它采用手动预排 自动排课 手动调节的三步排课模式,具有以下特点: (1) 课表合理:具有预排,合班等功能,排出的课表合理性较强。 (2) 排课灵活:采用了局部范围内的动态随机加权,排出的课表具有灵活的特点,使用者可以在多次排课中选择自己认为合适的课表。 (3) 操作便 捷:系统界面简单明了,用户很容易掌握对排课软件的使用。 (4) 人性化:系统界面美观,具有很强的交互性。 结 论 在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方案,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。该方案采用 C

温馨提示

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

评论

0/150

提交评论