报表系统十篇

时间:2023-03-27 01:38:17

报表系统

报表系统篇1

本文结合本人的实际工作经历,简要地讨论了开发系统时所选用的软件架构及其应用。

关键词:软件架构 统计报表 优化设计

温州市统计局原来是依赖手工将报表数据层层上报,随着我国国民经济的快速发展和计算机技术的提高,传统的手工报表方式和管理方法已不能满足快速、高效地掌握资讯的要求。对一套方便、可靠、安全的数据调查与报表管理系统的需求迫在眉睫。温州市统计报表网上直报系统总体架构规划由网络系统、应用系统和运行维护系统三部分组成。

网络系统主要由硬件网络平台组成,是应用系统和运行维护系统运行的基础平台,其主要作用是提供系统运行的物理环境,包括运行网络、数据安全、通讯保障等环境。

应用系统主要由在线报表管理系统软件组成,其主要作用是提供数据采集、处理和利用的应用服务,包括报表数据的录入上报、审核、接收、查询、统计、汇总等功能。

运行维护系统主要提供报表管理系统基础数据的维护和系统运行的日常维护功能。

功能性需求包括:用户角色权限管理,报表设计维护管理,报表录入及上报管理,报表查询汇总管理,数据导入导出管理。按用户划分,分为系统管理员、统计部门管理员和企业用户三类。

非功能性需求主要考虑了以下因素。

(1)可扩充性、可维护性。可扩充性包括了两个方面:一方面指软件模块的可扩充,能够很方便地扩充新的软件功能,比如企业台帐系统,如果有必要,要求能够很方便地作出扩展;另一方面指系统本身的可扩充性,能够支持企业用户大规模、高并发的访问,支持集群等。可维护性则要求能够根据统计部门需求变化进行快速地升级和改进。

(2)访问方式。通过网络远程访问,访问时能够跨广域网,因为直报系统报表填报的对象是广大的企业用户,必须支持Internet访问。

(3)组件复用。主要指的是服务器端的组件复用。服务器端组件能够支持远程客户端访问。为此,需要采用中间件技术来达到组件复用的目标。

(4)安全性。支持良好的用户、权限管理,以及支持常见认证体系(如PKI)、SSL加密传输等。

(5)用户界面及数据接口。基于浏览器的瘦客户端,能够支持不同方式采集的不同格式的数据,支持不同风格的用户界面。

基于上述考虑,选择了多层组合架构,层与层之间松散耦合,各层分工明确,从上到下各层依次为表现层、业务逻辑层、持久化层和数据库层。采用Spring来搭建整个框架的基础,使用了持久化工具Hibernate来完成持久化操作,表现层通过Struts框架来实现的。

Spring的基础是一个轻量级的容器,即实现了依赖注入(DI)和控制反转模式(IoC),在这个轻量级的容器中已经架设了与典型应用相关的大部分基础框架结构,我们的统计报表网上直报系统就是在这个基础上,根据系统的需要组装相关的应用到此框架上,从而完成应用程序的开发,实现一站式框架整合方案。Spring的核心是Bean工厂,在Bean工厂的基础上,Spring实现了面向方面编程(AOP,Aspect-Oriented Programming),提供了非管理环境下申明事务、安全等服务;从而保障了框架整体协调工作和框架的安全性。

在设计的架构中由Spring构建的业务层实现软件系统需要完成的所有业务功能。如:管理事务;业务服务管理;处理应用程序的业务逻辑和业务验证;预留和其他层交互的接口;管理业务层对象之间的依赖;增加在表示层和持久层之间的灵活性,使它们互不直接通讯;从表示层中得到上下文并将其提供给业务层,使业务层获得业务服务;管理从业务逻辑到持久层的实现等等。这些是系统的核心功能。

Spring通过服务装载器来与Struts协同工作,由Struts构建的表示层在其MVC的体系结构下主要完成以下功能:为用户管理请求和响应;提供一个控制器调用业务逻辑和其他层处理;为显示提供一个模型;执行用户接口验证等等。系统的页面展示功能主要由这一层来实现。

Spring通过数据访问对象(DAO,Data Access Object)来与Hibernate协同工作,Hibernate框架提供了“对象-关系持久化”机制和查询服务。Hibernate提供了建立数据源或数据连接池的功能,数据查询语言HQL和其他Hibernate服务。Hibernate“对象-关系映射”框架提供对大多数主流SQL数据库的支持,它们支持“父/子”关系、事务处理、继承和多态。

在表示层、业务层和持久层之间,使用领域模型层来传递各层之间协作需要的数据对象。领域对象层由那些代表现实世界中的业务对象的对象组成,如:专业(specialty)、报表(Report)等。这个层让我们从繁琐的建立和维护匹配领域对象的数据传输对象工作中解脱出来。例如,Hibernate允许把报表制度的信息从数据库读进报表(Report)的对象,这样可以在连接断开的情况下把制度显示到界面,供企业完成填报。在企业报表数据填报发送后,报表对象在连接恢复后被更新送回到持久层,并在数据库里更新。这个模型使Java开发者以一种面向对象的风格和对象打交道,而不必考虑复杂的对象模型及关系模型之间的转换问题。

通过Struts+Spring+Hibemat这个成熟的开源框架来实现统计报表网上直报系统,有效地缩短了开发周期,简化了程序代码,提高了开发质量,使系统具有良好的交互性、较好的可扩展性和良好的可维护性。

报表系统篇2

关键词:会计电算;报表;标准化

文章编号:1003-6636(2001)02-0072-04中图分类号:f231文献标识码:a

随着计算机硬件、软件技术的迅速发展,我国商品化会计软件在短短十多年的时间内已有长足的发展,从初期的基于dos环境的简单会计核算系统,发展到现在基于windows环境的、网络化的、具有一定管理功能的会计信息管理系统,特别是其中的报表子系统的功能和软件水平更是快速提高。但是,在其发展中也出现了不少值得注意的问题,尤其是报表子中标准不统一的问题比较突出,本文拟就此做一些探讨。

一、会计报表子系统的现状

由于计算机硬件条件的限制以及支撑软件技术的不足,我国早期的会计电算化软件中的报表子系统一般都由开发商自行开发研制,功能上一般只能编制少量的会计报表,报表格式比较单一,报表中数据的来源范围也较窄,通常只能从帐务数据库中取得,若要使用其他数据,则需要人工从键盘上输入,其中较典型的有用友财务软件(dos版),万能财务软件等。

进入九十年代中期,随着软件技术的发展,特别是windows图形环境和对象嵌入与链接技术的广泛应用,使各会计电算化软件商投入了大量人力、物力纷纷对原有的系统进行升级,甚至重新开发自己的帐务软件,使我国的会计电算化软件的总体水平跨上了一个新的台阶。目前报表子系统一般都采用嵌入通用电子表软件的方式,使会计报表子系统功能得到了极大的改善。这种新型的会计报表子系统可使用户在不需要软件设计人员的帮助下,生成会计工作中所需的各种会计报表;对于报表的大小,格式都没有太多的限制,而报表中数据来源更是多种多样——可以从帐务数据库来,也可以从其他数据库中来,例如可以从其他报表中取数据、从计划数据库中取数据等。报表数据的输出形式多种多样,可直接输出到纸上,也可文件的形式输出到磁盘上,还可以通过网络传送给其他的计算机。

这种新型会计报表子系统实现的方法,一般是将专业的通用电子报表系统(如excel,lotusl-2-3等)经适当改造后,嵌入自己的会计电算化系统中(如用友,金蝶等),然后在自己的会计软件中提供一定数量的数据接口、取数公式及计算公式等。用户通过对这些数据接口、取数公式及计算公式的运用即可生成所需的各种会计报表。由于这些报表子系统嵌入了专业的通用电子报表子系统,所以它们不仅能生成各种会计报表,还能对所生成的会计报表做各种会计分析和统计分析,从而大大扩展了会计报表子系统的功能。

现在比较流行的会计电算化软件(如用友,安易,金蝶,金算盘等)的会计报表子系统,其报表编制的基本处理流程可总结为如下的流程图:

上述流程图可以看出,整个报表处理子系统就是要生成和处理报表格式文件和报表数据文件,而报表文件则是这两个文件的总称。

报表格式文件主要包含两类信息:报表总体信息及格式信息。如表名、单位编号,单位名称,报表日期,表及表中行列宽度、高度和表线格式等信息;另一类信息则是用以说明表中各表项数据的来源及计算方法等,这一类信息通常都是用公式的形成来加说明的。

可以说,报表格式文件的内容决定了报表数据文件的内容、格式等,所以要得到正确的会计报表,就要正确地确定和编辑报表格式文件的内容。目前,所有的会计电算化系统都提供了手工输入和向导输入两种编辑报表格式文件内容的方法。用户要想得到某个特定的会计报表,首先就通过系统提供的编辑手段,输入报表的各种格式信息,取数公式和计算公式。生成报表格式文件,然后由报表处理软件根据格式文件的内容,自动生成报表数据文件,并根据需要进行报表输出或报表分析。

一张报表只要格式、数据关系没有发生改变,则它的格式文件的内容就不要需要改变,只需输入不同的日期等参数,就可得到不同时期、不同会计期间的报表。

二、存在的问题

