推荐阅读:浅谈财务管理系统用户可定制性技术 浅谈财务管理系统用户可定制性技术浅谈财务管理系统用户可定制性技术 文章来源教育网 1引言 为使得财务管理系统具有用户可定制性,以软件复用技术为设计理念,利用面向对象程序设计思想,充分使用组件开发、模式设计的思想、
浅谈财务管理系统用户可定制性技术
浅谈财务管理系统用户可定制性技术
浅谈财务管理系统用户可定制性技术
文章
来
源
教育网
1引言 为使得财务管理系统具有用户可定制性,以软件复用技术为设计理念,利用面向对象程序设计思想,充分使用组件开发、模式设计的思想、分布式多层体系结构等现代软件工程关键词汇,便于人们在软件开发中的交流与沟通,有助于实现应用程序的功能,有助于建立一个复杂的架构。每个模式提供组件、作用以及相互关系的预定义集。
系统采用演进软件开发过程模型,使用面向对象软件开发方法,贯彻设计模式思想,采用分布式多层体系结构与DCOM/COM+组件等技术[4,5,6,7]来实现财务管理系统的业务逻辑,主要有对工资类、津贴类、福利类、加班类、奖励类以及其他类各项收入进行日常管理(包括日常数据修改、查询及报表打印),能够按指定要求将六类收入汇总统计,方便对各项数据进行财务分析;根据人事信息资料,对各类人员的信息增加修改、查询;根据财务核算要求任意添加、修改各大类明细项目;以工资号为主键,通过手工修改、成批修改、公式修改待等方式方便、灵活地修改人各收入类数据设计模式,降低数据集操作的工作量,提高工作效率;根据各项指定条件(单个条件或组合条件),方便、快捷地筛选数据;自定义报表输出,根据业务需要,将系统中的查询数据、汇总信息及变动信息实时打印或转换成Excel表的形式输出;在校园网环境中,允许多用户同时登录系统;界面人性化设计,充分考虑财务核算人员的操作思路,直观反映财务管理要求,方便人机信息交换。
2财务管理系统架构用户可定制性技术
财务管理系统架构用户可定制性体现在:真正的软件复用和高度的互操作性[8],开发者可利用它组合成不同的应用系统;接口的可靠性,组件接口是不变的,接口是稳定的;可扩充服务,每个组件是自主的,有其独自的功能,只能通过接口与外界通信;具有强有力的基础设施,为了组件有机地组织在一起;具有构建和组合组件的工具,可以方便地增加和替换应用中的组件,充分发挥可复用的优势,实现客户应用程序的组装和升级。在开发盐城师范学院财务管理系统时设计模式,采用了COM/DCOM组件技术。通过该系统可以对学院的教职的收入的六大组成部分(工资、福利、津贴、加班、奖励和其它)的信息进行输入、导入、导出、查询、统计、修改、打印和生成银行报盘。
系统采用三层结构,客户端表示层由FORM窗体组成,可实现COM组件的调用,业务逻辑和数据访问由一组用Delphi实现的COM组件构成。为了便于维护、升级和实现分布式应用,在实现过程中,又将业务逻辑层和数据访问层分离开,客户端不直接调用数据访问层,而是通过业务逻辑层来调用数据库,如图1所示。
图1 三层结构示意图
中间层组件对所用到的数据库中的表示进行了封装,形成了组件。通过接口为表现层提供服务。建立Remote Data Module业务逻辑,确定应用程序服务器的名称、实例属性以及服务器所使用的线程模型等信息。然后向空白窗体中加入非可视化的VCL组件。
本系统中主要ADOConection, ADOCommand,ataSetProvider, ADODataSet等组件,如图2所示。 图2 系统数据存取组件 表现层的主要组件包括登录组件,数据查询组件,数据修改组件,个人信息项目管理组件,基本表管理组件,银行报盘组件,公式设置组件,信息初始化组件设计模式,生成汇总数据组件和报表打印组
件等。
3财务管理系统模块用户可定制性技术
3.1 数据库模块用户可定制性技术
为使本系统具有通用性,后台可使用不同的数据库,如Access数据库、SQL数据库等。而应用程序中提供用户访问数据库的某一专用的数据集对象往往难以胜任这种多变的需求。由于数据库的连接和访问机制比较复杂。如果将数据库连接方式写死在程序中,将不利于今后的维护和复用。如果客户端能够创建一个通用的数据集对象创建方法来创建数据集对象,就可以解决这个问题。这样,对象的创建方法要与要创建的对象就可以分离开来,达到去耦的效果。
如图3所示,是一个用于数据库访问的工厂方法设计模式图,图中的TDataFactory和TDataSet分别是工厂方法模式中的工厂类和产品类。它们都是抽象类,负责维护工厂和新产品之间的关系,TDataFactroy负责创建TDataSet对象。
图3 工厂模式
显然,系统事先无法知道会使用何种类型的数据库以及使用何种数据库连接机制。只知道何时有一个新的数据集对象要被创建,但不知道所要创建的是哪一种数据集对象。这就是说系统将实际创建工作委派到TDFactory类的派生中了。而这个抽象类TDFactory提供创建数据集对象的抽象方法CreateDataSet,它相当于一个虚构造子,而具体工厂类创建具体产品的过程是通过多态来实现的。
3.2系统界面模块用户可定制性技术
不同用户对系统界面的要求不同,有的用户喜欢使用传统的按钮界面,有的用户喜欢使用菜单界面。盐城师范学院财务部门的操作人员就有这两种不同的需求。本系统通过使用抽象工厂模式实现两种操作界面,即按钮界面和菜单界面。
如图4所示,是一个抽象工厂的设计模式。在这个例子中设计模式,包含了命令按钮和菜单两种风格的窗体,即两个产品系列。这样便于改变产品族,维护产品的一致性。为了维护产品的一致性,定义了一个抽象类TFormMaker,TForMaker类声明一个接口来建立各种组件的原型。同时又由这些组件的抽象类及具体类负责产生组件的实例。TFormMaker的接口提供统一的操作为所有组件产生新的对象实例。客户端调用这些接口的操作来得到一个组件实例,但却和具体实现相隔离,因为客户端没有必须了解所用到的那些产生实例的具体类。
图4 抽象工厂模式
这里TFormMaker有许多派生类分别创建需要的组件,每一个派生类都是一个实例具体产品生产的具体工厂,由它们来实现创建不同风格的组件的操作。如在TFormMaker的派生类中有一个CreateButton,客户只需与TFormMaker这个抽象的接口CreateButton沟通而不必理会到底是由哪一个具体类创建了按钮。TFormMaker同时强调具体类之间的依赖性,这就是说不同的TFormMaker所产生的实例实际上是不同具体工厂的不同实例。
3.3数据显示模块用户可定制性技术
在本系统的开发中,用到大量的数据感知组件,通过这些组件来显示数据表中的记录。为了适应不同数据库的连接要求,使增加新的数据库和数据库存取标准而无须修改客户端的数据显示程序。因此在本系统中作为建造者的新产品也就有TTable、TADOTable等多种形态。如果将创建数据集对象的方法从其表现中分离开来,由可抽象为以下的算法步骤:创建数据库的连接,创建数据集对象,激活并返回数据集对象。
在系统开发的过程中,由于要涉及到多个表,而对各个表的操作界面是完全相同的。用建造者模式能够简化程序的编写设计模式,使程序界面简洁。而且有利于系统的扩充。工资数据表和津贴数据表关系如图5所示。
图5 建造者模式
3.4文件转换模块用户可定制性技术
在系统开发过程中,我们开发一个通用的组件,用于实现将数据库中符合条件的表的内容转换成Excel文件或文本文件。这样设计的好处是既可以在自己的本系统中使用这一组件,也可在其它系统中使用该组件。在实际开发中需要用到这种转换的场合很多。另外如果以后要转换成其它格式的文件,只要在适配器类中进行修改就可以了,客户端的程序完全不用修改。
但在使用这一模式时,也容易犯这样的错误,在设计Adapter时不愿牺牲Adaptee对象的多余功能 ,转换了过多的Adaptee接口并使接口变得复杂。在实际应用中往往是功能单一且通用、对其它条件依赖性较少的少数接口。所以在设计Adapter模式时要考虑为Adaptee找到一个窄接口,即可用于匹配的最小操作集。系统中用于转换成类图如图6所示。 图6 适配器模式 3.5数据的显示、查询和修改模块用户可定制性技术
在系统开发中,有很多的地方用到数据的显示、查询和修改。用到了“显示数据”——“数据对象”——“后台数据”就对应了“表现层”(界面)——“逻辑层”(业务)——“持久层”(数据库或其它文件)。这是程序员在编程应用程序时应该遵循的Class-Type体系结构。通过这种结构,应用程序会因为减少了内部的耦合性而显着提高程序的健壮性。如果用户接口层要获得信息,则必须与业务层的对象交互,然后再通过业务层对象从持久层获得存储在持久层中的对象。这样就能禁止用户层对象直接访问持久层对象中的数据。也就是说你可以改变对象的存储方式,而不需改变你的应用程序界面和报表,如图7所示。
图7 桥接模式
3.6数据的显示、查询和修改模块用户可定制性技术
在系统开发的过程中,要涉及对多个表的操作,如对表进行初始化。尽管对不同的表进行操作,但对表的操作方法是一样的。如果让用户直接对表进行操作设计模式,则会对表产生很大的依赖性,如何增加一个门面层,则会减少这种依赖关系,可以提供子系统的独立性和可移植性。系统中对多个表进行定义的简化图如图所示。用户通过operate