自来水收费系统

目 录

插图目录

表格目录

自来水收费系统

1 绪论

1.1 引言

1.2 项目的背景及现实意义

1.3 自来水收费系统

1.3.1 自来水收费系统介绍

1.3.2 自来水收费系统的作用

1.4 实现机制原理

1.4.1 XFire

1.4.2 XMLWeb Service

1.4.3 Adobe Flex

1.4.4 J2EE平台技术

1.4.5 Ecplipse开发平台

2 需求分析

2.1 需求概要

2.1.1 用户管理

2.1.2 抄表管理

2.1.3 水费管理

2.1.4 统计查询

2.1.5 系统维护

2.2 各角色的用例图

2.2.1 用户用例图

2.2.2 管理员用例图

2.3 操作示意图

2.3.1 用户操作示意图

2.3.2 管理员操作示意图

2.4 开发与应用环境

2.4.1 硬件需求

2.4.2 软件需求

3 系统设计

3.1 总体功能模块划分

3.2 主要系统结构图

3.3 组件设计的功能描述

3.3.1 表现层技术方案

3.3.2 业务逻辑层技术方案

3.4 接口定义

3.4.1 用户接口

3.4.2 软件接口

3.5 数据库设计

4 系统实现

4.1 用户登录

4.2 查询用户的基本用水信息

4.3 实现图形化显示用水信息

4.4 实现联机打印功能

5 总结

致谢

参考文献

插图目录

 11 Web Service的核心构件

 21 用户用例图

 22 管理员用例图

 23 用户操作示意图

 24 管理员操作示意图

 31数据流程图

 32 业务流程图

 33 功能模块划分图

 35 系统请求时序图

 36 Cairngorm框架的结构示意图

 37 用户接口图1-1

 38 用户接口图1-2

 39 用户接口图1-3

 310 ER

 41 用户界面1-1

 42 用户界面1-2

 43 用户界面1-3

 44 查询用户信息界面

 45 显示用水统计曲线图

 46 联机打印功能实现界面

表格目录

表格 21 硬件需求

表格 22 软件需求

表格 31 软件接口

表格 32 User

表格 33 Pay

自来水收费系统

摘要随着计算机技术和网络技术的不断发展,网络成了人们互相交流、合作的平台,同时也对网络应用提出了更高的要求。作为自来水公司来说,为适应高速发展的信息时代,必须要求装备有一套方便计费和管理的信息化软件。该系统为B/S模型结构,在Eclipse平台上进行开发,通过flex请求J2EE服务器发布的Web Service实现。由于Java具有跨平台性,因而该系统可在多种操作系统上运行,并且具有较好的安全性、容错性和可扩张性。该系统实现了信息查询、人员信息管理、报表生成和打印等功能。用户只要使用IE浏览器访问相关站点,输入正确的用户名和密码成功登陆后,便可查询用水情况和其他相关信息。对管理员来说使用起来也非常的方便快捷,可以对人员信息进行管理。本系统对客户端的硬件标准并不高,只需有5.0以上的浏览器,可访问Internet即可。由于本系统采用了MVC系统架构模式进行开发,降低了系统模块间的依赖性,提供了系统良好的延展性和可维护性。

关 键 字: 收费系统;  FLEX;  MVC

The System of Lap Water Charging

Abstract : The Internet has become the platform of communication and cooperation as the continuous development of computer technology and networking technology. As to the tap water corporation, there must be a suit of software that is easy in charging and managing. This system is B/S structure, implemented by J2EE server  which distribute Web Service. It can be operated on various OS because of the cross platform ability of JAVA, also a good security, flexibility and fault-tolerance. This system has implement functions like information inquiring, personal information managing, form generating and printing, etc. The user can browse related sites by IE explorer and inquiry individual information like salary after entered correct use name and password. As to the administrator, the website also provides a convenient way to manage information. The hardware requirement is not high hence any explore above 5.0 and a connection to Internet is enough to the usage of this system. The code block has a great reusability due to the MVC developing frame, which can develop system in different phase that could greatly reduce the developing time and work, it also provides the system a good extensibility and maintainability because of lose-coupled system structure.  