以现在的软件发展水平来衡量,目前较流行的会计电算化软件报表处理子系统的功能及水平是比较完美的。本文不打算讨论单个软件的技术问题,而是想对在会计电算化在普及和使用过程中出现的问题做一些研讨。通过应用可以发现,我国会计电算化报表处理系统存在较严重的标准混乱问题,主要表现在:

1.各种会计电算化软件中所用的术语和含义不统一。

对于报表处理子系统的使用,首要问题是要首先定义报表的各大组成要素,按现行比较流行的要素划分方法,报表由标题,表头,表体,表尾四大要素组成,但在有些系统中则划分为表头,表体和表尾三部分,而另一些系统则划分为表头,表体,附注,表尾。有些虽然要素名称相同,但实际含义则不同,例如有的系统将列标题作为表体的一部分,而有的系统则将列标题作为表头的一部分,等等。

2.各种公式的格式不统一、函数名称不统一、参数格式多种多样,各种软件的报表公式差异很大。

例如用友财务软件中,其帐务函数的基本格式是:

函数名(“科目编码”,会计期单位,“方向”,帐套号)

而金蝶财务软件的帐务函数的基本格式则是:

<科目编码>.数据性质会计期数

在用友财务软件中,以函数名来区别期初,期末,发生额等,例如qc代表期初数据,qm代表期末数据。而在金蝶中则是以数据性质来区别不同类型的数据,如用字母c代表期初数据等。在同一个软件中,也存在函数名的命名不统一的现象,如在用友财务软件中,取数函数大多用汉字拼音缩写,而计算函数则大多采用英文单词。

此外,函数中涉及的参数的格式不统一,例如:在用友财务软件中,报表aa中单元h33的值来自bb报表中d9单元的数据,则取数公式为

“aa”h33=“bb”d9relatilon月with“bb”月

在金蝶财务软件中,则为

“aa”!h33=“bb”!d9

3.报表格式的定义方法不一致。

各种软件在定义一些格式时其方法差异很大,例如:在所有报表中都会涉及到报表输出数据的小数位数。在用友财务软件中是以总体格式说明的方法定义输出数据的小数位数,而在金蝶财务软件中则是以单个单元逐个定义的方法来定义每一个单元输出数据的小数位数。

4.报表无纸化输出的格式不统一。

所有系统现在的纸性化输出一般均能满足国家财政部关于报表格式的要求,但是随着计算机网络时代的来临以及数据共享,数据全方位、深层次的应用,报表数据更多地向无纸化输出发展。

鉴于报表无纸化输出的重要性,各软件开发商都在自己的软件系统中增设了报表无纸化输出的功能,有些系统还可以多种格式输出。如用友财务软件可采用ascii文件和xbase数据库文件的形式进行输出;而安易财务软件无纸化输出则有access文件类型和oracle文件类型等;在金蝶财务软件中则只能将数值型数据进行无纸化输出(参见金蝶财务软件6.3版);还有的财务软件还可以excel文件格式对会计报表数据进行输出。

虽然这些软件都能将报表数据以文件形式进行无纸化输出,但是各种软件在报表数据的输出格式上都有所不同。同一种报表(如资产负债表),在无纸化输出时,哪些数据要输出,哪些不输出,顺序怎样,数据的宽度如何等都不统一。

三、存在的问题对会计电算化的普及和应用的影响

上述现行财务软件存在的标准不统一问题,对于我国会计电算化软件水平的提高,会计电算化的进一步普及,以及会计资料的广泛和深入应用都非常不利。

1.容易形成会计软件市场垄断。

由于现今的会计电算化软件报表子系统在使用上差别极大,对于会计人员来说,要学会并掌握一种软件的使用已非易事,要掌握多种软件的使用就更困难,也没有必要。因此,一个用户一旦使用了某种财务软件后就很难再改用其他财务软件。而现有的财务软件占有并瓜分了大部分市场分额后,其他软件商再要涉足该市场则会非常困难,并且已瓜分了市场的软件商之间也很难再重新分配市场,其结果将使软件商减缓软件的升级换代速度;在软件升级换代时,用户为使现有系统的核算资料能在今后继续使用,并保证升级换代后的数据能保持一致,则必须使用原软件商的产品。这样一来,软件商就可任意抬高软件价格使用户承受更大的软件费用。

2.不利于国家和投资者对会计报表的审计监督。

由前可知,在会计电算化系统中,会计报表的正确与否,除了与会计核算资料的正确与否有关外,更重要的是在会计报表文件中取数和计算公式的设置是否正确,因为会计核算数据是否正确可调出相应的帐簿数据进行核对。由于报表中数据是对帐簿数据的综合,不同的行业,不同的用户对报表中数据的综合方法是不尽相同的。国家的审计部门、税收部门、银行或投资者都要对会计实体的对外会计报表的正确性做出评估,在会计电算化时代,评估的重要依据就是报表的取数和计算公式。前面已叙及各种软件的取数和计算公式差异很大、标准混乱,要使审计、税收监管人员、投资者对各种软件的报表取数和计算公式都能掌握是不可能的,更不用说对报表正确性的审计监督。

3.无纸化输出格式的不统一,对报表数据的广泛和深入应用不利。

在企业内部,会计电算化系统仅仅是整个企业管理信息系统的一部分,也就是说,企业的管理信息系统是由若干子系统组成,如人事管理,计划管理,财务管理,统计分析,辅助决策与支持系统等。每一个子系统都是一个非常庞大的软件,这些软件一般都是由于不同的软件供应商提供的,当然也有企业自行开发的。子系统与子系统之间往往都存在一定的信息依赖关系,财务管理,统计分析,辅助决策与支持子系统,通常都需要利用会计报表中的数据,由于报表数据无纸化输出的格式不统一,这些系统往往都不能直接使用由会计报表子系统直接产生的报表数据,致使企业采用人工方式从其他子系统所需的格式重新输入报表数据,或者设计专门的针对本企业(非通用的)报表数据转换软件,以便使用其他子系统能利用的报表子系统产生的各种信息和数据。

在企业外部,由于许多会计报表(如资产负债表,损益表)是对外的,并被其他系统使用其提供的信息。审计部门、税收部门、银行和投资者等都需要企业会计报表提供的相关财务数据。在计算机普及的今天,所有的信息使用者几乎都是在利用计算机和相应的软件系统做有关的工作,由于会计报表的无纸化输出格式不统一,使这些信息的使用者都无法直接使用会计报子系统的输出信息。

三、对策及建议

1.建立统一的报表编制语言。

从目前的各种会计电算化系统的会计报表编制方法来看,基本都采用公式法来说明报表中数据的来源和计算方法。从前面的分析,我们已看到,不同的软件系统有自己的一套公式、函数,并且差异很大,公式、函数的表示法,公式多少及函数的功能强弱等都不尽相同。但是,如果仔细分析各种系统的这些公式、函数的集合并加以分类,可以看出它们的许多共同之处:

(1)从帐簿中抽取数据的函数和公式,这些公式主要说明报表中的数据从哪些帐簿来,取期初数、期末数、发生额以及会计期间和会计期间数等。

(2)从其他报表中取数的函数及公式,主要说明从哪个报表文件取什么数据;

(3)表内计算函数和公式,说明表内某一项数据可由本表内的其他数据按照一定的方法计算得到;

(4)其他函数和公式,包括勾稽关系定义,小数位数说明等。

由于报表编制函数和公式本质上的作用、功能相同,以及各种软件报表编制函数和公式在上述几个方面的共同性,笔者认为,可以在综合各种软件报表编制函数和公式的基础上,结合报表编制的特点,总结并开发出一种标准化的会计报表编制语言,相当于计算机程序设计语言,有统一规范的函数名和计算公式,有统一的语法规则,并且这些函数、计算公式和语法规则是一个相对完备的集合。这样,各软件开发商就不必各自去设计自己的一套报表函数和计算公式,而是将精力主要投放在如何在自己的系统中高效地实现这种会计报表编制语言,提高软件质量。对于使用者来说,也可以只学习掌握一种会计报表编制语言,就可在不同的会计电算化系统上编制所需的各种会计报表或者了解、审核特定报表编制方法的正确性。这对于各种人力、物力的节约以及效率提高的作用是显而易见的。

2.设计统一的报表无纸化输出格式协议。

报表系统篇3

关键词:电子报表; 报表系统; MVC; Struts; Oracle

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)26-5862-03

随着企业规模的不断扩大,业务的无限增长,伴之而来是信息的急速膨胀。信息爆炸对于传统的办公模式和管理方法提出了严峻的挑战,各个行业都提出了新的要求,那就是真正的实现“无纸化办公”,“网络查询”。针对这种迫切的需求,出现了实现文档的电子化存储与Internet在线查询的电子报表系统,这种系统把目前以纸张、手工处理为主的文档,图纸等用计算机存储,用户可以非常方便的对文档等实现快捷、安全的存储和在线查询[1]。而且电子报表系统还可以使管理部门的管理水平提高一个层次,还可以减少因手工填报而引起的不必要的问题,在很大程度上提高了工作的准确性和及时性[2]。可以认为,采用电子报表平台是各个行业业务系统完成现代化转型不可或缺的一个关键步骤。

文章在分析电子化报表平台各个部分的实现方式及关键技术的此基础上,设计了一套符合目前企业管理流程,方便快捷的电子化报表平台系统,并采用MVC模式与基于JSP的Struts Web框架设计,实现了基于WEB的电子化报表平台系统。

1 系统总体结构

