毕业设计(论文)-用户兴趣事态数据管理系统.doc_第1页
毕业设计(论文)-用户兴趣事态数据管理系统.doc_第2页
毕业设计(论文)-用户兴趣事态数据管理系统.doc_第3页
毕业设计(论文)-用户兴趣事态数据管理系统.doc_第4页
毕业设计(论文)-用户兴趣事态数据管理系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

用户兴趣事态数据管理系统引 言当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好用户兴趣的事态数据而设计的。数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。Microsoft Access 2000就是一种关系型数据库管理系统。用户兴趣事态数据管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本人结合用户兴趣事态数据管理系统的要求,对Microsoft Access 2000数据库管理系统、SQL语言原理、VB应用程序设计,VB数据库技术进行了较深入的学习和应用,主要完成对用户兴趣事态数据管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和开发了应用程序。系统运行结果证明,本文所设计的用户兴趣事态数据管理系统可以满足用户的需要。作者:日期:第一章 数据库理论基础一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。本章分数据库设计、SQL基础和SQL语句三节。第一节 数据库设计 数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。数据库设计的步骤是:1、数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。2、数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。3、存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。4、数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。5、数据字典设计:用数据字典描述数据库的设计,便于维护和修改。为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。第二节 SQL基础SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如Select、 Insert、 Update、 Delete、 Create和 Drop常常被用于完成绝大多数数据库的操作。SQL语言有着非常突出的优点,SQL语言是非过程化的语言、统一的语言、是所有关系数据库的公共语言。非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。SQL为许多任务提供了命令,其中包括:查询数据、在表中插入、修改和删除记录、建立、修改和删除数据对象、控制对数据和数据对象的存取、保证数据库一致性和完整性等。以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。第三节 SQL语句SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象;DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。DML组可以细分为以下的几个语句:SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据;DELETE:用于从数据库中删除数据。DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX。下面是一个简单SQL语句的例子:我们使用SQL语句来从user_info中检索用户ID为000001的用户姓名:SELECT 姓名 FROM user_info WHERE用户ID = 000001数据定义语言DDL:它是用来创建和修改数据库结构的一种语句,包括 Create、Alter和Drop 语句。数据操作语言DML:包括数据查询与数据更新。数据查询主要是由Select语句完成,这一点不再赘述。而数据更新所造成的风险大大超过数据查询。数据库管理系统必须在更改期内保护所存储的数据的一致性,确保有效的数据进入数据库,数据库必须保持一致性,DBMS还必须协调多用户的并行更新,以确保用户和它们的更改不至于影响其它用户的作业。用于修改数据库内容的 SQL 语句主要有以下三个:(1) Insert,向一个表中加入新的数据行;(2) Update,更改数据库中已经存在的数据;(3) Delete,从一个表中删除数据行;Insert标准语法:INSERT INTO table_name (col1, col2.) VALUES(value1, value2.)。Insert 语句还可以将多行数据添加到目标表中去,在这种形式的 Insert 语句中,新行的数据值不是在语句正文中明确地指定的,而是语句中指定的一个数据库查询。添加的值来自数据库自身的行,在某些特定的状态下,这是非常有用的。多行 Insert 语句为拷贝数据提供了一种紧凑而高效的方法。Update语句用于更新单表中选定行的一列或多列的值。要更新的目标表在语句中定义,Set子句则指定要更新哪些列并计算它们的值。Update语句总是包含Where语句,而且Update语句比较危险,所以您必须明确地认识到Where语句的重要性,Where语句被用来指定需要更新的行。标准语法:UPDATE table_nameSET columnname1 = value1 , columname2 = value2. WHERE search_conditionDelete 语句标准语法:DELETE FROM tablename WHERE condition在信息管理系统中,我们往往会遇到归类、汇总、映射、索引、子查询等复杂操作,相应的支持与实现如下:GROUP BY方法:GROUP BY子句语法为:SELECT column1, SUM(column2)FROM list-of-tablesGROUP BY column-list;这个GROUP BY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。组合条件和布尔运算符:以下的SQL语句中就含有组合条件:SELECT column1, SUM(column2)FROM list-of-tablesWHERE condition1 AND condition2;UNION子句:有些时候,需要一起浏览多个查询的结果、组合它们的输出,我们可以使用UNION关键字。第二章 开发工具简介本系统所用的开发语言是Microsoft Visual Basic 6.0。Microsoft Visual Basic 6.0是微软公司推出的可视化编程语言之一。本章中主要介绍在本次开发中所用的Microsoft Visual Basic 6.0的主要技术知识。Microsoft Visual Basic 6.0的其他知识请参考相关文献。第一节 ADO ADO是Microsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。ADO的对象模型是所有数据访问接口对象模型中最简单的一种。Microsoft公司用来访问ADO数据的应用程序界面技术是OLE DB。OLE DB是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。OLE DB是一个由Component Object Model(COM)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。OLEDB提供了访问任何数据资源的方法,包括相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户定义的数据对象。以下是本程序中用到的对象:Connection对象:通过“连接”可从应用程序访问数据源,连接是交换数据所必需的环境。对象模型使用Connection对象使连接概念得以具体。Recordset对象:表示的是来自基本表或命令执行结果的记录全集。Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用Update方法,对数据的所有更改将被立即写入基本数据源。也可以使用AddNew和Update方法将值的数组作为参数传递,同时更新记录的若干字段。Field对象:代表使用普通数据类型的数据的列。Recordset对象含有由Field对象组成的Fields集合。每个Field对象对应于Recordset中的一列。使用Field对象的Value属性可设置或返回当前记录的数据。以下是本程序中用到的方法:AddNew方法:创建可更新Recordset对象的新记录。MoveFirst、MoveLast、MoveNext 和MovePrevious方法:在指定 Recordset 对象中移动到第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。Open方法(ADO Connection):打开到数据源的连接。Open方法(ADO Recordset):打开记录集。Close方法:关闭打开的对象及任何相关对象。Execute方法:执行指定的查询、SQL语句、存储过程或特定提供者的文本等内容。第二节 记录列表控件本程序中使用的记录列表控件为mshflexgrid。Mshflexgrid控件的一个主要特性是它能显示层次结构记录集以层次结构方式显示的关系表。具有很好的灵活性。下面介绍mshflexgrid控件的常用的属性和方法。常用属性:DataSource属性:返回/设置控件绑定的一个数据源。TextMatrix属性:返回/设置一个任意单元的文本内容。Rows属性:返回/设置总行数。Cols属性:返回/设置总列数。Col、Row属性:返回/设置活动单元的坐标。常用方法:AddItem方法:向网格中加入一新行。Clear方法:清除网格中的内容。RemoveItem方法:从网格中清除一行。 以上属性和方法的详细用法请参考MSDN。第三章 系统设计第一节 需求分析本次实习要完成的主要内容:1)能够存储用户处理事件的历史性信息;2)定义时间段(如现代、近代、古代)和时间跨度,实现数据在时间段之间的转换和数据压缩,如根据频率等;3)实现数据库系统中元事件的时态信息查询:可以查询元事件的出现时间,或查看某时间段出现的元事件,或查看一些元事件的统计信息。根据完成的内容和用户的要求,主要各功能如下:信息输入从界面输入,输入的信息有元事件(上网、使用office、玩游戏等等)、起始时间、结束时间,存入时间记录表。信息输入完毕进行检测(可手动也可设置时间自动触发),将时间记录表中的所有时间与系统当前时间进行比较,当时间记录表的时间-系统当前时间一天,将该记录存入现代(一天)时间记录表中,以此类推,将时间记录表中的信息存入古代(一个月),近代(一个星期)时间记录表中。信息查询:1)按时间段查询,输入一个时间段(如2006-04-04-2006-04-26),能查询到该时间段内发生的元事件、次数、以及每一次的起始时间和结束时间。2)按事件查询,当点击其中一个事件,能查询到该事件在古代、近代、现代发生的次数,最早起始时间、最晚起始时间、以及每次的时间记录。3)图表显示:将古代、近代、现代发生元事件的次数以图表的形式显示,目的是通过该图表可以反映出用户对那个事件感兴趣,达到了课题所要求的用户兴趣的事态数据管理。第二节 系统总体功能设计系统总体功能设计是指在系统调查与分析的基础上,对整个系统在结构上的划分,硬软件环境的配置和确定子系统与模块的处理流程。总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分。本系统结构化设计思想,结构化系统设计的思想,就是自顶向下地将系统划分为若干个子系统,而子系统又划分为模块,模块又划分为子模块,层层划分,直到每一个模块能够作为计算机可执行的单独程序为止。根据用户兴趣事态数据管理系统的需求分析,系统分为信息输入、信息检索、图形显示、系统关于、数据处理五个模块。系统各模块流程图如下图3-1:进入系统信息输入数据库自动 人工信息处理信息检索记录显示图形显示图 3-1 系统功能流程图各模块详细的功能如下:信息输入:手工输入元事件的信息。信息处理:是对输入的元事件进行处理。分自动和手动,自动处理是系统每次启动的时候都要自动进行处理,手动处理是人工处理,随时处理元事件。信息检索:对输入的元事件、处理的元事件进行检索。系统关于:主要记录元事件和元事件编号的信息及系统的一些信息。图形显示:主要是对处理的元事件进行直观的统计后以图形的方式显示出来。第三节 数据库的设计在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。本系统的数据库设计的表有:时间记录表、元事件古代时间记录表、元事件近代时间记录表、元事件现代时间记录表、元事件信息表五个表。时间记录表是记录所有元事件发生的信息。古代时间记录表是记录发生在一个月以前的元事件信息。近代时间记录表是记录发生在一个月以内,一周以前的元事件信息。现代时间记录表是记录发生在一周以内,一天以前的元事件信息。元事件信息表是记录所有的元事件和元事件编号的信息。各表的结构如下:时间记录表字段名类型ID自动编号元事件编号char元事件char起始时间datetime结束时间datetime古代时间记录表字段名类型元事件编号char元事件char最早起始时间datetime最晚起始时间datetime出现的次数int近代时间记录表字段名类型元事件编号char元事件char最早起始时间datetime最晚起始时间datetime出现的次数int现代时间记录表字段名类型元事件编号char元事件char最早起始时间datetime最晚起始时间datetime出现的次数int元事件信息表字段名类型元事件编号char元事件char第四章 系统应用程序的开发应用程序是用VB开发的,界面设计的简单明了。根据需求分析和功能设计,系统应用程序分为五大模块:信息输入、数据处理、信息检索、图形显示、系统关于五个模块。第一节 界面开发系统界面非常简单明了,操作很实用。在界面上采用了四个按钮把各功能分开。如图4-1所示。图4-1 系统界面四个按钮分别对应信息输入、信息检索、图形显示、关于系统(包括检测处理)。系统连接数据库采用ADO控件。引擎采用Microsoft.Jet.OLEDB.4.0连接数据库(Access 2000)实现代码如下:Dim CN As New ADODB.ConnectionIf CN.State Then CN.CloseCN.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & database.mdb;Persist Security Info=FalseCN.Open详细代码实现请参考附录程序源代码。第二节 信息输入模块在系统界面上点信息输入选项卡,进入了信息输入界面。输入的信息有元事件(上网、使用office、玩游戏等等)、起始时间、结束时间,存入时间记录表。如图4-2 信息输入。信息输入模块的设计采用了记录列表来显示所有的记录。下边有添加(修改)、删除、保存、退出按钮。添加:是添加一新元事件信息到时间记录表中。修改:是在记录列表区中,选中记录,在记录输入区修改数据,保存。删除:是在时间记录表中,删除选中的元事件记录。保存:是在添加和修改了一条记录时,要保存入时间记录表中。退出:是退出元事件管理系统。记录输入区记录列表区图4-2 信息输入模块信息输入的设计:ID记录,系统自动的编号,用户无法改。元事件编号和元事件,采用选择式的输入方法,只有在关于系统里输入了元事件和元事件编号。在些才可以选择。日期时间输入,采用DTPicker控件,格式为yyyy-MM-dd HH:mm:ss,如2006-04-09 01:10:22。如图4-3 所示。添加、删除、保存的代码实现如下:图4-3 日期时间选择Private Sub cmdRegAdd_Click() 添加按钮Dim i As IntegerFor i = 0 To txt.Count - 1 txt(i).Text = Next iEnd SubPrivate Sub cmdRegDel_Click() 删除按钮On Error GoTo ErrIf Trim(txt(0).Text) Then If MsgBox(真的删除吗?, vbInformation + vbYesNo, 提示) = vbYes Then CN.Execute delete from 时间记录表 where ID= & Trim(txt(0).Text) Dim rs1 As New ADODB.Recordset If rs1.State Then rs1.Close rs1.Open select * from 时间记录表, CN, adOpenStatic, adLockOptimistic Set MSHFlexGrid1.DataSource = rs1 MsgBox 删除成功!, vbInformation, 提示 End IfEnd IfExit SubErr:MsgBox Err.Description, , 提示End SubPrivate Sub cmdRegSave_Click() 保存按钮Dim rs1 As New ADODB.RecordsetDim i As IntegerOn Error GoTo ErrIf txt(0).Text = Then 添加 If Trim(txt(1).Text) And Trim(txt(2).Text) And Trim(txt(3).Text) Then If rs1.State Then rs1.Close rs1.Open select * from 时间记录表, CN, adOpenStatic, adLockOptimistic rs1.AddNew For i = 1 To txt.Count - 1 rs1.Fields(i).Value = Trim(txt(i).Text) Next i rs1.Update Set MSHFlexGrid1.DataSource = rs1 MsgBox 添加成功!, , 提示 End IfElse 修改 If Trim(txt(1).Text) And Trim(txt(2).Text) And Trim(txt(3).Text) Then If rs1.State Then rs1.Close rs1.Open select * from 时间记录表 where ID= & Trim(txt(0).Text), CN, adOpenStatic, adLockOptimistic For i = 1 To txt.Count - 1 rs1.Fields(i).Value = Trim(txt(i).Text) Next i rs1.Update If rs1.State Then rs1.Close rs1.Open select * from 时间记录表, CN, adOpenStatic, adLockOptimistic Set MSHFlexGrid1.DataSource = rs1 MsgBox 修改成功!, , 提示 End IfEnd IfExit SubErr:MsgBox Err.DescriptionEnd Sub第三节 关于系统和检测处理关于系统是分三部分,一部分是系统一些说明,另一部分是检测处理,还有是元事件设置。如图4-4所示。在代码实现上主要是检测处理和元事件设置。图4-4 关于系统检测处理是根据设计的要求对时间记录表中的元事件进行处理,分手功和自动两种。处理方法都是:将时间记录表中的所有时间与系统当前时间进行比较,当时间记录表的时间-系统当前时间一天,将该记录存入现代(一天)时间记录表中,以此类推,将时间记录表中的信息存入古代(一个月),近代(一个星期)时间记录表中。代码实现如下:Public Sub AutoControl()On Error GoTo ErrfrmSplash.Show , frmmainfrmSplash.RefreshDim strDate As StringDim strSql As StringDim strDate1 As StringCN.Execute delete from 现代时间记录表CN.Execute delete from 近代时间记录表CN.Execute delete from 古代时间记录表Dim rs1 As New ADODB.RecordsetDim rs2 As New ADODB.RecordsetDim rs3 As New ADODB.Recordset现代时间记录表strDate = DateChange(DateSerial(Year(Date), Month(Date), Day(Date) - 1)strDate1 = DateChange(DateSerial(Year(Date), Month(Date), Day(Date) - 7)strSql = select distinct 元事件编号,元事件 from 时间记录表 where 起始时间 & strDate1 & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open select * from 现代时间记录表, CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.AddNew rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始时间),min(起始时间) from 时间记录表 where 起始时间 & strDate1 & and 元事件编号= & Trim(rs1.Fields(0) & If rs3.State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value = Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWend近代时间记录表strDate = DateChange(DateSerial(Year(Date), Month(Date), Day(Date) - 7)strDate1 = DateChange(DateSerial(Year(Date), Month(Date) - 1, Day(Date)strSql = select distinct 元事件编号,元事件 from 时间记录表 where 起始时间 & strDate1 & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open select * from 近代时间记录表, CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.AddNew rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始时间),min(起始时间) from 时间记录表 where 起始时间 & strDate1 & and 元事件编号= & Trim(rs1.Fields(0) & If rs3.State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value = Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWend古代时间记录表strDate = DateChange(DateSerial(Year(Date), Month(Date) - 1, Day(Date)strSql = select distinct 元事件编号,元事件 from 时间记录表 where 起始时间= & strDate & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open select * from 古代时间记录表, CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.AddNew rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始时间),min(起始时间) from 时间记录表 where 起始时间= & strDate & and 元事件编号= & Trim(rs1.Fields(0) & If rs3.State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value = Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWendSaveSetting 元事件管理系统, Settings, AutoDate, DateChange(Date)Unload frmSplashExit SubErr:Unload frmSplashMsgBox Err.DescriptionEnd Sub元事件设置主要是为了保持系统元事件的唯一性来做的,只有在元事件设置完了的元事件才能在信息输入等模块中使用。信息都存在元事件信息表中。可以添加,也可以删除。如果要修改,只能删除后再添加。添加代码实现如下:Private Sub cmdAdd_Click() 添加元事件On Error GoTo ErrIf Trim(Combo1.Text) And Trim(Combo2.Text) Then Dim i As Integer For i = 0 To Combo2.ListCount - 1 If Trim(Combo2.Text) = Trim(Combo2.List(i) Then IsAdd = False MsgBox 元事件已经存在!, vbInformation, 提示 Exit Sub End If Next i For i = 0 To Combo1.ListCount - 1 If Trim(Combo1.Text) = Trim(Combo1.List(i) Then isAdd1 = False MsgBox 元事件编号已经存在!, vbInformation, 提示 Exit Sub End If Next i Dim rs1 As New ADODB.Recordset If rs1.State Then rs1.Close rs1.Open select * from 元事件信息表, CN, adOpenStatic, adLockOptimistic rs1.AddNew rs1.Fields(0).Value = Trim(Combo1.Text) rs1.Fields(1).Value = Trim(Combo2.Text) rs1.Update Combo1.AddItem Trim(Combo1.Text) Combo2.AddItem Trim(Combo2.Text) Combo3.AddItem Trim(Combo1.Text) Combo4.AddItem Trim(Combo2.Text) Combo6.AddItem Trim(Combo2.Text) MsgBox 操作成功!, vbInformation, 提示End IfExit SubErr:MsgBox Err.Description, , 提示End Sub删除代码实现如下:Private Sub cmdDelete_Click() 删除元事件On Error GoTo ErrIf Trim(Combo1.Text) Then If MsgBox(真的删除吗?, vbInformation + vbYesNo, 提示) = vbYes Then CN.Execute delete from 元事件信息表 where 元事件编号= & Trim(Combo1.Text) & Combo2.RemoveItem ICombo Combo1.RemoveItem ICombo Combo3.RemoveItem ICombo Combo4.RemoveItem ICombo MsgBox 删除成功!, vbInformation, 提示 End IfEnd IfErr:End Sub第四节 信息检索信息检索是对输入的元事件和处理后的元事件,进行查寻。支持两种方法:按时间、按事件。如图4-5。图4-5 信息检索在检索库里有四个表:时间记录表、元事件古代时间记录表、元事件近代时间记录表、元事件现代时间记录表。在时间记录表中可以检索所有的元事件信息。另三个表是处理后的元事件信息。按时间检索时,检索条件为一个日期时间段,为起始日期时间(检索),结束日期时间(检索)。按事件检索时,检索条件为事件名称。设置完条件,点检索,记录列表里出现符合条件的记录。代码实现如下:Private Sub Command2_Click() 检索信息Dim strSql As StringDim rs1 As New ADODB.RecordsetOn Error GoTo ErrIf Trim(Combo5.Text) = Then Exit SubIf Option1.Value = True Then 按时间检索 If Trim(Combo5.Text) 时间记录表 Then strSql = select * from & Trim(Combo5.Text) & where 最早起始时间= & DateChange(DTPicker3.Value) & and 最晚起始时间= & DateChange(DTPicker3.Value) & and 结束时间= & DateChange(DTPicker4.Value) & End IfElseIf Option2.Value = True Then 按事件检索 strSql = select * from & Trim(Combo5.Text) & where 元事件= & Trim(Combo6.Text) & End IfIf rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticSet MSHFlexGrid2.DataSource = rs1Text1.Text = MSHFlexGrid2.Rows - 1Exit SubErr:MsgBox Err.Description, , 提示End Sub第五节 图形显示图形显示主要是对处理的元事件进行直观的统计后以图形的方式显示出来。如图4-6所示。图形显示采用MSChart控件。图4-6 图形显示图形显示只能对处理后的元事件进行显示。在选择库中选择数据表名(元事件古代时间记录表、元事件近代时间记录表、元事件现代时间记录表)。下边的图形会根据不同的表,自动改变。图例为元事件名称。实现代码如下:Private Sub Combo7_Click() 数据表选择图形显示On Error GoTo ErrDim rs1 As New ADODB.RecordsetIf Trim(Combo7.Text) Then Dim N As Integer If rs1.State Then rs1.Close rs1.Open select 元事件,出现的次

温馨提示

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

评论

0/150

提交评论