最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

学校排课系统的设计

来源:动视网 责编:小OO 时间:2025-09-22 23:16:09
文档

学校排课系统的设计

A学校排课系统的设计摘要当第一台计算机出现时,不仅意味着新型的到来,也预示着科技时代的来临。尤其是踏入21世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科学性。在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、
推荐度:
导读A学校排课系统的设计摘要当第一台计算机出现时,不仅意味着新型的到来,也预示着科技时代的来临。尤其是踏入21世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科学性。在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、
A学校排课系统的设计

摘要

当第一台计算机出现时,不仅意味着新型的到来,也预示着科技时代的来临。尤其是踏入21世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科学性。

在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、修改、添加等比较基本的功能,也能够实现自动排课、权限管理等较复杂的功能。本设计采用C/S模式,主要用Delphi7.0作为前台开发工具,用SQL Server2003作为后台数据库。经过测试后,本设计已可达到预想中的效果,能够实现简易的功能。

关键字:动态加权算法;自动化;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 the21st 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 Server2003as 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.1SQL S ERVER2003数据库简介 (1)

2.2D ELPHI7.0简介 (2)

2.3C/S模式介绍 (4)

3教务排课系统的设计与实现 (4)

3.1教务排课系统简介 (4)

3.2教务排课系统分析 (5)

3.2.1算法分析 (5)

3.2.2算法流程图 (6)

3.2.3功能分析 (6)

3.2.4需求分析 (6)

3.3排课系统的功能模块 (6)

3.4数据库设计 (7)

3.5系统流程及代码分析 (9)

3.5.1系统流程图 (9)

3.5.2代码分析 (10)

4系统测试 (16)

4.1测试环境 (16)

4.2主要模块测试 (17)

4.3测试结果 (20)

结论 (20)

参考文献 (21)1引言

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

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

排课系统的主要任务是根据现有的教学资源对课程进行合理的安排。由于高校班级数、课程门数较多,每门课有涉及很多信息,如果用手工进行排课,不可避免地出现教室资源冲突或教师资源冲突的情况。

如何更有效地利用人力、物力资源,充分发挥计算机的辅助作用,减轻教务人员的工作强度,在对需求进行详细的分析后,本文提出了基于教学大纲的教务排课设计思想,并对其算法进行了描述。本论文就该教务排课系统的设计实现进行了分析探讨:首先对系统的需求分析做了叙述,然后介绍了系统的设计和实现,最后进行了系统测试。本系统采用Delphi7.0作为前台开发工具,采用SQL Server 2003作为后台数据库。

2基本理论知识介绍

2.1SQL Server2003数据库简介

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

关系型数据库系统是当前最流行的数据库管理系统。它是一个非常复杂的系统软件,对数据库的所有操作,包括定义、查询、更新和各种运行控制最终都通过它来实现的,因此它是使数据库系统具有数据共享、并发访问、数据等特性的根本保证。目前,Microsoft SQL Server2003是在成熟和强大的关系型数据库中最受欢迎、应用最广泛的一个。

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

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

(2)保障数据的正确存储,即保障定义数据之间的关系的种种规则不会被违背。

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

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

(1)与Internet的高度集成。

(2)高伸缩性和适应性。

(3)企业级数据库功能强。

(4)易于安装和使用。

(5)具有决策支持的资料仓库。

2.2Delphi7.0简介

Delphi是Borland公司发布的用于开发数据库应用程序的工具,它是目前开发客户/服务器数据库应用程序的强有力的工具。Delphi是具有可视化界面的面向对象编程语言.而最新的Delphi7.0具有以下新特点:

和以往Delphi的每一个新版本一样,Delphi7继续改善了开发环境,帮助程序员提高效率。Delphi7在集成开发环境中加入了很多让程序员爱不释手的新功能,下面是对它们的一个简单介绍。

(1)Code Complete(代码完成)

Code Complete功能在Delphi5中就已经加入了,这项功能非常受程序员的欢迎,因为Code Complete可以大幅度地减少程序员需要键入的程序代码,并且减少键入错误。Delphi7的Code Complete功能在原有的基础上继续改善,新的Code Complete窗口不但可以由程序员自行调整大小,而且可以使用不同的颜色代表不同的对象,例如变量、方法和特性等。

(2)Object TreeView(对象树视图)

另外一个新功能就是Delphi7的Object TreeView窗口。这个新的窗口除了可以显示窗体中所有的对象之外,也可以以分层方式表达组件之间的关系。当程序员在Object TreeView窗口中单击了一个组件之后,这个组件会立刻出现在对象查看器之中,这时程序员可以改变这个对象的特性值和事件处理程序。

当窗体复杂,拥有大量的组件时,Object TreeView窗口可以让用户迅速找到这个组件,并且知道与当前组件相关的组件,非常方便。

(3)可定制的View窗口

Delphi7最强劲的集成开发环境功能应该要算是新的可定制的View窗口了。在Delphi7中,编辑器不但可以让程序员观看和编辑Object Pascal的程序代码,而且如果程序员编辑的是Web应用程序,那么还可以直接在编辑器中查看HTML程序代码、脚本语言程序代码,预览Web应用程序执行结果的画面以及Web 应用程序产生的HTML程序代码。

(4)新添加Indy Intercepts和Indy I/O Handler构件组

企业版的Delphi7中,这两个构件组基本上提供了针对现今流行的Internet协议编程的构件。可以进行更为底层的操作。

(5)新添加IW Standard、IW Data、IW Client Side和IW Control构件组

这些构件也是Delphi7的显著改革之一,将Intraweb集成到了标准的构件板中,我们就可以很方便地开发基于Web的应用程序。

(6)新添加的Rave报表构件组

Delphi7的标准构件板中已经没有了原来的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.3C/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所示。

图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 Table1do

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('添加用户成功!');

endelse

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_ComboBo x.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:=0to appNum-1do

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:=0to roomNum-1do

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]<>0then

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(kk:=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

✧工具软件:Delphi7.0、SQL Server20034.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模式,采用Delphi7.0作为前台开发工具,用SQL Server2003作为后台数据库。系统能实现查阅、修改、添加等比较基本的功能,也能够实现自动排课、权限管理等较复杂的功能。经过测试后,该系统达到了预想中的效果,能够实现简易的功能。

本文的主要工作有:

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。

文档

学校排课系统的设计

A学校排课系统的设计摘要当第一台计算机出现时,不仅意味着新型的到来,也预示着科技时代的来临。尤其是踏入21世纪后,计算机技术得到了空前的发展,而网络的普及使得各行各业逐渐离不开电脑。对于高校而言,在教务办公中已经越来越多的实现了自动化,既提高了工作的效率,也规范了教学的操作,增加了科学性。在分析以往一些排课系统的基础上,本设计提出一个基于动态加权算法(即贪婪法)的排课系统设计方法,采用手动预排、自动排课、手动调节的三级排课模式,并对一些具体的技术问题做出相应安排。在功能方面,它能实现查阅、
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top