随着网络技术的快速发展,绝大部分的管理软件开始向B/S(Browser/Server)结构转变。这种基于WEB技术的应用系统基于现成通用的浏览器作为用户界面,应用程序安装在后台服务器中,可以被任何操作系统上的通用浏览器所浏览,这样不但实现了跨平台操作,而且降低了系统开发和维护的成本[3]。文章设计的Web电子报表系统由浏览器、Web服务器、应用服务器和数据库服务器组成,如图1所示。

从图1中可以看出,在文章设计的电子报表系统中,在客户端,用户利用Web浏览器通过URL访问Web服务器,Web服务器通过SQL数据库语言请求数据库服务器,并将获得的结果以HTML形式返回客户端浏览器[4,5]。基于系统采用B/S的模式,本系统的逻辑结构由以下三个部分组成:

前台系统:即用户界面,采用目前比较流行的基于JSP的Web框架结构—Struts框架技术来实现。

业务处理系统:该系统负责提取数据源、数据预处理、对数据输入核对的业务流程控制、报表处理以及必要的系统管理。可以看出,该部分包含与前台通过HTTP协议交互的功能,同时也包括通过JDBC与数据库交互的功能。该部分是本系统的核心之一。

数据库系统:采用ORACLE11g数据库,里面存放系统所需的数据,通过JDBC与外界交互。

系统的逻辑结构图如下:

2 Web电子报表系统设计方案

设计的电子报表系统主要由后台数据库系统、报表生成管理系统和手工录入系统等组成,下面分别详细介绍。

系统数据库采用ORACLE11g,负责处理大量的后台计算。数据库具有以下功能:

报表生成管理系统主要生成两类报表:原始数据展现类和用户查询类。原始数据展现类主要是用于原始数据的保存。报表处理模块按照预先设定的程序,通过报表名称、机构号以及时间分别调取相关数据,然后经过加工处理,生成所需的报表文件,并以*.roi的文件格式存放在I-SERVER(报表管理服务平台)的指定地点。用户查询类主要是用于根据用户需要将报表中指定的信息。这类报表的实现主要利用E-Report-Designer通过SQL语句调用数据库中的表、视图的数据,然后经过加工处理后生成所需的报表。

手工录入系统按照需求包括三个功能模块,则三个功能的具体需求如下:

3 手工报表录入系统的具体实现

由于篇幅上的限制,文章在这里以关键的手工报表录入系统作为实例,通过具体介绍手工报表录入系统的界面制定、中间层的实现原理来阐述整个电子化报表平台建立的关键技术,数据库实现部分就不在这里描述。

3.1中间层的实现原理

当用户点击按钮,提交一个事件(Event),JSP页面即前端视图则向Servlet控制器(Structs)发出一个请求(Request)给Action类[6]。其中页面提交的请求和Action类的对应关系由Structs的配置文件Structs-config.xml来配置;Action类利用到数据访问对象类(Data Access Object,DAO类)存取数据,并通过ActionForward对象指向的JSP组件生成动态网页,返回给客户。其中对每一个具体的功能对应一个具体的Action类。

控制器的配置决定了发给控制器的请求将得到怎样的处理。在系统配置的sructs-config.xml文件中,将action的请求都映射到了控制器,并指定对每一请求该如何处理。部分实现代码如下所示:

input="/autocrtjsp/reportagregation.jsp"

name="agreReportForm"

path="/agretbl"

scope="session"

type="com.pansky.autocrt.Action.agreReportFormAction" validate="true">

就本系统来说,需要处理登录请求和页面提交的信息。每个视图都分别具有相应的表单FormBean和用于处理的Action类[7]。其中配置文件分为两个部分:其一是表单 Form bean,负责指定存储来自视图的参数值以及action映射置的Java类。第一部分处理提交的信息,如下所示:

而第二部分则负责处理登录和页面的跳转,通过customerLoginFormAction类来实现。

3.2前端视图的代码实现

前端视图利用JSP实现,用Struts标签库同表单Form bean交互,意味着所有的元素都必须用Struts标签库来创建。下面介绍手工录入的汇总表页面设计,该页面分为三部分,分别是页面上部的公司logo,页面左边的树形结构,和主页面的汇总表显示窗口。该页面的部分代码如下:

在该页面视图中可看到所有的HTML标签都是用标签库编码的。这就是Struts调整HTML文档和表单Form bean 之间参数值的方法。在处理每一JSP页面时,标签库会被扩展为HTML,而内部的Form bean 则包含默认值。

页面上按钮标签的功能实现也是通过页面编码实现,例如“返回”按钮实现页面跳转功能:

其中center表示按钮处于该行的中间,如果点击该按钮将跳到reportagregation.jsp的页面。到这里,整个系统的描述基本结束,有关应用程序的部署请查阅相关书籍,在这里就不赘述。

4 结论

论文主要工作围绕着企业电子化报表系统的研究开发而展开,针对报表平台的核心技术:手工报表录入系统的具体实现进行了详细的论述,采用了目前较流行的基于JSP技术的Struts框架结构实现用户界面。尽管论文在电子化报表平台系统方面做了一定工作,但是距离实际应用还有一定距离。对系统中的某些细节问题(如中心数据库的建立,用户界面等),需进行更进一步的研究与完善。

参考文献:

[1] 王丽.企业会计报表发展探析[J].中国经贸, 2013(2): 216.

[2] 梁红兵.企业财务电子报表错误及解决对策[J].中国电子商务, 2011(9): 185, 187. (下转第5868页)

(上接第5864页)

[3] 李伟春.浏览器状态电子报表的系统实现[J]. 计算机与现代化, 2008(2): 125-126.

[4] Havery M Deitel. Advanced Java2 Platform How to Program [M]. Prentice Hall, 2003.

[5] 张宗福. 基于STRUTS框架开发MVC模式的WEB应用[J].计算机光盘软件与应用, 2012(22): 206-207.

报表系统篇4

1.系统设计

本系统采用.NET框架结构,B/S体系结构,IIS6.0的Web服务器软件、SQL Server 2008、采用Visual Studio.NET内置的CrystalReport水晶报表控件,基于ASP.NET技术的系统的三层结构模型即:表示层、业务层、数据层对实现系统开发。

该系统的报表部分主要包括:施工管段的工程信息以及材料信息报表、施工队的工程信息以及材料信息报表、施工管段的责任预算分解报表、施工队的责任预算分解报表、施工队的验工计价报表、各类责任预算执行报表、施工图工程信息报表、变更索赔报表、各类数量汇总报表、各类管理费报表、每月实际发生费用报表、责任预算汇总报表、验工计价汇总报表、实际费用汇总报表等。系统数据流图如图1所示。

图1 系统数据流图

2.水晶报表的应用

在ASP.NET下水晶报表的实现过程中,最重要的是数据的获取。在拉模式中,数据获取这一步骤是由ASP.NET内置的水晶报表引擎自动处理,不需要编写任何代码。因此这里主要讨论推模式的实现。

实现过程主要涉及以下两个文件:数据集(.xsd文件)、水晶报表文件(.rpt文件)。

实现的顺序为:

(1)建立数据集文件;

(2)建立水晶报表文件;

(3)编写填充数据集、设置报表数据源的代码。

给数据集填充数据以及水晶报表显示的关键代码如下:

设计完报表,我们就可以运行我们所设计的报表界面。

报表系统篇5

