目录
《文档管理系统》是采用VISAUL BASIC6.0开发的一个数据库管理系统。本设计说明书主要讲述了VISAUL BASIC6.0的基本功能及设计方法。紧接着以本系统为例,逐一介绍开发本系统系统的步骤:系统分析、系统设计、系统实现、系统维护。在系统分析中先后用数据流图、数据字典、系统的功能结构图分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块。所需的数据库表及表字段。菜单的设计等。在系统的实现中,给出了实现表单中相应的功能控件的事件及代码。以及菜单实现的方法。文章的最后则给出了本系统的主要功能源代码。
本系统具有数据输入,数据存储,信息查询,报表打印等功能,系统的人机对话界面友好。系统功能全面,用户操作方便是本设计的一个特色。
关键词:面向对象 文档 管理系统 VB
Key word: archives administrative system of the archives VISAUL BASIC6.0
计算机技术的飞速发展,为人类的进步注入了新的活力。新的技术为人们带来的是更快捷、更可靠的服务。越来越多的家庭、企业、机关、学校利用计算机来处理日常事务,管理信息系统(MIS)就是利用计算机为企业、学校,事业机关等的经营者、决策者收集、处理信息的一项重要工具,管理信息系统的发展源于管理现代化的推进和计算机技术的发展。籍于此管理信息系统将随着人类文明的进步而不断的完善与发展。
知识经济时代的今天,对文书档案管理工作人员提出了更新更高的要求。文档管理工作人员,必须完成由传统的管理模式向现代的管理模式的转变,由传统的管理理念向现代管理理念转变,同时在管理实践中应用,使文书档案管理工作赶上时代步伐,适应文书档案管理现代化和办公自动化的时代需要,为社会提供更好更有效的服务,使文书档案管理工作发挥出应有的经济效益及社会效益来。
《文档管理系统》针对本人对文档资料管理的调研,结合本单位长期以来管理文档资料的经验而设计的计算机管理系统。提出了一套比较适宜的施行方案,并努力将原本复杂的管理业务、归类、存档等简化为比较简单的事务。他基本上秉承了传统的文档资料管理理念,同时也兼顾当今对现代管理信息的需要,着眼于实用、高效的原则。
由于本人的水平有限,在本系统中难免存在错误和不足。望各位老师予以批评与指正
第一章 概述
1.1 管理信息系统简介
管理信息系统MIS(manage information systion)是由人和计算机等组成的能进行管理信息的多种操作(包括收集、储存、加工、维护和使用)的系统。它由四个要素组成。即现代化经济管理理论、系统工程、数学方法和计算机手段。其目的是通过自动化的事务处理方法来监视和控制企业、学校的行为、通过对历史数据的科学统计提供可靠的预测数据。并通过一些优化方法提供决策依据,管理信息系统是生产力发展的阶段标志是现代管理的综合体现。一个MIS系统的开发应分为如下步骤进行。
1)系统任务的提出。
系统开发的工作是从接受任务开始的,而系统任务应由系统用户提出,以书面的形式给予表达。
2)初步系统调查。
初步系统调查着重了解存在的主要问题和用户提出的目的要求,并制定新系统总体规划。
3)确定系统目标。
经过初步系统调查,了解了用户的基本状况和用户对系统的设想及要求后,系统开发人员就可以初步提出档案系统的系统目标。
4)系统的可行性研究。
系统的可行性研究包括可能性和必要性。有技术上的,经济上的,人力资源上的,以及组织管理上的。经过系统的可行性研究,最后应写出一份系统可行性分析报告。分析报告是系统开发人员第一阶段工作的小结。
5)详细的系统调查。
通过详细的系统调查。可以得到人工管理业务的处理办法,并详细地掌握住处的流程,总结出现有业务过程的规律,存在的问题。从而提出改进措施。
6)现行系统的描述与分析。
着重用来分析现行系统页面设计后,相关性版块信息交互的方便性。特别是要分析现行档案系统存在主要问题和管理上的薄弱环节,以及产生这些问题的原因和解决办法。
7)用户需求及功能分析。
用户需求因不同用户而有所区别,但主要可分为系统范围,信息的处理和技术性三个方面。
8) 新系统的逻辑模型。
通过对现行系统的进行详细调查,分析及用户需求分析后,就可以确定新系统的逻辑模型。新系统的模型包括新系统的功能要求、目标、各级页面之间链接、数据字典。
9) 编码对象的分析及编码体系结构的确定。
在系统分析阶段,对现行系统及档案系统将要采用的编码对象及方法应该认真分析,以确定先进的科学的高效的系统编码体系。
10) 系统的软件,硬件配置建议。
分析人员应对档案系统所需的计算机系统的配置提出建议。
11) 系统的物理编程。
根据不同的系统要求以及用户软、硬件技术状况,在合适的平台上,选取相宜的档案语言和工具进行实际编程。
12) 软件调查。
对设计的原代码进行调试,以修改其中错误,从而确定系统的可靠性。
13) 功能测试。
对照系统分析中提出的系统功能要求,应进行系统的功能测试,以确定系统可预期的功能。
14) 系统的性能评价以及完善文档。
系统的性能评价应包括最基础的软硬件,支持系统占用空间等。系统交付时,应同时交付完善的文档。
1·2:面向对象的程序设计
面向对象的方法学是要求按人们通常的思维方式建立问题领域的模型,设计出尽可能自然表现求解方法的软件。所谓建立模型就是建立问题领域中事物间相互关系。而表现求解问题的方法就是人们思维方法的描述。在面向对象的设计方法中对象(object)和传递信息(message passing)分别表现事物和事物间的关系。类(class)和继承性(inheritamce)是描述人们思维方式的描述方法。方法(method)是在可进行的操作,这种对象、类、消息、方法的程序设计范式的关键在于对象的封装和继承性。通过封装(emcapsulation)能将对象的定义和实现分开。通过继承性,体现了类与类之间的关系,以及由此带来的基本特征。下面将从面向对象的方法学方面对有关概念作简要介绍。
1) 对象
我们把面向现实世界中的实体就称为问题空间的对象从动态的观点看,对象的操作就是对象的行为,从存储的角度看,对象是计算机内存中的一块私有存储区,在这块存储区中有数据、有方法。在面向对象的程序设计中,对象是该系统的基本运行实体,对于每个对象而言,都有与该对象对应的方法,而与每个对象相关的方法,就是定义了该对象的操作。
2)消息和方法
在对象之间,消息是他们之间的唯一联系。在面向对象的程序环境中设计的程序,它的执行是依靠对象向消息传递来完成的。
把所以的对象分为各种对象类,每个对象类都定义了一组方法,所谓方法就是允许在对象类上进行的各种操作。
3) 类
在面向对象的程序设计中,对象是程序设计的最基本的单位,相似的对象可以并到一类中去,程序员只需定义一个类,就可根据这个类得到若干个实例,其中每个实例就是一个对象。
4) 继承性
继承性是自动地共享类、子类、对象中的方法和数据的一种机制,继承性个减少程序设计中编写代码的工作量,它不仅支持系统的可重用性,而且还促进了系统的可扩充性。
5) 封装性
所谓封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,而对象内部对用户透明,封装的目的是把对象的使用着和对象的设计着分开,使用着只需设计访问对象的消息。
6) 多态性
当同样的消息可发送到父类的对象和它的子类的对象时,这就被称为多太性。由于多太性具有可表达对象的多个类的能力。因此,它既与动态类型有关,又与静态类型有关。
7) 动态聚束
一个程序经过编译,连接生成的可执行文件代码,其过程就是将执行代码聚束在一起,若这一过程发生在程序设计时,就称为动态聚束。面向对象语言常使用这一类聚束方式,它具有程序简单性和可扩充性等优点。
本系统在编制过程中,多次利用面向对象的技术特点。在后面的章节中将分别予以说明。
1·3、系统软件开发环境简介
本系统是在Pentyum 166mmx 以上机型的计算机上进行开发并获得通过的,同时方便系统开发,减少开发过程的难度,我们是基于以下的软件环境。
·以Windows 98为操作系统
·以Visual Basic6.0为开发工具
Windows 98是目前主流图形化操作系统,而Visual Basic6.0是一种优秀的面向对象的,支持多种数据库应用的开发工具。我在系统开发过程中深深地感受到Visual Basic6.0的强大威力。下面我结合自己的体会对Visual Basic6.0作一简要介绍。
Visual Basic6.0是著名的Microsoft公司推出的完全可视化的,支持多种数据库开发工具。使用面向对象的开发技术,能够开发出强大的专门针对用户的应用程序。具有强大的API函数库,支持ActiveX和OCX技术。能够管理大量复杂的数据信息,同时具有很好的安全性。
在后面的篇幅里,我将详细的说明我是如何利用Visual Basic6.0进行《文档管理系统》的系统开发的。
第二章 应用系统分析
需求分析是软件生命周期的一个重要阶段,它根本的任务是确定为了满足用户的需要必须做什么。具体地说,应该确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景,必须仔细分析系统中的数据,既要分析系统中的数据流。又要分析长期使用的数据存储,通过分析应该得出用数据流图、E-R图,为系统的设计奠定基础。
在这一章里,我将给出系统的数据流图,功能结构图,系统分析说明书,E-R图,为系统的设计奠定基础。
2·1、数据流图
数据流图描绘系统的逻辑模型图,其中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具。此外,设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。《文档管理系统》主要是为了对各种文档资料信息,卷宗信息,档案柜信息等进行计算机管理。所以主要的数据源应是文档资料,卷宗,档案柜的各种信息。它们在系统中流动和处理详细见下面的数据流程图。
:
从流程图上可以看出:档案柜基本信息的流动首先是以档案柜号的特征为流动方向的依据。非0档案柜号可以继续流动,并检验数据库中是否已经注册,已经注册的信息可以修改、查询、并将查询结果报表。未注册的信息可以录入到数据库中。这里可以分析得出:要实现档案柜基本信息的流动,需要设计一个档案柜基本信息数据库表。并对该表实现信息的录入、修改、查询、统计、报表。
2 卷宗信息的流程图:(图2-2)
这里同样可以分析得出:要实现卷宗信息的流动,需要设计一个卷宗信息数据库表。并对该表实现信息的录入、修改、查询、统计、报表。
3 文档资料信息的流程图:(图2-3)
:
从数据流图上容易看出该系统应具有对文档资料信息录入到数据库中,可以修改,删除数据库中相关信息资料。可以对数据库的信息按某些字段或字段组合进行检索。同时应具有对数据库的信息作出相关统计等功能。
2·2、系统功能结构图
通过前面的数据流程图已经对系统的主要功能有了一个初步的了解,下面将系统的功能再作一些深入分析,最后得出系统的功能结构图
《文档管理系统》是为了实现联通泰安分公司文档资料的计算机管理。因此,系统应该有一个全局管理功能,以方便实现不同的功能的选择。也就是应具备全局管理功能。这里用总控模块实现。由于要处理的信息包括档案柜,卷宗,文档资料的不同处理,总控模块管理有三种不同的信息的处理。即档案柜、卷宗的处理、文档资料的处理。由于每种信息的处理涉及到对信息多方面的不同子功能,所以又涉及到对众多的子功能的管理。在此用档案柜信息模块、卷宗模块、文档资料模块实现。在档案柜信息模块下包含对档案柜基本信息的编辑、检索、报表等功能。对检索应具备从多方面对不同字段进行检索。卷宗信息模块包含卷宗信息创建、编辑、检索、统计、报表等功能。对卷宗信息的功能处理的是否恰当是本系统是否成功的一个标志。因此,对卷宗信息的功能应细化。尤其是卷宗的检索、信息的统计要具备从不同的角度能够对数据库中的记录进行特定条件的检索和统计。文档资料信息模块包含文档资料的编辑、修改、检索、报表等功能。同以上的检索一样,应能从多方面、不同字段进行。在此基础上,总结得到如下的系统功能结构图:
(图2-4) 系统功能结构图
2·3、系统分析说明书
项目级系统分析的重点在业务需求层次上,主要任务是确定用户对系统的应用要求,这主要从两个方面获得。一是和用户一起充分了解现行系统是怎样运作的,二是理解用户的现行系统的改进及对新系统的要求,并在此基础上提出解决问题的基本模型,另一个任务是把和用户共同理解的新系统用恰当的工具表现出来,系统分析的最终任务是提出达到新系统目标的新系统方案,并在此提高主要文档——系统说明书。
以下是对系统各模块功能的分析
1: 档案柜信息模块的功能
档案柜信息模块,又包括档案柜信息的编辑子模块、检索档案柜信息子模块、档案柜信息导出到EXCEL报表子模块。这些子模块的功能组合后,可对档案柜从创建、到平时信息查询、以及所需信息的报表等一系列繁杂的工作通过计算机得到轻松的管理。其中档案柜信息的编辑子模块可以完成档案柜信息的创建、修改、删除等操作。从而达到准确的对档案柜的信息存档的目的。检索档案柜信息子模块可以通过档案柜号或档案柜名来进行查询。检索结果以表格形式体现。信息报表子模块可以完成特定条件下的信息报表,报表信息受检索条件的限制,和检索结果一致。通过将检索结果导出到EXCEL实现报表功能。
2:卷宗模块的功能
卷宗模块包括卷宗编辑子模块、检索卷宗子模块、卷宗信息统计子模块、卷宗信息导出到EXCEL实现报表子模块。这些子模块的功能组合后,各方便地对卷宗进行系列管理。其中卷宗编辑子模块可以对卷宗进行创建、修改、删除等操作。检索卷宗子模块单一检索和多条检索条件的组合这样两种方式来进行查询。检索条件包括卷宗号、卷宗名、创建时间等。检索结果以表格形式体现。卷宗信息统计子模块可以完成按卷宗号或入卷时间等从不同的方面对档案资料进行文档资料数量统计。统计结果以表格形式体现。卷宗信息报表子模块可以对符合特定条件下的信息报表,报表信息受检索条件的限制,和检索结果一致。
3:文档资料模块
文档资料模块包括文档资料信息编辑子模块、检索文档资料子模块、文档资料报表子模块。这些子模块的功能组合后,各方便地对学生评语进行系列管理。文档资料编辑子模块可以对文档资料信息进行录入、修改、删除等操作。方便地将文档资料存档的目的。检索文档资料子模块可以通过文件号或文件名来进行查询。或着通过文件号或文件名与状态、入卷时间的组合形式来进行查询。检索结果统样以表格形式体现。信息报表子模块可以完成特定条件下的信息报表,报表信息受检索条件的限制,和检索结果一致。报表同样是通过导出到EXCEL实现。
以上是对本系统各模块功能的总体分析。
2·4、E-R图
通过以上的数据流图可以知道:系统应具备档案柜信息表、卷宗信息表、文档资料信息表。下面利用E-R图进一步的得出系统对哪些数据库表的必须。以及每个表应具备的字段。
软件系统本质上是信息处理系统,因此在软件系统的整个开发过程中都必须考虑两个方面的问题—数据与及数据的处理。在需求分析阶段既要分析用户的数据要求,又要分析用户的处理要求。为了把用户的数据要求清晰地表达出来,通常建立一个概念性的数据模型(也称为信息模型)。它是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模,它描述了从用户角度看到的数据,它反映了用户的现实环境,且与在软件系统中的实现方法无关。
最常用的表示概念性数据模型的方法是实体一联系方法,这种方法用E-R图描绘现实世界中的实体,而不涉及这些实体在系统中的实现方法,针对《文档管理系统》面向的用户与及为了实现他们在使用系统的过程中想达到的目的,下面给出分析得出的该系统的主要实体的E-R图。
通过该E-R图不难可以得出:要实现系统预定的功能,必须具备档案柜信息表(DAG)、文档资料信息表(FILE)、卷宗信息表(SORT)。档案柜信息表(DAG)的字段有:档案柜号、备注、建柜人、建柜日期。文档资料信息表(FILE)的字段有:文件号、文件名、作者、入库日期、卷号、卷名、入卷日期、状态等。卷宗信息表(SORT)的字段:卷宗号、卷宗名、备注、创建日期等。
第三章 系统设计
系统设计是信息系统开发工作的核心,其基本的任务是把原系统分析阶段得出的逻辑模型变换成系统的物理模型。即按照系统需求分析阶段确定的目标和逻辑模型,具体设计出效率高,适应性强,可靠性好且经济实用的系统实施方案。
经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。设计的基本目的就是回答“系统应该如何实现?”这个问题,通过这个阶段的工作将划分出组成系统的物理元素—程序文件,数据库,人工过程和文档等等。
系统设计应从数据流程图出发。设想完成系统功能的若干种合理的物理方案。并和用户共同比较选定一个最佳方案。然后进行软件结构设计。在进行软件设计时应该遵循模块独立原理,确定软件由哪些模块组成以及这些模块之间的动态调用关系。同时可以设计出系统的层次和结构图。基于以上理论,结合需求分析阶段的数据流图和ER图。设计出以下的模块和5个数据库表结构的设计。
3·1、模块处理功能设计
在上一章的系统分析说明书中,已经从用户的角度初步地划分了本系统的各功能模块,并且从用户的角度对主要的功能模块设置作了分析。下面我将对每个模块的总体设计作简要说明。
1.档案柜信息模块
1)编辑档案柜信息模块
该模块可以实现档案柜的创建,档案柜信息包括档案柜号、档案柜名、创建时间、创建人、备注。该模块还实现对档案柜信息记录的修改、删除等操作。
2)检索档案柜信息模块
该模块是档案柜信息模块的重要组成部分。它能够用单一条件或组合条件两种方式对满足条件的档案柜记录予以显示,条件的匹配方式包括等于、不等于、大于、小于等等,条件的组合方式有与、或等,力图从数据的任何一个角度反映整个数据表的信息。该模块将用SQL语言实现。
3)档案柜信息报表模块
该模块可以实现在数据库中满足指定条件的记录的输出报表。该模块输出特定条件的记录也将用SQL语言实现。由于Visual Basic6.0的报表功能的局限性,所以这里采用将检索结果到处到EXCEL,最后通过EXCEL实现最终的报表。
2.卷宗信息模块
1)卷宗信息编辑模块
该模块首先实现卷宗的创建。创建时用户选择卷宗的类比名和卷宗号。另外还包括卷宗的创建时间,创建人,备注等。创建以后还可以实现对卷宗包括卷宗号、卷宗名等记录的录入、修改、删除等操作。
2)卷宗信息检索模块
该模块是卷宗信息模块的重要组成部分。它能够用单一条件或组合条件两种方式对满足条件的卷宗记录以及卷宗里面的文档资料信息予以显示,检索字段包括卷宗号、卷宗名、入卷时间、文件号、文件名等。条件的匹配方式包括等于、不等于、大于、小于等等,条件的组合方式有与、或等,力图从数据的任何一个角度反映整个数据表的信息。该模块将用SQL语言实现。
3)卷宗信息分段统计模块
该模块主要完成对满足指定条件的卷宗库表和文档资料库表中的记录按照相同卷宗号进行文档资料数量的统计。统计的结果显示在表单中的网格表中。
3.文档资料模块
该模块实现文档资料信息的管理,又可分为文档资料编辑子模块、检索文档资料子模块、文档资料报表子模块。文档资料编辑子模块主要完成文档资料的录入、修改、删除等。检索评语子模块主要完成对文档资料从文件号、文件名等字段来设定检索条件。文档资料报表子模块主要完成设定条件的记录的输出报表。
4.系统用户登录模块
该模块实现系统对用户身份的识别,只有输入正确的用户名和密码,系统才会进入系统运行界面,非法用户登录给出警告,密码填写错误给出提醒。
非法用户不能进入系统。密码三次输入不正确,系统自动退出。
3·2、数据库表结构
根据分析阶段得出的实体一联系图(E-R图)的结论,结合本系统对有关数据的存储的需要,更加方便实现该动态档案系统的所有功能,现将本系统设计成3个数据库表,每个表的字段名、类型、宽度设计如下:
- 档案柜基本信息表:
该表用来存放档案柜基本信息。
字段名 | 类型 | 宽度 |
档案柜号 | 字符型 | 8 |
档案柜名 | 字符型 | 8 |
创建时间 | 日期型 | 8 |
创建人 | 字符型 | 8 |
修改时间 | 日期型 | 8 |
修改人 | 字符型 | 8 |
备注 | 备注型 | 无 |
设计说明:为方便编程以及人们工作习惯,这里将学号设计成字符型。并根据实际需要设计了相应的宽度。
- 卷宗信息表:
该表用来存放卷宗的创建时期的信息。
字段名 | 类型 | 宽度 |
卷宗号 | 文本型 | 8 |
卷宗名 | 文本型 | 8 |
创建人 | 文本型 | 8 |
创建时间 | 日期型 | 8 |
修改人 | 文本型 | 8 |
修改时间 | 日期型 | 8 |
备注 | 备注型 | 无 |
- 文档资料信息表:
用来存放学生在校期间的评语信息。
字段名 | 类型 | 宽度 |
文件号 | 字符型 | 8 |
文件名 | 字符型 | 8 |
作者 | 字符型 | 8 |
入库时间 | 日期型 | 8 |
内容摘要 | 备注型 | 无 |
卷号 | 字符型 | 8 |
卷名 | 字符型 | 8 |
入卷时间 | 日期型 | 8 |
状态 | 字符型 | 2 |
档案柜号 | 文本型 | 8 |
组卷人 | 文本型 | 8 |
- 登录表:用于存放系统用户登录姓名、密码。
字段名 | 类型 | 宽度 |
用户名 | 字符型 | 10 |
密码 | 字符型 | 10 |
以上是本系统的库表结构的设计简要说明。
第四章 应用系统实现
按结构化的程序设计思想,在完成了系统分析、系统设计后,就可以进行系统实现阶段了,系统实现是每指把系统的物理模型转换成实际运行系统的全过程。其基本任务是:
-
- 前期准备
- 系统平台的安装与调试
- 程序的编制与调试
- 信息系统调试
- 数据库与文件的建立
- 系统转换
- 试运行、验收与维护
4.1创建卷名窗体的实现
1)运行时的窗体:
2)控件和事件
a) “节点刷新”按钮控件:click事件是将创建新节点后的数据库信息刷新到窗体中。控制主节点刷新的语句是:
If Left(adoPrimaryRS.Fields("卷号"), 1) = 0 Then
Set mynod = TreeView1.Nodes.Add("sort", tvwChild, "sort" & Str$(i), adoPrimaryRS.Fields("卷名") & "(" & adoPrimaryRS.Fields("卷号") & ")")
b) “创建节点”按钮控件:click事件是将文本框信息加入到卷名库表中,这样达到创建新节点的目的,这里创建新节点填写卷号很重要,它直接决定了子节点的从属关系。读取文本框中的信息到数据库表中的主要的实现语句是:
adoPrimaryRS.AddNew
adoPrimaryRS.Fields("卷号") = Text1.Text
adoPrimaryRS.Fields("卷名") = Text2.Text
adoPrimaryRS.Fields("备注") = Text3.Text
adoPrimaryRS.Fields("创卷人员") = "管理员"
adoPrimaryRS.Fields("创卷日期") = Date
adoPrimaryRS.Update
c)“编辑节点”按钮控件:click事件是将原先建立的节点名,节点号,节点的从属进行再编辑。从属关系是通过修改节点号(即卷号)来达到目的的。实现的原理是修改数据库中相应的记录值。删除前提醒用户是否确认删除。实现语句是:
adoPrimaryRS.Fields("卷号") = Text1.Text
adoPrimaryRS.Fields("卷名") = Text2.Text
adoPrimaryRS.Fields("备注") = Text3.Text
adoPrimaryRS.Update
d)“删除节点”按钮控件:click事件是已经建立的节点(卷名)删除。实现的原理是删除数据库中的相应记录值。它的实现语句是:
Delete = MsgBox("确实要删除该节点吗", vbOKCancel, "删除节点")
If Delete = vbOK Then
adoPrimaryRS.Delete
h)“退出”按钮控件:click事件是释放当前窗体,返回主控系统。实现语句是:Unload Me
4.2:档案柜资料窗体的实现
1)运行时的窗体:
2)控件和事件
a)“网格”容器控件:显示档案柜中的数据信息。数据源设定为档案柜表的查询记录集。在窗体的装载事件load中用语句控制。语句是:
adoPrimaryRS.Open "select 档案柜号,建柜人员,建柜日期,备注 from dag Order by 档案柜号 ", db, adOpenStatic, adLockOptimistic
Text1.Text = adoPrimaryRS.Fields("档案柜号")
Text2.Text = adoPrimaryRS.Fields("备注")
Set DataGrid1.DataSource = adoPrimaryRS
b)“最首”按钮控件:click事件是将当前窗体中的网格控件中的信息和文本框控件中的信息指向数据库表查询记录集中的第一条记录。利用SQL语句实现在数据库中查询符合条件的所以记录,并在表单中的网格容器中显示。如果无相应的记录,系统将给出提示。实现关键语句如下:
adoPrimaryRS.MoveFirst
Text1.Text = adoPrimaryRS.Fields("档案柜号")
Text2.Text = adoPrimaryRS.Fields("备注")
c)“下一条”按钮控件:click事件是将网格中的,文本框中的信息同时指向当前记录的下一条记录。如果越界就给出已经是最后一条记录的提示,并将记录定位在最后一条记录。实现语句:
adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF Then
MsgBox ("已经是第后一条记录了!")
adoPrimaryRS.MoveLast
Else
Text1.Text = adoPrimaryRS.Fields("档案柜号")
Text2.Text = adoPrimaryRS.Fields("备注")
d)“上一条” 按钮控件:click事件是将网格中的,文本框中的信息同时指向当前记录的上一条记录。如果越界就给出已经是第一条记录的提示,并将记录定位在第一条记录。实现语句:
adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF Then
MsgBox ("已经是第一条记录了!")
adoPrimaryRS.MoveFirst
Else
Text1.Text = adoPrimaryRS.Fields("档案柜号")
Text2.Text = adoPrimaryRS.Fields("备注")
End Ifd) “退出”按钮控件:click事件、实现语句和前面一样。
e) “最末”按钮控件:click事件是将当前窗体中的网格控件中的信息和文本框控件中的信息指向数据库表查询记录集中的第后一条记录。利用SQL语句实现在数据库中查询符合条件的所以记录,并在表单中的网格容器中显示。如果无相应的记录,系统将给出提示。实现关键语句如下:
adoPrimaryRS.MoveLast
Text1.Text = adoPrimaryRS.Fields("档案柜号")
Text2.Text = adoPrimaryRS.Fields("备注")
f) “添加”按钮控件:click事件是创建新的档案柜,实现的原理是对数据库查询的记录集添加一条新的记录,然后修给这条空记录的值,达到对数据库表中的档案柜记录添加的目的。实现的语句如下:
If Command5.Caption = "添加" Then
Command5.SetFocus
Command5.Caption = "保存"
Text1.Enabled = True
Text2.Enabled = True
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
adoPrimaryRS.AddNew
Else
adoPrimaryRS.Fields("档案柜号") = Text1.Text
adoPrimaryRS.Fields("备注") = Text2.Text
adoPrimaryRS.Fields("建柜人员") = "管理员"
adoPrimaryRS.Fields("建柜日期") = Date
adoPrimaryRS.Update
Command5.Caption = "添加"
Text1.Enabled = False
Text2.Enabled = False
End If
g) “编辑”按钮控件:click事件是将记录集中当前记录在文本框中进行修改,然后更改记录集中相应的记录。来达到修改数据库中的记录的目的。实现的主要语句是:adoPrimaryRS.Fields("档案柜号") = Text1.Text
adoPrimaryRS.Fields("备注") = Text2.Text
adoPrimaryRS.Update
-
- “查找”按钮控件:click事件是使框架4出现,而框架1隐藏,框架4中的“确定” 按钮控件的click事件是查找档案柜数据库中的满足文本框1和文本3中的查询条件。查询结果显示在网格容器控件中。
Frame4.Visible = True
Frame1.Visible = False
Command9.Enabled = False
a = Combo1.Text
b = Text3.Text
adoPrimaryRS.Open "select 档案柜号,建柜人员,建柜日期,备注 from dag where " & a & " like '%" & b & "%'", db, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = adoPrimaryRS
查询的结果可以通过“导出”按钮导出到EXCEL表中。以实现数据的打印报表。导出控制的语句是:
For i = 0 To adoPrimaryRS.RecordCount - 1
For j = 0 To adoPrimaryRS.Fields.Count - 1
DataGrid1.Row = i
DataGrid1.Col = j
xlsheet.Cells(i + 2, j + 1) = DataGrid1.Text
Next j
Next I
利用双重循环实现导出。
4.3 文件编辑窗体的实现
1)运行时的窗体:
2)控件和事件
控件包括最首,上一个,下一个,最末,添加,编辑,删除,查询,导出,退出等按钮和用于输入信息的文本框。,其中导出按钮是隐藏在框架4中,点击查询即可显示。这些按钮控件的事件和前面档案柜资料窗体相似。下面对编辑,添加这两个按钮的事件和实现语句分析如下:
a)“编辑”按钮控件:click事件是将按钮名改成“保存”,增加了系统的交互性。同时使文本框变得可编辑。 “保存” 按钮控件的click事件是将按钮名改成“编辑”,同时用文本框的记录修改数据库中的记录。它的实现语句是:
If Command6.Caption = "编辑" Then
Command6.Caption = "更新"
Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Else
adoPrimaryRS.Fields("文件号") = Text1.Text
adoPrimaryRS.Fields("文件名") = Text2.Text
adoPrimaryRS.Fields("作者") = Text3.Text
adoPrimaryRS.Fields("内容摘要") = Text4.Text
adoPrimaryRS.Update
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
End If
2)“添加”按钮控件:click事件是将按钮名改成“保存”,增加了系统的交互性。同时使文本框变得可编辑。 “保存” 按钮控件的click事件是将按钮名改成“添加”,此时使文本框变得不可编辑,同时用文本框的记录添加到数据库末尾。添加完成后,网格容器控件中的数据自动更新。它的实现语句是:
If Command5.Caption = "添加" Then
Command5.SetFocus
Command5.Caption = "保存"
Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
adoPrimaryRS.AddNew
Else
adoPrimaryRS.Fields("文件号") = Text1.Text
adoPrimaryRS.Fields("文件名") = Text2.Text
adoPrimaryRS.Fields("作者") = Text3.Text
adoPrimaryRS.Fields("内容摘要") = Text4.Text
adoPrimaryRS.Fields("入库日期") = Date
adoPrimaryRS.Fields("状态") = "否"
adoPrimaryRS.Update
Command5.Caption = "添加"
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
End If
4.4 组卷窗体的实现
1)运行时的窗体:
2)控件和事件
a)treeview控件:nodeclick事件是将treeview控件选中的节点值传给文本框,得到卷号和卷名,将此作为网格容器控件中的数据源的查询条件。并将查询记录集作为网格容器控件中的数据源。
实现的语句如下:
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=dagl.mdb;"
Set adoPrimaryRS = New Recordset
Text4.Text = Left$(Right$(Node.Text, 3), 2)
Text1.Text = Text4.Text
Text2.Text = Left$(Node.Text, Len(Node.Text) - 4)
If Text4.Text <> "00" Then
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 卷号,卷名,文件号,文件名,作者,入库日期,内容摘要,档案柜号,入卷日期,组卷人,状态 from file where 卷号 like '%" & Text4.Text & "%'", db, adOpenStatic, adLockOptimistic
Else
Text1.Text = "00"
Text2.Text = ""
End If
Text6.Enabled = True
Text6.SetFocus
Command4.Enabled = True
Set DataGrid1.DataSource = adoPrimaryRS
b)“查询”按钮控件:click事件是根据当前窗体中的组合框控件和文本框控件的内容,作为查询的条件。这个查询是本系统最重要的一个功能。它的实现关键功能语句与说明如下:
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=dagl.mdb;"
Set adoPrimaryRS = New Recordset
a = Combo1.Text
b = Text7.Text
adoPrimaryRS.Open "select 卷号,卷名,文件号,文件名,作者,入库日期,内容摘要,档案柜号,入卷日期,组卷人,状态 from file where " & a & " like '%" & b & "%'", db, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = adoPrimaryRS
c) 导出按钮控件的click事件是将当前网格容器控件中的查询结果导出到EXCEL表以实现报表打印。导出的主要语句如下:
For i = 0 To adoPrimaryRS.RecordCount - 1
For j = 0 To adoPrimaryRS.Fields.Count - 1
DataGrid1.Row = i
DataGrid1.Col = j
xlsheet.Cells(i + 2, j + 1) = DataGrid1.Text
Next j
Next i
Set xlapp = Nothing
Set xlbook = Nothing
利用双重循环控制导出的位置。导出的界面如下:
说明:上面是一个对卷号为03的卷宗实现查询的结果导出到EXCEL的结果。
为了实现组卷,还需要用到文档资料和档案柜资料的2个窗体,它们分别是在添加文档到卷宗来的时候,有2个文本号选择和档案柜号选择按钮激发的事件结果。这二个窗体运行的界面如下:
说明:选择某个档案柜号,然后点击确定,几个触发它的click事件,将当前的档案号添加到组卷窗体的档案号中,click事件的语句是:Form5.Text5.Text = DataGrid1.Text
文件资料窗体运行界面:
控件有:确定和关闭按钮二个控件。该窗体装载是load事件自动实现对文件数据库中的状态是“否”的文件搜索到记录集中,并作为网格容器控件的数据源。网格控件的click事件是将选中的记录添加到组卷窗体中的相应文本框中。作为组卷的数据信息。load事件的代码如下:
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=dagl.mdb;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 文件号,文件名,状态 from file where 状态='否' ", db, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = adoPrimaryRS
4.5系统菜单的实现
设计一个菜单系统,一般要经过几个步骤:菜单系统的规划,建立菜单与子菜单,把任务分配到菜单系统中,生成菜单程序,测试和运行菜单系统等,VB6.0是通过设计窗体来完成菜单的设计界面的,本系统设计的菜单运行如下:
各个菜单项的click事件代码如下:
Private Sub exit_Click()
End
End Sub
Private Sub file_Click()
Form2.Show
End Sub
Private Sub Form_Load()
Left = (Screen.Width - Width) \ 2
Top = (Screen.Height - Height) \ 2
End Sub
Private Sub jiangui_Click()
Form4.Show
End Sub
Private Sub setup_Click()
Form3.Show
End Sub
Private Sub zhujuan_Click()
Form5.Show
End Sub
其中的Left = (Screen.Width - Width) \ 2
Top = (Screen.Height - Height) \ 2是控制窗体在屏幕中的位置居中。
总 结
经过多日来的努力《文档管理系统》终于完成了。回顾这次毕业设计的过程,我觉得收获很大,现借撰写论文总结的机会,谈一谈我的体会。
通过这次毕业设计,我掌握了一种新的数据库系统开发工具Visual Basic6.0。我对于它具有的可视化的编程环境和连接数据库的便捷性用感触颇深,Visual Basic6.0这些数据库的连接提供了多种方法。比如DATA控件对初学着就非常容易掌握,当然利用语句对数据库的连接就可以实现对数据库的高级应用。Visual Basic6.0这种面向对象的数据库开发工具提供了窗体这种户非常友好的交互方式。利用设计好的窗体据库的记录进行操作,不但使用户更清楚记录的具体变更情况,也使开发人员的工作轻松了许多。
同时,在这次毕业设计过程中,我始终遵循软件工程的思想,这使我的工作进度明显加快,也使我少走了不少弯路。软件工程的思想,指导我一步一步从系统分析,到系统设计,再到系统实现,让我对整个系统的开发过程有了明显的全局观念,也合理地安排了整个设计的时间。
以上是我在本次毕业设计中的体会,也许认识到的问题还很肤浅,这也正是我今后要努力提高的。
作者. 书名. 出版社. 出版日期
1.张树兵·Visual Basic6.0·北京·清华大学出版社·1999年4月
2.翁正科·FoxPro2.5·北京·清华大学出版社·1995年5月
3.刘云生·数据库系统概论·武汉·华中理工大学出版社·1996年5月