Keywords: Charge System;  FLEX ;  MVC


  1. 绪论
    1. 引言

生活在21世纪的人类,没有谁不知道这是个信息的时代,是一个科技飞速发展的时代,因此,在100个人当中可能就有90个人拥有个人的计算机,在100人当中也有可能从事着和电脑有关的职业,这足以见得计算机和我们的生活密切相关,并且在管理方面计算机也在扮演着无可替代的作用,在计算机发达的时代数据库也就此应运而生,并得到了逐步的改进与完善。

    1. 项目的背景及现实意义

寻甸县自来水厂一直使用传统的人工抄表来按月收取自来水费用,由于传统的人工抄表,按户收费的方式随着城市供水规模的不断扩大已经越来越难以适应日益复杂的水费管理工作。而且按户人工收取水费往往有很多主观方面的困难。比如用户无人在家,这就需要水费收取人员不断的上门服务,加大了工作力度,也带来了烦琐和人力资源的浪费;又如一些无克避免的用户与水费收取人员人际方面的冲突;还有用户需要查询一些过往数据也带来了不便。等等问题都要求我们建立一个水费收费管理系统,从而方便自来水收费部门的管理,也方便用户的查询。从而实现供水信息微机化管理,建立供水文明示范窗口。并且通过微机化管理实现自来水用水信息的自动化统计,方便公司的管理运作,提高工作效率。从而节省一些不必要的人力消耗和时间消耗,提高整个公司的运作能力。

    1. 自来水收费系统 
      1. 自来水收费系统介绍 

该系统的功能就是取代传统的手工收费模式,采用微机作业进行水费管理和用户管理,以及对用水信息的集中量化和图形化反映,从而实现现代自来水的管理监控。

该系统界面简单,使用方便,即便是没有电脑基础的工作人员也能够迅速掌握并熟练使用。采用了Flex语言进行开发,基于J2EE服务器发布的Web Service。开发方便,配置简单。具有良好的跨平台性,使得该系统在各操作系统上也能够很好的使用。

      1. 自来水收费系统的作用 

1、快速、自动、强大的统计汇总功能和丰富的报表打印系统,使各项数据的统计汇总、分析表格一应俱全,使水厂领导可以随时查阅最新的详细情况,并依次快速、准确地做出决策,提高企业的管理水平与竞争力。

2、彻底解决手工计算、抄写水费管理中计量表资料、用户资料、以及文件档案的数量庞大难题,解决长时间无法即时查询某计量表或户主资料的繁琐性。随时按户主名称、用户帐号、所在单位、住址、证件号码等多种条件任意查询,减少大量重复工作,大大提高工作效率。

3、降低了财务收费人员的劳动强度和工作量,提高财务工作效率。彻底解决水非管理多业务,财务工作繁重、繁杂,消灭差错率,用计算机管理自来水收费,灵活性、准确性大有提高。

    1. 实现机制原理

技术路线:  Adobe Flex + xfire + spring + hibernate

Flex请求J2EE服务器发布的Web Service。

      1.  XFire

XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,可以方便快速地开发Web Service应用。

XFire是完全基于流数据处理进行工作的系统,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用。

XFire从管道中接收一个SOAP请求到返回一个SOAP响应,会经历一系列的阶段。在管道调用的任何一个阶段,XFire都可以添加一些额外的Handler,在对消息进行加工处理后再传入到下一个阶段中。在SOAP请求消息对Web Service发起真正调用之前,分别会经过传输、预转发、转发、策略实施、用户信息处理、预调用、服务调用等阶段。

      1.  XMLWeb Service

XML(eXtensible Markup Language,可扩展标记语言)是Internet上数据表示和数据交换的新标准。它是ISO(International Organization for Standardization,国际标准化组织)的SGML(Standard for General Markup Language,通用标记语言标准)的一个简化子集。XML关注信息本身,是Web上表示结构化信息的一种标准文本格式。与传统的注重页面信息显示的HTML(Hypertext Markup Language, 超文本链接标示语言)相比,关注于内容的XML具有以下诸多优点[5]:良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙;等等。XML的出现和发展对于Internet和Intranet产生了巨大的影响。

