您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页毕业设计:A学校排课系统的设计终稿

毕业设计:A学校排课系统的设计终稿

来源:飒榕旅游知识分享网
A学校排课系统的设计

摘 要

当第一台运算机显现时,不仅意味着新型革命的到来,也预示着科技时期的来临。尤其是踏入21世纪后,运算机技术取得了空前的进展,而网络的普及使得各行各业慢慢离不开电脑。关于高校而言,在教务办公中已经愈来愈多的实现了自动化,既提高了工作的效率,也标准了教学的操作,增加了科学性。

在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方式,采纳手动预排、自动排课、手动调剂的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、修改、添加等比较大体的功能,也能够实现自动排课、权限治理等较复杂的功能。本设计采纳C/S模式,要紧用D作为前台开发工具,用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 大体理论知识介绍 .............................................................................................................................. 2

2.1 SQL SERVER 2003 数据库简介 ...................................................................................................... 2 简介 ...................................................................................................................................................... 3 2.3 C/S模式介绍 ............................................................................................................................... 6

3 教务排课系统的设计与实现 .............................................................................................................. 6

3.1 教务排课系统简介 ...................................................................................................................... 6 教务排课系统分析 .............................................................................................................................. 7

3.2.1 算法分析 ............................................................................................................................ 7 3.2.2 算法流程图 .......................................................................................................................... 9 3.2.3 功能分析 .............................................................................................................................. 9 3.2.4 需求分析 .............................................................................................................................. 9

排课系统的功能模块 .......................................................................................................................... 9 3.4 数据库设计 ................................................................................................................................ 10 系统流程及代码分析 ........................................................................................................................ 13

系统流程图 .................................................................................................................................... 13 代码分析 ........................................................................................................................................ 14

4 系统测试 ............................................................................................................................................ 24

4.1 测试环境 .................................................................................................................................... 24

4.2 要紧模块测试 ............................................................................................................................ 24 4.3 测试结果 .................................................................................................................................... 28

结 论 ................................................................................................................................................ 29

参考文献 ................................................................................................................... 错误!未定义书签。

1 引 言

随着运算机的进展和教育改革的不断深切,运算机网络技术的不断成熟,综合教学网络已普遍应用于学校教学、治理的各个领域,专门是教务排课系统的应用。它代表着学校教学治理的水平,是现代化治理的手腕。目前大多数教务排课系统是采纳各教学单位进行教学任务的指派,然后将教学任务单提交教务科,教务人员将数据输入计算机,进行排课、打印课程表等工作。这种教务排课系统只是在必然程度上减轻了教务人员排课的负担。

近几年来,我国高等教育事业的快速进展,高校新生的扩招力度加大,各个高校中的多个校区、多个学院的教学治理模式已经到处可见,各高校都面临着教室资源紧张的问题。原先每一个班有一个固定教室的模式已不存在,乃至原先一个系专用的教学楼也要考虑参加全校的教室资源统一调整。此刻的本科院校包括研究生在内,一样都有上万人或几万人的规模。要在每一个学期末的一个短时刻内拿出一份涉及到有关全校教室统调的课表来,对高校的教务处来讲确实是一个很艰巨的任务。

排课系统的要紧任务是依照现有的教学资源对课程进行合理的安排。由于高校班级数、课程门数较多,每门课有涉及很多信息,若是用手工进行排课,不可幸免地显现教室资源冲突或教师资源冲突的情形。

如何更有效地利用人力、物力资源,充分发挥运算机的辅助作用,减轻教务人员的工作强度,在对需求进行详细的分析后,本文提出了基于教学大纲的教务排课设计思想,并对其算法进行了描述。本论文就该教务排课系统的设计实现进行了分析探讨:第一对系统的需求分析做了表达,然后介绍了系统的设计和实现,

最后进行了系统测试。本系统采纳D作为前台开发工具,采纳SQL Server 2003作为后台数据库。

2 大体理论知识介绍

2.1 SQL Server 2003 数据库简介

