Excel VBA应用研究文档格式.docx
- 文档编号:19845626
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:27
- 大小:2.20MB
Excel VBA应用研究文档格式.docx
《Excel VBA应用研究文档格式.docx》由会员分享,可在线阅读,更多相关《Excel VBA应用研究文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
3.3算法的设计与复杂性分析21
4运行结果与结论23
4.1运算结果23
4.2结论26
致谢语27
[参考文献]28
1引言
1.1问题的提出和研究状况
计算机的发展和普及极大地改变了人们的工作和生活。
目前,各行业、各领域都广泛地采用计算机信息技术,并由此产生出开发各种应用软件的需求。
为了以最少的成本、最快的速度开发出适合各种应用需求的软件,所有的软件设计都必须遵循软件工程的原则。
设计一个高效的程序不仅需要编程的技巧,更需要合理的数据组织和清晰高效的算法,这正是计算机科学领域中数据结构与算法设计主要内容。
对于高校而言,考试安排是校园信息管理系统的重要内容,是学校管理中十分重要不可缺少的环节,又相当复杂的管理工作之一,合理地安排学校所设置的课程安排时间和地点,使整个学校能够有计划有秩序的进行,是校园管理的重要有效的手段。
考试安排是一个涉及多种因素的组合规划问题,它要保证在课程安排中教师、学生、教室不能产生冲突(所谓冲突,就是将需上不同课程的两个或多个班安排在了同一时间、同一教室,或为同一个教室在同一时间安排了多门课程的情况),并且要满足教师的要求和教室资源等约束条件。
随着我国教育体制改革的深入,学生人数的不断上升,课程设置不断向深度和广度发展,手工考试安排的易错难改、效率低的缺点就越来越突出。
由于计算机具有运算速度快,处理能力强等特点,很自然地进入到这一领域中,用计算机进行排课能够快速地得到满足约束条件的可靠结果,考试安排时间短、人力省和质量高的优点,不但能使教务人员从繁杂的排课任务中解脱出来,而且对于推动教学的发展出起了非常重要的作用。
经过具体查询与调查,对于考场安排系统的研究相对来说较少,仅限于座位安排或者监考老师安排等,没有从根本上解决考试时段等的冲突问题。
在处理数据库时通常的做法是采用数据引擎的方式联接本地或远程的数据库,再通过SQL等查询语言的方式读取数据库中的信息。
1.2本论文的主要研究内容和处理方式
要解决考试时段的冲突问题的重点在于如何处理学生、班级、课程、时段、考场、监考教师之间的多重的多对多联系的复杂关系,在本论文中处理这一问题时在充分分析上述各结构之间的关系后,又多建立的一个名为安排的结构来联系上述各种结构,较好地解决了它们之间的复杂关系。
要进行考试时段的安排,另一个要面对的问题是如何选取每一门课程的时段信息,怎样对一个方案进行评判,在本论文中所提出的方法是通过对可用时段的集合取模的方式,并定义冲突函数来解决这一问题,得到了较好的效果。
在本次的系统设计中采用Excel作为数据库,记录排考场问题所用的原始数据和计算结果,用其附带的VBA作为开发工具在处理上述各种类型的数据时,通过定义结构化数据的方式,将同一实体的信息记录在一起。
通过定义这些结构类型的动态数组,将同一类型的实体用数组表示,在处理上述元素之间的关系时,通过在数据结构中定义集合类型的分量将与之相关的其它类型的数据在相应数组中的位置表示出来。
利用这样的处理方式,简化了数据的查询操作,也便于在计算中迅速得到他们的对应关系。
2系统设计
2.1Excel介绍
Excel是一款市场占有率最高、使用范围最广的数据处理软件。
这归功于它除了拥有强大的制表功能外,还提供二次开发平台,允许用户开发新工具,以完成Excel本身不具备的功能[1];
或者通过VBA实现自动化,让某些功能全自动执行,大大提升工作效率。
这使得Excel从众多制表软件中脱颖而出。
通过VBA进行二次开发,可以强化Excel的功能,将某些烦杂或者重复的日常工作简化,还可以开发商业插件或者小型财务系统等。
可以说VBA已完全融入办公文员的日常工作,拥有VBA就等于拥有效率[2]。
2.1什么是VBA
VisualBasicforApplications(VBA)是VisualBasic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言[3]。
主要能用来扩展Windows的应用程式功能,特别是MicrosoftOffice软件。
也可说是一种应用程式视觉化的Basic脚本。
该语言于1993年由微软公司发行。
微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
直到90年代早期,应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言[4].例如:
可以用EXCEL的宏语言来使EXCEL自动化,使用WORDBASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言VisualBasicForApplication(VBA),可以认为VBA是非常流行的应用程序开发语言VISUALBASIC的子集.实际上VBA是寄生于VB应用程序的版本.它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。
而VBA提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。
VBA易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA程序代码。
这样用户可以容易地将日常工作转换为VBA程序代码,使工作自动化。
因此,对于在工作中需要经常使用Office套装软件的用户,学用VBA有助于使工作自动化,提高工作效率。
另外,由于VBA可以直接应用Office套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
从VisualBasic5.o之后,Microsoft公司将OCX技术和其他一些关键技术组合到一起,制定出了新的技术规范,并称之为ActiveX(TX)技术,ActiveX技术仍然遵循0LE2.0规范,继续可以象原来的OLE应用那样使用其他应用程序提供的功能,例如MicrosoftWord字处理器,MicrosoftExcel电子数据表及其他Windows应用程序[5]。
VisualBasci具有强大的数据库访问能力,在VisualBasic内部具有内嵌的DAO对象,在进行远程访问时,还可以使用RDO对象,利用了ODBC,VisualBasic的数据对象可以非常方便地访问无论是本地还是远程的数据库[6]。
2.2VisualBasic的数据库对象
用VisualBasic访问数据库有许多可供选择的方案,这些方案各有自己的特点。
RDO是VisualBasic访问关系型ODBC数据源的最佳界面接口,就如DAO/Jet是Jet和ISAM(顺序索引查找方法)类型数据源首选的访问接口一样。
这两种方法都完整地集成于VisualBasic中,并且形成了VisualBasic核心的数据访问策略[7]。
RDO和DAO都己发展成为相当成熟的技术。
因此需要访问ODBC数据源,可以使用RDO:
如果需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet。
ActiveDataObject(ADO)作为另一种可供选择的技术出现,正在逐步代替其他数据访问接口,由于RDO同ADO的体系结构非常相似,因此将RDO数据接口转换为ADO时,仍可以使用RDO设计的代码。
ADO是独立于开发工具和开发语言的简单而且容易使用的数据接口,同ADO相比,其他数据访问接口都会黯然失色"
所有的数据都可以通过ADO来访问,在今天己逐渐成为现实。
经过数年的发展,ODBC技术日臻完善,已成为访问远程数据的主要方法,而Jet成为本地Jet和ISAM数据接口的首选方案。
虽然这些方法在不同程度上有功能交迭的地方,在论证选用数据库访问的方法时,主要还应满足用户在特殊应用程序中对具体数据接口的访问。
近年来随着web应用软件的迅速发展和现有数据存储形式的多种多样,VisualBasic。
访问数据库的解决方案面临诸如快速提取公布于企业内部和外部有用商业信息等多种挑战,为此Microsoft公司提出一种新的数据库访问策略,即“统一数据访问”的策略。
“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、参阅容易维护的解决方案成为可能。
2.3VisualBasic可视化编程
VBA和Microsoft的其他软件有很好的兼容性如我们经常使用的WORD、Excel等办公软件[8],是办公自动化中经常使用的很方便的开发工具。
除了可以方便地交互使用外,对于开发人员,也经常通过这个编程语言对这此软件进行访问,VB在这一方面具有较强的功能,在本系统的开发过程中就重点挖掘和使用了这一功能。
在VB中Excel可以看作是VB的应用程序对象,充分的利用的面向对象的编程技术实现对加以引用,Excel的编程,Excel中提供了大量的对象和方法,许多对象都可以在VB中通过对这些对象方法的调用,属性的编程达到应用程序的目的[9]。
本系统主要是通过VBA设计实现的具体的应用技术。
2.4系统的概念设计
在概念设计阶段,一般都使用语义数据模型或概念数据模型,这类数据模型具有如下特点:
具有很强的表达能力,能够方便地表达各种类型的数据与数据之间的联系和各种约束。
简单易懂,概念清晰、容易使用。
组成模型的概念少,概念定义严格,无多义性,不同概念的语义不重叠。
具有使用图形表示概念模式的能力[10]。
2.5数据库的设计
本系统将使用Excel2003作为数据库管理系统,在Excel中新建一个文件,将其命名为“考场安排.xls”,将应用程序放置在新建的数据库中,以便调用。
班级情况表的设计:
班级库是描述班级信息的数据表,包括以下几个部分:
班级名称、班级编号、班上的学生数、上课门数等信息。
根据上述实例,需建立以下六个实体:
学生、班级、课程、时段、考场、监考老师。
上述实体型之间的联系有:
学生一班级、学生一课程、班级一课程、课程一时段、学生—课程—考场、时段-考场-监考教师等,在数据库中建立以下数据表格
学生情况表Rl
编号
学生姓名
所在班级编号
班级情况表R2
班级名称
课程情况表R3
课程名称
考试时间
时段情况表R4
时段名称
考场情况表R5
教室名
容纳人数
监考教师情况表R6
监考教师
上述Rl很6分别记录学生、班级、课程、时段、考场及监考教师的基本情况。
其中各表中的编号字段为关键字,它函数决定其它的各个字段。
班级选课情况表R7
班级编号
课程编号
学生选课情况表R8
学生编号
上述R7、R8分别记录班级与学生的选课情况,其中班级编号、学生编号与课程编号为外键。
R7、R8使用全键作为候选键。
此二表表示在E一R图中的学生一课程、班级-课程的M:
N的联系
表Rl一RS中除了表R3中和考试时间字段外其它所有字段均为本考试安排系统所需的原始数据。
表R3中和考试时间字段记录安排课程的考试时段的计算结果。
考场安排情况表R9
考场编号
人数
每门课程安排好时段后,可能需用多个教室作为考场,表9表示这方面的信息,其中编号字段为关键字,课程编号与考场编号为外键。
学生安排情况表R10
安排编号
每门课程安排好考场后,需将学生安排进各个考场,表10表示这方面的信息,其中编号字段为关键字,安排编号与学生编号为外键。
监考教师安排情况表R11
监考教师编号
每门课程安排好考场后,各个考场需安排2、3教师进行监考,表11表示这方面的信息,其中编号字段为关键字,安排编号与监考教师编号为外键。
学生、班级、课程三者之间的关系如图所示
在系统中将一个时段与一个考场的组合称为一个安排,它与学生、课程及监考教师之间存在如图所示的关系
2.6数据表在的Excel表示
在Excel中建立工作表记录Rl一R11中的数据如下图所示
图2-6-1
图2-6-2
图2-6-3
图2-6-4
图2-6-5
图2-6-6
再记录两张工作表,记录班级与学生的选课情况
图2-6-7
图2-6-8
最后再建立两张工作表准备记录安排结果;
图2-6-9
图2-6-10
在系统中建立六个结构分别表示班级、学生、课程、时段、考场、监考教师与Execl中的工作表的对应关系如下:
表2-7-1
变量名
变量类型
说明
工作表
列
Type
ClassType
班级结构
Class_uid
Integer
班级流水号
班级情况表
B
ClassID
String
该班编号
A
Clash
Long
引起冲突的记录
E
Student_uid
Collection
该班学生的集合
学生情况表
Course_uid
该班所选的课程
班级-课程
D
表2-7-2
StudentType
学生结构
学生流水号
StudentID
学生学号
H
该学生所在的班级
该学生单独选课
学生-课程
Arrange_uid
该学生考场安排
考试安排表
表2-7-3
TyPe
CourseType
课程结构
课程流水号
课程情况表
CourseID
课程的编号
Examtime_uid
该课程的考试时段
F
选该课班级的集合
班级一课程
C
单独选该课学生
学生一课程
该课程的考场安排
StudentNumber
选该课学生的总数
表2-7-4
ExamtimeType
时段结构
时段流水号
时间情况表
该考试时段的编号
该时段安排考试
参加考试学生数
表2-7-5
ClassroomType
教室结构
Classroom_uid
教室流水号
考场情况表
ClassroomID
教室编号
Count
该教室容纳考生数
表2-7-6
Invigilator-type
监考教师结构
Invigilator_uid
监考教师流水号
监考教师情况表
InvigilatorID
教师监考的课程
FGH
表2-7-7
ArrangeType
考场安排结构
考场安排流水号
课程名
ExamtimeID
时段名
考场
该时段该考场的考生人数
Invigilator_Number
安排的监考教师数
监考教师集合
该考场安排的考生集合
考生安排表
3.系统开发中的难点问题及解决
由于该考场安排系统中一些固有的特色,在开发过程中难免会遇到各种问题,比如:
系统数据表之间关系的存储、计算问题;
安排结果的生成方式、记录、优劣评判问题;
如何将考生随机地安排到各考场等等,本章将介绍这些难点问题的解决方案。
3.1数据表之间多对多关系的处理
近年来,随着各高校对于学生选课工作的日益灵活多样,由于自由选课与重修等因素,使得学生各学期所选的课程不一定与其班上其他同学完全相同。
如何在计算机中记录和处理这些多样化的信息,如何合理地安排上课和考试的时间、地点,才可以使学生、教师、教室等都不产生冲突,成为一个需要解决的问题。
图3.1.1
图3.1.2
图3.1.3
图3.1.4
图3.1.5
图3.1.6
其中表3.1.2表3.1.3表3.1.4分别表示表示班级、学生和课程的基本信息,表3.1.5表示各个班级的选课关系,表3.1.6表示每个学生因为自选课或重修等原因与班上其他同学所选的不同课程。
但是如何在高级语言中记录这些联系,在以往的做法中,常常通过频繁地使用SQL等语句数据库中查询"
现在本文提出一个新方法,将这些联系直接记录在程序的变量中。
在VB语言中有一种新的数据类型Collection,对于每一个定义为Collection的变量,各有Add(添加)、Remove(删除)、Item(取值)三种方法和Count(计数)一种属性。
这样我们就可以象使用数组变量的方式一样使用Collection变量,但Collection变量不必预先定义其元素的数量,可以在程序运行的过程中动态地添加和删除元素,Cuont属性值可以随时参与到程序运算中,与数组变量相比较,则更加灵活,并且节省系统资源。
同时我们也可以使用升pe关键字定义结构变量类型,将同一个体和各种属性定义在一起,可以使用“.”运算符对结构的各个属性进行操作。
结合使用Collection和Type两个关键字就可以在VB程序中定义班级、学生、与课程三个结构变量类型,分别用于记录从数据库中读取的三者的属性值,结构定义如下所示:
TypeclassType‘班级结构
class_uidAsInteger‘班级流水号
clssIDAsString‘该班编号
student_uidAsCollection‘该班学生的集合
course_uidAsCollection‘该班所选课程的集合
EndTyPe
TypestudentType‘学生结构
student_uidAsInteger‘学生流水号
sutdentIDAsString‘学生学号
class_uidAsInigeer‘该学生所在的班级
course_uidAsCollection‘该学生单独选课的集合
EndType
TyPecourseType‘课程结构
course_uidAsInteger‘课程流水号
courseIDAsstring‘课程的编号
class_uidAsC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel VBA应用研究 VBA 应用 研究