




已阅读5页,还剩48页未读, 继续免费阅读
(计算机应用技术专业论文)电子档案及其通用报表系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 中 科 技 大 学 硕 士 学 位 论 文 i 摘 要 目前市场上的报表工具种类很多功能各异大多提供了类型和样式定制功能 这些报表工具基于静态存储数据的数据库表而此类静态数据库表不支持企业的业 务扩展或变化为了在业务变化时不改变数据库表结构从而保护企业在软件开发 上的投资一些企业需要采用可动态存储数据的库表结构 本课题设计了一种可自定义页面的电子档案采用了可动态存储数据的库表结 构通过将档案页面的数据项映射为数据库表中的数据从而使数据项的增减仅仅 影响到数据库表中的数据而存储这些数据的数据库表结构保持不变该电子档案 满足企业的数据存储扩展需求在业务变化导致数据项改变的情况下通过保持数 据库表结构不变保护了软件投资 鉴于市场上的报表工具不能用于动态存储数据的库表结构通过分析报表工具 涉及的报表数据格式和输出定义了基于电子档案组合条件选择数据的规则设 计了一种支持多种报表格式的描述语言并通过构造相应的解释器对其进行编译执 行最终构造出一个完整的通用报表工具模型 以该报表工具模型为基础基于 datawindow.net和 visual studio 2005 .net 环 境平台开发出了一个基于电子档案的通用报表系统实现了电子档案数据标注 筛选预览和打印等功能该系统已经用到 8 6 3目标导向项目基于网格的数字化 医疗决策支持系统的报表系统模块中 关键词动态存储电子档案通用报表报表描述语言报表解释器 华 中 科 技 大 学 硕 士 学 位 论 文 ii abstract currently, there are various reporting tools with many different functions from each other, and the style and pattern can be defined in most of them. those tools are based on the database structure with static storing, which cant support the extensions or changes of the companys operation well. some companys use database structure with dynamic storing to keep the database structure when their operation changed, which can protect the software investment. we have designed the electronic records with custom-defined pages, which use the dynamic storing structure of database. the changes of data item will affect the data in dynamic database only by mapping the data in electronic records to the corresponding data in dynamic database. the electronic records allow the changes of companys operation, which protect the software investment by keeping the database structure when data item changed. those reporting tools in the market cant work in the database structure with dynamic storing. it has defined the method that based on conditional choosing of electronic records, and expounded the description language which supports many reporting pattern by analyzing reporting data, pattern and output, then constructed an integrate reporting tool model finally. we have realized an electronic records-based general reporting based on the reporting model above through using datawindow.net and visual studio 2005 .net tools, which realize the functions of choosing, filtering, previewing and printing of electronic records. the system has worked in a project of 863 oriented target: “digital medical treatment decision-making system based on grid”. keywords: dynamic storing, electronic records, general reporting, reporting description language, reporting translator 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果尽我所知除文中已经标明引用的内容外本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果对本文的研究做出贡献的个人和集体均已在 文中以明确方式标明本人完全意识到本声明的法律结果由本人承担 学位论文作者签名 日期 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留使用学位论文的规定即学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版允许论文被查阅和借阅 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索可以采用影印缩印或扫描等复制手段保存和汇编本学位论文 保密 在_年解密后适用本授权书 不保密 请在以上方框内打 学位论文作者签名 指导教师签名 日期 年 月 日 日期 年 月 日 本论文属于 华 中 科 技 大 学 硕 士 学 位 论 文 1 1 绪 论 计算机诞生之前数据信息都是用纸质文件等形式保存数据处理和表格处理 都是通过手工进行随着计算机在办公领域的广泛应用人们开始使用数据库来保 存数据使用计算机软件来实现数据处理使用应用程序来完成具体的业务操作 而作为事务处理中一个重要业务的报表编制也开始使用专门的报表工具来实现 1.1 课题的研究背景和意义 目前随着数据库应用系统大量出现作为它们最重要输出形式之一的报表地 位也愈显重要绝大部分数据库软件的设计都离不开报表的设计在数据库软件的 开发过程中软件设计人员常常需要设计大量的报表尽管其中相当一部分报表的 结构比较类似但也得为每一个报表的报表对象数据模型显示格式和数据来源 等一一进行定义报表运行时还得重复同样的运行操作同时还可能对数据存储 导入和导出等操作带来诸多的不便这些繁琐的重复性工作常常花费数据库软件设 计人员操作人员维护人员大量的精力和时间影响系统的开发使用效率和质 量1-2同时报表是数据库系统中变化性很强的部分应用系统交付用户后随着需 求的扩展可能会改变数据库中的关系结构相应的报表文件包括报表的格式报 表的数据也有可能发生变化要解决诸如此类的问题一般的报表系统要么无能为力 要么只能对报表进行重新设计然而重新设计只能解决暂时问题一旦有新的变化 要求改动数据库时又得重新设计报表这给用户带来了极大不便特别是对那些 不具备开发能力的用户更是如此3所以开发人员迫切需要能适应数据库不断变化 的易用报表工具 在企业信息系统的开发过程中由于市场环境的多变导致报表应用需求的多变 对报表系统的开发维护成本一直很高给企业信息系统的管理和使用带来了很大 困难目前开发的大多数报表系统与企业应用平台和企业业务处理逻辑紧密相关 从而造成维护的工作复杂度高可维护性差另外传统的报表开发工具是以西方 华 中 科 技 大 学 硕 士 学 位 论 文 2 简单的报表结构为设计目标用条带式框架简单分组的方法进行报表设计这样 的技术无法适应国内的复杂报表的需求并造成报表应用程序难于维护的困难4-5 企业迫切需要易于开发便于维护适应多变便于移植以及容易与现有系统整合 的通用报表系统通用报表系统能够极大程度提高企业信息管理和使用的效率降 低企业在信息管理上的成本与传统报表开发工具比较通用报表系统是报表设计 的一次革新 早期的开发方法中业务逻辑与报表处理过程混杂在一起任何一个需求或逻 辑的改变都必须重新修改编译这个报表程序才能完成虽然当前诸多信息管理系 统开发工具都推出了报表设计器生成器6-7之类的工具可以方便快捷地实现此 类需求但其创建的报表程序同样存在一些弊病8-10具体有如下几点 1系统升级困难开发出的报表程序功能有限应用程序的交互界面业务 逻辑数据库的处理操作没有分离是混杂在一起的属于是强耦合维护升级相 当困难 2系统适应性差静态确定报表的计算过程的报表无法在运行时动态改变 因而无法应对企业动态复杂多变的需求一旦新的需求出现或者运行时的环 境发生改变整个程序可能需要重写这样的报表程序就像一次性消费品一样只 能在一段时期内存在一旦条件改变则相应的修改和设置相当困难和耗时 3开发和维护成本高使用这类工具设计报表经常使我们面临这样的处境 简单设计复杂实现痛苦维护伴随着此类报表数量的增多对报表系统开 发与维护的工作量将成倍增长 4交换性差在企业内部大量存在使用了多个面向不同数目的应用系统的情 况比如生产系统财务系统人事系统等通常它们是独立的无法整合系统 间数据无法通讯或只能实现少量的信息交互大量信息交互工作需要手工来进行 1.2 国内外研究概况 为适应企业的需求设计和克服目前开发报表系统的不足之处近几年来国 内外越来越多的人从事这一方面的研究开发工作目前市场也已经有了多种可用的 华 中 科 技 大 学 硕 士 学 位 论 文 3 报表工具它们有较好的可维护度和可移植性并能与企业信息系统进行有机的整 合提高了报表开发维护的工作效率为用户节约大量的时间和精力然而它们 依然存在许多问题11例如报表工具的可用性和灵活性仍然不能令人满意数据 库厂商提供的报表工具不能很好的满足用户需求缺乏灵活多用的第三方报表工具 等更为重要的是很多报表工具对报表技术的研究重点都致力于用户操作方便性 及报表功能多样性的研究而忽略了对报表数据源动态性的考虑随着信息的多样 化和多变化人们经常要对数据库中的逻辑结构进行修改和扩展进而可能破坏了 先前定义好的普通报表内部的数据源逻辑结构从而使报表无法进行正常的数据处 理和显示而不得不对新数据源重新进行报表设计这样严重影响了企业的软件管 理12 目前 国内外比较流行的制作报表产品有 c r y s t a l r e p o r te x c e lf o r m u l a o n e 用友华表润乾报表等对于这些产品很难仅从某一个方面的应用就将它们分类 阐述分析也无法简单地评出优良中差须从设计模型设计方法功能需求等多 角度多方位来分析 才能对每一个报表工具的应用范围有一个深刻而清晰的认识13 对现有报表系统工具的研究有助于设计出更好的报表系统工具下面就几种常见 的报表系统工具进行分析比较 1. 水晶报表 水晶报表14是业内专业性和功能性较强的报表系统它除了提供强大的报表功 能外最大的优势是实现了与绝大多数流行开发工具的集成和接口除了开发新程 序外在工作中我们常常需要接触到很多较早的软件系统报表功能升级的需求如 果能结合水晶报表这一强大的工具往往能事半功倍 但是水晶报表也有如下缺点1 无法直接对生成报表内的数据进行编辑维 护2 不能用程序控制格线的位置和长度3 需要在数据库中建立临时表来实 现不规则分组功能4 需要通过编写源代码来动态生成报表的列 2. excel excel是历史悠久的电子表程序之一功能强大其丰富的格式支持和数据处理 功能多种数据源的支持交互式报表的支持和编程环境的提供让后来出现的 华 中 科 技 大 学 硕 士 学 位 论 文 4 w i n d o w s 报表工具均受其影响甚至在功能和界面上加以模仿 虽然excel具有超强的统计和分析数据的能力但是如果处理的数据量较大时 其执行效率就会大大地降低15-16 3. uforms uformsuniversal forms datawindow(units=1 timer_interval=0 color=1073741824 processing=1 htmldw=no print.printername= print.documentname= print.orientation = 0 print.margin.left = 24 print.margin.right = 24 print.margin.top = 24 print.margin.bottom = 24 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes mpt=no print.buttons=no print.preview.buttons=no print.cliptext=no 华 中 科 技 大 学 硕 士 学 位 论 文 24 print.overrideprintjob=no print.collate=yes print.preview.outline=yes hidegrayline=no grid.lines=0 ) header(height=18 color=536870912 ) summary(height=0 color=536870912 ) footer(height=0 color=536870912 ) detail(height=19 color=536870912 ) 这段代码的最开始处定义了发布版本和报表类型接下来定义了打印属性如 纸张大小页码页边距等最后定义了表头区明细区汇总区和页脚区的高度 和颜色其中代码release 10.5表示 datawindow.net 是 2.0 版本processing=1 表示本报表是表格型报表 2. 文本框 语言描述text(band=header alignment=2 text=text1 border=0 color=33554432 x=3 y=2 height=15 width=42 html.valueishtml=0 name=t_1 visible=1 font.face=tahoma font.height=-8 font.weight=400 font.family=2 font.pitch=2 font.charset=0 background.mode=2 background.color=67108864 ) 这段代码定义了文本框对象的所在布局区域对齐方式文本框内容边框样 式颜色坐标位置高度宽度名字可视性字体属性和背景属性等内容 3. 线条 语言描述line(band=detail x1=22 y1=10 x2=52 y2=10 name=l_1 visible=1 pen.style=0 pen.width=1 pen.color=33554432 background.mode=2 background.color=1073741824 ) 这段代码定义了线条对象的所在布局区域坐标位置名字可视性线条属 性和背景颜色等内容 4. 组框 语言描述groupbox(band=summary text=none border=2 color=33554432 x=69 y=5 height=37 width=131 name=gb_1 visible=1 font.face=tahoma font.height=-12 font.weight=400 font.family=2 font.pitch=2 font.charset=0 background.mode=2 华 中 科 技 大 学 硕 士 学 位 论 文 25 background.color=1073741824 ) 这段代码定义了组框的所在布局区域文本内容边框样式颜色坐标位置 高度宽度名字可视性字体属性背景属性等内容 5. 椭圆 语言描述ellipse(band=summary x=40 y=21 height=30 width=30 name=oval_1 visible=1 brush.hatch=6 brush.color=33554432 pen.style=0 pen.width=1 pen.color=1073741824 background.mode=2 background.color=33554432 ) 这段代码定义了椭圆的所在布局区域坐标位置高度宽度名字可视性 椭圆属性和背景属性等内容 6. 矩形 语言描述rectangle(band=summary x=148 y=21 height=30 width=30 name=r_1 visible=1 brush.hatch=6 brush.color=33554432 pen.style=0 pen.width=1 pen.color=1073741824 background.mode=2 background.color=33554432 ) 这段代码定义了矩形的所在布局区域坐标位置高度宽度名字可视性 矩形属性和背景属性等内容 7. 圆形 语言描述roundrectangle(band=summary ellipseheight=36 ellipsewidth=40 x=85 y=18 height=30 width=30 name=rr_1 visible=1 brush.hatch=6 brush.color=33554432 pen.style=0 pen.width=1 pen.color=1073741824 background.mode=2 background.color=33554432 ) 这段代码定义了圆形的所在布局区域坐标位置高度宽度名字可视性 圆形属性和背景属性等内容 8. 图片 语言描述bitmap(band=header filename=e:picturefriendmypic1.bmp x=133 y=9 height=30 width=30 border=0 name=p_1 visible=1 ) 华 中 科 技 大 学 硕 士 学 位 论 文 26 这段代码定义了图片的所在布局区域路径来源坐标位置高度宽度边 框样式名字和可视性等内容 9. 项目列 语言描述column(band=detail id=1 alignment=1 tabsequence=32766 border=0 color=33554432 x=3 y=2 height=22 width=84 format=general html.valueishtml=0 name=rybh visible=1 edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face=tahoma font.height=-12 font.weight=400 font.family=2 font.pitch=2 font.charset=0 background.mode=1 background.color=536870912 ) 这段代码定义了项目列的所在布局区域项目序号排列方式tab 顺序边框 样式颜色坐标位置高度宽度数据格式名字可视性项目列属性字 体属性和背景属性等内容项目列是最重要的子项对象也是数据源记录数据填充 的主要载体当一维的数据源记录数据提取至项目列时需根据项目序号来获取对 应编号的记录数据如提取的记录数据为102030那么项目序号为 2 的项目 列将会获取数据 20 1 0 计算列 语言描述compute(band=summary alignment=0 expression=abs( rybh ) border=0 color=33554432 x=1 y=20 height=19 width=289 format=general html.valueishtml=0 name=compute_1 visible=1 font.face=tahoma font.height=-12 font.weight=400 font.family=2 font.pitch=2 font.charset=0 background.mode=2 background.color=1073741824 ) 这段代码定义了计算列的所在布局区域排列方式计算表达式边框样式 颜色坐标位置高度宽度数据格式名字可视性字体属性和背景属性等 内容计算列也可以是数据源记录数据填充的载体但它主要是执行对项目列数据 进行处理的功能其处理函数即计算表达式必须是符合正确规则的表达式否则此 计算列无效 华 中 科 技 大 学 硕 士 学 位 论 文 27 3.3.3 报表输出定义 语言描述sparse(names=hyjgv1 xbgsv2) htmltable(border=1 ) htmlgen(clientevents=1 clientvalidation=1 clientcomputedfields=1 clientformatting=0 clientscriptable=0 generatejavascript=1 encodeselflinkargs=1 netscapelayers=0 pagingmethod=0 generatedddwframes=1 ) xhtmlgen() cssgen(sessionspecific=0 ) xmlgen(inline=0 ) xsltgen() jsgen() export.xml(headgroups=1 includewhitespace=0 metadatatype=0 savemetadata=0 ) import.xml() export.pdf(method=0 distill.custompostscript=0 xslfop.print=0 ) export.xhtml() 这段代码首先定义了报表的合并列再定义了报表的一些输出保存形式如 htmlxmlpdf 等 3.4 报表设计环境 报表设计环境为报表解释器提供了运行平台本文用.net 作为报表开发平 台.net 是微软精心打造的新一代平台代表了微软未来发展的战略方向作为微 软技术体系的核心.net 在企业级应用市场上迅速崛起作为一种新的软件开发模 型平台它允许用不同程序设计语言创建的应用程序能相互通信 .net 功能强大兼容性能良好datawindow.net 也提供了与此平台间的上百个 接口函数利用其中一些函数如 describemodify 等就可以在.net 平台下直接控 制 datawindow.net 的语法生成 下面介绍在.net 平台下本系统用到的主要接口函数 1. create函数 设保存语法字符串的变量为 syntax那么语句 create(syntax)就可以根据 syntax 华 中 科 技 大 学 硕 士 学 位 论 文 28 保存的语言描述字符串生成对应组件框架包括版本布局格式特征位置坐标等 构架当然前提是 syntax 为正确的 datawindow.net 语言描述否则语句执行就会 出错 2. describe函数 describe 函数主要是通过 datawindow.net 子项的名字用来获取其属性信息 比 如获取文本框的内容文本框的位置组框的大小图片的路径等 3. modify函数 modify 函数主要用来修改指定子项对象的属性比如修改文本框的内容文本 框的位置组框的大小图片的路径等 4其他函数 此外还有一些系统中需要用到的函数比如鼠标点击 datawindow.net 对象 后的响应事件函数 mousedown( )为 datawindow.net 增加新记录行的函数 insertrow( )内部数据的排序函数 setsort( )内部数据的过滤函数 setfilter( )等这 些也是本系统设计所必须用到的函数 3.5 电子档案的报表数据提取 基于电子档案的通用报表的数据提取就是研究如何从电子档案中提取用户所 选择的感兴趣记录即提取用户标注的模板项目记录 图 3.3 通用报表的数据提取 通用报表的数据提取流程如图 3.3 所示从图中可以看到首先对电子档案进行 数据模块 模板标 注 条件选 报表模型 电子档案 模板数据 华 中 科 技 大 学 硕 士 学 位 论 文 29 模板标注电子档案中心数据库中的数据模块根据标注的结果提取出模板数据此 外系统也根据标注的结果生成对应的基本报表模型最后提取出来的模板数据经过 人员的条件选择再填充到已定义好的报表模型中 其中数据填充到空报表的过程中涉及到了数据类型的转换在前面第二章的 2.3 小节中介绍的电子档案的数据存储里将电子档案的数据类型定义为五种同样 将数据加载到报表中也要进行这五种类型数据的转换35 3.6 本章小结 本章首先介绍了报表设计需要解决的三个核心问题报表数据报表格式和报 表输出报表数据和报表格式是报表本身的固有属性报表输出是报表工具为了实 用必须解决的问题接着提出一种报表工具模型包括样本的语言文法规则报 表描述语言 报表输出和报表解释器等内容 根据技术需求分析 详细介绍了 sybase 公司开发的 datawindow.net 解释器的特性以及它与报表设计环境.net 之间的一 些主要接口函数最后基于电子档案的特性本章针对报表数据的技术需求详细 介绍了基于电子档案的通用报表的数据提取流程包括电子档案的标注模板数据 的提取对应基本报表的生成条件选择的过滤以及报表数据的填充 华 中 科 技 大 学 硕 士 学 位 论 文 30 4 系统的设计与实现 在上一章里详细介绍了报表系统的技术基础本章将利用上一章提到的技术对 整个系统进行框架的设计与实现最后完整地介绍了通用报表系统的操作流程其 中关键的功能设计模块会给出流程图 4.1 基本设计思想 本系统采用了客户机/服务器结构即 client/server 结构以 visual studio 2005 .net 为前台开发平台 以 sql server 2005 为后台数据库以 datawindow.net 2.0 解释器为开发技术基础利用 datawindow.net 组件来进行动态电子档案和报表 设计需要比较熟悉地掌握 datawindow.net 的制作过程同时也需要进行必要的 代码编写及系统的编译其实报表中的数据的提取是通过数据操纵来获得数据库中 的数据一般包括一级数据处理和二级数据处理两个方面一级数据处理是指报表 系统从数据库中获取数据的能力二级数据处理是指对一级数据处理进行再处理的 能力包括对报表数据进行公式运算聚合函数的调用等功能这两点分别对应本 系统中的项目列和计算列通过对 datawindow.net 的使用分析发现数据窗口设 计的报表在系统编译完再最终交付用户使用后仍然可以通过预先设计好的描述 语言对报表结构进行修改这样我们就可以先用 datawindow.net 开发组件做一个 最基本的报表然后再根据最终用户的需要对基本报表的更改要求的实现代码嵌于 其中包括控制文本框线条组框椭圆矩形圆形图片项目列和计算列 等九种对象以及它们的各种属性字体边框样式坐标位置等设计采用上述 的方法有下面一些优点 1系统通过加载了 datawindow.net 的动态链接库来进行代码设计无须再 打开 datawindow.net 平台解决了产品过期的问题 2在 datawindow.net 开发环境下能实现的绝大部分功能同样可迁移至本系 统中 华 中 科 技 大 学 硕 士 学 位 论 文 31 3操作界面是中文的 4只保留系统需要的功能模块操作界面友好且简单 用户只要知道自己想要做的电子档案和报表的样式即可以完成制作不需要对 其它技术的掌握不过这里有以下几个难点需要认真考虑 1电子档案中的模板为单一区域可以用 datawindow.net 编译好的最终系 统中报表的表头区或明细区来实现但报表分为四个区域表头区明细区汇总 区页脚区由于 datawindow.net 编译好的最终系统中报表对这四个区域的划分 是没有分界线的也就是说用户无法单从界面上清楚各个区域的具体位置那么要 进行汇总统计设置页眉页脚就非常不方便 2报表中有九个对象文本框线条组框椭圆矩形圆形图片项 目列计算列其中文本框线条组框椭圆矩形圆形图片这七个是基本 对象它们的所有属性都可以在界面上直接设置并实现即设计时所见即最后界面 生成的所得但项目列比文本框多三个属性项目列的数据源名项目序号和项目 数据类型计算列比文本框多一个属性计算列的计算表达式多出来的这几项属 性在设计时并不起实际作用只在编译完成后才起相应的作用其中项目序号是为 了完成数据的填充功能而项目列的数据源名项目数据类型和计算列的计算表达 式是为了完成数学运算和聚合函数计算功能 3由于电子档案中可能存在子表所以就存在自动分页问题即无法控制子 表长度和内容的多少从而势必造成跨页存储的现象此时就难于计算每页中子 表有多少行打印就会成为一个很大的问题 经过研究对应的解决方法如下 1系统预先做的基本报表只保留一个区域明细区所有的用户操作均在本 区域内完成在电子档案设计时所见即所得即用户设计时各子项对象的绝对位 置就是最后电子档案生成时各子项对象的位置而在报表工具设计时在这个区域 内添加四个文本框并标上对应的文字以作分区使用如图 4.1 所示在生成报表时 根据这四个文本框对象的相对位置计算出其它子项对象在报表中的真实位置所在 区域所在区域的位置并进行相应的调整例如一个图片的绝对位置为 300 华 中 科 技 大 学 硕 士 学 位 论 文 32 而汇总条文本框的绝对位置为 280 那么最后生成报表时将此图片的所在区域由明细 区改为汇总区位置改为汇总区的相对位置为 20 图 4.1 基本报表界面 2在报表设计时将项目列与计算列均作为文本框处理同时为了清楚地分 辨出各个不同对象将它们的命名进行区分定义文本框名以 t_开头项目列名以 c_为开头项目序号跟在项目列名后面如序号为 1 的项目列表示为 c_1计算列 名以 f_为开头其中项目列的数据源名项目序号和计算列的计算表达式均可用文 本框的文本内容来保存在生成报表时发现以 c_开头的文本框就将它转化为项 目列将原文本框的内容转化为其数据源名并将跟在后面的数字转化为其序号 发现以 f_开头的文本框就将它转化为计算列并将原文本框的内容转化为其计算 表达式 3由于本系统的重点不是开发一个排版系统因此本系统采用限定措施来解 决电子档案内部子表的跨页显示问题即对子表的行数和列数进行预先限制定义 这个过程称为分组定义这样同一页内无法显示的内容不打印但在显示器上可以 通过滚动条来阅览同时利用模板的重复功能也可以对不能跨页显示的数据提供 变相的跨页支持一个分组其实就是多个项目列只是这几个项目列具有一定的联 合意义 4.2 具体实施方案 根据上节的设计思想本节将对系统各个模块功能进行具体地实现其中电子 档案设计和报表工具设计是模块设计中的重点和难点 华 中 科 技 大 学 硕 士 学 位 论 文 33 4.2.1 电子档案设计 电子档案作为本通用报表的报表数据源框架对象其项目列对象一定要和报表 工具的数据源很好地承接融合由第二章中电子档案的介绍可知电子档案的基本 构成单位是模板所以电子档案的设计就是进行模板的设计再将档案大纲 模板三者框架搭建起来的一个过程36-37 1. 基本模板的定制 建立一个空的 datawindow.net 对象即只用最基本的语言描述来表示它所 有模板的制作都是在这个模板的基础之上完成的因为所有定制电子档案的所有操 作都是在明细区detail内完成所以将明细区的高度设置为一个屏幕大小其他 区的高度设置为 0其中 datawindow.net 用 2.0 版本输出样式是自由窗口样式 free打印的信息可以让用户预先定义数据源可任意定义自由样式窗口中的 子项对象可以任意移动 2. 子项对象的操作 各子项对象的操作主要通过控件栏工具栏子项拖拉和右键菜单来实现其 中控件栏的功能包括新增各类子项对象新增文本框新增加线条新增组框新 增椭圆新增矩形新增圆形新增图片新增项目列新增分组工具栏的功能 包括各种子项编辑控制子项对象的坐标位置设置边框样式选择对齐方式选择 高度宽度设置字体属性选择背景属性选择项目列和分组的附加属性设置等 子项拖拉的功能包括修改子项对象的位置和大小右键菜单的功能包括各子项对 象的复制粘贴和删除图片的导入和删除 1新增子项对象假设要新增子项对象的语言描述字符串为 s_newitem那 么 create(syntax+s_newitem)语句将完成此功能 窗口内的每个子项对象名不能重复 所以对不同类型的子项对象标以不同意义的开头字符串文本框以 t_开头线条以 l_开头组框以 b_开头椭圆以 r_开头 , 矩形以 k_开头圆形以 e_开头图片以 p_ 开头项目列以 c_开头分组以 g_开头属于分组的项目列为了跟普通的项目区分 开来以 cg_开头此外还得对每种类型子项对象再设置一个单独的序号即同种 类型的子项对象的序号都不同但是不同类型的子项对象的序号可以相同这样就 华 中 科 技 大 学 硕 士 学 位 论 文 34 保证了所有的子项对象名都不会重复 电子档案的项目列相比其他子项对象多了几项属性项目列的数据源名项目 序号和数据类型所以在新增它们之前需预先定义这里项目列的数据源名不能重 复项目序号是根据每个项目列的定义顺序依次递增所以项目序号也不会重复 此外电子档案的分组子项对象也需要预先定义其规格分组名称分组行数分 组列数以及各个项目列的数据类型 2子项对象的编辑控制首先利用鼠标的 click 事件获取到所选定的子项对 象名objectundermouse.gob.name再根据用户的操作用 moidfy 函数对此子项对 象的属性进行各式各样的修改主要语句如下 横坐标位置设置modify(对象名+.x=+横坐标位置) 纵坐标位置设置modify(对象名+.y=+纵坐标位置) 边框样式选择modify(对象名+ .border=+边框样式) 对齐方式选择modify(对象名+ .alignment=+对齐方式) 高度设置modify(对象名+.height=+高度) 宽度设置modify(对象名+.width=+宽度) 字体类型设置modify(对象名+.font.face=+字体类型) 字体颜色设置modify(对象名+.font.color=+字体颜色) 字体大小设置modify(对象名+.font.height=+字体大小) 字体粗体设置modify(对象名+.font.weight=700) 取消字体粗体设置modify(对象名+.font.weight=400) 字体斜体设置modify(对象名+ .font.italic=1) 取消字体粗体设置modify(对象名+ .font.italic=0) 字体下划线设置modify(对象名+ .font.underline=1) 取消字体下划线设置modify(对象名+ .font.underline=0) 字体中间线设置modify(对象名+ .font.strikethrough=1) 取消字体中间线设置modify(对象名+ .font.strikethrough=0) 背景颜色设置modify(对象名+ .background.color=+背景颜色) 华 中 科 技 大 学 硕 士 学 位 论 文 35 3子项对象的拖拉控制所有的子项对象都有 moveable 和 resizeable 这两个 属性只要将它们的值设置为 1 就可以实现移动位置和改变大小这两个功能当然 也可以将子项锁住具体语句如下 可移动位置设置modify(对象名+ .moveable=1) 取消可移动位置设置modify(对象名+ .moveable=0) 可改变大小设置modify(对象名+ .resizeable=1) 取消可改变大小设置modify(对象名+ .resizeable=0) 当移动分组对象时它所包含的多个项目列作为一个整体也应该跟着移动所 以移动分组时要先遍历窗口内的所有项目列如果是属于此分组的项目列最后也得 跟着移动一样的相对距离 4复制子项对象获取所要复制的子项对象的语言描述字符串并保存在某 一字符串变量中为粘贴操作做准备 5粘贴子项对象根据复制对象的语言描述字符串进行新增操作只是除了 对象名不同外子项对象的其他属性都完全原样对应过来 6删除子项对象将选定的子项对象从窗口中删除其实就是在完整的 datawindow.net 语言描述中将选定的子项对象所对应的那部分描述代码删除掉 然 后再通过 create 函数生成剩下的语言描述所表示对应的 datawindow.net 对象删 除分组时它所包含的所有项目列都要相应地删除 至此完成了对电子档案的框架设计在这个基础平台之上用户可以根据需求进 行任何样式的电子档案设计一个档案的模板实例图如图 4.2 所示 3. 档案数据的提取 前面只对电子档案的模型进行了设计接下来还必须实现档案数据的提取和填 充功能才能让用户看到电子档案内部的关键信息内容在电子档案的数据存储方 案中为了满足电子档案数据源的结构动态性其所有数据记录都保存在同一数据 模块中本系统用 sql server 2005 来搭建此数据模块结构 华 中 科 技 大 学 硕 士 学 位 论 文 36 图 4.2 电子档案的模板实例图 在电子档案的数据存储过程中将模板数据和模板标识放在数据模块中的同一 条记录中同样在电子档案的数据提取过程中系统根据指定的模板标识从数据 库的数据模块中提取相应的模板数据流程如图 4.3 所示 图 4.3 电子档案的数据提取流程图 有时候特定的操作员可能需要对电子档案进行必要的数据维护这时就必须 设置档案模板中的项目列具有可写性在 datawindow.net 语言描述中只要将项目 列对象的 t a b 顺序值设置为非零即可 4. 电子档案的保存和修改 最后系统还应该提供对用户定义的电子档案结构进行保存和修改的功能经 过前面的分析发现 datawindow.net 运行的过程实际上就是对内部的语言描述值 s y n t a x 进行编译的过程因而电子档案的结构保存通过将其 syntax字符串值保存在 数据模块 模板标识 模板 档案 大纲 模板数 据 华 中 科 技 大 学 硕 士 学 位 论 文 37 sql server 2005 数据库中的办法来实现 电子档案结构的修改就是再次进行子项编辑操作的过程只是它不再是在空的 基本数据窗口中进行操作而是在已经保存好的窗口对象中 4.2.2 报表工具设计 报表工具的设计流程与电子档案类似但由于设计的目的性不同其主要差别 有以下几个方面 1在 4.1 节中提到报表工具中必须加四个文本框来使操作员能分辨清楚报 表的四个区域最终系统编译之前根据这四个区域的位置对报表其它各子项对象 进行绝对位置的转化即求出其所在的区域和真正的相对位置 2 在报表工具的控件栏中没有电子档案的新增分组项 取而代之的是计算列 这是因为电子档案中的基础项目列都是进行一级数据处理只在对其标注后的报表 才提供二级数据处理功能而报表中不必有分组对象因为报表可自行根据记录的 行数进行跨页处理 3在表格型报表中在垂直方向上每个字段列都是有规则地排列着而不允 许字段交错排列也就是说报表中的所有子项对象不但有所在的区域而且还有所 在的字段列在这里为每个字段列的右边增加一条垂直线条再通过拖动每条垂 直线条来改变本字段列的宽度以满足表格型报表的特性 现在针对不同于电子档案的设计部分进行阐述 1新建一个空的数据窗口对象只留着明细区detail其它区域的高度都 设置为零再往里面添加四个内容分别为表头明细汇总和页脚的文本框用来表 示报表四个区域的分界线命名都以 x_开头并将它们的位置都有规律地预测好 比如它们的 x坐标位置都为 0紧挨着窗口的左侧相邻两者之间的 y坐标位置 距离相等可通过垂直移动这四个文本框来表面化地改变报表四个区域的高度每 次移动完成后都要让这四个都紧挨着窗口的左侧可通过下面语句实现 modify(表头文本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风险投资合同协议书
- 学校就业协议书
- 二手商铺转租合同
- 聚焦2025年:老年健康管理中的营养膳食与长期照护服务模式研究报告
- 2024年上海市青浦区教育系统招聘教师真题
- 露营经济带动下2025年户外用品行业电商渠道研究报告
- 中医院考试试题及答案
- 中医药抗疫面试题及答案
- 中医乡村技能考试题及答案
- 中医五脏考试题及答案解析
- 儿童呼吸机应用
- 宣传部合规管理制度
- 保洁工具设备管理制度
- 2024年中级统计师《统计工作实务》真题及答案解析
- 小学2024-2025学年度第二学期道德与法治课程计划
- 钓鱼安全协议书
- 河北省唐山市路北区2025届八年级数学第二学期期末达标检测模拟试题含解析
- 2025-2030能源行业市场深度调研及发展趋势与投资战略研究报告
- 平面广告设计基本原则试题及答案
- 患者十大安全目标(2025) 2
- 2025-2030中国骨形态发生蛋白行业市场现状供需分析及投资评估规划分析研究报告
评论
0/150
提交评论