Microsoft SQL Server 2003是Microsoft公司继SQL Server Server 7.0以后,推出的又一改良的新版关系型数据治理系统。它能利用户快捷地治理数据库和开发应用程序。SQL Server 2003利用了先进的数据库结构,与Windows DNA紧密集成,具有壮大的Web功能,它能够利用高端硬件平台和最新网络和存储技术,能够为最大的Web站点和企业应用提供优良的扩展性和靠得住性,利用户能够在Internet领域快速成立效劳系统,为占据市场博得宝贵的时刻。同时,SQL Server 2003还为用户提供了重要的平安性功能的增强,为用户的数据平安提供了靠得住的保证。另外,SQL Server 2003在数据库效劳器自动治理技术方面处于数据库领域的领先地位,它能够利用户免去繁琐复杂的工作量,从而有精力处置更重要的问题,利用系统在商业战略上占得先机。

关系型数据库系统是当前最流行的数据库治理系统。它是一个超级复杂的系统软件,对数据库的所有操作,包括概念、查询、更新和各类运行操纵最终都通过它来实现的,因此它是使数据库系统具有数据共享、并发访问、数据独立等特性的全然保证。目前,Microsoft SQL Server 2003是在成熟和壮大的关系型数据库中最受欢迎、应用最普遍的一个。

就关系数据库治理系统(RDBMS)而言,它是位于用户与操作系统之间的一层数据治理软件,它要紧负责强化数据库的结构,简单来讲包括如下功能:

(1) 维持数据库中数据的关系。

(2) 保障数据的正确存储,即保障概念数据之间的关系的各类规那么可不能被违抗。

(3) 在系统犯错时,把数据恢复到一个能保证一致性的状态。

SQL Server 2003系统之因此成为目前流行的大型商用数据库系统,有着其深刻的内在因素,这与它鲜明的特点是分不开的:

(1) 与Internet的高度集成。 (2) 高伸缩性和适应性。 (3) 企业级数据库功能强。 (4) 易于安装和利用。 (5) 具有决策支持的资料仓库。

2.2

Delphi是Borland公司发布的用于开发数据库应用程序的工具,它是目前开发客户/效劳器数据库应用程序的强有力的工具。Delphilphi 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窗口。那个新的窗口除能够显示窗体中所有的对象之外,也能够以分层方式表达组件之间的关系。当程序员在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新出的所有操作系统中,单就这一点就足以给其他的数据访问方式画上问号。

在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 教务排课系统简介

课程编排作为高等院校教务治理中的一项重要而且繁重的工作,从一样意义上讲,其实质确实是对学校学期开设的每门课程合理地分派时刻资源和教室资源的进程。其中涉及教师、教室、时刻和学生等多种因素,人为要求也比较多,另外由于这几年的高校扩招致使教室资源比较紧张,诸多因素就加重了课程编排工作的难度和复杂度。若是完全由人工来编排课表,费时费力,其科学性、方便性

更是难以保证,因此利用运算机进行自动排课的方式自但是生。目前,经研究用来解决排课问题的方式有:模拟手工排课法、图论方式、模拟退火法等。国内针对课表问题也接踵研制出了一些排课软件,可是软件的通用性差,因各学校教学资源不尽相同,治理课表的方式也不乏个性,很难完全标准化、程序化。本文依照某高校的实际情形,结合以往的排课体会,通过静态设置教学任务的优先级、分派时刻片资源和教室资源时依照有关参数动态设置其优先级的算法设计并实现了一个高校智能排课系统。如何充分利用有限的教室和时刻资源合理地编排课表,是本文致力研究的要紧问题。

3.2教务排课系统分析

3.2.1 算法分析

在排课系统中,关键的部份在于算法的选择。好的算法不仅能够节省时刻,更能够提高效率。

几种排课算法比较:

(1)自动排课算法:此算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。但其未对数据进行择优选取,因此不能对教学资源(教师、教室)合理分派,也不能知足一些特殊要求(比如有些教师喜爱上午上课,有些教师偏向于集中式上课;有些课程安排在上午更适合些,有些课程不能安排到上午等)。

(2)基于优先级的排课算法:从数学上讲, 排课问题是一个在时刻、教师、学生和教室四维空间, 以教学打算和各类特殊要求为约束条件的组合计划问题。其实质确实是解决各因素之间的冲突。在设计算法时, 为了降低课程调度的算法复杂性, 可采纳化整为零的思想