在XML基础上发展起来的Web服务(Web Service)是一种革命性的分布是计算技术。它使用基于XML的消息处理作为基本的数据通讯方式,消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异,使异类系统能够作为计算网络的一部分协同运行。开发人员可以使用像过去创建分布式应用程序时使用组件的方式,创建由各种来源的Web服务组合在一起的应用程序。由于Web服务是建立在一些通用协议的基础上,如HTTP(Hypertext Transfer Protocol, WWW服务程序所用的协议),SOAP(Simple Object Access Protocol,简单对象访问协议),XML,WSDL(Web Services Description Language,Web服务描述语言),UDDI(Universal Description,Discovery,and Integration,通用描述发现和集成协议)等,这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此Web服务将会有很强的生命力。关于Web服务的W3C(World Wide Web Consortium,万维网联盟)标准逐渐出台;两个应用程序通过Web服务进行远程通信时,所需的标准核心构件如下图所示:

图 11 Web Service的核心构件

      1. Adobe Flex

Adobe Flex是支持RIA(rich internet applications)的开发和部署一系列发展中的技术和产品线的概括词,包括the Flex Framework, Flex Builder , and Flex Enterprise Services 等。 

传统的程序员在开发动画应用方面存在困难,FLEX试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员更快更简单地开发动画及RIA应用。在多层式开发模型中,FLEX应用属于表现层。

1,Flex Framework 包括 MXML, 类库,组件,容器和效果(effects)等。它不需另外的服务器或IDE就可以生成和美化FLEX应用程序。 

2,Flex Builder 是在Eclipse基础上创建的全新RIA IDE,是生成FLEX应用的最简单最强大的方式。实现了集成编译器,代码缩进,调试,设计视图,源代码控制系统集成等许多功能。它可以当作标准的独立应用软件,也可以当作Eclipse的插件使用。 

3,Flex Enterprise Services,拥有众多新功能,比如自动测试,企业通信支持(提供一种发布/订阅的通信架构),数据服务(使本地处理的数据和服务器端同步)。最新版的FLEX支持创建静态文件,该文件使用解释编译方式并且不需要购买服务器许可证就可以在线部署。FLEX服务器也是客户端和XML Web Services及远程对象(Coldfusion CFCs,或Java类,等支持Action Message Format的其他对象)之间通讯的通路。 

FLEX采用GUI界面开发,使用基于XML的MXML语言。FLEX具有多种组件,可实现Web Services,远程对象,drag and drop,列排序,图等功能;FLEX内建动画效果和其它简单互动界面等。相对于基于HTML的应用(如PHP,ASP, JSP,ColdFusion即CFMX等)在每个请求时都需要执行服务器端的模板,由于客户端只需要载入一次,FLEX应用程序的工作流被大大改善。FLEX的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。 

      1. J2EE平台技术

J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。 

J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。 

在J2EE架构下,开发人员可依循规范基础,进而开发企业级应用;而不同J2EE供货商,同会支持不同J2EE版本内所拟定的标准,以确保不同J2EE平台与产品之间的兼容性。换言之,植基J2EE架构的应用系统,基本上可部署在不同的应用服务器之上,无需或者只须要进行少量的代码修改,即能大幅提高应用系统的可移植性(Portability)。

J2EE主由升阳(SUN)与IBM等厂商协同业界共同拟定而成的技术规范,以企业与企业之间的运算为导向的JAVA开发环境。J2EE架构定义各类不同组件,如Web Component、EJB Component等,而各类组件可以再用(reuse),让已开发完成的组件,或者是经由市面采购而得的组件,均能进一步组装成不同的系统。 对于开发人员而言,只需要专注于各种应用系统的商业逻辑与架构设计,至于底层繁琐的程序撰写工作,可搭配不同的开发平台,以让应用系统的开发与部署效率大幅提升。 

J2EE应用很容易发布到Web、掌上电脑或移动电话等手持设备上。换言之,应用组件可以很轻松地实现电子化。J2EE的应用-编程模型保证组件在向不同类型的客户端移植过程中,商业逻辑和后端系统保持不变。

此外,J2EE平台的其他主要优点还有:自动负载平衡、可伸缩、容错和具有故障排除等功能。部署在J2EE环境中的组件将自动获得上述特性,而不必增加额外的代码开销。J2EE所有这些特性对于需要构建全天候网络门户的企业来说显得尤为重要。

