论文导读::该文从COM组件与设计模式的角度研究了财务管理系统架构用户可定制性和财务管理系统模块用户可定制性,不受盐城师范学院财务管理系统的具体需求的约束,教职工基本数据可以由系统管理员随意定义,所有报表结构可以动态定义,保证所设计系统具有良好的适应性、可维护性;客户端表示层由FORM窗体组成,业务逻辑和数据访问由COM组件构成, 便于维护、升级和实现分布式应用;由系统管理员定义多级角色,再根据用户业务需要,为每个用户分配不同的角色,保证系统了具有良好的可管理性与安全性。
论文关键词:财务管理系统,可定制性技术,COM组件,设计模式
1引言
目前,不管在行政事业单位,还是在生产企业单位,财务管理系统是一个较典型的应用系统。在软件工程界,很多软件组织在现有的开发环境下使用了各种可能的方法与途径进行过此方面应用系统的设计与实现,但是还存在一些共同的问题,主要表现在:(1)按通用系统来进行设计,把业务的主要逻辑或计算公式存放在数据库中,除系统表以外设计模式,大部分表采用自定义方式,保证所开发的财务管理系统能用于所有学校或行政企业单位。(2)从界面和业务分离到分布式多层体系结构,包括界面和业务的逻辑分离、界面与业务的物理分离、界面和业务的空间分离。(3)系统与其他系统的数据导入与导出的设计。(4)各种自定义报表的设计。(5)在创建型模式、结构型模式以及行为型模式系列中选择合式的模式运用到本系统中。(6)功能对象、协调对象以及数据对象的如何设计,才能使系统性能达到最佳。(7)系统的安全性考虑,如基于角色的访问控制管理问题等。
为使得财务管理系统具有用户可定制性,以软件复用技术为设计理念,利用面向对象程序设计思想,充分使用组件开发、模式设计的思想、分布式多层体系结构等现代软件工程关键词汇,便于人们在软件开发中的交流与沟通,有助于实现应用程序的功能,有助于建立一个复杂的架构。每个模式提供组件、作用以及相互关系的预定义集。
系统采用演进软件开发过程模型,使用面向对象软件开发方法,贯彻设计模式思想,采用分布式多层体系结构与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所产生的实例实际上是不同具体工厂的不同实例。
1/2 1 2 下一页 尾页 |