此算法对班级及教室划分等价类,对学校资源进行了合理的利用。但对一些特殊要求仍是无法具体表现出来。

(3)基于时刻片优先级排课算法:此算法属于贪婪算法。每次对教师、教室资源的选取都是取当前最优的数据。依照教师、教室、班级的优先级取最优值,因此对各对象的一些特殊要求会很明显的表现出来,在教师、教室资源不紧缺的情形下,此算法能排出相对合理的课程。相关于之前介绍的两个算法,在处置各类特殊要求的能力上有明显的优势。

本系统采纳的是动态加权算法即贪婪算法。贪婪法是一种不追求最优解,只希望取得较为中意解的方式。贪婪法一样能够快速取得中意的解,因为它省去了为找最优解要穷尽所有可能而必需花费的大量时刻。贪婪法常以当前情形为基础作最优选择,而不考虑各类可能的整体情形。在解决排课冲突时,为减少贪婪法的缺点,特在自动排课功能后加入手动调剂功能,利用者可对不中意的课程再次调剂。以下为算法进程:

(1) 初始化排课数组、课程申请数组。 (2) 赋初始权值并对课程申请数组排序。

(3) 将课程申请码按序进行排课,结果存储在排课数组中。

(4) 排课思想是将一礼拜分为几个层:礼拜一至五的上午和下午一二节、礼拜一至五的上午及下午三四节、礼拜六全天、礼拜一至五的晚间。对不同的层进行排课,可幸免同一天同一教师授同一门课的问题。

(5) 假设全数排完,那么转(7);不然,计算并从头赋相应权值。 (6) 对申请数组从头排序,转到(3)。 (7) 终止。

3.2.2 算法流程图

3.2.3 功能分析

3.2.4 需求分析

3.3排课系统的功能模块

在系统分析的基础上,咱们提出了系统的功能模块,如图2所示。

教务排课系统系统管理教师信息管理基本信息管理教室信息管理课程信息管理课程申请管理排课管理权限管理系统帮助班级信息管理手动预排管理自动排课管理手动调节管理基本信息设置 图2 功能模块图 前面描述了教务排课系统的功能模块划分,但没给出各模块之间的关系。在本系统中,能够把模块分为三个功能集合: (1) 系统治理功能集合。该集合包括权限治理和系统帮忙两个模块。当利用者为治理员时可进行权限治理功能,它能够添加新的利用者,也可对已有的用户进行名称、密码的修改和删除。系统帮忙功能介绍了开发系统的相干信息。

(2) 大体信息治理功能集合。该集合包括教师信息治理、教室信息治理、班级信息治理、课程信息治理、课程申请治理五个模块。在该集合内可查看相应的

数据表,关于治理员级别的用户可对以上表的内容进行添加、修改、删除的功能。关于一样用户,只能实现查看信息的大体功能。

(3) 排课治理功能集合。在大体信息设置模块中,可查看当前日期,又可设置限制排课的条件,如不加限制排课、不在晚上和礼拜六排课等。而一样用户只能查看治理员设置的条件。在排课时,治理员先在课程信息治理中设置好要预先排课的课程,然后调剂限制排课的条件,就能够够利用自动排课功能。用户可在排好后的课表中查看课表,关于不中意的课程安排可用手动进行相应的调剂,而手动排课也可针对实验课等灵活性的课程。

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 教室的编号 (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 说明 课程的编号 无 无 无 无 无 无 无 无 无 无 一周上课的次数 无 从第几周开始上课 共上几周的课时 无 3.5系统流程及代码分析

3.5.1系统流程图

系统流程图,如图3所示。

开始计算总课时N总课时合适?Y置标志读数据库N当前位置排课?YN有无冲突?NY写入课表冲突解决排课结束?Y保存结束 图3 系统流程图

系统流程图要紧针对排课进程,即当用户设置好相应的排课条件、点击“自动排课”项,系统所进行的流程。其中的“冲突解决”项有两种解决方式:一是在系统运行时进行的自我调剂,另一种是运用手动排课功能解决。“写入课表”项,是在运行时已完成写入课表的功能,假设用户需要,可单击“保留课表”项

生成Excel格式的文本。

3.5.2代码分析

本系统要紧由三部份组成:权限治理,各类信息治理,排课治理。 (1)权限治理模块

该模块可实现治理员级别用户能够对所有效户进行添加、删除、修改的功能。以下摘录保留功能的代码:

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]); 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,

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)排课治理模块