可以说,J2EE是首个获得业界广泛认可和采纳的中间件标准。目前几乎所有的一流Web应用服务器,如BEA的Web logic、IBM的Web sphere、HP的应用服务器、Sun的iPlanet和Macromedia的Jrun等,都是基于J2EE的。迄今为止,还没有哪个其他标准能获得如此众多的中间件供应商的一致支持。而且,有了J2EE,企业的应用开发对于某个特定的开发商或应用服务供应商的依赖性更小。应用组件只要符合J2EE规范,完全可以部署在不同的应用服务器上。为了确保不同厂商的J2EE应用服务器的兼容性和一致性,Sun公司发布了J2EE兼容性测试包。

      1. Ecplipse开发平台

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSPservletEJBXML、Web 服务和数据库访问的支持。 

  1. 需求分析
    1. 需求概要

针对在收费过程中出现的各类问题,我对该自来水厂从自身特点出发设计一个自来水收费管理系统,系统主要包含用户管理,抄表管理,水费管理,统计查询和系统维护。

      1. 用户管理

用户管理模块是系统的基本功能模块,管理员能够实现对用户的基本信息档案及用户表计的设置和管理,能够添加或删除用户。

      1. 抄表管理

抄表管理模块提供了对手工抄表数据的采集录入功能。

      1. 水费管理

水费管理模块是该收费系统的核心模块,它主要是对抄表数据进行加工处理,并根据用户用水性质计算水量和水费,打印水费通知单。并能提供用户上月用水和本月用水情况的查询。

      1. 统计查询

可进行损漏统计分析,生成统计分析图; 能进行日供水、周供水、月供水统计分析及查询用户任何一个月的用水情况;从而支持领导办公。实现办公的现代化。

      1. 系统维护

该模块提供了操作员的权限管理,并提供系统备份、恢复、修复、报告等功能,以确保系统稳定安全。

通过以上几个模块从而实现自来水收费过程的自动化管理。满足了当前该县供水收费的需要,使供水企业能够合理、及时、准确的收费,保证供水业务正常进行。

    1. 各角色的用例图
      1. 用户用例图 

图 21 用户用例图

      1. 管理员用例图 

图 22 管理员用例图

    1. 操作示意图
      1. 用户操作示意图

图 23 用户操作示意图

      1. 管理员操作示意图

图 24 管理员操作示意图

    1. 开发与应用环境
      1. 硬件需求

需求名称

详细要求

CPU

CPU>=133MHz或以上

内存

512M或512M以上

硬盘

40G或40G以上

光驱

无要求

软驱

无要求

显示器

无要求

其他计算机设备

网卡等联网设备

表格 21 硬件需求

      1. 软件需求

需求名称

详细要求

操作系统

Windows 98/2000/xp/2003、Linux、Solaris

WEB浏览器

IE6.0、Maxthon、FireFox

开发平台

Eclipse3.3、FlexBuilder3、Myeclipse6.0

数据库

Microsoft SQL SERVER 2000

服务器

Apache-tomcat-6.0.14

建模工具

EclipseUML、Viso

数据库设计工具

Sybase Powerdesigner12

表格 22 软件需求

  1. 系统设计

数据流程图:

图 31数据流程图

业务流程图:

图 32 业务流程图

    1. 总体功能模块划分

图 33 功能模块划分图

    1. 主要系统结构图

根据本次开发功能的特点、收费系统的 整体技术路线,本系统采用基于J2EE技术的多层WEB应用程序架构,它具有可伸缩、事务处理能力强、可扩展且安全可靠等特点。J2EE 应用程序组件分为表示层、逻辑层和数据层,这使得系统具有清晰的结构,便于系统的设计、开发、测试和维护,能够提高代码重用率。基于WEB的应用程序可以向客户提供对一致的、及时的和方便的访问。另外,J2EE技术是一种开放、标准、高效、可靠的技术,采用此技术构建的系统非常容易实现不同系统间的集成。

在基础软件平台的选型上,数据库采用XML直接进行读取,J2EE应用服务器采用免费的Tomcat。

