• 890.00 KB
  • 54页

鸿恒公司工程预算管理系统设计与实现硕士论文

  • 54页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'3专业学位硕士学位论文鸿恒公司工程预算管理系统设计与实现DesignandImplementationofEngineeringBudgetInformationManagementSystemforHonghengCompany作者姓名:沈刚工程领域:软件工程学号:指导教师:完成日期:大连理工大学DalianUniversityofTechnology 3大连理工大学学位论文独创性声明作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外,本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。若有不实之处,本人愿意承担相关法律责任。学位论文题目:作者签名:日期:年月日 大连理工大学专业学位硕士学位论文摘要本文从软件工程的角度论述鸿恒公司的工程预算管理系统的开发,针对公司的工程安装业务的信息化管理需求论述相应的软件设计与实现。论文首先概述本系统开发所必要的技术基础,主要包括Java编程、数据库技术、企业应用软件的开发方法以及工程预算管理方面的重要概念和方法。然后对该预算管理系统的主要需求功能进行了分析。该系统的主要功能包括总账管理功能,具体包括总账初始化、制单、往来处理、结转、账簿查询等功能;预算管理功能,具体包括预算初始化、控制项设置、预算计划分析、预算控制和统计查询等功能;出纳事务管理功能,具体包括现金管理和票据管理等功能。接下来在需求分析的基础上进一步讨论设计方案,根据修分析的业务内容和软件设计的原则,将每个业务模块划分为一组合理的对象单元,每个单元分工处理一类任务。在这一框架下较系统地讨论了该软件的架构、数据库设计和预算台账模块、预算事务管理和出纳事务处理模块的程序组成,描述了相应的内部单元任务和调用关系。最后论述该系统的程序实现与测试问题。该预算信息管理系统的软件采用Java编程语言及和微软公司的通用关系数据库SQLServer2008实现,本章论述了主要模块的程序组成、代行程序段的代码和测试情况。关键词:工程预算;成本控制;管理信息系统-I- 大连理工大学专业学位硕士学位论文DesignandImplementationofEngineeringBudgetInformationManagementSystemforHonghengCompanyAbstractThispaperdiscussesthedevelopmentofHonghengcompany’sengineeringprojectbudgetmanagementsystemfromtheviewofsoftwareengineering.Italsodiscussescorrespondingsoftwaredesignandimplementationaccordingtothecompany’sengineeringprojectbusinessinformationalmanagementrequirement.First,itsummarizesnecessarytechnologyfoundationforthesystemdevelopment,includingJavaprogramming,databasetechnology,industryappliedsoftwaredevelopingmethodsandimportantconceptsandmethodsofengineeringprojectbudgetmanagement.Then,itanalyzesthesystem’smaindemandfunctions.Thissystem’smainfunctionsincludesgeneralaccountsmanagementfunction,whichhasgeneralaccountsinitialization,processing,transmittingandenquiryfunctions;budgetmanagementfunction,whichhasbudgetinitialization,controlitemssettingup,budgetanalysis,budgetcontrolandenquiryfunctions;cashiertransactionmanagementfunction,whichhascashmanagementandticketsmanagementfunctions,etc.Furthermore,itdiscussesdesignscenariosonthebasisofdemandanalysis.Accordingtobusinesscontentsandsoftwaredesignprinciple,itdivideseachbusinessmoduletoagroupofreasonableobjectunits,andeachunitprocessesatypeofassignment.Underthisframe,itsystematicallydiscussesthesoftware’sstructure,databasedesignandmanymodules’programming,internalunitsandtransferrelationssuchasbudgetaccountingmodule,budgettransactionmanagementandcashiertransactionprocessingmodule,etc.Intheend,itdiscussesthesystem’sprogramimplementationandtesting.ThisbudgetinformationmanagementsystemsoftwareusesJavaandMicrosoftSQLServer2008torealize,Thepaperalsodiscussesmainmodules’programming,codingandtesting.Keywords:EngineeringBudget;ExpenseControl;ManagementInformationSystem-III- 大连理工大学专业学位硕士学位论文目录摘要IAbstractII1绪论11.1应用背景简介11.2工程预算管理基础11.3开发技术基础21.3.1基于Java的编程及软件开发21.3.2数据库技术71.4论文的章节概述102需求分析…112.1系统功能概述112.2预算总账管理122.3预算事务管理142.3.1预算基础信息管理142.3.2预算计划管理152.3.3预算控制管理162.4出纳事务管理182.5统计与报表管理182.6小结203系统设计213.1设计架构213.2数据库设计223.3总账管理263.4预算管理273.5出纳管理293.6小结294系统实现304.1实现概述304.2系统初始化314.3总账管理实现32-III- 大连理工大学专业学位硕士学位论文4.4预算管理实现344.5出纳管理实现414.6系统测试42结论44参考文献46致谢…….47大连理工大学学位论文版权使用授权书48-III- 大连理工大学专业学位硕士学位论文1绪论1.1应用背景简介鸿恒工程安装公司对年从事民用及工业建筑领域的安装工程,在国内行业具有良好的技术实力和市场信誉。公司近年来从普通工程安装向高附加值的特种安装工程领域发展,分别成立大型工业机电设备安装事业部、大型通信工程事业部和特种结构安装工程事业部,基于多年积累的技术实力和行业经验全方位地拓展业务渠道,取得了良好的效果。随着公司的业务拓展和经营规模扩大,改进内部管理的要求也随之迫切。处于战略测年的考虑,鸿恒公司的领导决策层立项开始面向企业全局经营管理的企业运营规划和管理信息系统,以先进的信息化技术为支撑构建高水平的管理平台,其中特别紧迫的任务之一,是针对公司在经营专业方向的转型,实现一种精细化的预算管理和成本控制功能,其中预算管理是成本控制的基础,成本控制是预算管理的核心目的,并且在实现这项功能的同时,能够充分融汇本公司的内在管理特点、经营特点和长期的发展战略规划。以上目标构成了本文论述的预算管理系统的基础和应用背景,本文将从软件工程的角度对其中的预算信息管理部分进行较为详细的论述。本文从软件工程的角度论述鸿恒公司的工程预算管理系统的开发,在论述需求分析和设计实现等内容之前,首先概述本系统开发所必要的技术基础,主要包括Java编程、数据库技术、企业应用软件的开发方法以及工程预算管理方面的重要概念和方法。1.2工程预算管理基础工程预算管理在最基本的层面上是为了有计划地控制成本。成本是工程项目运作管理的重要组成部分,指完成一个工程项目预期开支或实际开支的全部费用。该工程项目从建设前期到竣工投产全过程所花费的费用总和,而工程概预算管理是指在工程项目实施建设的全生命周期阶段,根据不同阶段的目的综合运用技术、经济、管理等手段对特定工程项目的工程成本进行全过程、全方位的预测、分析、优化、计算等一系列信息处理功能的总和[1-2]。-47- 大连理工大学专业学位硕士学位论文因此,当前的工程预算管理的概念应该从以下三个方面进行理解。首先,工程预算管理是全过程管理。一般说来,工程预算管理突出的是全过程得工程预算管理,在建设程序的决策阶段、设计阶段、交易阶段、施工阶段、竣工阶段等五个阶段合理计算和确定投资估算价、设计概算价、施工图预算价、合同价、竣工结算价、竣工决算价。但在不同阶段工程预算管理的目的不同,因此其具体的工作内容、工作方法等有所差异。第二,工程预算管理是全方位的,不单是工程建设中承发包双方的工作[3-4]。在工程项目准备期,前期造价规划是在计划项目前期阶段,根据项目生命周期中期望获得的价值、功能等对该项目的成本(造价)进行策划或估算,通过项目建议书及投资匡算、可行性研究及投资估算、初步设计及设计概算和施工图设计及施工图预算等活动来实现造价规划目标。在工程项目建设期,即施工合同签订后工程施工开始至竣工验收交付使用阶段。在合同签订之后的极端,主要是签订合同的当事人对合同价格的控制[5-6]。全过程工程概预算管理的工程项目前期的造价规划涵盖决策阶段、设计阶段的工程概预算管理;工程交易期的合同价格形成主要指招投标阶段的工程概预算管理;而工程实施期的合同价款管理则包含施工阶段工程计量与支付、工程价款调整、索赔等及竣工阶段的工程竣工结算与决算。投资估算在项目建设前期阶段从建立投资决策到工程概要设计时期起重要的作用,同时也是在该阶段编制项目分析论证报告和可行性分析论证报告的组成部分,属于项目决策的重要基础信息。在项目开发与建设过程中投资估算的作用主要包含建议书阶段项目投资估算,可行性分析论证阶段的项目投资估算,项目投资估算,项目资面向财务的资及制定贷款计划信息,编制通信工程项目固定资产投资计划及核算该项目固定资产投资需求额度[7-9]。投资估算编制的定量依据包含工程造价费用构成、估算指标、计算方法及其他计算工程造价的文件。建设工程投资估算划分为静态投资和动态投资两个部分,其中建筑工程费、安装工程费、设备及工器具购置费、工程建设其他费用以及基本预备费中不涉及时间变化因素的部分,作为静态投资[10-11];而设计价格、汇率、利率、税率等变动因素的部分,如涨价预备费,作为动态投资。投资估算主要依据项目总体构思和描述报告进行编制,报告中不同的因素对各项费用有着不同的影响作用,各项费用逐步汇总形成建设投资估算[12-14]。1.3开发技术基础1.3.1基于Java的编程及软件开发-47- 大连理工大学专业学位硕士学位论文在大型企业应用方面,Java语言、C#语言和C++语言都是被广泛应用的高级编程语言。特别是Java和C#这类新型的面向对象编程语言,融合了复杂软件开发的大量新概念核心技术。Java语言是一种高级算法语言,从Sun公司发布以来已经具有广泛的应用,运用Java语言所开发的应用程序从微型智能设备到大规模的企业应用系统,具有很大的功能范围。随着开发的深入和应用的日益广泛,这种语言的编程模型不断程序,软件开发资源不断丰富,目前已经发展为最主流的程序语言之一。与传统的编程语言相对比,Java语言的主要特性有以下几项。它不仅具有结构化编程语言的全部特点,而且全面支持面向对象方法。它在语言层次直接支持多线程编程模型、程序包等大型软件开发机制。此外,和普通的编译型语言不同,Java语言通过虚拟机技术实现中间目标代码编译,因此具有跨平台运行的良好可移植性。作为一种现代编程语言,Java语言在面向对象特性方面在源程序层次具有类、对象和接口元素,支持开发者实现面向对象编程模型。类是具有一组属性和处理函数或称方法封装而成的一个实体,具有相同属性和处理方法的实体在逻辑上表达为一个Java类。对象(object)是类的实例,其中不同的对象具有不同的属性数值,但是方法(函数)对同一类的对象是相同的。程序的类是另一个类的继承类或子类,是指后者的属性和方法也属于前者在基于面向对象的编程模型中,软件的基本组成元素是对象。每个对象属于一个特定的类。类和类之间具有的关系有继承关系、组成关系等,其中继承关系特别重要。Java程序语言支持建立类的继承关系,该机制能够简化基于类的程序的逻辑结构。不仅如此,Java在支持类的继承关系的同时还支持累的方法的多态重载特性,也就是一个子类的方法可以和父类的方法具有相同的形式参数和外部涵义,但是可以具有完全独立的内部实现。通过这种机制使面向对象编程模型可以在内部容纳功能丰富的程序实现同时在外部保持语义逻辑上的一致性,是一种重要的编程特性。支持多任务并发是很多高性能的系统所需要的基本特性,对此Java语言直接在语言层次支持多线程编程模型,为此该语言为编程人员提供以下的内置语言对象。首先是线程对象,该类线程对象的接口对象interface,每个线程对象要关联一个线程接口,编程者通过实现该接口中规定的函数使线程对象在被系统调度时完成特性的响应和计算功能。与多任务机制相伴随的就是相应的信号量及其同步机制,引进信号量的目的是为了在Java程序中实现多线程之间的协同运行,例如强制串行操作、读-写互斥操作、异步-唤醒操作和数据加锁等模式。多线程编程模型具有灵活的多任务并发处理能力,提高了程序的吞吐量。在语言层面直接提供多线程机制具有很多优点。-47- 大连理工大学专业学位硕士学位论文很多高级语言本身没有集成多线程编程模型,在一定程度上限制了多任务处理的能力。而Java在语言层次的多线程模型使多线程编程与线程的类型和运行环境相独立,在任何运行环境中都具有完全相同的多线程语义。其他的高级算法语言如C++语言本身不具有多线程机制,而是通过调用运行环境库或操作系统的内核线程来实现多线程编程,因此多线程的同步等处理含义随程序的运行环境而异,编程和移植都较为复杂,也提高了软件的维护成本。Java程序的的多线程模型完全通过虚拟机JVM进行调用,JVM在底层针对不同的运行环境进行多线程调度的处理合同部,对程序开发者完全透明,简化了编程任务。在跨平台运行方面,很多其他语言是通过静态编译事先生成目标指令文件,而Java语言采取的途径不同,它是通过虚拟机JVM实现跨平台运行。Java程序的源代码在编译时生成虚拟机所识别的中间指令代码,将高级的算法语言程序表达为逻辑操作上完全等价的中间指令序列。中间指令码所针对的处理机模型是一种逻辑模型,通过虚拟机进行定义和描述,虚拟机在实际执行过程中将中间代码进一步解释为特定的硬件处理器上的等价指令,通过这样一种在线编译机制,使Java程序在任何具有相应虚拟机的环境中都可以运行,而且程序的执行结果具有完全相同的语义。目前的Java编程模型已经经历了多阶段的发展和成熟,特别是为面向大规模的应用软件开发,特别是面向各类企业信息化管理应用的大规模应用开发,Java程序已经进行了大量的扩展,特别是在其面向对象的特性的基础上构建了面向中间件、具有组件重用特点的J2EE技术架构,为大型软件开发提供了更加丰富的支持。J2EE技术架构还支持Webservice标准。与其他跨平台的组件技术的目的类似,WebService也是为了实现跨平台的软件执行而建立的技术标准,主要包含组件对象的编程规范、组件对象的接口定义和访问规则、组件之间进行访问可调用所基于的协议。此外WebService还提供了一大类可以直接应用的组件资源。该技术的另一特色是将跨平台技术与Web技术有机地结合起来,通过中间件技术实现一组在因特网上的复杂应用,这些应用以往仅在企业内部的局域网上实现,例如跨平台的工作流技术、长周期事务处理技术等。Java技术的另一特点是编程资源十分丰富,例如较为-47- 大连理工大学专业学位硕士学位论文高级的数据持久性访问技术还有Struts和Hibernate。分布式系统中的命名对象和目录访问组件JNDI。消息访问组件JMS,能够为大型分布式应用系统实现一种离线和异步模式的信息交换机制,以及更为高级的工作流机制。事务处理组件JTS,通过调用它可以实现在分布式系统内部的可靠地软件数据处理机制,实现标准化的事务型语义。邮件消息管理与流转组件JavaMail和编码处理组件JAF。和Java语言相比,J2EE的基础技术主要有两项重要的扩展,一种是Java组件技术,一种是组建的远程访问的接口调用机制。以上软件技术架构如图1.1-1.2所示。图1.1基于中间件的软件技术架构Fig.1.1MiddlewarebasedSoftwareTechnicalArchitectureJ2EE的技术架构针对编写可重用的组件对象建立起一套技术规范,具体包含编写内部属性和函数访问的方法。组件在运行环境中被外部程序或其他对象所调用,对外部调用者传入的参数进行处理和响应。远程对象调用机制是Java组件的远程数据访问的基础,通过该机制,一个主机上的Java对象可以访问因特网上其他主机上的Java对象,调用该远程对象的接口函数,传递参数并且获取计算的结果。RMI是一种基础层次的远程访问协议,基于因特网的TCP协议来实现,RMI的基本工作过程中,首先-47- 大连理工大学专业学位硕士学位论文被调用的组件在分布式系统的目录服务器上注册,作为一个命名对象通过目录服务被发布,以便使访问客户端能够检索到该对象的位置。当某个对象要访问另一个对象的特定方法时,该对象所在的基础环境调用RMI检索该函数接口所在的位置参数如主机网络地和端口号,向本地的RMI代理接口提交全部的函数访问参数。Java程序在本地的代理接口将访问参数进行编码,然后启动TCP协议建立会话连接,将数据传递到远程对象。远程对象坐在的主机运行环境中RMI接口代理首先对接收到的数据进行解码,然后按照端口号将解码后的数据流转到被调用的对象函数。被调用的对象函数对输入的参数进行计算处理,然后将输出的数据返回本地的接口。本地的接口将输出数据进行编码,然后通过TCP会话连接返回数据到调用端。调用端的接口单元将数据进行解码后,按照调用方的端口号将数据流转回调用端的对象组件。远程调用的会话在该状态下全部完成。通过以上的机制,两个远程的对象可以实现和本地访问语义相同的远程调用,全部的远程网络通信和基础数据的编码-解码处理工作都在底层的接口单元组件来完成。为解决Web系统的编程开发,J2EE提供了大量的技术,从软件架构到具体的编程模型都在很充分的基础上做了扩展,主要包括对XML的支持、JSP和JavaServerlet编程等方面。图1.2J2EE/Web多层架构Fig.1.2J2EE/WebMultilayerArchitecture运用J2EE技术开发Web应用系统在总体逻辑上具有三个层次的实现层面,分别是客户端(浏览器端)编程、J2EE应用服务器编程和数据库编程,其中J2EE应用服务器编程进一步划分为Web服务器编程和基于Java的业务逻辑处理编程。-47- 大连理工大学专业学位硕士学位论文在浏览器端,Web应用主要通过嵌入在HTML页面编码中的JSP程序来实现,该程序的主要作用是对页面的各项交互元素的信息进行采集和向Web服务器传输。在J2EE服务器端,一部分程序在Web服务器中运行,将后台数据转换为HTML页面,这种生成动态HTML页面的程序是Serverlet程序。该程序在形式上基本与Java程序类似,基本运行方式是调用Web服务器环境中的其他Java组件和访问数据库。在Web环境中还运行JavaEJB中间件组件,为程序的运行提供基础服务。1.3.2数据库技术数据库管理系统(DBMS)是面向数据的存储与存取管理的专业软件系统,在各类应用中具有广泛的用途。例如在企业管理信息系统中,数据库系统是主要的核心组件,在各种规模的Web应用系统中,数据库系统也是处于后台服务器的最主要的软件系统,为前端的交互处理金新后台的响应和计算。面向企业应用的信息系统是典型的数据密集型应用系统,目前在面向财务的信息处理领域广泛应用组件技术、在线事务处理(OLTP)和客户服务器及MVC开发模式。在面向财务类应用的信息系统中的数据处理特点不仅是规模较大、数据处理所要求的吞吐量大,而且还要求具有较高的可靠性,也就是需要具有在逻辑数据层面的原子性、一致性和持久性,这些要求使得这类系统通常基于某种大型数据库系统,为数据提供统一的访问存取和管理功能。在数据库平台上主要运行SQL程序进行关系数据模型的访问和处理,目前的主流数据库如Oracle、Sybase、Informix等也支持在数据库空间内直接调用Java程序或者java程序直接访问数据库空间内部的数据对象,两者具有紧密的集成。在基于数据库的大型事务处理系统中通过实施软件组件重用技术来改进软件系统的可靠性、功能扩展能力和易维护能力。基于组件技术所开发的组件在概念上是一个专业分工的功能单元,其内部如何实现并不直接表现给外界,外界和组件之间的数据通信通过组件上定义的的功能接口来完成。完整的软件系统通过各种类型的组件单元来集成,组件单元之间在保持接口语义不变的情况下完全具有确定的功能语义,当改变一个组件单元的内部数据结构或算法的时候,只要保持接口调用的语义不变,系统能提的逻辑就完全保持不变。事务处理系统的软件组件在服务器平台上实现了一种大规模的分布式平台运行基础环境,能够支持软件的开发者在不同的层次上建立系统的逻辑功能。图1.3是J2EE对数据库的访问接口组成。-47- 大连理工大学专业学位硕士学位论文图1.3J2EE/数据库存取架构Fig.1.3J2EE/DatabaseDataAccessArchitecture在数据库平台的内部结构不断地集成对新型应用的支持功能。数据库管理系统这一基础平台之上,数据库开发商还不断强化和创新某些特殊功能,以及面向领域应用的新型特性,是数据库从单一的数据管理软件发展到具有特定功能的应用系统。在这些以数据库为基础、面向应用的新类型软件中,有在线多维数据处理与分析(OLAP)、商业智能系统(BI)、决策支持系统、客户关系管理系统、制造资源管理系统、项目管理系统、产品数据管理系统(PDM)等许多新类型。众多的智能化应用是建立在数据库平台上。以目前越来越重要的商业智能和决策支持为例,这类系统一方面集成数据库系统的数据密集型处理能力,同时在基础层次扩展建模和基于模型的计算和仿真分析管理能力,通过调用各种模型的计算(输入输出模型、机理型模型、统计模型、符号推理和演绎计算模型等)来为决策者提供各种决策方案的预期结果,同时通过对评价指标的定量计算和分析来为结果进行性和排序,为决策提供定量的支持。-47- 大连理工大学专业学位硕士学位论文数据库系统目前所广泛应用的领域包括企业信息管理、电子商务、医疗信息管理和工业应用。主流数据库软件已经从管理关系数据模型扩展到具有多种类型的功能,在此基础上派生出来一些更为专业化应用的数据库系统,例如空间数据库,内部的数据管理以三维空间实体及其关系为主,应用于地理信息系统、自动导航等新领域。面向对象数据库,通过运用面向对象设计和编程的概念与技术来实现对复杂信息的封装和集成管理,应用于具有大规模的复杂数据对象的领域,如计算机辅助设计等行业。多媒体数据库,以语音、图像等信息实体基于XML结构为基础进行统一的编码和存取处理操作,应用于Web系统、图形系统、医疗系统和工业监控等领域。工程数据库,基于复杂几何造型的要求建立和管理具有复杂形态的信息实体,应用于计算机辅助设计、计算机辅助制造等领域。锁着应用规模越来越大,数据库系统也不断向超大型化方向发展,同时不断融合成熟的新技术,特别是大型数据库服务器的实现,具有较高的成熟程度,采用大量的现金软件技术来提高数据库系统的性能和可靠性。当前的高性能数据库软件在架构上采用客户-服务器模式,将计算处理能力和数据管理能力集中在服务器端。数据库服务器进程采用多线程结构,适应多处理器平台和高指令带宽处理能力的特点。以Oracle数据库服务器为例,主要的构成部分有磁盘数据管理层,将关系数据模型映射到磁盘的物理存储结构,并支持建立索引结构在加速对数据的检索性能。数据页面管理层将关系数据模型在内存以页面的形式进行管理,并借助于虚拟内存机制对数据的存取进行优化。数据的加锁与同步管理以支持基于关系数据模型的事务语义和逻辑模型。数据输入输出管理包括磁盘访问的宽带输入输出处理机制和面向网络的高效输入输出机制。内部数据缓冲管理为提高数据库服务器进程在内部的调度性能,将数据进行适当的缓存和异步处理调度,提高数据流的存取等效带宽。高级数据管理将高层次的数据模型如多媒体数据模型、空间信息模型映射为中间层次的关系数据模型,再进一步将关系数据模型映射为面向磁盘存储介质低层次的物理数据模型,已实现对扩展数据模型的自动管理与维护能力。1.4论文的章节概述论文第一章汉族要论述开发背景和必要地基础知识与技术方法。第二章到第四章针对系统的软件开发进行论述。第二章对该预算管理系统的主要需求功能进行了分析,主要功能包括系统管理功能,具体包括财务账套的设置、用户设置及权限分配、系统安全备份等功能;总账管理功能,具体包括总账初始化、制单、往来处理、结转、账簿查询等功能;-47- 大连理工大学专业学位硕士学位论文预算管理,包括预算初始化、控制项设置、计划、拨款、查询等功能;出纳事务管理功能,具体包括现金出纳、银行出纳、确认、开票、银行对账、查询等功能;报表管理功能,具体包括报表设置、报表查询功能。第三章在需求分析的基础上进一步讨论设计方案,根据修分析的业务内容和软件设计的原则,将每个业务模块划分为一组合理的对象单元,每个单元分工处理一类任务,在整体上合成为业务模块的设计目标。本章在这一框架下较系统地讨论了该软件的架构、数据库设计和预算台账模块、预算事务管理和出纳事务处理模块的程序组成,描述了相应的内部单元任务和调用关系。第四章论述该系统的程序实现与测试问题。该预算信息管理系统的软件采用Java编程语言及和微软公司的通用关系数据库SQLServer2008实现,本章论述了主要模块的程序组成、代行程序段的代码和测试情况。-47- 大连理工大学专业学位硕士学位论文2需求分析本章从需求分析的角度论述该系统为用户所实现的功能,为软件的开发建立基础。2.1系统功能概述随着鸿恒公司在业务内容和经营规模上的不断扩大,作为公司经营管理的重要工具的预算分析手段也越来越需要同步增强,同时充分使用公司的经营与管理特点。对此,该预算管理系统的开发突出强调满足以下要点。首先是将决策层的预算批复与单位预算计划有机结合,全面反映日常经费,特别是专项经费专款专用、专项专用,在数据上做到前因后果的逻辑关联明确、清晰。将各个经营项目预算管理与会计核算无缝链接,满足本单位内部各部门、各项预算资金的管理,预算控制做到实时、准确、真实。该系统需提供分区模式功能,以满足诸如公司内部多部门(事业部)管理的要求,预算统一管理,会计核算分区管理的要求。实现多级预算管理,以能够适应不同的单位预算管理要求,并在预算中引入预算模板以实现对部门项目预算的精确、模糊控制,使用户对部门预算的实现和控制更加灵活。为了支持公司的预算项目负责人与财务人员能够有效的配合,该系统支持项目经费卡和人员卡管理,项目核算方便、快捷而且更加严密与精准,减少差错,提高工作效率。支持多会计期管理,为此在系统内部缺省划分为15个会计期,其中1-12月份自然月与会计期相等,13-15会计期用于期末结账,以便非常清楚的反映结账过程,方便账务查询、分析。该软件实现与企业的其他信息系统的数据接口,包括:与固定资产管理系统实现接口以自动获取折旧信息和生成固定资产折旧凭证。与银行系统实现接口以开展无现金支付业务,减少现金流量。在其他方面,该系统还实现以下功能特点:费用凭证的打印格式支持灵活的自定义模式,实现带框打印、套打,适应用户对不同凭证格式打印的要求。现金出纳、银行出纳配置为总账系统业务流程的一部分,减少财务人员的重复劳动,在减轻出纳负担的同时,提高出纳的工作效率。出纳票据打印格式自定义,能够适应不同银行、不同票据类型的打印。-47- 大连理工大学专业学位硕士学位论文报表系统提供自定义报表设计、授权查询等功能,取数函数公式丰富,满足不同要求的报表计算数据,具有初步的财务知识的户就能方便、直观地设计出所需要的财务报表。以上是对该系统的功能要点的归纳,在以下各节就其中的几项主要功能,即总账管理、预算管理、出纳管理和报表统计管理等方面较为详细地展开论述和建立相应的用例模型。2.2预算总账管理总账管理功能是概预算管理系统的基础,结合公司的业务结构与财务规则完成组长数据的初始化、制单初始化、往来账务处理、预算数据结转和数据查询等功能。该系统的总账管理功能的总体用例图如图2.1所示。总账管理的基础信息配置、设置与维护功能面向系统管理员,主要进行以下信息的配置管理:(1)根据本公司的预算规则设置帐套(2)根据分区规则设置预算独立分区(3)设置预算科目(4)根据公司的实体核算规则设置预算部门(逻辑预算单元)(5)根据公司的项目核算规则设置核算项目(6)设置预算财务属性,包括货币种类、核算单位的计量单位(不同核算单位可以不同)、成对科目(在费用凭证中需要成对出现的科目)、预算审核策略属性和预算数据接口数据格式等。该模块的第二类功能是费用凭证管理,主要实现凭证信息的录入与修改维护功能、审核功能、登帐和反登帐处理功能、现金流量信息维护功能(在费用凭证分录中对应的现金流量项目进行调整)和通过与固定资产信息系统的数据访问自动生成资产折旧凭证信息的功能。该模块的第三类功能是往来账务处理功能,该类功能属于动态信息处理功能,与该公司的业务处理相一致,需实现的主要事务处理功能有:(1)冲销设置功能,对往来账务数据的核算调整规则进行设置。(2)冲销确认处理(3)手动冲销功能,对往来账务数据记录由用户完成匹配冲销。(4)自动冲销处理,系统根据指定的内部冲销规则对往来数据记录完成匹配冲销处理。-47- 大连理工大学专业学位硕士学位论文总账基础数据管理费用凭证管理冲销确认预算帐套设置结转处理凭证信息维护登帐/反登帐处理数据查询预算业务人员核算项目设置预算科目设置凭证信息审核资产折旧计算与凭证自动生成冲销规则设置手动冲销往来账务管理图2.1预算总账管理用例Fig.2.1GeneralBudgetLegerManagementUse-case-47- 大连理工大学专业学位硕士学位论文该系统在进行自动冲销处理前检查是否核销方存在负数的数据记录,如果有则该系统不进行自动冲销处理,而是待核销方数据手工核销后再进行自动冲销。因为核销负数是通过做赤字凭证产生的,可能是同方向红蓝字金额记录,也可能是被核销方和核销方的负数记录,因此必须首先处理完这些核销方负数以后再完成自动冲销处理的任务。该系统对手工冲销方式按照实际业务情况设置以下几种模式:(1)借贷冲销处理借方记录和贷方记录的数据冲销按照往来明细科目、部门、项目过滤后向用户显示。哦用户选择借、贷方对应业务后确认即结束该对应关系的冲销。该系统的缺省处理模式是借贷冲销,其他方式需选择确定。(2)借方冲销处理在该模式中会计人员在制作凭证和处理往来错误凭证业务时使用同方向红字功能。这时,应该冲销的记录都在借方,因此需要用借方冲销功能来核销此对应记录。(3)贷方冲销处理该模式的处理方式同上,但其业务是基于贷方凭证。该系统的冲销确认功能用来作反冲销,不管是自动冲销还是手工冲销,其对应关系是可以返回的,因为在手工冲销状态下对应关系有可能被对应错,在此可以做返回动作。总账事务处理的第四类功能是对预算账务数据进行跨会计周期的结转处理,具体功能包括设置自动结转关系、生成结转凭证和管理会计周期的切换规则。总账管理模块的信息查询功能包含对多种类型数据的条件查询和报表生成。初始化管理功能实现对科目期初余额在下一周期开始前进行调整,初始化校验处理功能。往来数据(记录和余额)的初始化处理以及科目余额初始化处理,后者针对非往来科目数据记录的余额来进行。2.3预算事务管理本节从预算基础数据管理、预算计划管理和拨款管理等几项功能进行分析。2.3.1预算基础信息管理预算基础管理管理功能对实施预算计划与控制功能设置必要的变量属性和参数,具体功能有下面这些。(1)设置预算选项,例如是否启用余额结转设置和主管预算。-47- 大连理工大学专业学位硕士学位论文(2)设置与维护预算的控制属性(3)设置预算控制规则的模板(4)在预算控制规则基础上设置超值预算控制属性和参数(5)设置主管岗位的下辖预算项目(6)在建账是设置预算科目的初始金额(7)设置预算经费类型属性以上也代表来了该系统对预算信息的设置顺序。在设置预算控制项组时,预算控制项应属于预算控制项组内。组一般用会计科目的总账科目代码设置,表示控制项组下的控制项在哪一个会计科目中使用,控制项组一般用四位数字代码设置。需要注意的是,在控制项组里有是否允许预算拨款的选项,选勾的表示该组里的预算控制项可以进行预算拨款设置,否则不允许拨款,要根据控制项所在的科目性质进行设置。用总账科目建组,在组下设控制项,控制项设置不允许跨越组,项目则不跨越总账科目核算(非拨款项目核算的科目及往来科目除外)。2.3.2预算计划管理预算计划管理功能的核心是针对指定的项目编制预算清单和进行审核,因此主要的单元功能有创建经费计划文件,编制计划文件,审核与确认预算文件一级预算查询功能。预算计划的模板是项目在核算过程中将同一个组里的预算控制项根据实际需要设置成一个或多个模板组,以适应不同的费用项目在同一个总账科目中使用不同的科目范围。将项目关联不同的预算模板,就能达到科目和预算所需要控制的效果。为需要预算控制的项目配置预算模板,每一个项目必须关联一个模板,否则项目不能进行预算拨款和项目预算执行控制。部门预算控制规则分为精确控制和模糊控制两类。精确控制规则是指预算额度控制到某一控制项所对应的明细科目。模糊控制规则是指预算额度控制到控制项组下的所有模糊设置的控制项所对应的明细科目。例如,某一项目所对应的控制项组下面有一个控制项是精确控制,其他控制项是模糊控制,则在预算拨款中,该精确控制项的预算值是一个确定的数值,其他控制项则是一个合并的预算值。-47- 大连理工大学专业学位硕士学位论文部门预算超支额度管理的涵义是项目预算经费按计划数已经执行完毕后不能再报销费用。在不进行预算拨款的情况下,在请示预算管理人员同意后补拨款的条件下,通过该系统临时分配一个额度以使凭证能够完成审核处理,但此时其预算余额已为负数,待预算指标正式下达后系统将该项目设置的超支额度撤销,否则该项目既得到预算额度又可以超支额度以至造成预算失控。2.3.3预算控制管理公司用户在通过该系统进行预算控制的关键途径是对拨款进行管理,因此该系统的预算控制功能的内部管理任务实际上是针对拨款事务进行控制。拨款管理的任务处理包括日常维持性经费和专项项目经费两大部分,也就是基本支出和项目支出。通过项目与经费的关联,从总预算拨款到岗位预算,再到领导项目预算,最后从领导项目预算拨款到部门项目。总预算直接拨款到部门和项目。两种拨款方式都会自动对应到项目的所属经费,系统对不同类型的经费从属关系保持分明,以从源头上保证严格按照专款、专项和专用的原则。该系统实现的具体拨款事务有以下类型:(1)主管岗位拨款处理(2)岗位预算拨款处理(3)主管岗位调拨处理(4)部门预算调拨处理与预算控制相配合的重要功能是预算信息的查询功能,该系统所需实现的查询模式有多种形式。例如总预算查询,查询条件有会计年度,类型(如选择基本支出、项目支出、全部)、会计期(用户可指定任意的查询范围)、经费编号或经费编号的查询范围,在此条件下系统以图表形式输出:主管预算信息;总预算凭证明细;主管岗位凭证明细;岗位预算凭证明细;部门预算凭证明细;非拨款项目预算调整凭证明细(非拨款项目预算调整是指不通过拨款产生预算的同类性质项目之间的预算调拨)部门预算查询模式有汇总查询、明细查询、项目组合查询。对于部门汇总预算查询,用户可以会计年度、会计期区间按部门、按项目、按控制项单独选项查询,也可以多项条件组合查询。预算执行情况汇总查询功能则使用户按当年、历年、跨年度实现数据查询。-47- 大连理工大学专业学位硕士学位论文该系统的预算事务管理功能的用例模型如下图2.2所示。预算明细查询和报表生成项目预算控制规则及参数设置预算计划管理预算基础信息管理预算管理人员业务员经费设置岗位预算拨款控制预算控制/拨款管理预算审核-确认总预算拨款控制部门预算拨款控制部门预算控制规则及参数设置岗位预算控制规则及参数设置计划编制预算调整图2.2预算管理功能用例Fig.2.2BudgetProcessingUse-case-47- 大连理工大学专业学位硕士学位论文2.4出纳事务管理出纳事务处理模块主要面向财务人员在现金事务和银行科目管理中的业务处理,其中现金出纳事务包含进行确认收款和付款以及期末点库轧账。银行出纳则是确认收入、支出开票、期末银行对帐、核销、出银行调节表等事务。该模块包含的单元功能有四类:出纳事务的基础信息管理,主要实现针对账户的处理规则和参数设置功能。票据事务处理,包含现金凭证信息处理、票据审核确认处理、票据重开处理和打印等功能。对账事务处理,这是该模块的主要功能任务,具体包括:针对银行账户的数据录入功能;普通冲销处理,其中银行账务数据一对一冲销;一对多冲销处理;账户借贷冲销处理;反冲销处理。该系统在自动冲销模式中,银行一方的数据与单位账务一方数据根据票据编号进行匹配,两者一一对应则自动生成冲销凭证。  在手工冲销模式中,用户手工勾兑银行相关的已登账数据和银行对账数据,可以是多对多的关系,单位账务一方可以红字、蓝字数据对应冲销,保存生成冲销凭证时需要校验借贷平衡。第四类功能是与出纳事务处理有关的辅助功能和数据查询功能,例如生成未达账调节表和出纳票据统计表等信息。考虑到存在未冲销记录(在途资金)的情况,每月的银行科目余额和对应的银行账户实际余额一般都不会相同,但双方的余额调节以后的金额应该相等。未达账调节表管理功能按月、银行科目(账号)生成银行调节表用于与银行对账,并且可以生成当年、当月或以前月份的银行调节表。出纳事务处理功能的用例模型如图2.3所示。2.5统计与报表管理报表管理功能由报表设置和报表查询两个模块组成,主要解决用户完成会计核算业务后,系统从各种不同的角度汇总分析各类帐户的发生情况。报表设置功能对各种报表格式可以在系统里生成设置各类取数函数,也可以从Excel表格里生成,按格式-47- 大连理工大学专业学位硕士学位论文设置好取数函数公式然后导入到系统里。报表查询功能则支持用户按日期、会计期、未过账等条件生成报表数据。软件工程是开发软件系统的一组方法和工具,目的是有效与可靠地构建满足要求的软件系统。软件工程从早期的模块化开发方法,发展到以面向对象技术和组件重用技术为基础的大规模的软件系统开发方法,积累了大量的实践成果和富有成效的概念、理论和方法,是开发任何应用软件不可缺少的指南。随着用户的实际需求越来越复杂,软件系统特别是大型应用软件系统的开发所面临的风险因素、不确定性因素越来越多,影响到软件系统的成功。这些风险因素有以下几类。在功能需求方面,复杂应用系统在开发的初期可能面临不完整、不准确的需求特性,而这种不准确性可能在开发的后期才充分暴露出来,使系统的修正和更新的成本过高、进度严重滞后,影响了软件的交付。在设计和采用的技术方面,可能对新技术的难度与风险估计不足或者缺少充分验证的手段,影响了软件达到预期的性能指标。在具体编程和测试方面,可能由于编程模型的语义缺陷、测试工具能力不足或者缺乏有效率的验证工具,导致未能充分排出程序故障而使软件系统存在隐患和缺陷。此外,在开发过程汇总对于所采用的技术经验不足、资源不充分等也是导致软件开发失效的风险因素。大型应用软件的开发是一种项目管理过程,其中既有技术性的因素,也有管理性的因素,多重因素交错作用决定软件项目的成功或者失败。因此,软件工程监理的不仅是一组技术,也是一组运用和组织和谐技术的管理方法,包括如何评价这些技术的实际成效、在每个开发阶段如何评估项目的进度与质量状态等。软件工程将软件的开发作为一种工程型的过程,包括完成一组特定的任务,这些任务的类型有需求分析,目的是针对软件系统构建一种面向操作者的视角的输入输出行为描述。软件设计,目的是对软件构建一种内部的单元划分、单元之间如何相互调用和协同的技术架构,以及单元内部的数据结构和算法。软件编程,目的是对软件系统构建一种可执行的程序,将需求分析的目标通过程序的运行行为准确地表现出来,达到预期的应用目的。软件测试,目的是识别所实现的软件程序是否存在不满足预期需求的情况、验证该软件确实具有需求分析所要求的全部特性。较为早期的软件工程直接按照以上的任务类型划分开发阶段,这就是典型的线性开发模型(瀑布模型)。线性开发模型的特点是顺序化,每个阶段完成特定的任务,后续阶段在此基础上进一步完成相应的任务。这样一来,如果前一个阶段的成果不充实、开发质量有缺陷,会直接影响后续阶段的开发质量。线性模型的另一个不足是测试任务集中在后期开发阶段,这就使得软件在需求分析、设计和编程方面的缺点和错误要在交完阶段才暴露出来,更正的成本很大而且易于延误开发进度。这些不足对功能复杂、规模较大的软件开发表现尤其显著。因此,线性开发流程适合于功能和架构较为成熟的软件系统的开发,而对于创新性较高的软件则有效控制风险的能力较弱,项目失控的机律较高。为了改善这些不足,软件工程研究界建立了快速原型开发方法。这一方法在初期阶段忽略不重要或对用户价值不大的功能,围绕最重要的功能特性构建一个基本满足要求的系统原型,目的是接受用户的评价,在此基础上进一步改进和完善软件功能,在基本确定最主要的需求特性后,再展开详细的设计和编程实现。快速原型开发方法对某些类型的软件开发十分适合,后期的改进通过渐进增加新功能特性来形成一种螺旋上升的完善过程,最终接近和达到预期的软件特性目标。软件开发的方法与过程管理进一步深化,融合各种类型的方法、技术与优点,在九十年代形成了较为成熟的方法。该方法的基础是面向对象的软件编程模型。面向对象模型将软件系统作为相互作用的对象,对象之间的作用是指一个对象通过接口对另一个对象的调用。通过对象来封装一组属性和行为函数,这些属性和行为函数的目的是针对某种特定的完整功能实现某种处理,接口函数的行为描述该类服务的输入输出语义,而具体的处理算法在对象内部实现。面向对象方法的本质优点是将如何做和做什么明确区分开,也就是将软件的操作性语义和说明性语义明确分离,由此简化了软件的设计与编程模型。按照面向对象的观点进行软件开发,任何软件系统都能够以对象为单元进行划分,每个复杂的对象相当于一类子系统,子系统又可以通过一组对象组成,因此软件的开发在抽象的层次上关注对象之间的调用关系和接口语义,然后逐步对每个层次展开接口内部的实现,这样的结果是使软件开发的复杂程度在每个层次上都近似均衡,通过不断的抽象-细化来达到最终的目标。面向对象方法不仅软件分析和设计的复杂性得到有效控制,而且也简化了软件维护的复杂性。大型软件系统的升级与运行维护一直是成本较高的任务,面向对象方法由于形成基于组件的软件系统架构,运行维护任务对程序功能的更新归结为对软件对象内部实现机理的更新和替换。由于软件通过对象之间的接口调用来构成,因此只要保持接口语义稳定,软件组件可以被任意替换而不影响系统整体的逻辑语义,从而使软件维护的工作大为简化。软件工程的高度发展,不仅逐步完善了开发方法,也创造了有价值的开发工具。通行的软件工程的工具围绕某种语言的编译器来组织,如C++、Java、Ada等,目的是为了结合软件开发的工具来提供完整的开发环境,但是这些开发环境的功能已经远远超越了传统的编译器,成为软件工程开发环境和平台,从需求分析到软件维护,在全生命周期的范围内支持复杂软件的开发。这些典型的软件工程工具有以下几类。需求分析工具用以描述和评估软件的功能是否满足用户的预期,主要的模型有用例模型。设计工具通过一组模型来描述软件系统的组织架构、单元内部结构、对象之间的接口调用关系和对象之间的协同关系。主要模型有的类图模型、时序图模型,状态图模型、协作图模型等。编程与调试工具在主流开发环境中除了对算法语言的编译,还通过宏、类、框架、程序包等机制提供对语言功能的扩展,丰富了算法语言的内在特性。调试工具则包括源程序调试器、变量观测工具、资源检查工具、性能测试工具等。维护工具,包括程序安装向导、升级接口、组件替换和注册工具等。此外,主流的开发环境还提供高效的源程序版本管理工具,使程序文件自动保持版本一致。软件工程领域针对复杂软件的开发需求,发展出很多新的分支,如针对需求分析与评估方法的需求工程、针对架构分析和设计的软件架构设计和软件重用技术、针对如何解决软件质量的软件可靠性和软件质量管理方法。软件质量与可靠性研究对软件开发过程中的可靠性度量指标与相应的资源如测试时间、编程时间等建立一组基于半经验的定量关系,即可靠性模型,通过这组模型预计软件在特定的分院配置下能够达到的质量水平,或者要从特定的状态达到质量目标需要再投入多少资源。软件质量的这种定量研究方法在欧美发达国家已经取得很大成果。综上所述,软件工程是解决复杂软件开发过程中的技术与管理问题的系统化的方法,提供了切实可行的技术与工具,保障软件系统的开发以尽可能合理的资源成本达到预期的目标。软件工程的目的是解决各类应用领域的软件开发的挑战星任务,这些应用领域为软件工程的发展提供了丰富的问题,促进了软甲工程方法和技术的成熟,在理论和实践层面取得了重大的成果。软件工程是开发软件系统的一组方法和工具,目的是有效与可靠地构建满足要求的软件系统。软件工程从早期的模块化开发方法,发展到以面向对象技术和组件重用技术为基础的大规模的软件系统开发方法,积累了大量的实践成果和富有成效的概念、理论和方法,是开发任何应用软件不可缺少的指南。随着用户的实际需求越来越复杂,软件系统特别是大型应用软件系统的开发所面临的风险因素、不确定性因素越来越多,影响到软件系统的成功。这些风险因素有以下几类。在功能需求方面,复杂应用系统在开发的初期可能面临不完整、不准确的需求特性,而这种不准确性可能在开发的后期才充分暴露出来,使系统的修正和更新的成本过高、进度严重滞后,影响了软件的交付。在设计和采用的技术方面,可能对新技术的难度与风险估计不足或者缺少充分验证的手段,影响了软件达到预期的性能指标。在具体编程和测试方面,可能由于编程模型的语义缺陷、测试工具能力不足或者缺乏有效率的验证工具,导致未能充分排出程序故障而使软件系统存在隐患和缺陷。此外,在开发过程汇总对于所采用的技术经验不足、资源不充分等也是导致软件开发失效的风险因素。大型应用软件的开发是一种项目管理过程,其中既有技术性的因素,也有管理性的因素,多重因素交错作用决定软件项目的成功或者失败。因此,软件工程监理的不仅是一组技术,也是一组运用和组织和谐技术的管理方法,包括如何评价这些技术的实际成效、在每个开发阶段如何评估项目的进度与质量状态等。软件工程将软件的开发作为一种工程型的过程,包括完成一组特定的任务,这些任务的类型有需求分析,目的是针对软件系统构建一种面向操作者的视角的输入输出行为描述。软件设计,目的是对软件构建一种内部的单元划分、单元之间如何相互调用和协同的技术架构,以及单元内部的数据结构和算法。软件编程,目的是对软件系统构建一种可执行的程序,将需求分析的目标通过程序的运行行为准确地表现出来,达到预期的应用目的。软件测试,目的是识别所实现的软件程序是否存在不满足预期需求的情况、验证该软件确实具有需求分析所要求的全部特性。较为早期的软件工程直接按照以上的任务类型划分开发阶段,这就是典型的线性开发模型(瀑布模型)。线性开发模型的特点是顺序化,每个阶段完成特定的任务,后续阶段在此基础上进一步完成相应的任务。这样一来,如果前一个阶段的成果不充实、开发质量有缺陷,会直接影响后续阶段的开发质量。线性模型的另一个不足是测试任务集中在后期开发阶段,这就使得软件在需求分析、设计和编程方面的缺点和错误要在交完阶段才暴露出来,更正的成本很大而且易于延误开发进度。这些不足对功能复杂、规模较大的软件开发表现尤其显著。因此,线性开发流程适合于功能和架构较为成熟的软件系统的开发,而对于创新性较高的软件则有效控制风险的能力较弱,项目失控的机律较高。为了改善这些不足,软件工程研究界建立了快速原型开发方法。这一方法在初期阶段忽略不重要或对用户价值不大的功能,围绕最重要的功能特性构建一个基本满足要求的系统原型,目的是接受用户的评价,在此基础上进一步改进和完善软件功能,在基本确定最主要的需求特性后,再展开详细的设计和编程实现。快速原型开发方法对某些类型的软件开发十分适合,后期的改进通过渐进增加新功能特性来形成一种螺旋上升的完善过程,最终接近和达到预期的软件特性目标。软件开发的方法与过程管理进一步深化,融合各种类型的方法、技术与优点,在九十年代形成了较为成熟的方法。该方法的基础是面向对象的软件编程模型。面向对象模型将软件系统作为相互作用的对象,对象之间的作用是指一个对象通过接口对另一个对象的调用。通过对象来封装一组属性和行为函数,这些属性和行为函数的目的是针对某种特定的完整功能实现某种处理,接口函数的行为描述该类服务的输入输出语义,而具体的处理算法在对象内部实现。面向对象方法的本质优点是将如何做和做什么明确区分开,也就是将软件的操作性语义和说明性语义明确分离,由此简化了软件的设计与编程模型。按照面向对象的观点进行软件开发,任何软件系统都能够以对象为单元进行划分,每个复杂的对象相当于一类子系统,子系统又可以通过一组对象组成,因此软件的开发在抽象的层次上关注对象之间的调用关系和接口语义,然后逐步对每个层次展开接口内部的实现,这样的结果是使软件开发的复杂程度在每个层次上都近似均衡,通过不断的抽象-细化来达到最终的目标。面向对象方法不仅软件分析和设计的复杂性得到有效控制,而且也简化了软件维护的复杂性。大型软件系统的升级与运行维护一直是成本较高的任务,面向对象方法由于形成基于组件的软件系统架构,运行维护任务对程序功能的更新归结为对软件对象内部实现机理的更新和替换。由于软件通过对象之间的接口调用来构成,因此只要保持接口语义稳定,软件组件可以被任意替换而不影响系统整体的逻辑语义,从而使软件维护的工作大为简化。软件工程的高度发展,不仅逐步完善了开发方法,也创造了有价值的开发工具。通行的软件工程的工具围绕某种语言的编译器来组织,如C++、Java、Ada等,目的是为了结合软件开发的工具来提供完整的开发环境,但是这些开发环境的功能已经远远超越了传统的编译器,成为软件工程开发环境和平台,从需求分析到软件维护,在全生命周期的范围内支持复杂软件的开发。这些典型的软件工程工具有以下几类。需求分析工具用以描述和评估软件的功能是否满足用户的预期,主要的模型有用例模型。设计工具通过一组模型来描述软件系统的组织架构、单元内部结构、对象之间的接口调用关系和对象之间的协同关系。主要模型有的类图模型、时序图模型,状态图模型、协作图模型等。编程与调试工具在主流开发环境中除了对算法语言的编译,还通过宏、类、框架、程序包等机制提供对语言功能的扩展,丰富了算法语言的内在特性。调试工具则包括源程序调试器、变量观测工具、资源检查工具、性能测试工具等。维护工具,包括程序安装向导、升级接口、组件替换和注册工具等。此外,主流的开发环境还提供高效的源程序版本管理工具,使程序文件自动保持版本一致。软件工程领域针对复杂软件的开发需求,发展出很多新的分支,如针对需求分析与评估方法的需求工程、针对架构分析和设计的软件架构设计和软件重用技术、针对如何解决软件质量的软件可靠性和软件质量管理方法。软件质量与可靠性研究对软件开发过程中的可靠性度量指标与相应的资源如测试时间、编程时间等建立一组基于半经验的定量关系,即可靠性模型,通过这组模型预计软件在特定的分院配置下能够达到的质量水平,或者要从特定的状态达到质量目标需要再投入多少资源。软件质量的这种定量研究方法在欧美发达国家已经取得很大成果。综上所述,软件工程是解决复杂软件开发过程中的技术与管理问题的系统化的方法,提供了切实可行的技术与工具,保障软件系统的开发以尽可能合理的资源成本达到预期的目标。软件工程的目的是解决各类应用领域的软件开发的挑战星任务,这些应用领域为软件工程的发展提供了丰富的问题,促进了软甲工程方法和技术的成熟,在理论和实践层面取得了重大的成果。票据管理出纳事务基础信息管理出纳人员业务员票据确认正常冲销处理对账处理票据重开期初数据设置银行数据录入账户及科目信息维护出纳规则设置(现金-账户-审核状态关系)票据生成借贷冲销处理生成未达账调节表账务对冲处理图2.3出纳事务管理功能用例Fig.2.3CashingTransactionProcessingUse-case-47- 大连理工大学专业学位硕士学位论文2.6小结本章对鸿恒公司的预算管理系统的主要需求功能进行了分析,主要功能包括:系统管理功能,具体包括财务账套的设置、用户设置及权限分配、系统安全备份等功能;总账管理功能,具体包括总账初始化、制单、往来处理、结转、账簿查询等功能;预算管理功能,具体包括预算初始化、控制项设置、计划、拨款、查询等功能;出纳事务管理功能,具体包括现金出纳、银行出纳、确认、开票、银行对账、查询等功能;报表处理,具体包括报表设置、报表查询功能。-47- 大连理工大学专业学位硕士学位论文3系统设计3.1设计架构该系统的软件设计采用客户服务器结构,客户端主要完成与用户的交互和视图显示,复杂的事务处理请求均从客户端模块提交服务器端模块来处理。服务器端的核心模块在业务上划分为:总账信息管理模块预算事务处理模块出纳事务处理模块除此之外,该系统还包含一组辅助性的功能模块,主要针对系统的访问安全控制管理、运行配置管理和与其他系统的数据接口管理。该系统的软件架构的逻辑模型如图3.1所示。服务器端总账信息管理视图窗口预算事务管理出纳事务处理预算基础信息管理预算计划管理预算控制管理图3.1软件架构模型Fig.3.1SoftwareArchitectureModel-47- 大连理工大学专业学位硕士学位论文该系统的设计遵循以下原则。首先是需求驱动,也就是设计方案的依据完全参照需求分析,在功能需求的基础上进行设计单元的划分,从用户的角度出发进行设计方案的匹挂机,特别是在出现技术和功能的冲突时,明确基于用户需求来作出合理的决策与均衡折中。第二是实用性,也就是在保证系统达到需求目标的前提下,尽可能采用稳妥成熟的技术方案,包括架构方案、编程模型和工具等,同时尽可能采用在业界广泛运用的标准化的软件技术。第三是在设计阶段就需要较充分考虑软件的运行维护性。因为目前的软件系统规模较大,同时业务本身也在不断发展的变化之中,因此有必要在设计开发阶段就考虑到该系统在未来需要的升级、功能扩展等要求,在设计中通过合理的模块划分、调用访问关系、接口关系等简化这些维护工作。目前较为复杂的软件设计通常采用面向对象方法来进行,首先通过合理划分来确定系统中的对象单元,这些单元既表达一定相对独立的功能实体,也代表在软件内部可重用的对象。然后确定对象内部的属性、状态和外部的访问接口,接口中的调用方法,包括参数的含义和输出的涵义。对象的功能完全在内部实现,只要保持接口的语义不变,在升级和更新实现方式时就可以保持系统的整体逻辑功能的稳定,因此特别有利于复杂软件的维护。在对象的外部,开发者需要确定对象之间的数据访问关系和功能调用关系,通过相应的模型来加以描述以便于为编程阶段建立含义准确的参考模型。该系统按照以上原则完成设计工作,并通过卖相对象的方法来建立可重用的对象单元,提高系统的设计和实现的效率。以下几节分别从数据库平台和主要业务模块的设计方面较为详细地进行论述。3.2数据库设计该系统的数据库设计采用通用关系数据库来建立完整的数据管理模型。该系统数据库的主要关系数据的ER图如图3.2。各主要关系表的逻辑结构和字段数据类型以及在应用中的含义在以下各节对各个子系统论述时描述。该数据库方案中的核心数据实体是预算单元和预算信息。预算单元是对在实际业务中具有预算计划和接受预算管理的实体对象的统一描述,具体有部门、项目和岗位。每个预算单元都关联一组预算计划。在数据库中的其他数据表大部分是围绕以上核心的数据对象来进行组织,基于非冗余的原则进行独立的表达,同时又通过引用关系来完整地表达该系统的整体的信息。-47- 大连理工大学专业学位硕士学位论文概算定额信息表预算单元明细表明细拨款信息表调整记录表调整拨款总账信息表总账预算控制规则表确认科目费率信息表分项预算科目信息表预算预算定额信息表凭证信息表凭证1nn111n111n1n1n1nn1预算单元主表账务往来信息表往来冲销事务信息表冲销预算信息主表预算属性11n概算临时费用信息表分配1n1n11n结转处理信息表结转n1图3.2数据库设计方案ER图Fig.3.2ERDiagramforDatabaseDesignScheme在该系统中,考虑到在实际管理中对费率的设置需要随时间(例如年度变化),并且处于管理的实际需求可能对特殊预算单元设置特殊的费率,因此费率数据没有设计成与预算科目关联而是设计成与预算单元相关联。-47- 大连理工大学专业学位硕士学位论文表3.1预算单元信息主表Tab.3.1BudgetUnitInformationMainTable涵义数据类型字段名预算单元标识主键16字节字符串PrjId预算单元名称32字节可变长字符串PrjMc验收标准32字节可变长字符串PrjGg单元类型整数PrjLx计划验收时间日期YsSj计划起始时间日期YxZq合同档案编号外键16字节可变长字符串PrjDd计划金额整数JHJe备注256字节可变长字符串Bz表3.2预算单元明细表Tab.3.2DetailedBudgetInformationTable涵义数据类型字段名记录编号主键整数PrjBhId单元标识外键16字节字符串PrjId预算源编号外键8字节字符串GyId责任部门编号外键4字节字符串ZrBmId当前任务负责部门外键整数YxZB当前任务状态整数WZT当前任务类型整数QtWJl任务记录时间日期QtYJl记录人外键16字节字符串QtRJl记录说明256字节可变长字符串QtSm表3.3总账信息表Tab.3.3GeneralLegerInformationTable涵义数据类型字段名记录编号主键16字节可变长字符串SbInId总账编号24字节字符串GdID计量单位16字节字符串GdDW记录等级整数DyDJ预算组编号整数DyId类型整数SBLX-47- 大连理工大学专业学位硕士学位论文表3.3总账信息表(续)Tab.3.3GeneralLegerInformationTable(continued)涵义数据类型字段名审核人外键8字节字符串SBID凭证或记录单号32字节字符串BJID所属明细项外键整数ZYID执行时间日期JHSJ执行状态整数DWZY是否停工布尔JPX科目性质整数JJPRJID科目编号6字节变长字符串SFGH费用审批文号12字节变长字符串ZXBMID表3.4往来处理记录表Tab.3.4TransactionsProcessingRecordsTable涵义字段名数据类型记录编号主键SCIstId16字节字符串所属明细项外键SCId整数币种外键SCGyId2字节字符串审核编号SCId整数期初余额SCSt实数处理日期SCRq日期费用金额SCJe实数(整数部分8位,小数部分2位)结转编号SCDbJl16字节字符串备注SCBz256字节字符串表3.5临时费用信息表Tab.3.5TemporaryCostTable涵义数据类型字段名记录号主键整数PRJMTId费用名称32字节可变长字符串PRJMTMc指派类型整数PRJMTGg发生日期日期PRJMTLx所属明细项外键整数PRJMTSbId实际金额(元)实数(整数部分8位,小数部分2位)PRJMTDaId审核记录号外键整数PRJMTlid-47- 大连理工大学专业学位硕士学位论文表3.6结转信息表Tab.3.6TransferInformationTable涵义数据类型字段名记录编号主键16字节字符串QTIstId所属明细项外键整数QTId批次编号外键8字节字符串QTId结转单位整数QTSt结转时间日期QTRq结转金额实数(整数部分8位,小数部分2位)QTJe对方科目16字节字符串QTDbJl备注256字节字符串QTBz以上是主要几项数据表的设计实例,限于篇幅在此略去其他数据表的完整描述。3.3总账管理总账管理模块在内部的程序单元在设计上划分为这样几类对象:(1)总账数据加载单元该单元负责与数据库平台连接,建立数据库访问会话和根据处理要求从数据库提取数据。数据加载的条件由调用方输入,以字符串类型的SQL语句来表达。(2)数据一致性预处理单元该单元的任务是对总账数据进行校验,对因为时间不同步而在上次没有完成处理的事务,首先调用对应的事务单元完成处理,以保证数据一致性和完整性。(3)登帐和反登帐处理单元该类单元安好业务逻辑进行登帐和反登帐处理,处理后的数据暂时保存在临时数据表中。(4)冲销处理单元该类单元包括自动冲销处理和手动冲销处理两类。自动冲销处理单元根据冲销处理规则及其参数,对临时数据表中的记录进行匹配,满足匹配条件的数据记录被实施冲销处理并更新数据记录。手工冲销处理单元是被客户端的用户显式请求处理冲销,在完成后将处理事务记录到日志数据表中并在审核生效后更新数据库表。以上的全部总账数据处理单元在完成任务后,在此调用数据加载单元向数据库服务器写回更新的总账信息,然后关闭数据会话连接。图3.3描述这些单元的调用关系。-47- 大连理工大学专业学位硕士学位论文总账数据加载数据一致性预处理反登帐处理冲销确认登帐处理临时数据表数据库访问接口手工冲销处理自动冲销图4.3总账数据处理单元Fig.4.3GeneralLegerDataProcessingUnits3.4预算管理预算管理模块的核心信息是预算计划,它是实现预算管理和预算控制的基础和依据。该模块对预算管理的基本功能,从用户的角度划分为预算基础信息管理、预算计划管理和预算控制管理。从软件设计的角度,预算基础信息管理完全在数据库层次通过配置的数据表内的规则信息和参数信息来表达,主要是在运行任务过程中被调用。在应用服务器模块中的预算管理主要考虑预算计划和控制单元。-47- 大连理工大学专业学位硕士学位论文预算计划和控制在设计的层次上可以适当结合,两者都是以预算计划为核心,前者的任务是生成的分析预算计划,目的是生成合理的预算信息,而后者是读取预算计划,根据预算信息在拨款事务的层次进行控制。出于以上考虑,预算管理模块的程序单元划分为数据输出管理单元、数据输入管理、预算主程序单元和模型分析单元,主要的数据对象是数据输入队列,数据输出队列和预算规则数据表。设计数据输入队列和数据输出队列的目的是对编制和分析预算计划过程中需要处理的各类数据提供一种统一的管理环节,这样对各种不同类型和来源的数据处理就通过实现在数据输入队列管理单元和输出管理单元中的函数方法来进行,在逻辑上将预算计划的处理任务一致化,使系统具有良好的整体逻辑性。预算处理主单元实现围绕预算的管理任务,主要是分析和控制任务。前者通过调用分析模型来完成,后者通过实现在主单元内部的拨款控制函数来完成。在预算项目执行过程中该单元被调用来进行款项分配,这时该类接口函数即被调用。数据输入队列预算处理主单元数据输出队列数据输入队列管理模型分析预算规则表序号条件例程数据输入队列管理图3.4预算管理程序单元组成Fig.3.4BudgetManagementProgramUnits-47- 大连理工大学专业学位硕士学位论文预算模型分析单元通过一组接口来包装预算分析程序,主要是针对特殊项目的收益和特殊成本科目进行测算预评估,在访问预算规则数据表的特殊类型规则时该模型单元被自动启动,完成计算后将数据写入输出队列,提供预算主程序进行后续的预算编制和生成拨款控制计划。以上模块的程序单元组成如图3.4所示。3.5出纳管理出纳事务管理主要通过一组较小的SQL存储程序单元直接在数据库服务器端实现,供具体事务流程的特定的环节来调用,出纳事务的基础信息管理例程实现针对账户的处理规则和参数设置功能。因此,该模块的设计特点是通过一个例程集合来实现针对外部事务处理的调用服务。票据事务处理例程组包含现金凭证信息处理例程、票据审核确认处理例程、票据重开处理例程等。对账事务处理例程组实现该模块的主要功能任务,具体包括针对银行账户的数据录入校验例程,普通冲销处理例程对银行账务数据一对一冲销,一对多冲销处理例程,账户借贷冲销处理例程和反冲销处理例程等。3.6小结本章在需求分析的基础上进一步讨论设计方案,根据修分析的业务内容和软件设计的原则,将每个业务模块划分为一组合理的对象单元,每个单元分工处理一类任务,在整体上合成为业务模块的设计目标。本章在这一框架下较系统地讨论了该软件的架构、数据库设计和预算台账模块、预算事务管理和出纳事务处理模块的程序组成,描述了相应的内部单元任务和调用关系。-47- 大连理工大学专业学位硕士学位论文4系统实现4.1程序实现概述该系统与设计阶段的概念和方法统一,在实现阶段也采用面向对象模型来进行编程,同时在编程阶段进行的同时开始安排测试工作,以尽可能早地发现程序故障。在软件的编程实现和测试阶段,开发者确定开发工具、编程语言、编程模型等,然后根据详细设计进行编程。当根据面向对象的概念、方法和技术进行详细设计和编程实现时,每个对象或者组件可以作为相对独立的功能单元进行测试。只要接口保持稳定,单元内部的程序实现可以修改而不影响系统整体的程序运行。在该系统层面的综合测试阶段,对各个单元对象构成的整体进行运行测试和输入输出意义上的功能验证。与单元测试运用白盒方法不同,系统层次的测试由于较为复杂因为适合采用的是黑箱测试方法。在该系统的详细设计阶段已经将需求分析所确定的每项功能单元的内部结构详细展开,完成主要数据结构的设计、算法设计、接口定义和数据库表结构及其引用关系的逻辑设计。在完成详细设计方案的同时,开发者针对编程实现阶段编制详细的开发与实施计划,作为软件开发的项目进度管理的依据。鸿恒公司的预算信息管理系统的软件采用Java编程语言及和微软公司的通用关系数据库SQLServer2008实现,两者具有开发实现大型企业应用程序的诸多特性,同时适合与实现客户服务器系统。Java语言是一种高级算法语言,从发布以来已经具有广泛的应用,运用Java语言所开发的应用程序从微型智能设备到大规模的企业应用系统,具有很大的功能范围。随着开发的深入和应用的日益广泛,这种语言的编程模型不断程序,软件开发资源不断丰富,目前已经发展为最主流的程序语言之一。与传统的编程语言相对比,Java语言的主要特性不仅具有结构化编程语言的全部特点,而且全面支持面向对象方法。在语言层次直接支持多线程编程模型、程序包等大型软件开发机制。通过虚拟机技术实现中间目标代码编译,具有跨平台运行的高度可移植性。在面向对象特性方面,Java语言在源程序层次具有类、对象和接口元素,支持开发者实现面向对象编程模型。类class是具有一组属性和处理函数(method)封装而成的一个实体,具有相同属性和处理方法的实体在逻辑上表达为一个Java类。对象(object)是类的实例,其中不同的对象具有不同的属性数值,但是方法对同类对象是相同的。-47- 大连理工大学专业学位硕士学位论文与编程实现与测试阶段密切关联的是该系统部署和运行维护阶段,在此开发者配置软件系统的运行平台与环境,对软件的运行进行管理和升级。在该阶段采用组件重用技术也具有很大的实用价值,特别对于有效降低维护与升级成本同时保持系统的运行稳定具有实用意义。基于所设计的程序单元的任务特点,在实现阶段分别通过Java程序和SQL存储程序来实现编程。基本原则是计算较复杂、过程型较强的程序如预算分析和总账冲销处理计算等在应用服务器上实现,而面向数据型的程序如总账统计、多数的账务往来数据处理和统计等程序采用SQLServer数据库的存储程序来实现。4.2系统初始化鸿恒公司的预算管理系统的软件运行初始化过程对该系统的正确在线运行十分重要,基本的处理过程是根据企业财务以及预算控制的规则设置、科目设置和参数设置生成正确的账务数据表和其中的初始数据。该系统的初始化过程是,首先在软件安装期间自动创建帐套数据表及其备份,然后用户设置系统的参数、会计期间、财务与销售属性参数、业务规则参数和授权访问参数等,设置计量单位、产品信息、部门及员工信息和用户角色信息。完成以上处理后,启动系统创建在初始会计期间的财务数据、业务数据、资金余额数据等。系统进行一致性检验,生成正确的数据库表、撤销临时数据表和设置正确的业务状态。在完成数据加载后还需要进行访问规则分配与设值。系统管理是由超级用户登录后,创建、管理账套,修改超级管理员密码管理、设置账套用户操作权限、查看在线用户及管理,设置备份策略等功能。公司内部每个下属单位只能有一个超级用户,只有他能够拥有所有软件的操作功能。一般用户不能拥有此功能,只能在超级用户分配的权限下工作。否则会影响账务核算管理的质量。用户可以根据操作人员的分工,分组设置各功能模块的操作权限,将不同的操作用户设置在不同的组内,执行相应的功能模块,达到权限划分清楚、职责分明,满足财务管理的相关要求。如:制单组、审核组、预算管理组、基础数据管理组、各类查询组、领导管理组等等。单位的财务人员应严格按岗位分工、按权限各司其职,操作各功能模块。一般情况下,业务操作人员不能接触基础数据(小规模的单位除外),基础数据的维护应由专人管理,这样能够保证帐务数据(会计科目、部门、项目、员工、预算控制项等)的完整性。在总账管理、预算管理、出纳管理、报表管理五个模块中,预算管理与出纳管理两个模块可根据用户需要在安装的时候选择安装。-47- 大连理工大学专业学位硕士学位论文4.3总账管理实现总账管理的基础事务处理、凭证信息管理单元基于SQL存储程序阿里编程实现,往来事务的自动冲销处理等则通过Java程序实现批量处理。总账管理的基础信息配置、设置与维护功能面向系统管理员,主要程序有:存储例程GLInit根据本公司的预算规则设置帐套;GLParSetup根据分区规则设置预算独立分区;GLXtSetup设置预算科目;GLUtSetup根据公司的实体核算规则设置预算单元;GLPjtSetup根据公司的项目核算规则设置核算项目GLAtrSetup设置预算财务属性,包括货币种类、核算单位的计量单位(不同核算单位可以不同)、在费用凭证中需要成对出现的匹配科目、预算审核策略属性和预算数据接口数据格式等。针对费用凭证管理,基于SQLServer的存储程序GLRxInput实现凭证信息的录入与修改维护功能,GLRxVf实现审核功能、GLRxRgisterAct根据不同参数实现登帐和反登帐处理功能,例程GLRxChFlow实现现金流量信息维护功能(在费用凭证分录中对应的现金流量项目进行调整)。此外,例程GLRxDstGnt通过与固定资产信息系统的数据访问自动生成资产折旧凭证信息的功能。以上例程的程序通过SQLServer2008的T-SQL语言编程,实现较为直接,限于篇幅不在此详细描述。对总账模块的往来账务处理功能属于动态信息处理功能并与该公司的业务处理相集成,通过应用服务器的Java程序需实现的主要事务处理对象主要是classGLFmvTransaction,其中的主要接口函数有:批处理冲销设置函数FmvInit,对往来账务数据的核算调整规则进行设置。冲销确认函数FmvCfm;手动冲销函数FmvMuls,对往来账务数据记录由用户完成匹配冲销。自动冲销批处理函数FmcAuto,系统根据设定的内部冲销规则对往来数据记录完成匹配冲销处理。总账事务处理模块的跨会计周期结转处理业绩基于Java程序的对象GLTransfer来实现,主要的对象接口函数有TsfRnSetup设置自动结转关系、函数TsfCfGnt生成结转凭证和函数TsfRuleMgnt存取会计周期的切换规则。以自动冲销处理函数GLFmvTransaction::FmcAuto为例,Java程序主要代码如下。ExpvRsfmtFst(n,svz.nprt);-47- 大连理工大学专业学位硕士学位论文svz.srpfpd=pmsx(n);sfx=RxFlush.Expsv(gts.schd,intst,ExtNmidxiLt);subPrcFst(st,dts+xfd);/*根据往来数据记录的类型码检索匹配的冲销规则*/for(kt=Lnpd+sxCn(ts.FmvPs-Nc);ktMKL_SFPGHLMS){dsf=mxsid-dhtx;fgtp(dsf);vfSet(rx[kt].tgpid,rx[kt].edmp);rtm=RxFlush.tpwd(nlck);expRsfmtk(rtm);rectvf(tdv);}/*验证冲销数额*/hrExpSt.dbstpCn(dbm,xvs);rx[kt].rstSt.crt(rx[kt].sqrt);rx[kt].wdLtmd=vnk.gtmDn(rx[kt].ax);rx[kt].prcstk(LNF_GHKLPSN,rx[kt]);rx[kt].stTxvp=RxFlush.submit(n,rx[kt].szMs.mt)/冲销匹配记录*/RxFlush.FdExpsv(rx[kt].StRdprcRsfmt,n);for(i=0;i=@Udx--批次处理andXdtTq>=1selectsubTotal(XdtTq)fromSmPmfwhere(Ptsfd>=@Wrtorfrpw<=@Dfm)andBdtPlxidin(selectA.MfVstfrom--设备预算指标(selectMfVst,subTotal(XdtTpng,4))fromTBudgtInfowhereSftTp>=SftTpandFtg==@FtgNsorderbyMfVsthavingagg(XdtTpnSm,2)>@Prxf)B,-47- 大连理工大学专业学位硕士学位论文(selectMfVstfromTdsnfwherehoptv>0andRtCx!=0whereTbxBdDtls.MfVst=B.MfVst)--重分配费用数额selectsubTotal(XdtTq)fromHzuMfwhere(fselike"确认%"orPtsfdlike"生效%")anddfsczin(--更新预算明细selectTbxBdDtls.evtIdfrom(selectmapIx,agg(Adfg,5)fromAdfCswhereAdfKd<=XdtTpKdandFzs>=@mapIxhavingagg(Sftg,2))<@TXFDS)A,(selectdftzfromsdfpeiwherehoptv<=@Ftgn--材料计划预核算andCtxfin("S","A","V"))BwhereTB.vtXf<=TbxBdDtls.vtXf)--更新预算数据selectXdtTqFROMSftPmfCtzwherePtsfd!=‘撤销"orbtyrin(selectbtyrfromifoxwherehoptv>0)预算模型分析单元通过一组接口来包装预算分析程序,主要是针对特殊项目的收益和特殊成本科目进行测算预评估,在访问预算规则数据表的特殊类型规则时该模型单元被自动启动,完成计算后将数据写入输出队列,提供预算主程序进行后续的预算编制和生成拨款控制计划。预算计划和控制程序都是以预算计划为核心,前者的任务是生成的分析预算计划,目的是生成合理的预算信息,而后者是读取预算计划,根据预算信息在拨款事务的层次进行控制。预算管理模块的程序单元划分为数据输出管理单元、数据输入管理、预算主程序单元和模型分析单元,主要的数据对象是数据输入队列,数据输出队列和预算规则数据表。实现-47- 大连理工大学专业学位硕士学位论文数据输入队列和数据输出队列的目的是对编制和分析预算计划过程中需要处理的各类数据提供一种统一的管理环节,这样对各种不同类型和来源的数据处理就通过实现在数据输入队列管理单元和输出管理单元中的函数方法来进行,在逻辑上将预算计划的处理任务一致以使系统具有良好的整体逻辑性。该模块的程序组成如图4.2-4.3所示。数据库比例系数统计预算指标估算岗位预算分析部门预算分析项目预算分析费用调整处理预算计划数据预算管理概预算定额数据图4.2预算管理模块程序组成Fig.4.2BudgetManagementProgramStructure指标类数据#1指标类数据#i指标类数据#N指标类#1处理例程指标类#i处理例程指标类#N处理例程材料及作业预算程序设备预算程序项目预算程序图4.3概预算定额与指标管理程序Fig.4.3SketchBudgetIndicesProgramStructure-47- 大连理工大学专业学位硕士学位论文图4.4-4.7是项目预算信息的输出实例。图4.4工程材料预算明细Fig.4.4MaterialBudgetDetailsData图4.5工程设备预算明细Fig.4.5EquipmentBudgetDetailsData-47- 大连理工大学专业学位硕士学位论文图4.6定额指标窗口Fig.4.6QuotaIndicesWindow图4.7预算管理窗口Fig.4.7BudgetManagementWindow-47- 大连理工大学专业学位硕士学位论文4.5出纳管理实现根据设计方案,该系统的出纳事务管理主要通过一组SQL存储程序单元直接在数据库服务器端实现,供具体事务流程的特定的环节来调用。例如出纳事务的基础信息管理例程实现针对账户的处理规则和参数设置功能。票据事务处理例程组包含现金凭证信息处理例程、票据审核确认处理例程、票据重开处理例程等。对账事务处理例程组实现该模块的主要功能任务,具体包括针对银行账户的数据录入校验例程,普通冲销处理例程对银行账务数据对账处理例程,账户借贷冲销处理例程和反冲销处理例程等。因此该模块的设计特点是通过一个例程集合来实现针对外部事务处理的调用服务。以出纳管理模块中的对账管理事务为例,主要的程序代码如下。--检验数据匹配属性SELECTALLFROMRsrBasicInfoWHEREsvQrtFd>=@TdocIdx–票据类型码ANDxfIdAs<=@stTd鸿恒--匹配类型码ANDmmTskin(SELECTSvIdcFROM(SELECTAprtTm,--时间crfCdsv,--批次号mntPfmIx,--期初余额MsrCdx,--冲销标识QtfNm,FROMAprtinfoWHERE(SdfKv<=UfvsANDCvtfTm>@vfStm)ANDSum(tos(cfpSm,@spfm))<@dftVs),--统计批量GROUPBYBthIdx--借贷方向标识AND(SELECTSqdFROMPfdsWHEREStdb=="N"ORSpt!="N")WHEREPhvf==Ghdf)INSERTintoTUtlsInfo(UtlsId,RsxNm,StrTm,EvSt)SELECTSdfBN.UtlsId,SdfB.RsxNm,SdfBN.StrTm-47- 大连理工大学专业学位硕士学位论文FROMTmpDtx,DxgnBVWHERESdfBN.sbd==DxgnBV.Asx--更新账户信息UPDATENvfh,Rtu,smw,hycdic,syhef,sdffFROMZmInfoWHEREDxgnbv>=pstANDNvfsx=@NvfsxANDNvfsxm>=04.6系统测试在该预算管理系统的开发过程中,在开发小组对程序代码进行审核和单元测试之后,系统还需要提交专门负责测试的小组进行独立测试。软件测试任务的目的是尽可能多地发现并排除在软件中潜藏的缺陷,目标是把一个稳定可靠的软件系统交付用户使用。以项目预算管理模块为例,该模块调用了一组模型计算预计的投资预算,其主要数据来自数据库,因此在实际运行时都需要访问数据库服务器才能生成完整的预算文件。通过分离预算模型的程序代码和预算数据文件,提高了该模块设计方案的灵活性,例如面向未来可能的模型更新和扩充,但为此程序中也包含了较多涵义较为复杂的代码,例如几类模型的程序代码,需要较有经验的开发人员进行审核。该模块需要生成输出的主要信息对象有工程预算总表,工程费用预算表,工程量预算表,工程材料和设备预算表等。这些信息对象通常来自于多项子模块的计算输出和条件合并,因此在计算逻辑上较易发生差错或代码缺陷。针对这类较为复杂的数据处理功能,程序员除需要仔细审核程序本身的数据结构和逻辑是否正确与合理之外,同时还要对照其他工具生成的计算结果在各种典型输入数据集合上对输出结果进行校核以保证计算程序正确。表4.1是关于该模块故障的测试案例之一,目的是测试软件对常见的输入错误是否具有稳定可靠的响应行为。在实际测试中每项该类错误平均需1.4次代码修改和重新测试才能完全消除,涉及的编程错误包括检索数据库时的约束表达式错误、循环语句的边界条件不当等类型。在完成单元测试之后,模块提交测试工程师小组进行黑盒测试的目的是侧重于测试软件整体的输入-输出行为的正确性,进一步补充识别更全面的错误。该测试着重发现以下类型的故障或缺陷,包括用户输入-输出功能的偏差、错误或遗漏-47- 大连理工大学专业学位硕士学位论文。性能问题,包括大批量数据时的响应时间如项目预算处理部分和工程量清单处理部分、事务处理速率、数据显示速度如基础数据查询和工程预算查询部分、计算速度(如基于模型的投资估算分析部分等。目前该软件已经更正在测试中的全部故障,重新进行的确认测试没有发现新的故障,正常完成了测试阶段的任务。表4.1预算管理功能测试用例Tab4.1BudgetManagementFunctionTestCase功能操作异常输入信息正确的响应动作打开现有项目输入/变更预算参数1)某些属性数据为空;2)某些输入数据违反限定条件,例如清单数值字段有字符而非数字出现;系统应拒绝写入违反条件约束的输入信息,同时向用户提示哪项输入发生错误;建立新项目并输入预算参数1)某些输入数据违反限定条件,例如清单数值字段有字符而非数字出现;2)应输入字符串的属性却输入数值、应输入数字的项目缺输入字符信息;系统提示用户错误并停留于本状态;3)用户不具有对应授权;系统不改变数据属性,同时提示用户哪一项输入属性不正确;生成工程预算总表、安装工程费用预算表和工程量预算表等常规预算文件1)在启动计算之前用户设置了不正确的数据(例如对购置成本为负、未输入相关的间接费用分配信息等);2)费率具有不正确的数值,例如大于限额或为负;系统应检验是否正确根据预算规则关联了恰当的成本费率,对较为复杂或不能由系统完整判定的情况,应提示用户进行确认与核实;系统应翔用户提示警告并暂停于该状态;-47- 大连理工大学专业学位硕士学位论文结论本文以鸿恒公司的业务需求为基础,论述该公司袁管理信息系统的设计开发。随着公司的业务增长,作为公司经营管理的重要工具的预算分析手段越来越需要同步增强,同时充分使用公司的经营与管理特点。对此,该预算管理系统的开发突出强调满足以下要点。首先是将决策层的预算批复与单位预算计划有机结合,全面反映日常经费,特别是专项经费专款专用、专项专用,在数据上做到前因后果的逻辑关联明确、清晰。该系统实现多级预算管理,以能够适应不同的单位预算管理要求,并在预算中引入预算模板以实现对部门项目预算的精确、模糊控制,使用户对部门预算的实现和控制更加灵活。为支持公司的预算项目负责人与财务人员能够有效的配合,该系统支持项目经费卡和人员卡管理,项目核算方便、快捷而且更加严密与精准,减少差错,提高工作效率。系统支持多会计期管理,为此在系统内部缺省划分为十五个会计期,其中每个月份自然月与十二个会计期相等,其余三个会计期用于期末结账,以便非常清楚的反映结账过程,方便账务查询、分析。该软件实现与企业的其他信息系统的数据接口,包括与固定资产管理系统实现接口以自动获取折旧信息和生成固定资产折旧凭证。与银行系统实现接口以开展无现金支付业务,减少现金流量。该系统的软件设计采用客户服务器结构,客户端主要完成与用户的交互和视图显示,复杂的事务处理请求均从客户端模块提交服务器端模块来处理。服务器端的核心模块在业务上划分为总账信息管理模块,预算事务处理模块,出纳事务处理模块。除此之外,该系统还包含一组辅助性的功能模块,主要针对系统的访问安全控制管理、运行配置管理和与其他系统的数据接口管理。该系统的设计遵循以下原则。首先是需求驱动,也就是设计方案的依据完全参照需求分析,在功能需求的基础上进行设计单元的划分,从用户的角度出发进行设计方案的匹挂机,特别是在出现技术和功能的冲突时,明确基于用户需求来作出合理的决策与均衡折中。第二是实用性,也就是在保证系统达到需求目标的前提下,尽可能采用稳妥成熟的技术方案,包括架构方案、编程模型和工具等,同时尽可能采用在业界广泛运用的标准化的软件技术。第三是在设计阶段就需要较充分考虑软件的运行维护性。因为目前的软件系统规模较大,同时业务本身也在不断发展的变化之中,因此有必要在设计开发阶段就考虑到该系统在未来需要的升级、功能扩展等要求,在设计中通过合理的模块划分、调用访问关系、接口关系等简化这些维护工作。-47- 大连理工大学专业学位硕士学位论文该软件的设计采用面向对象方法来进行,首先通过合理划分来确定系统中的对象单元,这些单元既表达一定相对独立的功能实体,也代表在软件内部可重用的对象。然后确定对象内部的属性、状态和外部的访问接口,接口中的调用方法,包括参数的含义和输出的涵义。对象的功能完全在内部实现,只要保持接口的语义不变,在升级和更新实现方式时就可以保持系统的整体逻辑功能的稳定,因此特别有利于复杂软件的维护。在对象的外部,开发者需要确定对象之间的数据访问关系和功能调用关系,通过相应的模型来加以描述以便于为编程阶段建立含义准确的参考模型。该系统按照以上原则完成设计工作,并通过卖相对象的方法来建立可重用的对象单元,提高系统的设计和实现的效率。该预算信息管理系统的软件采用Java编程语言及和微软公司的通用关系数据库SQLServer2008实现,两者具有开发实现大型企业应用程序的诸多特性,同时适合与实现客户服务器系统。目前已经更正在测试中的全部故障,重新进行的确认测试没有发现新的故障,正常完成了测试阶段的任务。-47- 大连理工大学专业学位硕士学位论文参考文献[1]吴文元.预算管理概论[M].北京:人民大学出版社,2011.[2]GoldsmithA.EnterpriseBudgetAnalysisandPractice[M].N-Y:Prentice-HallInc.2007.[3]刘正.预算与企业及组织机构资源管理战略[M].北京:机械工业出版社,2010.[4]洪易学.大型物资设备预算计划方法比较研究[J].管理理论与实践,2009,9(3):59-61.[5]LionsJM.企业及组织机构预算管理:理论和案例[R].郑州:郑州大学出版社,2010.[6]杨雯.基于模型的企业及组织机构项目事务管理系统[J].计算机应用研究,2011,39(1):27-29.[7]JoanM,AIntegratedFrameworkforProjectRiskandInvestmentAnalysis[J].IndustrialEngineering.2008.29(1):26—39.[8]KreinK.ManagingandEvaluatingtheLife-cycleofProjectInvestment[J].ProjectManagementJornal,2005,19(2):227-235.[9]张长胜.企业全面预算管理[M],北京:北京大学出版.2013.[10]陈继元.工程项目概预算实例教程[M].北京:机械工业出版社,2009.[11]王斌.概预算管理手册[M].北京:人民大学出版社,2008.[12]瞿力敏.财务预算与管理预算的理论与实践[M].广州:广东科学技术出版社,2010.[13]吴荣芳.工程作业费用预算的预计费率估计方法[J].中国机械工程,2005,11(2):212-216.[14]魏祥云.项目预算及风险分析决策支持系统[D].武汉理工大学,2007.[15]UgoH.J2EEProgrammingModelsofComputation[J].PCMagazine,2002,22(1):45-49.[16]钱赛微.Java编程和面向对象技术[M].电子工业出版社,2012.[17]戴群岳.J2EE开发经典案例[M].北京:机械工业出版社,2007.[18]范盛荣.Java组件编程详解[M].北京:清华大学出版社,2009.[19]刘永胜.J2EE访问数据库的高效方法[J].计算机系统应用,2009,29(1):29-32.[20]佟萧芳.分布式数据库编程模型[J].计算机应用与软件,2008,21(2):176-179.[21]费思涵.混合型数据库设计指南[M].北京:人民邮电出版社,2013.[22]吴荣.C/S与B/S混合架构的数据库访问技术比较分析[J].计算机科学,2009,31(3):313-315.[23]颜罗芸.SQLServer数据库事务引擎分析[J].计算机系统应用,2008,19(5):657-659.[24]JosephS.SQLServer2008实战指南[M].北京:人民邮电出版社,2010.[25]李秀峰.ADO.NET数据库访问技术研究与实现[J].计算机应用,2005,16(1):20-23.[26]闵雯丽.面向对象数据库及其派生技术比较研究[J].郑州:郑州大学学报,31(1):22-25,2007.[27]YingH,ChungJ-H.AWebServices-basedFrameworkforBusinessDataIntegrationSolutions[J].BusinessInformationManagement,2010,23(2):448-455.-47- 大连理工大学专业学位硕士学位论文致谢在本人的写作过程中,曹晓东教授给予了大力的帮助和指导,在此深表感谢!在整个过程中他给了我很大的帮助,在论文题目制定时,他首先肯定了我的题目大方向,但是同时又帮我具体分析使我最后选择工程预算管理系统设计与实现这个具体目标,让我在写作时有了具体方向。在完成初稿后,老师认真查看了我的文章,指出了我存在的问题。在此十分感谢老师的细心指导,才能让我顺利完成毕业论文。同时也感谢其他帮助和指导过我的老师、同学和朋友及家人,他们对我多年的培养和无私的奉献,给予我强大的精神鼓舞,使我能在生活、学习中克服一个又一个的难题。感谢所有参考文献的作者们,他们的辛勤工作和成果给了本文工作以极大的帮助和启发。回想整个论文的写作过程,虽有不易,却让我除却浮躁,经历了思考和启示,也更加深切地体会了工程预算管理的精髓和意义,因此倍感珍惜。-47- 大连理工大学专业学位硕士学位论文大连理工大学学位论文版权使用授权书本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印、或扫描等复制手段保存和汇编本学位论文。学位论文题目:作者签名:日期:年月日导师签名:日期:年月日'