摘要 通用报表系统设计运用模型-视图-控制器设计模式构造客户端报表视图与报表数据间的协作模型,将报表框架与报表数据分离,用户能根据处理需要自定义报表式样和指定数据源,系统自动生成所需要的报表。本文给出它们各自在报表系统设计中的应用范例。 关键字 报表系统;设计模式;数据异构;多窗口支持;模型-视图-控制器 1引言 传统报表系统,通常是针对某个商业领域使用,其使用的报表格式往往在设计时由设计人员已经定做成模版的形式存储在模版库中,用户使用时直接从模版库读取,处理方式也仅限于该领域内;虽然在一定程度上该解决方法带来了一定管理上的便宜,可对于现代企业用户来说,报表格式单一已经局限了报表只能作为记账簿来使用,使得报表的可塑性差,后期维护艰难,难以适应生产过程的多样性和变化性,无法满足大型企业不断扩充的适应性、智能型的要求,特别是当业务领域变化时,原有的报表系统往往很难支持新业务数据的管理分析,要进行大量的重新开发工作。 在本通用报表的设计中,将报表框架与报表数据分离开,用户即能根据自己的需要随意绘制表格,又能按照业务要求自主的选择数据来源。一旦框架和数据来源定义完毕,系统可以自动生成所需要的报表。为了经济的达到方便使用的目的,必须吸收先进的软件开发思想,采用优秀的软件开发方法以提高软件质量和软件的重用性,其中提高软件的重用性是减少开发成本的关键。www.lw881.com 本文主要介绍mvc设计模式在通用报表系统开发中的应用,给出了具体问题相应的解决办法,提高了软件的通用性和扩展性。 2 设计模式 设计模式是设计面向对象软件的过程中记录的知识和经验,用一系列类结构和对象来具体描述其含义。设计模式的目的就是复用这些面向对象设计的解决方案,根据具体应用完成具体的设计以及便于这些抽象解决方案的积累和交流。与不使用设计模式的软件系统相比,一个大量使用设计模式的软件系统的对象建模更加合理,对象间的耦合度更小,效率、可靠性、可升级性、并发性、平行性和分布性更高,更能获得高层次的设计复用和代码复用。 设计模式概念最先来自于城市建筑专家对建筑模式的定义“每一个模式描述了在人们周围不断反复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复劳动”。这种建筑上的模式思想在面向对象的设计模式中同样适用,模式的核心就在于提供了相关问题的解决方案。设计模式确定了所包含的类和实例,它们的角色、协作方式以及职责分配。它通过刻画部件静态和动态结构及其之间的合作关系,成功地应用于解决商业数据处理、电子通信、图形用户界面、数据库、分布式通信软件等软件构造中的问题。 一般而言,设计模式有4个要素:①模式名称:用来描述问题、解决方案和效果。②问题:描述可以在什么时候使用设计模式。③解决方案:描述了设计模式的组成部分,它们之间的相互关系及各自的职责和协作方式。④效果:描述了模式应用的效果及使用模式应该权衡的问题。一个设计模式命名抽象确定了一个通用设计结构的主要方面,这些设计结构能用来构造可重用的面向对象设计。 我们在报表系统中主要使用了模型-视图-控制器设计模式(mvc)、观察者(observer)、适配器模式(adapter)以及桥接(bridge)这几种设计模式。 3 设计模式的应用 3.1 模型-视图-控制器(mvc) 报表系统中为了方便用户对数据的分析和使用,同一业务数据常常需要多种视图呈现,即一个表格对象和一个柱状图对象可使用不同的表示形式描述同一个应用数据对象的消息。表格对象和柱状对象并不知道对方的存在,这样使用户可以根据需要单独复用表格或柱状图;当用户改变比表格中的信息时,柱状图能立即反映这一变化,这一行为意味着表格和柱状图都依赖于数据对象。早期的图形化程序设计常常围绕着事件驱动的用户界面来组织,这样的直接后果就是数据处理、程序功能与显示代码完全纠结在一起。大型的图形化程序中一个数据通常对应多种表示与处理方式,把特定界面绑定到应用程序上严重降低了程序的灵活性,使得一个很小的改动也牵扯到大量的代码,增加了程序开发与维护的工作量。20世纪70年代,mvc模式在small talk 80的gui设计中被提出,并且描述了不同部分的对象之间的通信方式,使它们不必卷入彼此的数据模型开发方法中,使程序结构变得清晰而灵活。 mvc模式包括三个部分:模型(model)、视图(view)和控制器(controller),分别对应于内部数据、数据表示和输入输出控制部分。模型是与问题相关数据的逻辑抽象,代表对象的内在属性,是整个模型的核心。它采用面向对象的方法,将问题领域中的对象抽象为应用程序对象,在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。视图是模型的外在表现,一个模型可以对应一个或者多个视图,如图形用户界面视图、命令行视图、api视图;或按使用者分类:新用户视图、熟练用户视图等。视图具有与外界交互的功能,是应用系统与外界的接口:一方面它为外界提供输入手段,并触发应用逻辑运行;另一方面,它又将逻辑运行的结果以某种形式显示给外界。控制器是模型与视图的联系纽带,控制器提取通过视图传输进来的外部信息,并将用户与view的交互转换为基于应用程序行为的标准业务事件,再将标准业务事件解析为model应执行的动作(包括激活业务逻辑或改变model的状态)。同时,模型的更新与修改也将通过控制器来通知视图,从而保持各个视图与模型的一致性。 实现mvc模式时面对的主要问题是model和view的关系,在设计模式中的observer模式很好的描述了如何建立这种关系。这一模式中关键的对象是目标(subject)和观察者(observer)。一个目标可以有多个依赖它的观察者;一旦目标发生变化,所有依赖它的观察者都得到通知,并做出响应,即每个观察者都将查询目标进行更新,以保证和目标的状态同步。这种模式允许我们独立的改变目标和观察者;用户可以单独复用目标对象而无需同时复用其观察者,反之亦然。这种模式可以在不改动目标和其他观察者的前提下增加观察者。 在报表系统中,目标即为业务数据,观察者定义为在用户界面上的显示视图。显示视图是由其相关的业务数据决定,当业务数据发生变化时,视图也将发生变化。同一业务数据会有多种显示视图;相同类型的视图也可以表达不同的业务数据。而且可以根据需要在任意时刻增加和删除显示视图,大大提高了报表系统的通用性。 当报表系统业务数据变化时,它要通知依赖它的所有视图发生相应的变化,这样就需要在业务数据对象里记录依赖它的视图,或是增加一个关联查找机制。这两种方法在数据和视图间依赖关系比较少时可以高效的解决问题,但当它们之间的关系特别复杂时,我们就需要一个专门的对象来维护这些关系,这里我们称之为更改管理器(changemanager),它的目的是尽量减少视图反映数据变化所需的工作量。例如,如果一个操作涉及到对几个相互依赖的目标进行改动,就必须保证仅在所有的目标都已经更改完毕后,才一次性的通知它们的观察者,而不是每个目标都通知观察者。另外,观察者并不是对所有的事件都感兴趣,可以扩展目标的注册接口,让个观察者注册为仅对特定事件感兴趣,以提高更新的 效率。当一个事件发生时,目标仅通知那些已注册为对该事件感兴趣的观察者。 observer模式在报表系统中的层次结构如图1所示,其中dataentry为业务数据抽象,它的具体实现由concretedataentry来完成;userview是显示视图的抽象,具体使用的视图由concreteuserview实现;更改管理器(changemanage)的实现有两种:simplechangemanage和dagchangemanage ,它们分别管理单一目标的目标—观察者关系和多目标相互关联的目标—观察者关系。 图1 报表系统中observer模式层次结构图 其中业务数据的类定义如下: class dataentry{ public : virtual ~dataentry(); virtual void attach(userview *pview ); //增加视图 virtual void detach(userview *pview); //删除视图 virtual void notify(userview *psender); //通知 protected: dataentry (); private: list<userview*> *userviewlist; //记录视图 } 显示视图的定义为: class userview{ public: dataentry getdataentry(); /*获取业务数据实体的状态,相当于模式中的getstate()和setstate()*/ virtual void notify (userview *pview); virtual void ondraw(userview *pview); //设计为虚函数以供重载 protected: list<dataentry*> *dataentrylist; //记录业务数据实体 }

在这里简要说明一下notify()的实现: void notify:: dataentry (userview *psender){ assert(psender==null||*userviewlist.isempty()); //判断视图列表是否为空 position pos = getfirstviewposition (); while (pos! = null) {userview* pview = getnextview (pos); assert_vaild (pview); if (pview != puserview) pview->notity ();} 3.2 适配器模式(adapter) 在许多大型企业及某些行业的局域网或广域网内,由于历史和技术发展的原因存在着多种数据库同时在运行的情况,比如某大型企业、某地区的电力单位或电信公司等,可能正同时在使用着多种数据库(oracle, db2, sql server, sybase 或informix等)。在这样多的数据库并存的环境下,要求能任意访问到这些数据库,实现多种数据库间的数据转化、资源共享、数据一致性和完整性成为系统开发和应用中一个尤为突出的问题。 构建通用的数据库访问主要是实现对数据源访问的底层操作的封装,而仅仅给出数据读取对象或数据集对象等供商业逻辑层调用,因此采用adapter模式,根据不同的数据提供者产生相应的数据库连接、数据库命令等数据库对象来实现对低层操作的封装,通过暴露执行数据集对象等上层操作以供其他逻辑层调用。 对数据库的访问基础是基于结构化查询语言(sql),在具体对数据库的访问中,是通过sql语句来实现的。采用这种设计模式对数据库进行访问的方法是一种通用访问技术,即应用程序可用相同的源代码访问不同类型的数据库,如sybase, oracle等。 adapter模式是将一个类的接口转换成客户希望的另外一个借口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,它又称为“wrapper”包装器。当要使用一个已经存在的类,而它的接口不符合需要,或是创建一个可以复用的类,该类可以与其它不相关的类或不可预见的类协同工作。 adapter模式的基本结构图如图2所示: 图2 adapter模式的基本结构图 adapter模式应用在报表系统中,模式中target即为应用程序中数据访问类,它负责进行数据库的连接、进行数据库操作等等;模式中的adaptee为实际存在的各种数据库;在进行系统实现时的主要工作是对不同的数据库编写相应的数据源驱动程序,即编写adapter。 应用程序对数据库的访问主要是选择一个数据源并连接它、提交sql语句以及检索结果,除此以外还可以确定并调整驱动程序的性能、浏览数据库编目等等;应用程序中数据访问类通过数据源驱动程序访问不同数据资源中的数据,每个不同的数据资源类型由一个数据源驱动程序支持。 数据源驱动程序是处理数据访问类对象的函数调用,提交sql请求到一个指定的数据元,并把结果返回到应用程序;如果有必要,数据源驱动程序修改一个应用程序请求,以使请求与相关的dbms支持的语法一致。每个驱动程序都针对特定的dbms;例如,一个oracle驱动程序不能直接访问informix dbms中的数据。数据源驱动程序展示基础dbms的能力,他们不能实现dbms不支持的能力。它进行数据源连接、检查应用程序中的函数错误、初始化事务和把sql语句提交给执行的数据源。数据源驱动程序必须把应用程序的 sql修改成针对相应dbms的sql,并把数据发送到数据源,或从数据源检索数据,包括根据应用程序的指定来转换数据类型,最后断开与数据源的连接。 当数据源驱动程序的数量增加,并且处理的事物逐渐复杂时,仅仅用应用程序的数据访问类来进行驱动程序的管理已大大增加了系统的负担,我们可以提供一个驱动程序管理器来管理数据源驱动程序。此时应用程序是被连接到驱动程序管理器,而不是驱动程序。它使用应用程序传递的连接句柄搜索目标驱动程序中的函数地址,并通过地址调用那个函数。驱动程序管理器多数只是把函数调用从应用程序传送给正确的驱动程序。驱动程序管理器最终的作用是加载和卸载数据源驱动程序,应用程序只加载和卸载驱动程序管理器。当它要使用一个特殊的驱动程序时,它调用驱动程序管理器中的连接函数,并指明一个特殊数据源或驱动程序名。使用该名称,驱动程序管理器为驱动程序文件名查询数据源信息,比如sqlsrvr.dll,然后它加载驱动程序,保存驱动程序中每个函数的地址,并调用驱动程序中的连接函数,然后初始化它自己,并连接到数据源。当应用程序使用驱动程序做完工作后,它调用驱动程序管理器中的sqldisconnect。驱动程序管理其中调用驱动程序中的此函数,断开与数据源的连接。然而,驱动程序管理器重新连接它时,把驱动程序保留在内存中。只有当应用程序释放驱动程序使用的连接,或者使用不同的驱动程序连接,并且没有器它连接使用此驱动程序时,它才卸载驱动程序。 3.3 桥接模式(bridge) bridge设计模式时对象结构模式的一种,它将抽象部分与实现部分分离,使它们能够独立实现。当在一个程序中,某一个抽象可以由很多实现方法的时候,我们通常是使用面向对象中继承的方法来实现并协调这些方法。但是这种继承机制有以下不足的地方,而使用bridge设计模式都能使这些不足得到很好地解决。 继承机制使客户代码在实现功能的时候涉及到特定的相应平台,与平台产生相关性,对代码的移植产生很大的困难,但是bridge设计模式将抽象和实现部分放在独立的不同层次的类结构中,将抽象中与系统平台相关部分分离开来,同时也降低了实现部分对编译的依赖性,当改变一个实现类时,并不需要重新编译抽象部分和它的客户程序。 我们的报表系统是一个通用系统,我们希望这个系统能够支持多窗口系统。虽然不同的窗口系统有不兼容的程序设计接口,但是所有的窗口系统总的来说还是在做同一件事情,我们可以对不同的窗口系统做一个统一的抽象,在对各窗口系统的实现做一些调整,使之符合公共接口。 我们首先定义一个windows抽象类,它封装了需要各窗口系统都要做的一些事情,并且能跨越不同的窗口系统实现。在这个抽象类提供了支持大多数窗口系统的方便接口,其具体的子类支持用户用到的不同种类的窗口,而对不同窗口系统的实现则由windowimp类层次隐藏。windowimp是一个封装了窗口系统相关代码的对象的抽象类,为了使报表系统运行于一个特定的窗口系统,我们用该子系统的一个windowimp子类设置window对象。这样,避免了对窗口系统的直接依赖,这样可以让windows类保持相对较小而且较稳定,同时还能方便的扩展实现层次结构以支持新的窗口系统。 window和windowimp层次结构之间的关系有下图所示,其中windows_x即为可以扩展的窗口系统接口。 图3 window和windowimp层次结构 4 结语 应用设计模式可以使看似复杂的系统设计和实现简单化,设计出来的系统具有灵活、健壮和可复用性强等特点,而且还可以方便开发人员的沟通和交流,保证软件开发文档的准确性和易读性,便于代码开发工作。在报表系统中引入设计模式,不仅加深了对面向对象思想的认识,而且使得系统的设计间接明了,提高了软件系统的可维护性和伸缩性。 文章就设计模式在通用报表系统中的使用进行了一定的研究和探讨。主要就通用报表系统中几个关键的通用问题给出了相关的设计模式解决方案。该通用报表的设计为解决集团性企业、政府统计的报表汇总分析、预算编制、合并报表的解决方案;它还可以引入到分销管理中,以承担drp系统中临时性、非结构化数据的统计任务;根据统计管理对象的不同,它还能成为网上人事统计、资产管理系统的二次开发平台。 参 考 文 献: 1. erich grama , richard helm, ralph johnson, et al. design patterns elements of reusable object-oriented software. reading (mass): addison wesley publishing co, 1994 2. bertrand meyer, object-oriented software construction (second edition), prentice-hall international, inc, 1999 3. vangalur s. alagar and rokia missaoui(eds): object-oriented technology for database and software systems, world scientific publishers, singapore, 1995 4. grady booch: object-orient analysis and design with application, second edition, benjamin/cummings, menlo park(calif.), 1994 5. peter coad. object-oriented patterns. communications of the acm, 35(9):152-159, september 1992. 6. 刘立志,孙莹,陈松乔.基于构件技术的报表系统的设计与实现.计算机应用研究,2003;9;88-90 7. 吴秀丽,孙树栋.基于设计模式的报表生成组件的设计与实现.计算机工程与应用,2004;16;113-115,118. 8. 任中方,张华.mvc模式研究的综述.计算机应用研究,2004;10;1-4

报表系统篇6

关键词:智能水表;HFC;无线网络;远程传输

Abstract: intelligent building and intelligent village build, promoted by water management artificialization towards network, intelligence and information to change. The traditional artificial meter reading way not only the efficiency is low, the error-prone, and extremely convenient. In traditional meter reading the defects of technology, this paper introduces wireless intelligent water meter system of the newspaper. The system is simple, fast and agreement networking transmission and reliable low cost of operation and other advantages.

Keywords: intelligent water meter; HFC; Wireless network; Remote transmission

中图分类号:G267文献标识码:A 文章编号:

随着通讯技术、单片机技术和无线电技术的发展,无线智能远程传输水表系统以其便利的安装条件、快捷的系统维护、不受布线和安装环境限制等优点,成为水表行业智能化管理的首选系统[1]。该系统由四部分组成,即:自来水公司数据的管理系统、现场的数据下载器、数据集中器和无线远程传输智能水表。其中无线智能远程传输水表是整个系统的重要组成部分,是信息的产生单元。它一般由在原机械水表的基础上,增加安装新型传感器及控制电路板所构成的。

一、 前端智能水表数据采集选择

解决数据传输和信号转换技术是实现抄水表系统智能化的难点问题。针对目前国内水表的使用现状――大部分采用机械水表计量。为了降低改造成本,在不改变现有水表内的物理结构及国家计量标准的基础上,单纯安装传感器。在保持机械计量的基础上,添加了具有计量信息的远程传输功能,即电子智能计量与机械计量同步,使两者达到精度化与智能化的完美结合[2]。现阶段传感器装置常见的安装方法是采用光电开关和磁敏传感器,光电开关具有很强的抗干扰能力,但其能耗很大,而磁敏传感器不仅改造方便,还可以延长使用寿命,但其抗电磁干扰能力差;而智能水表在居民户内,无法采用市电,能耗变成为重要考虑的因素,因此在解决电磁干扰问题的基础上,利用磁敏传感器把机械水表中的叶轮转动转变成电脉冲信号是一种合理的解决方法[3]。

二、抄表传输系统的选择

在前端数据采集系统得到数据后,抄表传输系统在与前端相连接后,将数据传至相配套的抄表系统中。自动抄表系统工作方式主要有以下几种:总线式、电力载波式以及利用电话线路的载波方式抄表系统等[4]。而根据传输信号的方式,分为不联网和联网两种。

2.1 不联网传输方式

不联网传输方式是一种半自动的传输方式,即在住户安装水表和中继器,中继器将连接到小区内的集中器。有两种方法通过集中器读取数据。一种是抄表人员用手抄机直接从集中器上抄录下数据;另一种是把集中器连接到电脑上,由专门负责人员将数据通过E―mail的方式传送给运营企业。不联网的传输方式也可以解决抄表人员进户难的问题,而且一次传输,可以将一个小区内近千个用户的水表数据传输完毕。不论是速度和准确率都比以前提高了很多,节省人力,降低成本。由于不需要交流电的辅助,几乎不用物业的协助,也保证了工作的安全。这种方式有服务便捷、避免水费纠纷问题等优点。尤其是一些老城区的小区改造,减少了外线传输的改造工程量。但由于需要现场办公,进行的抄收的次数收到限制,并且没有实时数据,很难及时对管网的损失进行计算和分析。

2.2 联网传输方式

联网传输方式是一种全自动的方式。在直读式远程传输水表基础上,通过现代的通信技术,进行远程的抄表及实时监测。原理是把水表的读书窗口值直接传化成数字信号,再把数字信号通过传输线―中继器发送到集中器[5]。然后利用公共网络传输至管理中的计算机,再由管理中心对数据进行实时处理。而管理中心的命令可以通过同样的方式下发到各个集中器,可自动完成数据地抄收及处理。联网系统可以针对每个水表,实时进行抄收数据,为营业收费提供数据。简化管理方式、降低管理费用,降低了运营成本。集中器到管理中心的传输方式选择又是另一个重点。下面介绍几种传输方式:

(1)电力载波方式。其原理是将水表数据通过设备调制后变成电力信号,由电力线进行传送。而后在接收时,在将信号解调成数字信号。其优点是利用电力传输,节省资源。但由于技术原因,例如家用电器的启动会产生多种脉冲信号,这些信号作用在电网上,会造成结果误差。因此,电力载波方式不适合在我国使用。

(2)无线传输方式。由于无线通信的抗干扰能力差,系统的可靠性低,除个别城市外,在国内无法广泛应用。

(3)HFC传输方式。HFC远程抄表体统是通过将数字通信技术、计算机技术、双向宽带网络(HFC)技术和水表的计量技术相结合,将计量、数据实时采集、数据处理与网络集于一体,使用户使用信息综合后加以处理的系统。HFC远程抄表传输系统采用远程抄表系统的技术及网络通信技术。HFC充分利用了宽带网络资源,使得小区和大楼之间的布线复杂的难题得以解决。实现了远程控制自动抄表及数据传输,将智能抄表系统真正地提高到计算机网络化的程度。

三、远程智能系统的优点[6]

1系统具有丰富的功能和强打综合性能,能够实现报警与数据传输、自动计费、设备控制等功能。供水阀门采用电动控制阀门,当用户的使用发生故障时,系统能迅速报警以便进行处理。还可以将各个小区内的不同数据进行处理、汇总和存储,并准确地传送给水务公司。

2由于水的流量等数据是部门管理处需要的重要技术数据,以往想获得相关的数据必须依靠人工处理。让专人在市内的各个站点不断巡视,每天需要跑好几个站点,才能把相关的数据记录下来。而市郊的站点则需要留人坚守来传报数据。数据不但错误率高,传送慢,还大大增加了工作成本,给运营企业的管理和维护工作造成不便。针对这种情况,所采用的系统可通过HFC传输数据,覆盖范围广,在复杂的地理环境和恶劣的气候环境下不受限制。

3增强使用的安全性和可靠性。现在人们使用水、电和燃气各种安全事故频发,人们越来越重视安全。本系统可以通过控制中心来控制小区内各个用户的用水阀门,以便处理突发事故,将资源浪费减到最低程度。

4价格合理且维护方便。本系统维护费用比较低,从而降低了使用成本。

5系统提高极大地抄表的效率。本系统避免了因抄表人员进户抄表收费而给居民带来的不便,同时节约了进户抄表所需的时间,大大降低了抄表人员的劳动强度从而扩大抄表人员的服务区域范围,提高工作效率。这样,运营企业便可减少抄表人员的数量,以达到缩短投资基金的回收时间和降低企业成本的目的。

四、结语

近些年,由于国家信息化技术飞速发展以及社会的广泛需求,智能水表抄报系统得以飞速发展。智能水表将计算机技术、通讯技术、数据实时采集技术等基于一天的智能化系统。通过先进的传输方式,实现了水表的准确抄报。不仅节省了人力物力,同时又方便了水表的自动化管理,降低了运营企业的成本。由于系统在水表方面的应用取得成功的使用及管理经验,并可将系统继续推广到燃气表、电表等收费管理项目上,所以智能水表抄报系统具有广阔的发展前景。

参考文献:

[1] 互益祥,丰住平. 远程无线抄报系统的研究[J]. 自动化仪表,2011,32(3):4~7.

[2] 王春. 无线智能远传水表参数测试方法的研究[J]. 数字技术与应用,2010,03(0085):85~86.

[3] 马媛媛. 无线智能水表系统[J].中国新技术新产品,2011,10:6.

[4] 周建军,郑文刚,申长军. 温室无线智能水表物联网应用系统[J]. 中国农村水利水电,2011,10:41~43.

报表系统篇7

关键词:组态软件IFIX;ODBC;ADO;数据库管理系统;API

中图分类号:TP29文献标识码:A文章编号:1009-3044(2008)31-0892-04

Data Report and Realization of in Automation of Coal Blending System

ZHU Hui1, HAN Fang-fang2

(1. Shandong Province Sanhekou Mining Co., Ltd., Jining 277600, China; 2. College of Information and Electrical Engineering of CUMT., Xuzhou 221008, China)

Abstract: Related information collection,processing and storage plays a more important role in automation of coal blending system. This paper Statements the process of data reports making and the realization of the sound alarm function,and described the key technologies,principles and methods in detail.

Key words: IFIX; ODBC; ADO; database management system; API

1 引言

计算机自动配煤系统的原理是基于装车皮带末端的灰分仪给出的实时在线灰分数据和皮带秤的流量,根据约束条件和目标灰分,建立合理的数学模型,动态优化配比,闭环控制,用开给煤机的台数进行粗调,变频调速技术来进行细调,使实际灰分和目标灰分最大限度接近,从而使配煤更加稳定、可靠和准确。配煤系统的自动运行,减少人员的参与,提高装车的速度和可靠性,改变过去人工配煤装车的落后方式,并且计算机自动配煤装车系统的实施要在最大化的利用原有生产设备的基础上进行,充分利用现有资源,节省成本。

本文章所依据的某矿的自动配煤系统由可编程逻辑控制器PLC、组态软件ifix以及工控机等设备组成,该自动配煤系统不仅能够让操作员控制现场设备,查看设备当前的状态信息以及相关的配煤数据如皮带上的煤流量、各皮带的实时灰份、配煤的目标灰分等,还可以对之前的数据进行查询、打印等,当相关的参数超出要求范围发出相关的报警信息。其结构和相关数据,如图1示。我们主要针对该系统中报表的制作和声音报警的实现进行阐述。

2 数据采集方案研究与确定

IFIX中也有历史数据库和实时数据库,但所能存储的时间和数据量是有限的,并且对相关数据的处理也不太方便,因此我们需要将我们所需要的一些关键数据转存至专业的数据库管理系统中,以备我们制作报表[1]以及查询等相关的数据操作。IFIX使用VBA(Visual Basic for Applications)作为其脚本语言。脚本在iFIX 中许多地方都有应用。VBA面向对象和事件驱动的开发环境,支持Microsoft 窗体和ActiveX,可以使用命令专家或使用VB编辑器VBE编写IFIX中对象的VBA脚本。

IFIX过程数据库中的数据存储时间和存储容量有限且不方便我们对数据进行相关的操作,为此我们一般要将过程数据库中的数据首先转存到关系数据库如Access[3]或Sql server[2]数据库中,以便于我们对数据进行相关的管理和分析以及报表的制作。将这些数据转存至关系数据库可以通过两种方式进行,一种是利用ODBC接口,另一种是通过ADO接口,下面我们分别讨论对两种方式实现的方法。

2.1 利用ODBC接口实现数据转存

在本工程应用中数据库管理软件可采用ACCESS或SQL SERVER,由于iFIX和这两种数据库管理软件都支持ODBC标准,可以通过ODBC接口实现SCADA节点和数据库服务器之间的数据通讯。开放式数据库互连(ODBC)是Microsoft建议并开发的数据库访问API标准,它是建立在各种数据库管理系统底层驱动程序之上的一个标准层,对数据库的底层作了封装,允许应用程序用统一的访问数据标准:结构化查询语言(SQL)来访问数据库管理系统中的数据。ODBC技术的最大优势是开放的互操作性,通过安装多种ODBC驱动程序,可实现同一应用程序对不同数据库的访问。

通过在iFIX端安装数据库客户端程序,把SQL SERVER/Access数据库作为数据源来实现连接。在iFIX中可通过两种ODBC结构(多层ODBC结构和单层ODBC结构)来实现通讯。单层结构,如Access驱动器,通常直接在数据库文件上运行。单层ODBC结构可以处理ODBC调用和实际SQL命令。多数情况下,数据库文件和应用存在于同一台计算机上。但数据库文件也可以通过网络像共享文件一样位于另外一台计算机上。多层结构更为普遍,通常与远程数据库服务器如SQL和Oracle等一起使用。多层结构处理由应用层引起的ODBC呼叫,传递实际SQL命令到数据库系统。Ifix数据库管理系统建立ODBC连接的过程如图2所示。首先数据库客户端程序向IFIX系统发出请求建立ODBC连接,然后IFIX响应请求并通过ODBC接口与数据库客户端程序进行数据通讯,再由数据库引擎实现数据的操作。

2.2 通过ADO接口实现数据的转存

ADO是ActiveX数据对象(ActiveX Data Objects),这是Microsoft开发数据库应用程序的面向对象的新接口。ADO访问数据库是通过访问OLE DB数据提供程序来进行的,提供了一种对OLE DB数据提供程序的简单高层访问接口。ADO技术简化了OLE DB的操作,OLE DB的程序中使用了大量的COM接口,而ADO封装了这些接口,它是一种高层的访问技术。它具有功能较强、通用性好、效率高、占空间少等特点。随着信息网络化的发展,对数据库的访问宜采用ADO对象模型,以获得更好的性能和更大的灵活性。Ifix中的数据通过ADO接口转存至关系数据库中的流程如图3所示。具体的实现步骤如下:

1) 引用

在使用ADO前,必须做一定的准备工作,如进行声明,指定各自的版本,这项工作,称为引用。IFIX软件是基于VBA语言的,在IFIX中,ADO的引用是通过代码编辑界面中的工具/引用菜单,然后在相应的对话框中选择需要版本的microsoft activex data objects选项即可。

2) 建立连接和动态记录集