本次开发模块在功能上包括用户、管理员、外部系统的管理和应用,业务数据需要在不同层次上进行流动,在不同层次之间存在大量的业务联系,在各个层次上的管理重点和功能也有所不同。为了保持系统结构的统一和灵活性,整个系统统一设计和开发,在不同层次上采用同一套软件,通过系统配置和权限分配来满足不同层次的需求。软件系统采用服务器集中部署,用户采用浏览器访问使用。

系统的总体结构如下图所示:

图 34 系统总体结构图

系统请求时序图:

图 35 系统请求时序图

    1. 组件设计的功能描述
      1. 表现层技术方案

本系统采用模型-视图-控制器(MVC)设计模式,使系统的逻辑结构清晰,易于开发开发和维护,模型、视图、控制器三个层的作用和功能简要说明如下:

模型层:模型层管理应用程序的业务对象,包括状态和行为两个方面,状态一般是业务对象的属性,行为一般是业务对象的方法。模型的主要职责是根据请求查询状态或改变状态,模型层应该提供清晰而简单的接口,内部实现尽量封装起来。

视图层:视图层实现模型数据的界面表示,其主要职责是知道哪些模型数据是用户需要的并以合适的方式表现为用户可以看的见的形式。一般视图层通过控制层查询模型数据。

控制器层:控制器的主要职责是捕捉用户的操作并且根据用户的操作决定执行什么样的业务逻辑,其中包括验证执行业务逻辑的前提条件,并向模型层传递必要的信息。

Cairngorm框架是针对基于Adobe Felx技术的WEB应用程序而设计的一种M-V-C模式的实现,技术成熟、应用广泛,它通过内置MVC开发模式,把页面数据绑定、事件处理、事件代理三者分离开来,大大方便了Web应用开发,使页面设计人员和代码编写人员可以各司其职,分工合作。Cairngorm框架的结构示意图如下:

图 36 Cairngorm框架的结构示意图

      1. 业务逻辑层技术方案

Spring IOC容器:

为整个WebService系统提依赖注入,管理各模块之间的依赖关系。

数据传输对象:

DTO(Data Transfer Object)用于传递一组封装好的数据,它对应于一个实体模型。如用户模型对应User DTO对象.

数据访问层:

负责与数据库或者其他数据源,如xml源、文件等进行数据访问,具体体现为一个DAO(Data Access Object)类,一个DAO只针对一种DTO的外部数据源访问。

业务服务接口:

业务接口对外暴露一组业务处理方法,并将其具体实现隔离开,具体体现为一个Service的接口。Xfire根据此接口将方法发布成为WebService。

业务服务实现:

负责处理业务逻辑,具体体现为一个实现业务服务借口的Service类,Service对象中有若干函数,每一个函数处理一个业务逻辑,一个Service可以依赖于多个DAO类或者其他帮助类。

xFire以及J2ee组件

负责将业务服务接口发布为一组Web服务,并对外以WSDL语言的方式对此Web服务进行描述。

    1. 接口定义
      1. 用户接口

用户提供的命令:用户根据相关窗口的提示内容进行相关信息的输入

软件的回答信息:系统根据输入信息进行比较和判断,并执行相关操作。如果执行出错择将错误信息回显给用户。

用户接口图示:

图 37 用户接口图1-1

图 38 用户接口图1-2

图 39 用户接口图1-3

      1.  软件接口

登陆模块必须和主调页面预留下相关接口。其次主调页面采用超级联接的方式和其余功能模块相联系(即在主调页面和功能模块间留下相应的接口)。

接口标识符

输入参数

返回值

接口描述

Login

账号、密码

用户对象

系统登陆

Register

注册用户信息

注册用水的新用户

Report

XML格式数据

获得用户的用水统计,以曲线图的方式显示,同时输入平均用水量、最大和最小用水量等。

BusinessAnalyse

XML格式数据

获得全部用户的用水统计,以曲线图的方式显示(按月的方式),同时输入平均用水量、最大和最小用水的用户、水费平均价格等。

Pay

用水量、付款金额

登记用户交水费

GetAllUserInfo

获得所有用户信息

Update

用户信息

