OLE项目出入数据表控制方法设计说明书_第1页
OLE项目出入数据表控制方法设计说明书_第2页
OLE项目出入数据表控制方法设计说明书_第3页
OLE项目出入数据表控制方法设计说明书_第4页
OLE项目出入数据表控制方法设计说明书_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1 目出入数据表控制方法设计说明书 1 需求分析 计需求 随着计算机技术应用的普及,对于文件的管理要求也越来越高 ,因此设计一个能够管理 档和 档文件管理器是非常有必要的。 本次课题是设计思想是把一个 档或 档数据写入数据表,或从数据表把一个 档读入到应用程序文档;并且在应用程序中嵌入 用程序界面。 首先进行复合文档操控基本实验,体会 象链接与嵌入)项目的使用方法:插入一个 象,激活 象,提取 象的文档数据。再使用框架客户区切分方法进行应用程序的界面设计。将应用程序主框架客户区设计为:文档类型视图、数据表视图、 目视图( 目激活窗口)。当文档类型视图确定一种文档类型后,存在于数据表中的此类文档行全部罗列于数据表视图的表格控件中;当双击表格控件的数据行时,从数据表中读取一个 目数据,并在位激活。所以还要按类型编码、文档编号、文档摘要、文档录入日期、文档数据量和文档数据创建 据表。在应用程序的功能设计方面,要求应用程序能够对文档进行设计新建文档、保存文档、删除文档功能。 计思路 此次课程设计的应用程序界面应该包含有三大视图 : 文档类型视图、数据表视图、 目视图。如下图所示。 2 图 1用程序界面模式 (1)文档类型视图区设置为一个 图对象(树型视图),把文档类型分为如下三种: 普通文档类 (01): 档 (01); 档 (02); 技术文档类 (02): 档 (01); 档 (02); 重要文档类 (03): 档 (01); 档 (02); (2)数据表视图区设置一个 式视图 对象,数据项包括:文档类型码;文档摘要;文档录入时间;文档数据量 /M。 (3)目视图区用于显视当前激活的 服务服务窗口中,在没有 对象。 +程序设计语言中为用户集成了 档类,此类的作用为管理和操控其他应用程序的文档,即 是复合文档类(容器文档类),它可以包容 其它应用程序的文档,被容入的文档对象称为 就是说如果 包容有 么就可以在其视图中激活其文档对应的服务程序 调入并运行 档对象所对应的 序来处理文档。假设我们在对象中嵌入的 目是一个 文档,就可以在应程序的视图中激活 用程序来编辑 目数据。 如果新建一个 目文档时,当在文档类型视图确定一种文档类型后,会在数据表视图的 件窗口中增加一条数据行记录,并自动确定该文档的文档编号,然后选择所要创建的文档类型,这样相应的 服务程序在应用程序视图中被激活了,我们也就能通过该应用程序来编辑 目数据。在保存文档 3 数据时,从 对象找出当前操作的 目,使用数据串行化功能,获得 目的文档数据,将文档数据写入我们指定的介质中。如果需从存储介质中读取一个 目文档,仍然是通过 目的串行化功能读回数据,并嵌入到应用程序文档中,同时进行在位激活工作。为了给文档管理器应用程序提供一个 档的保存介质,我们使用 据表,我们把 用程序的文档数据写入数据 表中,或从表中把文档数据读入应用程序的 对象中。 户操作控制流程 当文档类型视图中树型控件选项发生改变,提取由父项与子项文本前个数字组成 4 字符的类型码,将这个类型码发送给数据表视图窗口,或直接调用数据表视图的函数,数据表视图从数据表中找出与类型码一致的所有数据行,并显示到数据表视图的 件窗口中。 当数据表视图的 件的行上发生双击事件,则从数据表中读取目文档数据进入应用程序文档,由于 目视图为 对象,所以应用程序文档中的 目的服务程序只能在这个视图区域内激活。 需要保存当前激活的 目时,先将一个 数据数据通过其自身的数读取数据到共享文件里,然后将共享文件写入数据表中。 4 2 功能设计与实现方法 体功能结构图 图 2体功能结构图 用程序直接读入文档文件 运行应用程序之后,鼠标左键单击菜单栏的“文件”选项,然后选择下拉框中的“打开”选项,然后就可以打开指定路径下的指定的文件,这一功能 的完成是通过在文档类中捕获菜单 息,建立其消息响应函数 来实现的,该消息响应函数的实现代码如下所示: /首先找出视图 ; 文档管理系 统 应用程序架构 应用程序直接读入文档 目服务功能 将 目写为文档文件 用户操作控制功能 5 if() if( 档 (*); if(=; / to ,则删除 if( ; ; e) = 6 ; 调试代码无误后,运行该程序,当应用程序打开文件时该函数得以调用,将确定的文档文件数据作为 目数据。 目写为文档文件 如何将一 个确定的 目保存为一个文档文件呢,我们可以从视图类( 数中的代码 = ; 可以看出:复合文档内部使用了一个链表 (管理应用程序插入的所有 对象( 目) ,每一个 目对象的数据格式为: 目信息头( 22项目文档。将 目直接写为文档文件就需要丢掉 目信息头,只保存项目文档即可,但是当 目数据写入文件时必须知道数据的长度,不知道数据长度是没有有办法写入文件的。该程序中运用了内存共享文件与二进制数据流串行化的操作方法,先将一个 数据数据通过其自身的 数写入一个共享文件,共享文件使用全局内存,并自动申请占用内存的大小,然后获取共享文件的长度,从共享文件的长度中减去 22字节的偏移量,就是纯文档数据。这一功 能的具体实现过程是,在应用程序的文档 中捕获 单消息,然后在它的消息响应函数中添加代码如下: /首先找出视图 7 ; if() if(E: 档 (*); if(=; ,内存共享 ,数据可移动 ,数据增长量 8 字节 ); /设置 象 的是获 目数据 /共享文件分离 ; ; 0) /获取共享文件的内存句柄 ; /锁定全局内存句柄 ,获取句柄对应的内存地址 : = 8 /内存偏移 18 获得 象数据的长度 (8); ( ; /解锁句柄 ,让其他用户可以访问这段内存 : /释放全局内存 : 复合文档 对象使用链表管理 对象,每一个对象就是插入到应用程序文档的一个 目对象。该课题设计首先针对一个 对象的插入,打开和保存功能进行了设计说明,并给出了实现代码。 数据表中读出 目 如果需要将 的当前行对应的 目数据读入到应用程序文档采用什么办法?由当前类型编码与从当前行取出文档编号组成数据表查询关键字,确定数表中的 目数据,通过以下函数读取。 档对象 型编码 +文档编号 =%s, if(|) 9 文档数据 ); ; ; ; if( ; 引发读取数据表 目数据,最简捷的方法是表格控件的双击事件。 建 目文档 新建 目文档应利用应用程序的菜单资源 为这个资源经存在,而且其工具按钮已建好。注意原来 消息响应函数建在 中,应该将其取消,而重新建在 中。每新加一个新的 目文档涉及在表格控件中添加一行和 目的对象选择问题,一个新 的 目又牵涉在那一个视图中激活问题。这个功能的实现,需要大家认真从程序代码的调试中确定最好的方法,这里也给出一段参考代码: if() 10 没有文档管理类型 !); ; ; ; /自动确定文档编号 0001; if() ); %d,& ; %04d, 1; , /取日期 ; %Y-%m-%d); /将日期填入表格控件 , i=1; if(); 11 3 代码调试步骤与注释 用程序界面与 目服务程序界面共生 只 要 象激活, 目的服务程序就融入到应用程序中,而且他们的菜单和工具条共生于应用程序界面中。 ; ; 12 )& if( )&() _,&) _; ; - 档类型视图 设计 建立 ,直接由 向导,从 派生一个新类 创建新类后在类的定义中首先观察这个宏 13 是否存在?其次在实现文件中观察是否存在?,这两个宏的作用是,在主框架的 数中需要使用 找出指定类名的类名指针,由类的静态函数 建视图对象,没有上述两个宏,静态函数 不可能存在 ,也就不可能由 再一个在 的定义中是否包含了这个宏,它是建立消息映射的关键宏,与实现文件中的这一段宏是配套的,缺一不可。 由于 从 生的, ,因此在 的定义文件中一定要 了使用 中 树 型 控 件 的 风 格 与 要 求 的 一 致 , 需 要 重 载个虚函数,来改变树型控件的风格。 为加入应用程序的文档类型条目,需要重载 函数,这个函数的作用从其函数名就可以知道,初始化更新,即 的窗口建立后自动调用的函数。 ; ; 01 普通文档类 ,0,0, 01档 ,0,0, 02档 ,0,0, 14 02 技术文档类 ,0,0, 01档 ,0,0, 02档 ,0,0, 03 重要文档类 ,0,0, 01档 ,0,0, 02档 ,0,0, 这样构建出的类简洁了很多,而且窗口位置、大小根本不用考虑。他会随父窗口的变化而变化。虽然应用程序管理的文档类型条目加入了树型控件,但是还必须捕获到用户对条目的点击情况产生需要的文档类型编码( 4 数字字符)。实现的方法是捕获 的 息,即当用户改变了树型控件中的条目,则由系统发出这个消息 ,捕获到个这消息调用其对应的消息响应函数。 ( ; * 0; if( ); ); ,看到产生的文档类型码 * 0; 15 据表视图 设计 件的编程方法。应注意从对话框资源模板导出视图类时,基类不能选 ,而选 。当 生成以后,在主框架类的 数中找到 名应放的位置,以及应包含的头文件。 需 要 为 此 类 的 员 引 入 列 名 , 这 个 工 作 是 重 载的 函数。 ; =序号 ,文档编号 ,文档摘要 ,文档录入日期 ,文档数据量 ; =500,900,7500,1200,1200; 1); ); i=0; 当树型控件( 对象)的选项发生改变后,把由父项与子项条目决定的文档类型码发送给数据表视图( 对象),或直接传给数据表视图,采用什么办法因人而异,其实应用程序文档对象是知道应用程序客户区所建的这三个 视图对象的,因为主框架的 数在创建三个视图时,已经将文档对象传给了三个视图对象,所以应该使用应用程序的文档对象作为数据传递的中转站,通过文档找到数据到达的目标视图对象,然后实施数据传递。 例如,在文档类中添加一个查找目标视图对象的函数,只给出目标视图的类名指针,找出存在的目标视图对象。 ; if( 这样可以把函数 代码修改为: ( ; * 0; if( ); 17 ); ; ; if(* 0; 当树型控件的选项发生改变,获得新的类型码后直接调用 数,把数据表中的相关数据行显示于表格控件中。 入 访问数据库 使用 术访问数据库, 是教学时老师介绍给我们的集成了使用 术访问 数据库的基本方法,我们也可以在这个基础上进行修改。桌面数据库 对 据库操控简单一些,它另一个优势是不需要数据库环境就可访问。 针对本课题,我们建立一个 据库,其中仅设置一张 据表,此表的数据字段设置见表 数据表的字段可以看出,文档数据是一个大二进数据段,在 中已有大二进数据出入数据表的方法。 表 字段属性 序号 字段名称 数据类型 数据长度 1 类 型 编码 文本 4 2 文 档编号 文 本 4 3 文 档 摘要 文本 255 4 文 档录 入日期 日期 /时间 8 5 文 档数 据量 数 字 /单 精度 8 6 文 档数 据 象 18 应用程序所访问的数据库名必须写入注册表中,当应用程序运行时从注册表中提取,不需要每次运行让用户去设置,下面一段参考代码来实现这个目的,我们应该把这个代码放到程序初始化的位置,即 函数中。 T(); 数据库 , ; 据库 (*); = ; 数据库 , 在数据库存在的情况下 , 数就应该将给类型编码的所有数据行显示到 件中。 if(|!=4) o; ; ; ,i=1; 19 型编码 =%s, &!) 类型编码 , 文档编号 , 文档摘要 , 文档录入日期 , 文档数据量 , %g, if(; 20 4 总结致谢 通过本次的课程设计,对 用得较多,熟悉了 用。对 +程序设计方法,较以前更熟 练掌握 境下程序设计的一些相关技术。在本次项目设计中,我熟悉建立单文档、视图和框架结构的应用程序的方法;了解目的建立、控制与 目数据读写方法;掌握 境下,应用程序界面的设计与管理技巧和掌握 +访问数据库的方法。 在课程

温馨提示

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

评论

0/150

提交评论