建立与数据源的连接,创建动态记录集,连接成功后不需要将数据移动和转换,而是根据需要选择相应的字段或记录形成动态记录集,这样能有效控制数据的流量。程序中可能有很多模块需要数据库连接的操作,因此我们在公用模块project_user的通用部分声明这段代码以使各个模块均可以调用该子程序,以连接access数据库为例,这部分语句如下:

Public con As New ADODB.connection

Public rst As New ADODB.Recordset

Public sql As String%对数据库进行操作的sql语句

Public Sub connection()

Dim strcon As String

strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= :\data\lqdata.mdb ;Persist Security Info=False;Jet OLEDB:SFP=True"

con.Open strcon

End Sub

当连接sql sever数据库时,要改变其中的连接字符串:

strcon ="Provider=SQLOLEDB.1;PersistSecurityInfo=False;User &_ ID=sa;PassWord=123;Initial Catalog=ifixdata;Data Source=192.168.0.4"

以上几句是用ADO建立联接。

下面是建立动态记录集的程序:

Public Sub Record()

Call connection

Set rst = New Recordset

With rst.CursorLocation = adUseClient

.CursorType = adOpenStatic

.Open sql, con

Set .ActiveConnection = Nothing

End With

完成了与数据库的连接,建立相应的动态数据集后便可以对关系数据库的数据进行相关的操作了。