更新用户的数据

表格 31 软件接口

    1. 数据库设计

该自来水收费系统采用了XML直接读取数据。能够对基于XML的数据进行有效的管理。在数据库方面由于该系统基于简单的应用,只真对部分功能进行实现,所以较为简单,只用了两张表来实现基本的用户信息管理。

User表

字段名

描述

类型

长度

是否 为空

是否

主键

是否自动标识

Id

主键

int

7

Name

名字

varchar

50

Password

 密码

varchar

30

Phone

电话

varchar

30

Email

邮件

varchar

50

Address

地址

varchar

100

表格 32 User表

Pay表

字段名

描述

类型

长度

是否 为空

是否

主键

是否自动标识

Id

主键

int

7

User_id

外键

Int

7

Money

金额

Float

9

Operator

经手人

varchar

50

Num

用水量(吨)

Float

9

Date

付款日期

varchar

50

表格 33 Pay表

ER图:

图 310 ER图


  1. 系统实现
    1. 用户登录

系统登陆的时候对用户身份进行判断,相关代码如下:

public function loginClick():void {

              ws.getUsersDataSource();

}

 

public function getUsersDataSourceResult(event:ResultEvent):void{

 

 users = new XML(event.result.toString());

 for each(var user:XML in users.user){

     if(user.@name==username.text && user.@password==password.text){

         userCookie.data.name=username.text;

            userCookie.data.password=password.text;

            userCookie.flush();

        msg.text="login successful!";  

        break;

     }else

           msg.text="login faile";

 }

}

用户界面:

图 41 用户界面1-1

图 42 用户界面1-2

图 43 用户界面1-3

    1. 查询用户的基本用水信息

图 44 查询用户信息界面

查看水费登记情况主界面现实代码:

public function init():void {

ws.getUsersDataSource();

userADG.addEventListener(MouseEvent.CLICK, function(event:Event):void{

var uiText:UITextField = event.target as UITextField;

if(uiText!=null)

selectUser = uiText.text;

});

addWaterButton.addEventListener(MouseEvent.CLICK,function():void{

var current:Date = new Date();

var i:Number=0;

                for each(var user:XML in users.user){    

                 if(user.@name==selectUser){

                 var newPay:XML = <pay></pay>

                 newPay.money=moneyText.text;

                 newPay.operator=userCookie.data.name;

                 newPay.num=numText.text;

                     newPay.date=current.getFullYear()+'-'+(current.getMonth()+1)+'-'+current.getDate();

users.user[i].appendChild(newPay);

                 }

                 i++;

                }

               

                ws.setUsersDataSource(users.toXMLString());

                ws.getUsersDataSource();

});

leftCanvas.addEventListener(MouseEvent.MOUSE_OVER, function():void{

expand.end(); expand.play();

});

leftCanvas.addEventListener(MouseEvent.MOUSE_OUT, function():void{

contract.end(); contract.play();

});

}

    1. 实现图形化显示用水信息

图 45 显示用水统计曲线图

根据业务数据画曲线图相关代码:

    <mx:LineChart id="mychart" height="227" width="100%"

        paddingRight="5" paddingLeft="5"

        showDataTips="true" dataProvider="{waterDataAC}" y="141">

        

            <mx:horizontalAxis>

                <mx:DateTimeAxis dataUnits="days" parseFunction="dateParseFunction"  />

            </mx:horizontalAxis>

            <mx:verticalAxis>

                <mx:LinearAxis minimum="{0}" maximum="{200}"  parseFunction="moneyParseFunction"/>

            </mx:verticalAxis>

            <mx:series>

                <mx:LineSeries yField="money" xField="date" displayName="The CharLine of water pament by month"/>

            </mx:series>

        </mx:LineChart>

    <mx:Label id="lable1" x="10" y="37" width="293"/>

    <mx:Label id="lable2" x="10" y="63" width="374"/>

    <mx:Label id="lable3" x="10" y="89" width="374"/>

    <mx:Label id="lable4" x="10" y="115" width="510"/>

    <mx:ComboBox x="99" y="7" width="106" id="selectYear">

    <mx:dataProvider>

        <mx:Array>

            <mx:Object label="2008" data="2008"/>

            <mx:Object label="2009" data="2009"/>

            <mx:Object label="2010" data="2010"/>

            <mx:Object label="2011" data="2011"/>

            <mx:Object label="2012" data="2012"/>

            <mx:Object label="2013" data="2013"/>

        </mx:Array>

    </mx:dataProvider>