该模块可进行预排课的设置、自动排课、手动调剂功能。在自动排课中分为三步:第一赋权值,第二再检测各类冲突,最后实现排课进程。

a.权值计算:

设置的权值有:课程信息的权值(包括课程类别、课程性质),班级信息的

权值(包括年级),教师信息的权值(包括职称、学位)。

以班级信息权值设置为例: with bjADOTable do for i := 0 to appNum - 1 do begin First;

while FieldValues['班级名称'] <> app[i].className do Next;

if FieldValues['年级'] = '1年级' then app[i].currentValue := app[i].currentValue + 12 else if FieldValues['年级'] = '2年级' then app[i].currentValue := app[i].currentValue + 9 else if FieldValues['年级'] = '3年级' then app[i].currentValue := app[i].currentValue + 6 else if FieldValues['年级'] = '4年级' then app[i].currentValue := app[i].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( arr[day][time][room][0] = 0 ) then continue else begin t1 := 0; t2 := 0;

while app[t1].appKey <> arr[day][time][room][0] do t1 := t1 + 1;

if arr[day][time][room][1] <> 0 then

while app[t2].appKey <> arr[day][time][room][1] do t2 := t2 + 1 else t2 := t1;

if(( app[t1].teaName = app[current].teaName ) or ( app[t1].className = app[current].className ) or ( app[t2].teaName = app[current].teaName ) or ( app[t2].className = app[current].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(( arr[i][j][k][0] <> 0 )or (not RoomCheck(a,k))or (not dynamicTest( i, j, m )) ) do

if( k < roomNum - 1 ) then

k := k + 1 else

if ((i<5) and ((j=0)or(j=2))) then begin j:=j+1; k:=0; end

else if ((i<4) 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 ((i<4) 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 (j<4)) then begin j:=j+1; k:=0; end else begin succ := false; break; end;

if( succ = true ) then begin

arr[i][j][k][0] := a.appkey; a.courseNum := a.courseNum - 1;

TotalCourseNum:= TotalCourseNum - 1; a.roomkey:= k; a.isFirst:= false; end

else SetException( a ); end;

4 系统测试

4.1 测试环境

1.硬件环境

 CPU:Intel Pentium3500MHz  硬盘:40GB  内存:256MB 2.软件环境

 系统软件:Windows XP

 工具软件:D、SQL Server 2003

4.2 要紧模块测试

(1)治理员权限

通过上面各节的工作后,大体上完成了一个档案治理系统的开发。通过编译后,在菜单当选择Run-->Run命令,那么会显现系统的登录界面。

a. 登录界面,如图5所示:

图5 登录界面

说明:输入用户名和密码,单击“确信”按钮,当身份验证成功后进入档案治理系统主界面。单击“取消”退出登录窗口。

b. 主界面,如图6所示:

图6 主界面

说明:主界面由三部份组成:大体信息治理、大体条件设置、预排课、自动排课及手动调剂。在菜单栏中,分为系统、信息治理、帮忙菜单。“系统”菜单含用户治理和退出功能。“信息治理”可查看大体信息。“帮忙”中可查看教务排课系统的相应信息。

c. 如身份验证失败,那么显现如图7所示的提示信息框

图7 错误提示信息

说明:点击“OK”返回登录界面,从头输入用户名和密码。

d. 点击“大体信息治理”中的课程申请治理界面为例,如图8所示:

图8 课程申请治理

说明:选中某一记录后可进行删除和修改的功能,也可直接添加记录,修改完后点击保留或退出完成治理。

e. 大体条件设置治理界面,如图9所示:

图9 大体条件设置

说明:教学公历上显示为当前日期,“排课条件设置”中设置需要的排课条件。

f. 排课治理界面,如图10所示:

图10 排课治理

说明:点击“清空”可清空上次所排信息,点击“自动排课”能实现自动排课功能,点击“检测冲突”可检测当前排课有无冲突。点击“保留课表”能将排课信息保留为excel格式。

g. 权限治理界面,如图11所示:

图11 权限治理

说明:权限治理是当治理员用户在“系统”菜单内的设置。在那个地址可进行用户的添加、删除、修改等功能。

(2)一样用户权限

一样用户与治理员用户的区别在于他只能查看相应信息,不能进行其他操作。以排课治理界面为例,如图12所示:

图12 一样用户界面

说明:一样用户的界面设计上与治理员用户大体相同,只有某些按钮被屏蔽,不能实现相应功能。

其中的清空、自动排课、保留课表键被屏蔽,用户无法进行操作。

4.3 测试结果

教务排课系统是一款基于动态加权算法的人性化的教务软件,它采纳手动预排—>自动排课—>手动调剂的三步排课模式,具有以下特点:

(1) 课表合理:具有预排,合班等功能,排出的课表合理性较强。 (2) 排课灵活:采纳了局部范围内的动态随机加权,排出的课表具有灵活的特点,利用者能够在多次排课当选择自己以为适合的课表。

(3) 操作便利:系统界面简单明了,用户很容易把握对排课软件的利用。

(4) 人性化:系统界面美观,具有很强的交互性。

结 论

在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方案,采纳手动预排、自动排课、手动调剂的三级排课模式,并对一些具体的技术问题做出相应安排。该方案采纳C/S模式,采纳D作为前台开发工具,用SQL Server 2003作为后台数据库。系统能实现查阅、修改、添加等比较大体的功能,也能够实现自动排课、权限治理等较复杂的功能。通过测试后,该系统达到了预想中的成效,能够实现简易的功能。

本文的要紧工作有:

1)介绍了教务排课系统在高校教学日常工作中利用的必要性和重要性,对CS模式、SQL Server及Delphi都进行了简单的介绍;

2) 论述了贪婪法的大体实现原理和算法流程;

3) 模拟了高校教务排课系统的开发需求,提出了比较详细的解决方案,说明了系统的功能模块的划分及彼此之间的关系,并详细描述了每一个模块的实现进程或实现方式;