3) 对记录进行操作

第二步完成后,就可以开始对数据库进行一系列操作,如查询记录、更新记录、删除记录等,一般通过Recordset对象的方法或属性进行。如AddNew方法用于增加一条新记录;Delete方法用于删除一条记录;Update方法用于更新记录;Find方法用于搜索Recordset中满足指定条件的记录;Filter属性用于为Recordset中的数据指定筛选条件。

将数据从IFIX中转存至关系数据库中后,我们是通过基于时间或事件的调度来进行的,基于时间的调度项是依据设定的扫描周期执行调度中的代码,基于事件的调度项是按照设定的周期对事件的条件进行判定,符合条件则执行调度中的代码,否则不执行。基于时间和事件的调度流程分别如图4和图5。

3 数据的存储和报表制作

我们要创建查询界面,和相应的报表,对于相关数据的存储,配煤系统中我们要进行存储的数据主要有煤的目标灰分、实际灰分、皮带上的煤流量等数据,我们针对这些要观察的数据进行分析,制作相应的查询界面以及可打印的报表,我们采用比较简单的EXCEL报表。

查询界面的实现是利用IFIX中的VXData控件通过ODBC接口与相应的数据源建立连接以及对数据源中的数据进行相关的筛选,再将Data Grid控件绑定到VXData所对应的数据表中,即实现了将数据源快速的连接到到可视的查询界面上,界面以实现在ifix软件中对相关数据的查询等相关操作。界面如图所示:

图6 数据查询界面图7 可打印的EXCEL报表

但利用VXData、Data Grid控件实现的查询界面可以很方便的实现按时间段对数据进行查询,及删除不需要的数据,但不可以对查询得到的数据进行打印,因此我们还要利用水晶报表、或其他报表控件实现对所查询数据的可打印功能,我们可以将这些查询的数据导入相应的控件即可,实现可打印的报表,这里我们简单介绍将数据导入EXCEL表单中,以实现相关数据的打印功能。

下面的语句是将数据导入建立的EXCEL表myrtp.xls中,数据库的连接及数据的查询部分省略。

Set xlapp = CreateObject("Excel.Application")

xlapp.Workbooks.Open Filename:="c:\myrtp.xls"

Set exBook = xlapp.Workbooks(1)

Set exsheet = exBook.Worksheets("sheet1")

With exsheet

.Cells(1, 1) = "自动配煤装车系统日报表"

For bi = 0 To rst.Fields.CountC1%统计数据的数目

.Cells(2, bi+1) = rst.Fields(bi).Name

Next

For bi = 0 To rst.RecordCount - 1

For br = 0 To rst.Fields.Count - 1

.Cells(bi + 3, br + 1) = rst.Fields(br).Value%数据导入

Next br

rst.MoveNext

Next bi

End With

xlapp.Visible = True

可以看到数据的查询界面如图6,将数据导入EXCEL表中生成的可打印报表的效果如图7所示。

4 声音报警的实现

在自动配煤的过程中,我们主要是根据灰分仪和核子秤提供的数据对相应的给煤机频率进行调整,调节不同媒质的煤的流量,从而达到要求的目标灰分。在这个过程中,我们不仅要保证灰分达到要求还要保证皮带上的煤流量。当实际的灰分确实达不到要求的时候我们要给出报警信息,以备操作人员进行相关的操作。我们利用API函数实现在ifix中的声音报警,首先制作所需的WAV格式的声音文件,再通过调用API函数实现声音文件的播放。

API[4]的英文全称(Application Programming Interface),简单来说,API就是应用程序接口), API 函数在使用时必须先声明, 未经声明的API 函数是不能调用的, VBA 提供了API 文本浏览器简化了声明过程。在VBA中声明API函数的语法格式是:

[ Public | Private ] Declare Function name " libname" [ Alias " aliasname" ] [ (list) ] [ as type ]

调用API 函数时必须明白所调用函数的作用, 以及List 参数列表各参数的意义,我们用到的函数名称是winmm.dll库中的函数sndPlaySound,下面是在通用部分对API函数的声明语句:

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

我们在调度里实现对相关参数的循环检测,按照设定时间对相关参数进行扫描判定是否发出声音报警,并存储相关的报警数据,对API函数的调用如下程序。

Dim filename As String

If(……)Then %判定是否满足报警条件

sflags = snd_async

filename = "文件路径+文件名.wav"

Call sndPlaySound(filename, snd_async)%调用API函数

End If

在满足声音报警的条件下便可以听到相应的声音报警。

5 总结

文章针对某矿自动配煤系统中的数据的查询、打印及相关的声音报警的实现进行了探讨,用比较简单的方法实现了自动配煤系统中的相关数据的可打印报表以及声音报警。

参考文献:

[1] IFIX.154 Student guide 2001,intellution,inc.chapter 23.

[2] Mike Gunderloy Joseph.SQL Server 2000 从入门到精通[M].北京:人民邮电出版社,2001,3.

报表系统篇8

    关键词 企业集团 合并报表 报表系统 使用现状

    一、企业集团合并报表系统的使用现状

    当前,企业集团合并报表系统的使用现状不容乐观,还存在着诸多亟待解决的问题,这些问题主要表现在无法实现自动对账、欠缺自动抵销功能和不能编制报表附注三个方面,其具体内容

    1.无法实现自动对账

    在企业集团合并报表系统中,无法实现自动对账是目前企业集团合并报表迫切需要解决的问题。一般来说,企业集团合并报表系统都有检查项目关系和勾稽关系,但系统没有足够的判断能力用于核对所有项目关系和勾稽关系,这都是由于企业集团合并报表系统无法实现自动对账造成的。现有的企业集团合并报表系统不能识别、分类内部交易和内部往来,直接影响了企业集团合并报表的工作效率,许多集团编制合并报表的工作中对账环节耗费了大量的时间。 欠缺自动抵销功能

    欠缺自动抵销功能,也在一定程度上制约着企业集团合并报表的编制。在企业集团合并报表系统中,很多企业集团不能自动做抵销分录,一般软件只能由操作人员按照会计准则和会计制度的要求,根据内部交易事项、性质和金额等情况,在系统中手工录入抵销分录。即使是有些软件的合并模块,也只能由系统自动生成一些常用的往来性抵销科目,其他较为特殊的项目则不能自动生成。由上可知,企业集团合并报表系统欠缺自动抵销功能,增大了企业集团合并报表的工作量,不利于企业集团合并报表工作的顺利开展。 不能编制报表附注

    报表附注的编制是一项繁重琐碎的工作,企业集团合并报表系统不能编制报表附注,使得企业集团合并报表工作陷入困境。报表附注的信息采集量比较大、并且涉及到非财务信息,由于企业集团合并报表系统没有意识到编制报表附注的重要性,当前企业集团合并报表系统在编制报表附注环节还比较薄弱,往往都不具备编制报表附注的功能,企业集团合并报表所耗费的时间和人力颇为可观,无形中增加了企业集团合并报表的工作

    量,对企业集团合并报表工作是非常不利的。

    二、优化企业集团合并报表系统的策略

    为促进企业集团合并报表系统的功能完善,针对当前企业集团合并报表系统的使用中存在的问题,优化企业集团合并报表系统的策略,可以从加强会计制度建设、健全自动抵销功能和增加编制报表附注三个方面入手,下文将逐一进行分析。

    1.加强会计制度建设

    优化企业集团合并报表系统的策略,加强会计制度建设是关键。对企业集团而言,加强会计制度建设,是企业集团合并报表实现自动对账的基础,实施合并系统必须按照严格的制度规定进行,规范合并系统在企业集团合并报表工作中的工作流程,可以为合并报表的自动提取数据打下坚实的基础,促进自动对账的实现,使得企业集团合并报表系统可以自动核对所有项目关系和勾稽关系,识别、分类内部交易和内部往来。因此,加强会计制度建设,从基础工作源头抓起,可以大大减少对账的时间。 健全自动抵销功能

    健全自动抵销功能,在企业集团合并报表系统中的作用也不容小觑。在企业集团合并报表工作中,针对现有的集团合并报表系统自动抵销功能方面存在的缺陷,结合企业集团的具体情况,进行合并报表系统二次开发,二次开发主要是根据公司的实际情况设置取数公式,如集团各公司的报表、内部交易、内部往来等的信息来源,健全自动抵销功能,在一定程度上可以改善企业集团合并报表欠缺自动抵销功能的局面,确保整个合并报表系统工作的顺利进行。 增加编制报表附注

    增加编制报表附注,也是企业集团合并报表系统的重要组成部分。编制报表附注的实现,以仿照主表的生成方法进行,即先按照披露的模板的要求自定义成报表,然后按照自定义的报表从各公司提交的附表中去取数,并生成需要抵销的分录,最后通过合并报表系统的合并抵销功能生成工作底稿。对于附注,报表附注涉及的会计及非会计的信息非常多,且信息披露会随着监管部门规定变化而变化,因此合并附注全部实现自动化不太现实,建议暂时采用手工填制模版。由此可见,增加编制报表附注,可以大大提高企业集团合并报表的工作效率。

    结语:总之,合并报表是母公司站在整个企业集团角度上得出的报表数据。企业集团合并报表系统是一项综合的系统工程,具有长期性和复杂性,面对当前企业集团合并报表系统使用现状不佳的现象,应结合企业集团的具体情况,加强会计制度建设、健全自动抵销功能、增加编制报表附注,不断探索优化企业集团合并

    报表系统的策略,只有这样才能发挥企业集团合并报表系统的作用,促进企业集团财务管理工作又好又快地发展。

    参考文献:

    [1]李务贤.企业集团内部往来挂账管理问题探讨.商业会计. 2011(12).

    张晓梅.企业财务管理模式与企业财务成本管理研究.经济研究导刊.2010(12).

    边琪,王宁宁.我国企业集团内部资本市场初探.社会科学论坛(学术研究卷).2007(04).