</mx:ComboBox>

    1. 实现联机打印功能

图 46 联机打印功能实现界面

水费登记报表打印代码:

    // Create a PrintJob instance.

    private function doPrint():void {

        // Create an instance of the FlexPrintJob class.

        var printJob:FlexPrintJob = new FlexPrintJob();

        

        // Initialize the PrintAdvancedDataGrid control.

        var printADG:PrintAdvancedDataGrid =

            new PrintAdvancedDataGrid();  

        // Exclude the PrintAdvancedDataGrid control from layout.

        printADG.includeInLayout = false;

        printADG.source = userADG;

        // Add the print-specific control to the application.              

        addChild(printADG);

        

        // Start the print job.

        if (printJob.start() == false) {                

            // User cancelled print job.

            // Remove the print-specific control to free memory.        

            removeChild(printADG);

            return;

        }

        // Add the object to print. Do not scale it.

        printJob.addObject(printADG, FlexPrintJobScaleType.NONE);

        // Send the job to the printer.

        printJob.send();

        // Remove the print-specific control to free memory.         

        removeChild(printADG);

    } 


  1. 总结


致谢


参考文献 

[1] Srikanth Shenoy and Nithin Mallya 著,《Struts Survival Guide: Basics to Best Practices》,电子版,2004年出版

[2] Steven Holzner著,《Inside JavaScript》,电子版,2002年8月出版

[3] Cay S. Horstmann, Gary Cornell著,《Core Java™ 2 Volume I - Fundamentals, Seventh Edition》,电子版,2004年8月出版

[4] Thomas M. Connolly, Carolyn E. Begg著,《数据库设计教程》,机械工业出版社,2003年6月出版

[5] 张桂元 贾燕枫编著,《Struts 开发入门与项目实践》,人民邮电出版社,2005年8月第1版

[6] 金勇华、曲俊生著,《JAVA 网络高级编程》,人民邮电出版社

[7] Joseph Schmuller著,李虎、赵龙刚译,《UML基础,案例与应用》,人民邮电出版社

[8] 吴建、郑潮、汪杰编著,《UML基础与Rose建模案例》,人民邮电出版社,2004.10

[9] Ron Patton著,ISBN:7111177703《软件测试英文版第2版》,出版时间:2006-01-01 机械工业出版社

[10] (美国)贝里等著、邱仲潘等译ISBN:7505381482《实用J2EE设计模式编程指南》, 出版时间:2006-2 电子工业出版社

[11] 阎宏 著 ,ISBN:7505380001《Java与模式》,出版时间:2002-10电子工业出版社

[12] Cay S.Horstmann &&Gary Cornell著 ISBN:7111185234《Java2核心技术卷I:基础知识(原书第七版)》,出版时间:2006-5 机械工业出版社

[13] Cay S.Horstmann &&Gary Cornell著,ISBN:7111179013《Java2核心技术卷Ⅱ:高级特性(原书第七版)》,出版时间:2006-3机械工业出版社

[14] 陆新年,陆新宇,等著,《Morrison M.XML 揭秘——入门应用精通》.北京:清华大学出版社, 2001

[15] 梁爱虎著,《精通SOA:基于服务总线的Struts+EJB+Web Service整合应用开发》,出版社:电子工业出版社 . 出版日期:2007年1月

[16] 作者,(美)Eric Newcomer Greg Lomow.。译者,徐涵,《Understanding SOA with Web Services》 中文版: 原书名,Understanding SOA with Web Services. 原出版社, Addison-Wesley.. 出版社, 电子工业出版社

[17] W3C.Web Service 相关标准.

[18] [EB/OL]http://www.w3c.org,2003-06.

Learn about flex

[19] [EB/OL] http://www.adobe.com/products/flex/overview/ 

Flex 入门教程,

[20] [EB/OL] Flex 入门教程 - 蓝色理想

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值