本系统也有一些不尽人意的地址。需求分析并无超级细致全面,软件的性能、健壮性、利用方便及美观等方面离真正的商业软件还有必然的差距;系统并无严格考虑平安因素;另外,本系统并无考虑与高校其他软件系统之间的关系,比如数据一致性等问题。这些都有待尔后的完善。

通过几个月来的设计,系统大体知足排课治理方面的需要。完成后的系统能够实现诸如权限治理;不同级别用户的查阅功能;治理员用户对数据库的治理功

能;治理员进行的手动预排、自动排课、手动调剂等功能。数据库方面,设置了教师信息表、课程信息表等大体信息,也有课程申请这种动态数据表。综合而言,系统能实现完整的功能,达到了预期的目的。系统设计期间,学习到了很多课堂上没有的知识,增强了动手能力和解决实际问题的能力,提高了熟悉和学习新事物的能力,专门是增强了自己在程序设计方面的信心和动手实践能力,这些关于以后的工作无疑将是一笔宝贵的财富。

[1] 伊文敏.Delphi + SQL Server数据库应用实例完全解析[M].北京:人民邮电出版社,2005。

[2] Macro Cantu.Delphi从入门到精通[M].北京:电子工业出版社,2005。

[3] 启明工作室.Delphi + SQL Server数据库应用系统开发与实例[M].北京:人民邮电出版社, 2003。

[4] 巴克纳尔.Delphi算法与数据结构[M].北京:中国电力出版社,2005。

[5] 宋坤,邹天思.Delphi数据库系统开发完全手册[M].北京:人民邮电出版社,2004。 [6] 刘大玮.SQL Server 数据库项目案例导航[M].北京:清华大学出版社,2004。 [7] 张大年.Delphi数据库应用开发技术与实例[M].北京:清华大学出版社,2002。 [8] 飞思科研产品研发中心.Delphi数据库应用开发[M].北京:电子工业出版社,2003。 [9] 陈豫龙.Delphi数据库系统开发实例导航[M].北京:人民邮电出版社,2003。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务