报表系统篇9

【关键词】发电厂 节能技术监督 报表 SIS

火力发电厂的节能技术监督报表包含火力发电厂能耗指标汇总表,厂用电率变化分析表,火电厂单元机组辅机设备耗电汇总表,锅炉效率变化分析表,汽机热耗变化分析表,供电煤耗变化分析表等六个类型报表,每个类型报表实行月度和年度的统计,总涉及参数500多个,因此每次统计都耗费了大量的人力物力。随着计算机技术和网络技术的发展,利用计算机协助电厂专业人员实现节能报表统计十分必要,本系统正是根据此需求开发的。

一、系统架构

由于系统的使用需要生产技术分部,运行部和设备部等多个部门多个岗位配合,所以选择了使用方便,界面友好的B/S架构,具体架构图如图1。

图1 系统网络架构

图2 数据结构关系图

图中所示,电厂用户可以通过个人PC或者手机通过浏览器的方式接入内部的局域网来访问节能技术监督报表系统,远程用户也可以通过厂内的虚拟专用网络(VPN)接入厂网后,再使用浏览器访问。节能报表系统的服务器部署在厂网的三区(管理区),使用实时数据库的专用API与SIS数据库实行数据交互,同时对Liems系统中的数据通过数据视图的方式单向读取,已实现系统中部分数据的自动获取统计功能。

系统包括了用户子系统和报表子系统两个模块开发,其中数据结构[1]图如图2。浅色数据为用户部分的数据结构,深色部分为报表部分的数据结构。由于数据来源比较多,而且处理方法各有差异,节能部分的数据源处采用了类的继承和接口,这样可以灵活配置各种数据源。

系统开发采用成熟的C#语言,搭配微软的.Net Framework 4.5框架,配套IIS7.5服务器软件,并且使用Mysql数据库,兼容IE8及以上的浏览器。

节能报表系统包括五大功能,数据自动获取,人工数据录入,参数实时计算,参数趋势展示,报表生成查询等。

二、数据自动获取

节能技术监督报表的参数量十分庞大,但大部分的参数都存在于电厂的其他系统当中,只需要进行统计加工以及参数计算即可,本系统的数据自动获取功能正是基于该需要而开发的。经过对报表数据的分析,需要进行数据交互的系统为SIS系统,生产统计系统,巡检系统。与SIS系统交互时使用Openplant实时数据库API,读取锅炉和汽机的实时负荷,效率等相关的节能参数。其他系统的数据存储于Oracle数据库,本系统采用Kettle数据抽取工具,对其中的油耗,辅机电耗以及生产日报上统计的数据自动抽取到报表数据库中,如图3。

图3 数据抽取

三、人工数据录入

尽管大部分数据都可以通过其他系统来实现自动获取,但仍有小部分的数据需要人工修正录入,包括锅炉,汽机,燃料,环化,电气和机组参数等。本系统针对每个用户的操作权限开发了数据录入功能,根据工作需要由不同岗位人员进行参数录入和确认。其中截取亚临界参数录入界面如图4。

图4 亚临界机组参数录入

图5 参数详情页

参数实时计算

系统通过以上两个功能可以保证报表的数据源,但报表的最终数据需要通过一系列的统计计算才能得出,由此开发了参数实时计算功能。实际报表中的参数可能是由多个参数经过复合运算而成,用户可以对参数设置其表达式,当从数据源读取数据后,系统自动根据参数设置的表达式对参数值进行更新。如图5所示的参数详情页,#1给水泵的耗电量是由1A前置泵耗电量加上1B前置泵耗电量再加上#1机电泵耗电量,当系统通过数据自动读取功能或人工录入功能获取跟这三个参数相关的数据后,会根据表达式自动更新#1给水泵的耗电量数据。

四、参数趋势展示

为方便电厂用户对参数历史数据趋势的分析,本系统也相应开发了趋势分析图,如图5所示。用户可根据需要对节能相关参数进行历史数据回顾,趋势分析等工作。

五、报表生成查询

以上几个功能都是为了生成报表的数据,报表的生成本系统采用正则表达式匹配的方法。系统定义了以下数据结构{ID:88687,CycleType:0,DataType:0}。其中ID为参数的唯一标识,CycleType为该参数的周期类型,分为月度值和年度值,DataType为参数的数据类型,分为本期值,环期值,同期值,环差,同差。将相应的报表通过html编码形式把模版编写出来,在对应的空格上套用以上的数据结构,在生成报表的时候系统通过正则表达式匹配到对应的数据结构项,替换成相应的数据值,系统生成的报表范例如图6。

图6 火电厂能耗指标汇总表

本系统已应用于某电厂,协助厂级专业人员实现对能耗数据进行采集和分析,应用反馈良好。

参考文献:

[1]维斯.数据结构与算法分析[M].机械工业出版社,2004:391.

报表系统篇10

【关键词】水晶报表通信概预算参数字段

一、引言

近年来,随着通信产业的迅猛发展,工程设计日益增多,而工程设计中很重要的一个环节―――工程概(预)算多是采用人工编写Excel表方式编制,该方式编制概(预)算是一项比较繁琐的工作,不仅花费大量的时间、精力,其数据的准确性、规范性、各表间的联接关系也不易保证。概(预)算中的机械使用费、主材等容易遗漏,没有充分发挥计算机技术和数据库技术优势。特别是2008年7月新版概预算编制办法的出台,使得手工编制概预算表格更加困难,迫切需要有成型的概预算软件。目前市场已有的商品化软件虽各有特点,但这些商品化软件普遍存在通用性较强,对通信行业概预算编制环节的针对性较差等问题。中国通信集团设计院第一分公司,依托于本身的资源优势,充分吸取了各专业通信专家的概预算编制经验,考察了市场上常用编制软件的优缺点,并力求与实际的编制工作紧密结合,采用Visual C# 2005语言和ACCESS数据库开发了通信概预算系统。

二、水晶报表在通信概预算系统的应用

通信概预算系统是以信息产业部通信行业标准,《通信建设工程概算、预算编制办法及费用定额》为依据,并结合当前通信行业发展现状而研制开发的。系统主要由概预算编制、系统维护及数据三部分组成,实现了通信工程设计、施工、竣工验收等各阶段造价管理自动化处理。软件具有操作方便、计费灵活等特点。广泛适用于通信线路工程、通信设备安装工程、通信管道工程等的新建、扩建、改建工程的概算、预算、结算以及决算的编制工作。适用于所有从事通信工程设计、施工、建设的单位及个人使用。

在通信概预算系统的开发中,经常要对合并计算、多级汇总、制作图表、条件格式化进行编程。在这种情况下用普通的数据控件很难完成,而水晶报表大大简化了这些工作。用其可以制作非常漂亮的图表、格式化文本,而且还可以把报表导出为Word、Excel、PDF、HTML等格式。Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表,是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口,作为微软的图表合作商,水晶报表以一种自带的控件被Visual Studio 2005集成在一起。

三、用水晶报表中的参数字段解决通信概预算系统打印预算表格时的页码问题

在通信概预算系统的报表中,要求预算表的页码格式为第X页总第X页。第X页是该页报表在该预算表中排的页数,只有一页称为第全页;总第X页,是该页报表在所有预算表中排的页数。

1.新建一个数字型参数字段para_noall,用来给总第X页传值。(如上图)

2.新建两个公式字段pageno,pagenoall分别代表第X页和总第X页。其中pagenoall公式中用到了参数para_noall。(如下图)

3.代码中传递参数给报表的代码为:crystalReportT311.SetParameterValue("para_noall", 2);

注:SetParameterValue后面的几个参数依次为:参数名称,参数值,子报表名称(如果是子报表参数的话)。结束语:

水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2008与Microsoft Visual Studio 2005集成在一起。除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。

参考文献

[1]王小科,徐薇,等. C#从入门到精通(第2版).清华大学出版社,2010.

[2]李建青. C#桌面系统开发案例教程.机械工业出版社,2010.