自动排课系统的设计与实现_第1页
自动排课系统的设计与实现_第2页
自动排课系统的设计与实现_第3页
自动排课系统的设计与实现_第4页
自动排课系统的设计与实现_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

i目录摘要.............................................................................................................................I第1章绪论..................................................................................................................11.1系统开发背景...................................................................................................11.2国内外的研究现状...........................................................................................11.3系统解决的主要问题.......................................................................................31.4本文的主要工作...............................................................................................31.5本文的组织结构...............................................................................................3第2章需求分析..........................................................................................................52.1系统概述...........................................................................................................52.2系统需求问题描述...........................................................................................9第3章系统构架设计................................................................................................143.1构架的目标和约束.........................................................................................143.2构架设计.........................................................................................................15第4章系统详细设计................................................................................................204.1系统建模........................................................................................................204.2系统数据库设计............................................................................................24第5章计算机排课系统的实现................................................................................355.1系统总体实现.................................................................................................355.2教学计划的关键实现.....................................................................................485.3排课算法的关键实现.....................................................................................51第6章总结与展望....................................................................................................66参考文献...............................................................................................................67致谢......................................................................................................................69I摘要随着高职院校招生人数的持续增加,教师规模的不断扩大,手工排课的缺点就越来越突出。而采用计算机排课,教学中的信息可以一目了然,对于优化学生的学习进程,评估每位教师对教学的贡献,领导合理决策等都具有重要的意义。本论文所研究设计的主要内容是使用计算机实现课表的编排、基础数据的处理、课表的查询和报表的输出等多种功能,运用计算机排课代替传统的手工排课,提高排课效率,使教务管理人员的从繁重的排课工作中解脱出来,提高教务人员的工作效率,同时也对教学管理的规范化也起到积极的作用。排课问题从数学上讲,是一个在时间、教师、学生和教室四维空间,以教学计划和各种特殊要求为约束条件的组合规划问题,其实质就是解决各因素之间的冲突。我们分析了国内外对排课问题的研究,根据高职院校的教学体制的特点,采用了化整为零的思想及优先级算法。该算法通过划分等价类、计算优先级等方法降低了课程调度的算法复杂性,从而可以以较快的速度获得较为满意的排课结果。本文采用Rational统一过程(RUP)为软件开发方法,以统一建模语言(UML)为分析设计描述语言,以淄博职业学院的排课业务为对象进行需求分析,对计算机排课系统进行了系统设计,具体分析设计了用户管理、自动排课、课程管理、课表查询、课表输出等功能模块。本文介绍了系统开发的背景和国内外排课问题的发展现状,简要描述了系统需要解决的主要问题和系统的开发模式,对系统的需求分析和架构设计进行了详细描述,对系统部分功能的实现进行了介绍,并对教学计划和排课算法两个关键问题进行描述。关键词:Rational统一过程RUP、统一建模语言UML、计算机自动排课、等价类、优先级、时间模式IIABSTRACTThenumbercontinuingforincreasesbywiththefactthattalldutyuniversitiesandcollegesenrollsnewstudents,teacherscaleceaselessnessexpands,theshortcomingarrangingclassbyhandismoreandmoreoutstanding.Butadoptacomputertoarrangeclass,informationinteachingcanbeclearataglance,studyacoursetooptimizingastudent's,thecontributionappraisingeveryplaceteachertoteaching,leadstherationaldecision-makingtowaittohaveimportantsignificance.Variousfunctionssuchastreatment,theschooltimetableinquiryandtheformforreportoutputstudiedthemaincontentdesigningthatistouseacomputertorealizetheschooltimetablearrangement,thebasisdatabythesis,thattheclasswieldingthecomputerrowreplacethetraditionbyhandtoarrangeclass,improvesrowclassefficiency,makescomplyingwithofeducationaladministrationhandlingcrewextricateselfinstrenuousrowclassjob,improveavailabilityofeducationaladministrationpersonnel,alsoatthesametimealsoplayarriveatactiveroletoadministrativestandardizationofteaching.Rowofclassproblemtalksonsecondarymathematics,isthatacombinationtakingteachingprogrammeandvariouspeculiarrequestasconstraintconditionintime,teacher,studentandclassroomfour-dimensionalspace,plansaproblem,whoseessenceistoresolvetheconflictbetweeneveryfactor.Wehaveanalysedthelargeamountofhomeandabroadresearchtorowclassproblemaccordingtoteachingoftalldutyuniversitiesandcollegessystemcharacteristic.Whendesigninganalgorithm,havemanagedalgorithmiccomplexityforreducingacourse,hasadoptthethoughtbreakingupthewholeintopartsandthepreferentialstepalgorithm.Beanalgorithm'sturntobeabletogaincomparativelysatisfiedrowclassresultwithquickerspeedtherebybythefactthatmethodsuchasdividingtheequivalencekind,calculatingpreferentialstephasreducedthealgorithmcomplexitythatthecoursemanagesgreatly.Atthesametime,payattentiontowhoseconflictsolvingalsoverymuchindesigningalgorithmicprocess.Andthethesishassetforththeconsumerneedwhoadoptacomputertoarrangeclass,accordingtogooddutyuniversitiesandcollegesteachingprogramme,theautomationhasbeenorderedfromthecomputereveryschooltermcoursedesignplan,describesthattoteachingprogrammethegeneratedalgorithmhavebeeninprogress.Andhaveintroducedthealgorithmicrowclassdesigndesignwithrealization,thedatabaseandhavecometruedetailedly.Aspectsuchasdividing,reducingalgorithmcomplexityresemblingintimechoiceflexibility,preferentialstepcalculation,equivalencehascarriedoutdetailedanalysis.ApplybeIIIgearedtotheneedsofmarriagepartnertechnologytorowclasssystem,thealgorithmanalysishavingdiscussedthatrowclassrealizesprocessandkey,thecausethatconflictproduces,hasgivenoutaproblemresolvingascheme.Keywords:Automaticcoursescheduling,Algorithm,Priority,Equivalent,Timemode1第1章绪论1.1系统开发背景2002年7月,经山东省政府批准,教育部备案,由原淄博商业学校、淄博市化工学校、淄博市城建中专和淄博市工贸中专四所学校合并组建淄博职业学院。在学院的教学管理工作中,排课是教学管理中最基本、最重要、同时也是最复杂的管理工作之一。目前,我院的排课主要采用手工编排方法。一般是由经验丰富的教务人员在学期末依据人才培养方案、教学计划等资料集中时间、精力进行编排,协调出现的各种矛盾,在这个基础上再由排课专家反复检查合理性,修正课表,直至符合要求为止。近几年,随着我院招生人数的持续增加,教师规模的不断扩大,手工排课的缺点就越来越突出。排课实际过程中涉及数十个院系和部门、数千教师,上万学生、教师跨系上课和班级合班上课等复杂情况,排出合理的课表需要耗费大量的时间,且排出的课表调整起来困难。同时因为人的思维的随意性,排课表时非常灵活,没有严格的工作步骤,所以人工排出的课表随意性大。计算机由于具有运算速度快、处理能力强等特点,在教学工作中得到了普及应用。用计算机来代替劳动强度大、工作效率低的手工排课势在必行。为了解决手工排课的问题,我院决定通过信息化手段来提高教务管理水平,用计算机排课来代替传统的手工排课。1.2国内外的研究现状计算机排课,它是把排课问题化为计算领域的有约束的时空组合优化问题进行求解的。它对课表上的时间进行了分片和编号处理,使分成的每个时间片和每个教室空间组合,构建了一个个大小不等的时空组合块,并根据求解规则,对每个教学计划进行时空组合块分配,并且分配的组合,必须在目标空间中表现出良好的人为满意度。2国外研究人员从20世纪50年代就开始对课表编排问题的数学模型、解的存在性以及计算机求解算法等问题进行了研究。1962年Gotlieb提出了课表编排问题的数学模型,使之成为数学家和计算机应用专家共同研究的课题。由于实际中遇到种种难题,并未能取得满意成果。1976年Bondy提出了一个简单的排课表问题,将问题归结为一个图的边染色问题,并且对提出的简单排课表问题给出了一个算法。但实际教学活动中提出的排课表问题远非如此简单,且由于它必须满足各种复杂约束条件而使这种算法实际上是无能为力的。1976年Even等人证明了课表问题属于NP完全类问题,把人们对计算机编排课表的复杂性的认识提高到了理论的高度。进入20世界90年代以后,国外对课表问题的研究仍然十分活跃,比较有代表性的有印度的Vastapur大学管理学院的ArabindaTripathy、加拿大Montreal大学的JeanAubin和JacquesFerland等。目前,国外解决课表问题的方法主要有:模拟手工排课法、图论方法、拉格朗日松弛法、二次分配型法等。在国内,对排课问题的研究始于20世纪80年代初期。例如,西南交通大学在分析高校课表编排所遵循的基本原则和模糊性原则的基础上,定义了课元之间,关于教师的相关关系和关于自然班的相关关系,提出以课元相关运算和课元的候选时空片计算为核心的计算机排课算法;延边大学根据高校课程表的制作特点,设计了计算机自动排课的数据结构与算法;沈阳电力高等专科学校研制了基于Client/Server的开放式智能排课系统;山西大学在总结排课工作经验的基础上,提出了一种解决问题的形式化描述,在这种想法上实现了基于知识推理的排课系统;大连理工大学的智能教学组织管理与课程调度系统,清华大学的TISER系统等等,所有这些系统都是模拟手工排课过程,以“班”为单位,运用启发式函数来进行编排的。但是这些课表编排系统往往比较依赖于各个学校的教学体制,不宜于进行广泛推广。高职教育在培养目标和办学模式、教学方式等方面都有别于传统学科式教育。遵循理论“必需”,“够用”为度,理论为实践服务的原则,着重培养学生的实践能力,培养面向生产、建设、管理及服务一线的高等技术应用型人才。由于培养目标和培养方式的特点,决定了高职教育的教务工作面临许多新的困难,其中在排课、调课、检查教学进度、质量、沟通教学双方信息等常规性工作中的问题尤为突出。如何利用有限的师资力量和有限的教室资源,排出一个合理的课表,3对维护高职院校正常的教学秩序和提高教学效果有重要的作用。1.3系统解决的主要问题随着我院办学规模的不断扩大,办学层次的不断提高,课表的编排管理工作也显得越来越重要。我院在日常的手工排课过程中主要存在以下几个方面的问题:1、需要大量的有经验的教务人员进行排课;2、手工排课需要大量的时间,周期长;3、课表编排完毕后很难进行调整;4、容易出现教师冲突和教室冲突的现象;5、排课没有严格的步骤,排出的课表随意性大;6、课表信息共享程度低。1.4本文的主要工作本文通过对淄博职业学院教务管理中排课业务的需求分析,借鉴RUP模式,从架构设计开始,完成了学院计算机排课系统的需求分析和系统设计。采用VisualBasic为开发工具,完成了系统功能的开发。本系统开发过程总体上采用RUP模式,由于计算机排课系统开发的生命周期较短,因此,我们在使用RUP进行软件开发时,对RUP过程进行了适当的裁减,保留了RUP的特点,即仍然是一个用例驱动、以架构为中心、迭代的开发过程。对裁减后的RUP,我们取消了原来RUP四个阶段的定义,只给出了一些工作流程和一些原则,并且结合了UML建模机制,合理的选择了UML中的各种建模元素。1.5本文的组织结构全文共分为六章。第一章是绪论,主要介绍了系统的开发背景,以及国内计算机排课的研究现状,说明了系统需要解决的主要问题和本文的组织结构。第二章是需求分析,主要通过对淄博职业学院排课业务的描述,说明了排课4系统的目标和解决的主要问题,并介绍了系统的开发模式,对系统的功能性需求和非功能性需求进行了详细的描述。第三章系统构架技术,主要介绍了系统构架设计的目标和约束,分别对系统的总体框架、功能构架、技术构架和安全构架等进行详细描述。第四章是计算机排课系统的详细设计,主要通过排课管理实体关系图和自动排课的序列图来介绍了系统的详细设计,并对数据库的构建进行了描述。第五章是计算机排课系统的实现过程,简要介绍了排课系统的几个功能模块的实现过程,同时对教学计划和排课算法两个关键问题进行描述,说明了排课系统设计的理论依据。第六章总结与展望部分,对本文进行了总结,并对下一步的工作进行了展望。山东大学硕士毕业论文5第2章需求分析2.1系统概述淄博职业学院管理体系实行系部的二级管理体制,在全院有13个系部和1000多名教师。学院排课管理系统的应用范围包括教务处、系部和教师三级单位。教务处和系部作为课表的设计者和管理者,重点在于对课程的安排和统计数据的分析;教师作为教学计划的执行者,是信息的源头。在排课管理中,教务处以教学计划为依据,安排出一学期各个班级所开的课程,教师根据自己的专业选择自己能上的课程,各系部负责协调安排每门课程的具体上课的教师。总体来看,淄博职业学院排课业务流程如图2-1所示:图2-1排课业务流程图根据淄博职业学院信息化建设的总体要求,淄博职业学院计算机自动排课系统的目标是:运用计算机排课代替传统的手工排课,提高排课效率,使教务管理安排全院的课程表6人员的从繁重的排课工作中解脱出来,提高教务人员的工作效率,加强对学院基本信息的管理,同时实现教学管理规范化的目标。本系统的主要内容就是使用计算机实现课表的编排、基础数据的处理、课表的查询和报表的输出等多种功能,作为一个完整的排课系统,主要解决以下问题:1、基础数据的处理排课过程中涉及到许多基础数据,这些基础数据包括院系、教师、学生、教室、课程等信息,对于这些基础信息要能够根据实际情况灵活进行增加、删除、修改等处理。2、排课处理课程的编排不是任意的,它是一个时间、教师、学生、教室四者的组合规划问题,为了达到最好的教学效果应遵循一定的要求。这些要求主要有:(1)要尽量为所排课程安排上该类课程效果最好的时间;(2)课程在一周上多次时要有一定的时间间隔;(3)公共课等涉及面广、学时多的课程应优先处理;(4)对同一教师,同一上课对象应尽量选择相对固定的几个教室;(5)对于教师、学生、课程等提出特殊要求的情况,要根据具体情况予以处理。另外,对于计算机初排的结果还应可以通过人工交互进行少量的修改等。3、排课结果的处理计算机编排完课程后,对这个结果进行各种条件的查询,并可以根据情况输出各种形式的表格,以便于教务人员进行处理。例如:可查询某班的课程安排、某位教师的课程安排、以及某个教室的使用情况。4、充分利用网络优势充分利用网络优势,实行计算机分布式排课。计算机排课需要计算机在全校范田内对各种时间是否发生冲突进行检查,因此早期的计算机排课系统大多实行集中式排课,一般由教务处负责完成。但目前各校均在扩招,从而造成学生多、班级多,排课时所需要输入的基础数据多排课任务都由一个部门来完成是很不现实的。实行计算机排课的唯一出路就是将排课任务分解,化整为零,实行分布式计算机排课。现在各高校大多建立了校园网络,这使得实行分布式计算机排课成为可能。课程、教师、学生班级、教室等基本信息既可临时录入,又可从其它教山东大学硕士毕业论文7学管理系统或校园网中获取,以减少数据录入工作量。RUP是一个将用户需求转化为软件系统所需要的活动的集合,即软件开发过程。RUP不是一个简单的过程,而是一个通用的过程框架,可用于各种不同类型的软件系统、各种不同的应用领域、各种不同类型的组织、各种不同的功能级别以及各种不同的项目规模。RUP可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期、阶段、迭代和里程碑;纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动、产物、工作者和工作流,如图2-2所示。图2-2RUP二维开发模型RUP是一个以用例为驱动、以架构为中心、迭代和增量式开发过程。RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Inception、细化阶段(Elaboration、构造阶段(Construction和交付阶段(Transition。本系统开发过程总体上采用RUP模式,由于计算机排课系统开发的生命周期较短,因此,我们在使用RUP进行软件开发时,对RUP过程进行了适当的裁减,保留了RUP的特点,即仍然是一个用例驱动、以架构为中心、迭代的开发过程。对裁减后的RUP,我们取消了原来RUP四个阶段的定义,只给出了一些工作流程8和一些原则,并且结合了UML建模机制,合理的选择了UML中的各种建模元素。裁减后RUP流程是一个不断迭代的开发流程,每一个迭代过程都需要经过下列步骤:第一步:找出系统的功能需求和非功能性需求,功能需求使用用例表示,非功能性需求,可以使用规定格式的文档表示;项目开始时,找出一些主要的关键的用例即可,其他次要的用例可在以后的迭代中补充,对这些主要用例的描述应该保持尽量简单,对用例的描述可以使用文档来表示,也可以使用UML中的建模元素来表示,本文在模型中,选择了UML中的活动图来表示。对这些用例要标明其重要程度,对那些影响系统架构的用例要标以很高的重要程度。第二步:为这些用例建立简单的系统初始模型(可多个,可以使用用例图来表示。从系统整个初始模型可以看出一个用例是否得当;也可以根据初始模型来确定团队的开发进度;并且根据系统原型能够得到系统潜在的一些系统架构;能够这些系统架构中考虑选择一个最恰当的系统架构。第三步:找出待开发系统领域的类,第一次可以找主要的类;并定义个各类的主要职责和各类之间的关系,创建UML中的类图来表示;将类分为边界类、控制类和实体类这三种类,并为实体类之间的关系创建一个类图,以便为以后的数据库设计打下基础。第四步:编写整个项目全部迭代计划(只此一次,每个迭代周期为1周~2周,迭代周期必应该过长。选择要进行迭代开发的用例,这些用例的开发周期不能超过迭代周期。迭代应该注意:迭代计划内容应该包括迭代目标、人员安排、迭代时间表、存在的风险、可交付的迭代结果;每个迭代期间按照需求,分析,设计,实现和测试来进行管理。第五步:将要开发用例所应有的功能和类结合起来,即用类的对象来表示用力所具有的功能;创建UML中的序列图或者协作图来表示;通过讨论验证修改序列图/协作图。第六步:如果某个类的对象,具有一些非常重要的状态,则为该类创建状态图,状态图中的事件,动作和行为最后会转化成相应类的操作。第七步:在设计的层次上加强上面两个步骤中确定的序列图/协作图和状态图,讨论是否还有别的操作和类所需访问的数据,定义实体类的属性,并开始进行数据库的设计。山东大学硕士毕业论文9第八步:根据上面的工作,对类图进行细化与更新,在实体类不断精化的基础上,完成数据库的设计。第九步:对当前迭代的用例进行编码。根据所确定的UML模型,将设计阶段所确定的类图和定义的类,转换成实际开发工具中所支持的类,并编写代码完成各个类的函数实现,在编写代码的过程中,可以对设计模型中的缺陷与不足进行相应的修改;创建系统的实现模型,可以使用组件图和配之图来表示。如果有条件,在编码的时候,进行成对编程,提高代码的质量。第十步:对当前的迭代进行测试,看系统是否完成了用例所描述的所有功能。2.2系统需求问题描述按照RUP的要求,系统的功能性需求描述工具主要是用例(UseCase),即将系统的功能性需求分解到每一个系统用例。RUP模式的最大优点是按照角色(Actor)识别用例(UseCase)的方法,该方法可以较为直观地建立起系统的架构,通过反复识别,避免需求中的漏项。为了清晰地描述系统用例的层次结构,可以采用将系统用例分为不同的包,每一个包表示一组相关的系统用例。为了清晰起见,本系统引入了包图来将不同的功能用例进行分类,每个包图作一个子系统,如图2-3所示。从功能上看,淄博职业学院排课系统可以分为五个子系统:用户管理、数据录入、自动排课、查询课表、报表输出。10用户管理自动排课基础数据录入课表查询课表输出图2-3系统功能包图在每个包中,通过用例图来描述系统的参与者(Actor)和系统的用例(UseCase),每一个用例通过用例活动图进行详细的描述。在项目开始阶段,需求不是非常全面,但是,其需求的中心内容仍然是上面几点,在通过对需求的分析,我们确立了如下几个非常重要的用例:用户管理、基础数据录入、自动排课、课表调整、课表输出等。根据这些主要用例,在项目的初始阶段,为排课管理系统确定了初始用例模型,描述了排课管理系统应该完成的功能,即从用户的角度看,系统应该具有哪些功能。初始用例模型如图2-4所示。图2-4排课管理初始用例山东大学硕士毕业论文11上面所列出的用例模型,基本上描述了排课系统的主要的功能,将这些基本功能实现,就形成了一个简单的排课管理系统。在项目开发的第一次迭代开发中,就是以上面确定的系统原型为基础的,这也确定了系统排课管理系统的初始架构。在排课管理系统以后的迭代开发中,都是在该模型的基础上进行扩展的。通过几次迭代,在新的需求的增加下和对系统的进一步理解,逐步完善了排课管理系统的用例模型,下面给出的用例图(图2-5)是当前排课系统的最新的用例模型。教师图2-5排课管理用例图这里给出的用例模型是当前迭代中进行的,并不表示该模型是最优最全的,模型会随着迭代开发的不断深入而不断优化和完善。在对排课系统的用例描述中,我们通过UML中的活动图来表示。例如:为了说明如何使用活动图来表示一个用例的行为,这里给出“自动排课”用例的活动图(如图2-6所示)。自动排课活动图详细地描述了自动排课用例在实际的执行的时候,它应该有哪些步骤,包括了它成功之行得到用户期望的结果和不成功执行所走的步骤。在使用活动图对自动排课用例进行描述的步骤中,有些活动可能需要优化,包括增加一些活动或者合并一些步骤,这些都会随着迭代开发的不断进行而进行优化。当然,对用例的描述也可以使用用例说明文档来表示。12非功能性需求规定了系统必须满足的服务水平、系统非运行时间的属性以及系统必须遵守的约束。非功能性需求虽然不直接影响系统功能,但在用户和系统支持人员对该信息系统的认可方面具有很大的影响。非功能性需求主要包括系统的约束与假设条件,系统的可用性、可靠性、性能、扩展性、可支持性、系统接口。在本系统中,为了保证非功能性需求的准确性和可测试性,主要采用了量化的指标要求来描述。例如对于系统的可用性要求,一般只需要采用非量化的指标描述即可,例如可以描述为“要求系统采用简洁、友好的人机界面使用户能够方便、快捷地应用系统进行业务处理;同时提供丰富、便捷的辅助功能,提高业务处理效率”。由于淄博职业学院使用系统的人员信息化水平差别很大,必须保证对业务比较熟悉的用户经过短时间培训后即可熟练地应用本系统,因此在本系统中对于可用性的要求则采用了用户培训时间这样一个量化的指标来规定,即只有山东大学硕士毕业论文13在规定的培训时间内相应的用户可以掌握系统的操作,系统的可用性才能满足要求。具体的系统可用性要求如表2-1所示。系统的可靠性包括系统的故障率、可恢复性和可维护性,具体形成如表2-2所示的技术指标要求。山东大学硕士毕业论文14第3章系统构架设计淄博职业学院排课系统是一个用户管理、基础信息录入、自动排课、课表查询等业务的管理信息系统。系统架构必须从各个方面满足实际需求,这是架构的设计目标。同时在设计与开发的过程中严格遵守架构的特殊约束,从而保证可以实现架构设计的目标。3.1构架的目标和约束系统架构设计的目标包括安全目标、保密目标、最大化的重用、简洁、灵活等方面的规定。1、安全目标。架构从管理安全、系统安全、数据安全三个方面来具体考虑和保障系统安全。管理安全是指建立相应的安全管理制度,最终决定是否安全是人来决定的。系统安全从网络、硬件、系统软件、应用软件方面考虑如何加强整个系统的安全性。数据安全是指企业数据的安全,包括备份策略、加密等。2、保密目标。对于校园内重要的数据实行单独保存,对排课系统设计安全级别,对于需要在校园网上传输的重要数据,需要加密处理,3、最大化的重用。重用是减少冗余的一个有效的途径,包括组件级别的重用。组件的实现通常会应用一种或几种设计模式,这些模式与组件的结合使用大大提升了架构的质量。4、简洁。把复杂问题简单化是架构设计的一个重要的目标,明确类以及类之间的职责关系。5、可靠性。根据非功能需求对可靠性的要求来设计,提高系统的可靠性,增强容错处理能力。6、可扩展性。系统在设计时,充分考虑未来高职院校排课业务的变化、组织架构的变化、业务流程的变化等,将因业务或者需求的变更带来的系统升级和改造工作,降低到最小的开发量。任何一个系统都不是可以任意设计的,都有一定的约束和限制条件。本系统为了实现架构的目标,遵循RUP软件开发过程,实行全程的质量控制,因此在15设计策略方面要采用面向对象的分析和设计方法,RUP作为软件开发过程,UML作为建模语言,在技术规范方面要建立必要的设计和开发规范。3.2构架设计排课系统需要大量的数据,包括教师信息、班级信息、科目信息、设备信息等,目前我院的这些基础信息都分在各部门的微机或部门局域网的服务器上,在校园网建立起来以后,为了实现基础信息的全院共享,必须将数据集中存放,统一管理。因此在系统设计时要达到如下要求:●系统软件运行应该速度快、稳定、可靠,同时还有具有一定的安全性;●系统软件操作上应简单、方便,界面简洁明了、美观;●排课活动包括很多具有前后时间相关性,相互制约的步骤,各步骤之间层次分明,功能划分清晰,又相对独立;●系统软件应能支持多用户访问、数据共享;●系统软件在结构上应具有很好的可扩展性,便于将来的功能扩展和维护;●数据计算准确无误,精确度符合业务的需要。●系统提供一些灵活、通用的、便于维护的工具。根据系统设计的具体要求,我们构建了系统的总体框架如图3-1所示。排课系统是由五个子系统和一个系统运行平台组成。其中系统运行平台提供其他各个子系统的一个运行平台与框架,是系统的主窗体,其他各个子系统最终都设计成一个DLL,每个子系统的运行都必须在从系统运行上进行动态加载。排课系统的这种结构,具有如下优点:●为以后子系统的增加和整个系统的扩展提供了极大的便利,要增加的子系统只要开发为一个DLL,然后从系统运行平台上加载即可实现排课系统的扩展。●系统运行平台与任何一个子系统的组合可以方便构成一个系统。系统运行平台主要提供用户登录、与数据库服务器的连接、子系统的更新以及提供其他各个子系统的运行环境。系统运行平台是一个可执行程序,任何一个子系统都不能跨越它进行启动操作。16图3-1排课系统总体框架在对当前高职院校需求的充分分析以及对未来可能需求的分析基础之上,确立了系统功能构架(如图3-2)。本系统包括基础信息录入子系统、自动排课子系统、查询子系统、报表输出子系统和用户管理子系统,各个子系统的主要功能为:图3-2排课系统的功能构架171、基础信息录入子系统实现基础数据的增加、修改、删除功能以及对库中所有数据进行浏览的功能。这些基础数据包括教学区、教室、院系、专业、教研室、班级、教师、课程等基本信息,另外还包括编排课表所需要的参数信息、教学信息等附加信息。为了保证数据库的安全,系统中只为系统管理员和操作人员赋予了操作权限,而普通用户则没有操作该模块的权限。2、自动排课子系统根据录入的基础信息进行有效科学地综合统计,分析各项数据,然后按照所设计的排课算法编排出科学合理的课程表。3、查询子系统完成用户提出的各种查询。包括按班级、教师、教室、课程、时间、总教室等条件进行的查询。4、报表输出子系统利用排课算法编排出的结果,重新组织数据,输出用户所需的各种形式的、复杂的报表。包括单班课表、总课表、单教室占用表、总教室占用表、教师上课信息、教学任务统计表以及开课目录表等。5、用户管理子系统实现对用户及其权限的管理。为了确保数据库的安全,为不同的用户提供不同的操作权限。权限不同的用户对数据库的操作范围不同,对于一些权限低的用户,甚至不给予处理数据库的权力。本系统采用技术比较成熟的C/S技术构架,该模式功能强大,开发工作量小,对服务器要求低。排课系统需要大量的数据,各种很多原始数据分布在校园网上不同系部、不同部门的计算机或服务器上,数据处理起来比较复杂,为了排课系统面向多层次的用户服务,采用基于C/S结构的分布式数据库的体系结构比较合适。这种结构的数据处理并不像通常在基于小型机或基于主机的计算机系统(终端方式中那样在单个的计算机上发生,而是把程序的不同部分在多台计算机上同时运行。淄博职业学院计算机自动排课系统是一个基于校园网络和数据库应用18的系统,该系统有3个节点,分别是系统服务器、数据库服务器和客户端PC。系统服务器为系统提供了大部分的服务,如录入基础信息、自动排课、生成课表等;数据库服务器保存系统中所有持久数据;客户端PC可以通过校园网进行访问排课系统生成的排课信息。三者之间通过校园网相连。系统配置图如3-3所示。客户端PC客户端PC图3-3系统配置图信息系统的安全包括多个方面,例如信息的存储、传输、访问等都属于信息系统安全的范畴。从理论上讲,系统安全仅指相对安全,并非绝对的安全,因此,任何系统都只能是在成本、效益等约束条件下进行相对安全设计。由于信息系统是分层次的,因此系统的安全也要分层设计。本系统采用的安全手段如表3-1所示。19物理层主要是对系统的硬件进行安全保护。如系统所处的物理环境要防雷击、防灰尘等。同时也要对传输介质介质进行相应的保护,如防盗。系统层主要是针对操作系统的保护。如给系统打补丁,定期升级,对重要的信息进行加密处理,实现信息在数据链路上的安全。在网络层采用防火墙设备进行安全防范。防火墙在总公司内网与外网间执行一定的安全策略。一个有效的防火墙应该能够确保:所有从因特网流入或流向因特网的信息都将经过防火墙;所有流经防火墙的信息都应接受检查。在应用层主要进行入侵检测和病毒防护的安全防范。入侵检测系统对网络数据进行特征分析,实时捕获各种攻击行为,防病毒系统是通过部署防病毒软件来实现。防病毒主要的工作就是提高员工的警惕性,每次开机都更新病毒库。管理层主要通过制定相应的信息安全管理规章制度进行保护。如定期对教务人员进行培训,明确责任等。同时也要注意对网路资源的保护。20第4章系统详细设计4.1系统建模模型的创建在整个项目的开发中是至关重要的,因为,这是一个将用例模型转化成系统中应该存在的类的阶段,是将系统功能用类如何实现的阶段。整个项目开发的后面工作,都是在分析阶段所完成的分析模型的基础上进行的,所以,在项目的开发过程中,要确保该阶段工作的质量,严格完成该阶段应该完成的各种UML图。在这个阶段,我们找出了排课管理系统中涉及的主要的类,并且结合用例模型中的用例,将各个类与用例有机结合起来。对系统中的类,建立相应的类图来表示各个类之间的关系。而如何让用例与这些类进行结合,则通过建立相应的序列图/协作图来进行建模。分析模型的建立,并不是一个或几个类图所能实现了,为了对一个系统进行充分建模,对于不同的项目可以选用不同的建模元素和建模机制。在对排课系统的建模中,选择了类图和序列图来构建其对应的分析模型。在排课管理系统的分析模型中,通过对排课系统的分析和几次迭代,找出了排课管理系统中涉及的类,并给出了如下的类图和各个类之间的关系(如图4-1)。在这个类图中,我们选择了Rose提供的三种类的表示,即边界类、控制类、和实体类,并表示了各个类之间的关系。边界类是与用户交互的界面类的抽象;控制类是系统中的一些计算、控制类的抽象;实体类是存储数据的类的抽象。为了图的整洁,在上图中,没有给出类的关键方法和属性的定义。21图4-1排课管理类关系图上面类图中,将排课管理中的类分成三种,并构建了类图,这种表示方法能够清楚地表示各个类在系统中所处的位置,更加直观。当然,仅仅给出了三种类之间的关系,这样表示还是不够的。实体类之间也是有一定的关系的,对此,我们使用了另一个类图来表示各个实体类之间的关系,如图4-2所示。22图4-2排课管理实体类关系类图在这之前,所做的所有模型都是属于UML的静态建模机制中的;而现在所要用到的建模元素是属于UML的动态建模机制的。我们用UML中的序列图/协作图来表示在系统运行时,完成该用例功能系统的内部协作关系。序列图和协作图是等价的,在Rose中,可以将序列图自动转换成等价的协作图,协作图也可以自动转换成相应的协作图。到底采用哪种建模元素,完全取决于项目的实际需要,而且,这两种图只需构造其中的一种就可以了。在一般的实时系统中,一般采用序列图,在序列图中,能够清楚地看到各个对象之间交互时的时间与顺序关系。而在其他的不强调时间与顺序的情况下,使用协作图来表示对象间的关系。在对排课管理系统的动态建模中,因为排课系统比较强调时间安排问题,所以我们选择了序列图来表示相应的用例的在系统运行时的动态执行情况。如下面给出的自动排课用例的序列图(图4-3)。23图4-3自动排课序列图我们在创建用例的序列图的过程中,注意各个类的初级设计,即发现各个类的方法和属性,而且,一般在此阶段发现的类的属性和设计都是非常重要和关键的,当然对于这个阶段发现的方法和属性不需要进行严格的定义,对方法和属性的严格定义可以放在设计阶段去完成;但是,对于每一个发现的方法和属性应该记录下来,可以使用文字进行详细的描述。对于方法,如果能够确定其参数,返回值,也必须进行描述,或者将其定义确定下来。在创建和验证UML的过程中,要做如下工作:1、对于某个类,如果已经存在方法和属性,要详细描述,能够准确定义的,则需要进行准确定义。2、对于某各类,如果发现新的方法或属性,也要进行详细描述,描述应该包括参数,返回值,功能等等。如果在建模过程中,需要增加一些类或删除一些类,或对一些类进行合并,验证后,要立即修改相应的类图。在对自动排课用例的序列图创建过程中,也是经过这样的步骤,逐渐来增加该类的方法和属性的。自动排课类在此阶段发现的方法和属性简要归纳如下,对于这些属性和方法的描述性的:自动排课类:属性:24pClassSubject:保存各个班级的需要安排的科目信息。pArranging:当前正在安排的科目信息。pLimitInfo:当前安排科目和教师的限制信息。方法:Arrange:为某科目安排一节位置。GetClassSubject:得到排课信息。ConflictCheck:冲突检测。NotifyUser:通知用户。AddCourseArrange:增加新的排课结果4.2系统数据库设计系统建立了一个名为user的数据库,所有具体的数据项都以表的形式放在数据库中。这些表包括:院区数据库表、系部数据库表、专业数据库表、班级数据库表、教室数据库表、教师数据库表、教学楼数据库表、教学信息数据库表、教研室数据库表、开课任务书数据库表、课程表数据库、密码数据库表、时间模式数据库表。各个表之间的关系视图如图4-4所示。25图4-4access数据表中的关系视图表是Access数据库的基础,是信息的基本载体。其他对象,如查询、报表的信息都是取自表中的信息。表的设置应该体现数据库的组织性、共享性、独立性及最小冗余度。因此在设计表时,应该特别注意以下设计原则:即表中不应该包含重复信息,并且信息不应该在表之间复制;每个表应该只包含关于一个主题的信息。排课系统中各个数据库表的基本构成如下:1、院区数据库表院区数据库表中存放学校中所有院区的代号和名称,其结构见表4-1。表4-1院区数据库表2、系部机构数据库表系部机构数据库表中存放学校中所有系部的代号和名称以及对应的院区代号,其结构见表4-2。表4-2系部数据库表对系部代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为系部的代号,整数串含有4位整数,如图4-5所示:例:院区代码系部编号图4-5系部代码示例3、专业数据库表专业数据库表存放着各个专业的有关信息包括专业代号、系部代号、院区代号、专业代号、专业类别,其结构见表4-3。表4-3专业数据库表26对专业代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为专业代号,整数串含有6位整数,如图4-6所示:例:专业代号系部代号图4-6专业代号示例4、教研室数据库表用于存放全校所有专业的所有教研室的基础信息,包括专业代号、教研室代号、院区代号、教研室名称。其结构见表4-4。表4-4教研室数据库表对教研室代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为教研室代号,整数串含有8位整数,如图4-7所示:例:院区代号教研室代号系部代号专业代号图4-7教研室代号示例5、教学楼数据库表教学楼数据存放于综合数据库中,其结构见表4-5。表4-5教学楼数据库表276、教室数据库表教室事实数据存放于综合数据库中,其结构见表4-6。表4-6教室数据库表串作为教室的代号,整数串含有4位整数,如图4-8所示:例:图4-8教室代号示例7、班级数据库表班级事实数据存放于综合数据库中,其结构见表4-7。表4-7班级数据库表对班级代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为班级的代号,整数串含有10位整数,如图4-9所示:例:整数串28入学时间班级代号院区代号系部代号专业代号图4-9班级代号示例8、班级课表数据库表班级课表包括:班级代号,专业代号、系部代号、星期、时段、教师代号、教室代号、教学楼代号,其结构见表4-8。表4-8班级课表数据库表教师事实数据存放于综合数据库中,其结构见表4-9。表4-9教师数据库表对教师代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数29串作为教师的代号,整数串含有10位整数,如图4-10所示:例:教师代号专业代号教研室代号图4-10教师代号示例10、课程数据库表课程数据库表中存放课程与之相应的属性,包括:课程代号、课程名、课程性质、专业ID,实验课时、理论课时、周课时、学分、起始周、授课班级、权值。其结构见表4-10。表4-10课程数据库表对课程代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为课程的代号,整数串含有10位整数,如图4-11所示:例:整数串系部代号专业代号30图4-11课程代号示例11、开课任务书开课任务书事实数据存放于综合数据库中,其结构见表4-11。表4-11开课任务书数据库表对学期代号给出一种便于理解又能清楚反映其属性的表述方式。用一个整数串作为学期的代号,整数串含有6位整数,如图4-12所示:例:整数串图4-12学期代号示例12、时间模式数据库表用于存放用户选定的时间组合方式及其相应的优先级信息。其结构见表4-12。31表4-12时间模式数据库表13、教学信息数据库表用于存放排课中所需要的教师上课信息和教师提出的上课要求,为编排课表提供约束条件。其结构见表4-13。表4-13教学信息数据库表14、教室占用情况表用于存放各个教室的占用情况,用来给教室报表提供数源。其结构见表4-14。表4-14教室占用情况数据库表3215、冲突信息数据库排课系统综合数据包括作为排课事实的班级、课程、课时、教师等初始信息,也包括作为排课系统输出的课表数据及其它辅助数据。冲突信息数据库:存放有关死锁课程的相关信息。具体见表4-15表4-15冲突信息数据库表16、用户密码数据库表Password存放个用户名称、口令、权限。该表通过设置用户的权限和密码来实现系统功能设计中的分角色设计不同的用户可以设定不同的权限级别,不同的级别则对应不同的操作内容。具体见表4-16。以班为单位的课表,其形式如表4-17所示。33表4-17以班级为单位的课程表这显然不是一个关系(二维表,因此不能以此来直接建立数局库。我们可以看到,课表中涉及教师、教室、课程、班级四类对象,课程的总学时、周学时是课程对象的一个属性。为了实现排课,系统要知道这个对象的有关信息,例如关于教室要知道其座位数,要知道课程的总学时、周学时、对教室的要求等。按照实体-联系分析方法,这四类数据对象建立的数据库,其字段可定义为对象的属性。通过对这个对象类中的具体对象编号,可以对数据库进行访问,当对象的属性发生变化时,仅对该对象的数据库进行操作即可,小会对其他对象产生影响。课表可表示为对象之间的联系,为这个联系建立一个数据库(称为课程表数据库,做储存排课结果之用。对于课程表库,我们可以采用以教室为关键字段建立数据库,将上述生成的课程信息存储起来。按照这一思路,每个教室的一个上课时段为一个记录,包括有教室编号和上课时间、班级编号、课程名称、任课教师等字段。此结构的最大优点是与过去手工排课方式吻合,便于统计教室情况。因此采用这个结构。若学校教室规模为250个,每周按5天,每天按5大节课考虑,则数据库的最大记录数是6250个。34数据库管理系统是整个数据库系统的核心,ACCESS作为优秀的数据库管理系统,提供了数据管理与维护的强大手段,为用户访问与操纵数据库提供了友好的图形界面与简便的手段。在排课系统中主要用到以下功能和技术:1、数据库管理系统是数据独立于应用而存在,这种应用程序对数据库系统的非依赖性对应用的开发至关重要,它使得对数据的变动不至于影响所开发的应用。2、接受SQL指令,在应用开发过程中,很多对数据库的操作是通过SQL语句完成的。3、事务处理是一种机制,它确保多个SQL语句被当作单个单元来处理。课表编排过程数据的一致性和可恢复性要求很高,在其中采用了事务处理机制。4、数据库规则施加在数据库类表上的约束条件,是在数据库设计中设定的。它可以限定列的取值范围和是否为可控等等。如果用户给此列输入的值不满足约束条件,在存盘时数据库会报错,数据库只接受满足条件的数据。因此,规则可以保证输入的数据满足要求的条件。在自动排课系统的基表设计中留一些字段的设计赋予了约束条件,这样可以通过数据库系统自动控制用户的输入满足规定的要求。5、视图是查看一个或多个表中数据的一种方式。排课结果的查询本质是多表查询,在此利用了视图技术,根据不同的查询要求,设计不同的视图,以达到查看一个或多个表中的数据的目的。35第5章计算机排课系统的实现5.1系统总体实现淄博职业学院计算机自动排课系统的总体流程图如图5-1所示:图5-1排课系统流程图该排课系统由1个主窗体和5个功能模块组成,基础数据录入模块、自动排课模块、查询模块、报表输出模块和用户管理模块。计算机自动排课系统的主窗体实现排课系统的所有功能。主要包括:基础数据的录入、班级的管理、课表的管理、时间段管理、自动排课功能、数据报表功能、用户管理功能等。如图5-2所示。36图5-2计算机自动排课主窗体打开主窗体,在窗体的右边有班级管理、课程管理、时间段设置和用户管理等几个功能模块,如果要对班级进行管理,点击班级管理模块,就可以实现对班级的添加、删除、修改等各种操作,其它模块的管理与班级管理类似。在主窗体中部有生成课表、报表输出、课表查询等模块,其中课表输出可以直接输出也可以输出到电子表格中。在主窗体创建过程中,使用了工程。具体设计如下:打开VisualBasic后,单击文件|新建工程,在工程模板里选择标准EXE,这时VisualBasic将自动产生一个Form窗体,删除这个窗体,把这个工程保存为“工程1”。部分程序代码:DimClassprintAsNewOpenRs'定义打印记录集DimxlAppAsNewExcel.ApplicationDimsendsqlAsStringPrivateSubgridcs('对grid所需求进行初始化OnErrorGoTofinishSelectCaseGrid1.Cell(hang,7.TextCase"周一至周五"Grid2.Cols=5*nknumber+1Grid3.Cols=5*nknumber+137Case"周一至周六"Grid2.Cols=6*nknumber+1Grid3.Cols=6*nknumber+1Case"周一至周日"Grid2.Cols=7*nknumber+1Grid3.Cols=7*nknumber+1EndSelect'以下是列出对应的教师资源以及班级资源Grid2.Range(1,1,Grid2.Rows-1,Grid2.Cols-1.ClearTextGrid3.Range(1,1,Grid3.Rows-1,Grid3.Cols-1.ClearTextSetkc2=cnn.Execute("select占用from占用where教师姓名='"&Grid1.Cell(hang,5.Text&"'"Fori=1ToGrid2.Cols-1Grid2.Cell(1,i.Text=Mid(kc2.Fields(0,i,1NextGrid3.Range(1,1,Grid3.Rows-1,Grid3.Cols-1.Alignment=cellCenterCenterSetkc2=cnn.Execute("select占用from课程占用where班级='"&XPCombo1.Text&"'"Fori=1ToGrid3.Cols-1Grid3.Cell(1,i.Text=Mid(kc2.Fields(0,i,1NextExitSubfinish:MsgBoxErr.DescriptionEndSubPrivateSubgrid4hq('获取教师与班级之间的课程点OnErrorGoTofinishGrid4.Rows=1DimmAsIntegerFori=1ToGrid2.Cols-1Stepn'通过对比对教师与班级之间的可以排课点进行规纳IfGrid2.Cell(1,i.Text="0"ThenIfGrid3.Cell(1,i.Text="0"ThenGrid4.Rows=Grid4.Rows+1Grid4.Cell(Grid4.Rows-1,1.Text=iEndIfEndIfNextExitSubfinish:MsgBoxErr.DescriptionEndSubPrivateSubasPopup1_Click(CancelAsBooleankctable="登陆"Form6.Caption="用户管理"Form6.Show1EndSub38PrivateSubasPopup10_Click(CancelAsBooleankctable="班级名称"Form6.Caption="班级管理"Form6.Show1EndSubPrivateSubasPopup2_Click(CancelAsBooleankctable="教学时间段"Form5.Caption="教学时间段设置"Form5.Show1EndSubPrivateSubasPopup3_Click(CancelAsBooleanEndEndSubPrivateSubasPopup4_Click(CancelAsBooleankctable="课程名"Form5.Caption="课程管理"Form5.Show1EndSubPrivateSubasPopup5_Click(CancelAsBoolean'这里是对一些生成错误的数据进行还原DimvyesAsStringvyes=MsgBox("当系统出现排课错误时进行的完全还原操作,确定吗?",vbQuestion+vbYesNo,"提示"Ifvyes=vbYesThenSetkc2=cnn.Execute("update占用set占用='000000000000000000000000000000000000000000'"Setkc2=cnn.Execute("update课程占用set占用='000000000000000000000000000000000000000000'"EndIfEndSub„数据录入模块实现数据库数据的增加、修改、删除功能以及对库中所有数据进行浏览的功能。为了减少操作中的数据冲突,数据录入模块中的所有录入窗体都是采用模式方式打开的,即在某一录入窗体打开时,不能再打开其它窗体,直到所打开的这一窗体关闭为止。数据录入模块主要包括对院系信息、专业信息、教研室信息、教学区信息、教室信息、班级信息、教师信息、课程信息等信息的39处理,以及对课表编排所需参数信息的处理。下面以课程录入窗体为例详细说明基础数据录入模块的设计与实现。在窗体上放置了2个文本框、1个列表框1个DataGrid表和4个按钮,在文本框中按要求填入相应的信息,点击“添加”可以进行对课程类型信息的添加,如果在数据库中找到相同的信息则提示有相同信息后,重新输入;点击“删除”时提示用户要在表中要选中一行,如果点击“是”删除选中信息,否则取消操作;当用户需要编辑数据时提示用户要在表中要选中一行,然后将选中的数据显示到相应的文本框中,进行编辑,数据修改成功后,点击“编辑”完成该操作。点击“清除”时将文本框中的信息清空,便于用户新的输入,如图5-3所示。图5-3课程录入窗体具体设计代码如下:Dimi,nAsIntegerPrivateDeclareFunctionGetKeyStateLib"user32"_(ByValnVirtKeyAsLongAsIntegerPrivateSubForm_Load(Grid1.SetRegisterInformation"CNwinndy","W]vyY-nonvk-u\nty-Zbl_e-`hms^"'进行注册WithGrid1.AllowUserResizing=True.DisplayFocusRect=False.ExtendLastCol=True.Appearance=Flat.FixedRowColStyle=Flat.ScrollBarStyle=Flat40.DefaultFont.Name="Tahoma".DefaultFont.Size=8.BackColorFixed=RGB(90,158,214.BackColorFixedSel=RGB(110,180,230.BackColorBkg=RGB(90,158,214.BackColorScrollBar=RGB(231,235,247.BackColor1=RGB(231,235,247.BackColor2=RGB(239,243,255.GridColor=RGB(148,190,231.Column(0.Width=0.Column(1.Width=150.Column(2.Width=100.Column(3.Width=100.Column(3.Locked=TrueEndWithMsgBox"因为某此班级正在使用这里的某些资源,使用修改和删除有可能会造成不必要的损失!",vbInformation,"友情提示"CallcallmainEndSubPrivateSubcallmain(kcsave=Falsekcedit=Truekcdel=TrueSetkc1=cnn.Execute("select*from"&kctableSelectCasekctableCase"课程名","教学时间段"Grid1.Rows=1'清除所有记录i=2EndSelectGrid1.Cols=i+1'必须+1,因为实际上为4行,但第一行是隐藏的Fori=0Toi-1'显示数据的字段名Grid1.Cell(0,i+1.Text=kc1.Fields(i.Name'读取表中的各字段名Nextn=ii=1DoWhileNotkc1.EOFGrid1.Rows=Grid1.Rows+1Forj=1Ton'设定读取列Ifkc1.Fields(j-1=NullThen'空值的处理Grid1.Cell(i,j.Text=""ElseGrid1.Cell(i,j.Text=kc1.Fields(j-1EndIfNexti=i+1kc1.MoveNext'读取下一记录LoopGrid1.Column(1.Locked=TrueEndSubPrivateSubForm_Unload(CancelAsIntegerCallXPButton5_ClickEndSub41PrivateSubGrid1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingleIfButton=2ThenPopupMenuczEndIfEndSubPrivateSubGrid1_RowColChange(ByValRowAsLong,ByValColAsLonghang=RowEndSubPrivateSubGrid1_Validate(CancelAsBoolean'设定TAB键切换DimnActiveRowAsLong,nActiveColAsLongConstVK_TAB=9IfGetKeyState(VK_TAB<0ThenIfnActiveCol<Grid1.Cols-1ThenGrid1.Range(nActiveRow,nActiveCol+1,_nActiveRow,nActiveCol+1.SelectedEndIfCancel=TrueEndIfEndSubPrivateSubrenovate_Click(CallcallmainEndSubPrivateSubXPButton1_Click(kcsave=Truekcedit=Falsekcdel=FalseSetkc1=cnn.Execute("select*from"&kctableGrid1.Rows=1'清除所有记录Grid1.Rows=2'默认为2行Fori=0To1'显示数据的字段名Grid1.Cell(0,i+1.Text=kc1.Fields(i.Name'读取表中的各字段名NextGrid1.Column(1.Locked=FalseGrid1.Cell(1,1.SetFocusXPButton2.Default=TrueEndSu

温馨提示

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

评论

0/150

提交评论