• 410.82 KB
  • 2022-04-22 13:34:51 发布

会计决算系统的设计与实现毕业论文.doc

  • 49页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'会计决算系统的设计与实现毕业论文目录摘要IAbstractII目录III第1章绪论11.1会计决算的概念1第2章系统实现的理论基础32.1基于组件模型的三层结构32.1.1传统的两层C/S结构32.1.2三层C/S结构42.1.3B/S结构102.2系统的开发办法112.3系统的建模132.3.1面向对象的建模方法132.3.2建模语言及工具142.3.3建模时应注意的问题142.4系统运行及开发环境152.4.1运行环境152.4.2系统开发环境16第3章系统分析193.1决算系统的分析193.1.1系统分析1949 3.1.2需求分析193.1.3系统开发的设计要求213.2财务管理信息系统功能分析213.2.1决算系统223.2.2工薪系统223.2.3核算系统233.2.4数据库233.3系统细化分析设计233.3.1细化USECASE图233.3.2类图233.3.3交互图253.3.4系统的组件图253.4系统架构的设计263.4.1系统架构的选择263.4.2系统架构27第4章系统实现的理论基础284.1系统逻辑结构的设计284.2数据库设计原则和E-R图294.2.1系统拓扑结构314.3安全性设计31第5章系统实现335.1系统实现概述335.2基于DCOM的三层结构的实现335.2.1远程数据模块335.2.2创建应用服务器345.2.3创建客户程序(1)与应用服务器连接345.3数据访问性能的优化355.3.1问题描述355.3.2问题分析355.3.3解决方案365.4面向对象技术375.4.1创建本系统自动化对象375.4.2创建工作账目38第6章系统测试396.1测试计划3949 6.2测试结果44结论45致谢46参考文献47第1章绪论1.1会计决算的概念随着市场经济的发展,国家企业以及事业单位在经营过程中的不确定因素越来越多,产品升级换代越来越快,为提高企业经营管理水平,有效地调整和控制企业生产经营活动,促进单位提高经济效益,达到经营目标,企业年终决算管理理念中需要引进全面决算算管理。同时,为了健全企业监管体系,加强财务监控,国家各部委也要求国有大中型企业实行全面决算。2000年9月国家经贸委在《关于国有大中型企业建立现代企业制度和加强企业管理基本规范》中明确规定“建立全面决算决算管理制度”。财政部于2002年4月颁布了《关于企业实行财务决算管理的指导意见》,明确企业决算编制的一些重要内容。全面决算管理作为企业内部控制的一种方法,在企业管理中的作用越来越重要。国内外许多知名企业的成功经验也证明了,全面决算是行之有效的现代企业管理方法。随着国外企业决算管理的理论和方法被不断地引进,政府有关部门的积极推动,国内诸多企业的积极探索,越来越多的企业管理者认识到决算管理的重要作用。目前,国内企业决算管理的实践已呈现出两个特点:一是从财务决算向全面决算过渡;二是从手工决算向决算信息化过渡。49 传统的决算主要依赖手工进行,其缺点是工作量大,编制时间长,编制的内容不够全面。首先,从决算编制的流程来看,传统的财务决算需要每个参与决算编制的工作人员都必须具备一定的财务知识,否则难以形成一份有建设性意见的决算方案。其次,从财务部门的角度来看,当有关部门将决算编制出来之后,财务部门必须对这些决算工作底稿加以汇总、整理。由于各部门在决算编制过程中采用的手段和方法不尽相同,加之一些部门决算工作存在的滞后性,财务部门既要担负繁重的调整业务,还要不断催促有关部门提交决算报表,当需要调整某一数字时,又不得不重新再算。这些问题的存在大大降低了整个决算编制的效率。由此可见,传统决算最大的缺点在于:决算编制者在决算编制过程中无法及时将资料汇总、存取和运用,无法对企业现有资本进行有效整合,相互之间是孤立的,难以融合应用。会计专业由于其从业的特殊性,务必要有资格审核,本系统弥补了这个以往缺陷。如图1-1所示。图1-1资格审查第2章系统实现的理论基础2.1基于组件模型的三层结构随着数据库管理系统的发展,应用系统体系结构经历了单层结构、两层结构、三层结构等阶段。49 所谓单层结构即数据库与应用程序位于同一台计算机上且应用程序与数据库共享一个文件系统,这就意味着数据的维护与应用程序的运行需要在一台计算机上完成,这必然限制了应用程序的应用。所以,实用的应用软件系统都是基于两层和三层结构的。2.1.1传统的两层C/S结构传统的两层(Two-Tier)数据库应用系统分为客户端程序和数据库服务器两个部分。两层结构存在许多内在的缺点:(1)性能瓶颈。两层结构下,每个客户端在使用数据库时都会建立一个数据库连接,这会占用数据库服务器固定的一部分资源。数据库服务器必须为所有连接的客户端提供服务,即使许多客户端的服务请求相似,数据库服务器也很难让他们共享资源。当大量客户端连接到服务器上后,服务器内存资源很快会被耗尽,不得不使用磁盘交换,性能严重下降。而实际上客户端并不是时时刻刻都在与数据库服务器交换数据,很可能有许多客户端保持着客户端连接而没有访问数据库,但是数据库服务器仍然要为这些客户端连接分配内存资源和CPU时间,导致了其他正在进行访问的客户端连接性能下降。(2)客户连接数目问题。数据库服务器一般会按照客户端连接数目进行收费,两层结构下一个客户端就要占用一个连接,为能够满足需要用户必须购买足够的客户端连接数目,而实际上同时进行数据库访问的客户端可能远远小于同时进行连接的客户端数目。这就造成了巨大的浪费。(3)稳定性无法保障。一般数据库应用中只有一个数据库服务器来完成数据库访问任务。如果数据库服务器出现故障,客户端就无法进行数据库访问。使用后备服务器的方法不仅昂贵,而且在动态切换技术上非常复杂,实现困难或者实现效果不佳。(4)客户端应用程序的分发问题。数据库应用的客户端程序由于包含了数据库访问引擎,因此安装程序非常复杂,不仅包括开发者编写的程序,还包括数据库访问引擎本身的文件以及数据库连接的配置等。对于大的数据库应用系统来说,需要安装的客户端数目可能非常巨大,如果出现客户端升级情况,那么工作量是非常巨大的。由于两层结构下客户端程序包含了用户界面和所有的业务逻辑代码,因此只要有一点改变就可能需要重新安装所有的客户端程序,升级可能会相当频繁。49 (5)程序的维护工作复杂。由于客户端程序包括了用户界面和业务逻辑,所以开发者必须同时维护这两部份代码,编译修改一部分的程序代码会影响到整个客户端程序。这样不利于团队开发,也影响了未来其他项目对原先项目的代码重用。2.1.2三层C/S结构三层C/S结构将原来两层结构中的客户端程序进行了划分,将用户界面抽取成三层结构中的客户端程序,而将原先的数据库访问部分单独分离出来成为应用程序服务器。主要有以下几层:(1)用户界面(表示)层:是信息系统的用户接口部分,即人机界面,是用户与系统间交互信息的窗口,主要功能是指导操作人员使用界面,输入数据、输出查询统计结果。它并不拥有业务逻辑,或只拥有部分不涉及主要业务的应用逻辑。(2)业务逻辑(应用服务)层:是应用的主体,包括了系统中核心的和易变动的业务逻辑,它的功能是接收输入,处理后返回结果。(3)数据访问层:即数据库管理系统(DBMS),负责管理对数据库的读写和维护。能够迅速执行大量数据的更新和检索。用户界面层是应用的用户接口部分,它担负着用户与系统的对话功能。它用于检查用户输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。业务逻辑层是联系用户服务和数据服务的桥梁,它根据用户的请求执行具体的业务规则,为具体应用提供事务处理。数据访问层包括数据的定义、维护、访问和更新,以及管理并响应业务逻辑层的数据请求。三层结构的数据库应用模式的优点是:(1)性能优势。应用服务器承担了客户端的连接功能,只需要通过一个或者少量的连接来访问数据库服务器。数据库服务器可以专门处理实际的数据库访问操作,只需要维护少量的客户端连接,大大提高了效率。另外,应用服务器可以对客户端任务进行分析,对于相同的数据库数据请求,可以提供同一个数据集数据,避免了多次访问数据库服务器。49 (2)减少数据库连接。可大大减少数据库服务器需要的客户端连接数目,减少投资。(3)增强系统的可靠性。应用服务器处于数据库服务器和客户端之间,屏蔽了客户端和数据库服务器之间的直接连接。因此,当数据库服务器出现故障时,应用服务器可以自动连接后备数据库服务器,动态切换比较容易。应用服务器本身可以实现负载均衡的功能,将数据库访问请求分配给不同的数据库服务器,很容易提高系统的运行效率。由于应用服务器本身不维护数据库数据,因此当它出现故障时,很容易被替换成另外的应用服务器。(4)客户端分发方便。三层结构中的客户端应用程序只包含用户界面程序和专门的三层数据库连接文件,由于不需要安装数据库访问引擎可减少客户端安装程序的复杂度,便于客户端程序的分发。在业务逻辑更改的情况下不需要更改客户端程序,大大减少了客户端程序升级的次数。(5)集中业务逻辑。应用服务器中可以集中放置一些通用的业务逻辑代码,这样更改业务逻辑代码时不影响客户端程序,和存储过程相比可减少数据库服务器的负担。在其他项目开发时,可比较方便地重复利用业务逻辑代码。本系统的会计凭证输出即采用此模式。如图2-1所示:图2-1会计凭证审核用如下代码保证相应数据符合标准:namespace财务管理系统{publicAccountSetting()49 {InitializeComponent();}protectedoverridevoidDispose(booldisposing){if(disposing){if(components!=null){components.Dispose();}}base.Dispose(disposing);}=System.Drawing.ContentAlignment.MiddleLeft;this.btnUseAccount.Location=newSystem.Drawing.Point(216,24);this.btnUseAccount.Name="btnUseAccount";this.btnUseAccount.Size=newSystem.Drawing.Size(104,32);this.btnUseAccount.TabIndex=2;this.btnUseAccount.Text="启用新帐簿";this.btnUseAccount.Click+=newSystem.EventHandler(this.btnUseAccount_Click);this.btnBalance.Image=((System.Drawing.Image)(resources.GetObject("btnBalance.Image")));this.btnBalance.ImageAlign=System.Drawing.ContentAlignment.MiddleLeft;this.btnBalance.Location=newSystem.Drawing.Point(352,24);this.btnBalance.Name="btnBalance";this.btnBalance.Size=newSystem.Drawing.Size(104,32);this.btnBalance.TabIndex=2;49 this.btnBalance.Text="试算平衡";this.btnBalance.Click+=newSystem.EventHandler(this.btnBalance_Click);this.sqlConnection1.ConnectionString="workstationid=localhost;packetsize=4096;integratedsecurity=SSPI;initialcatalo"+"g=caiwubook;persistsecurityinfo=False";this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14);this.ClientSize=newSystem.Drawing.Size(688,493);this.Controls.Add(this.btnNewAccount);this.Controls.Add(this.dataGrid2);this.Controls.Add(this.dataGrid1);this.Controls.Add(this.btnUseAccount);this.Controls.Add(this.btnBalance);this.Name="AccountSetting";this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen;this.Text="【帐户设置】";this.Load+=newSystem.EventHandler(this.AccountSetting_Load);((System.ComponentModel.ISupportInitialize)(this.dataSet21)).EndInit();((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).EndInit();this.ResumeLayout(false);}#endregionprivatevoidAccountSetting_Load(objectsender,System.EventArgse){da1.Fill(dataSet21);49 da2.Fill(dataSet21);}-privatevoidbtnNewAccount_Click(objectsender,System.EventArgse){DialogResultresult=MessageBox.Show("是否清除原有帐簿信息并初始化新帐簿?","警告",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);if(result==DialogResult.OK){stringstrConn="workstationid=localhost;IntegratedSecurity=SSPI;database=caiwubook";SqlConnectioncn=newSqlConnection(strConn);cn.Open();SqlCommandcmd=cn.CreateCommand();cmd.CommandText="execsf_初始化帐户";try{cmd.ExecuteNonQuery();dataSet21.Clear();//刷新数据集da1.Fill(dataSet21);da2.Fill(dataSet21);}catch(Exceptionexpress){MessageBox.Show(express.ToString(),"建立新帐户失败",MessageBoxButtons.OK,MessageBoxIcon.Error);}}}privatevoidbtnUseAccount_Click(objectsender,System.EventArgse){da1.Update(dataSet21);//将用户对新帐簿中数据的修改提交到数据库49 stringstrConn="workstationid=localhost;IntegratedSecurity=SSPI;database=caiwubook";SqlConnectioncn=newSqlConnection(strConn);cn.Open();SqlCommandcmd=cn.CreateCommand();cmd.CommandText="selectsum(累计借方)借方,sum(累计贷方)贷方from帐簿初始化表";SqlDataReaderdr=cmd.ExecuteReader();dr.Read();if(dr.GetValue(0).ToString().Trim()!=dr.GetValue(1).ToString().Trim())//判断初始化后帐簿是否平衡{MessageBox.Show("新帐簿初始化不平衡,请检查试算平衡表后重新输入","无法启用新帐簿",MessageBoxButtons.OK,MessageBoxIcon.Error);return;}else{DialogResultresult=MessageBox.Show("试算结果平衡,启用新帐簿将删除所有历史记录,是否继续?","确认启用新帐簿",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);if(result==DialogResult.OK){dr.Close();cmd.CommandText="execsf_启用帐户";cmd.ExecuteNonQuery();dataSet21.Clear();//刷新数据集da1.Fill(dataSet21);da2.Fill(dataSet21);MessageBox.Show("新帐户启用成功!");}return;}}49 privatevoidbtnBalance_Click(objectsender,System.EventArgse){da1.Update(dataSet21);//将用户对新帐簿中数据的修改提交到数据库TrialBalancenewFrm=newTrialBalance(true);newFrm.Text+="初始化帐户";newFrm.Show();2.1.3B/S结构随着互联网技术的发展,浏览器(Browser)成为展现信息的主要平台之一。采用浏览器作为数据显示平台的应用被称为B(Browser/Server)应用系统。基于Web的B/S结构本质上也是一个客户机/服务器模式。B/S结构的基本思想是采用Internet的TCP/IP作为通讯协议,并以Internet的Web模型作为标准平台,通过简单的浏览器实现用户界面,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的功能,并节约了开发成本,是一种全新的软件系统构造技术。采用B/S结构的优势在于:(1)无须开发客户端软件,维护和升级方便;(2)可跨平台操作,任何一台机器只要装有WWW浏览器软件,均可作为客户机来访问系统;(3)具有良好的开放性和可扩充性。因此该结构在管理信息系统开发中被广泛应用,成为一种流行的体系结构。但是,B/S三层体系结构也有许多不足的地方,具体表现在以下几个方面:(1)由于浏览器只是为了进行WEB浏览而设计的,当其应用于WEB应用系统时,许多功能不能实现或实现起来比较困难。比如通过浏览器进行大量的数据输入,或进行报表的应答都是比较困难和不便的。49 (2)复杂的应用构造困难。虽然可以用ActiveX、Java等技术开发较为复杂的应用,但是相对于发展已非常成熟C/S的一系列应用工具来说,这些技术的开发复杂,并没有完全成熟的技术供使用。(3)HTTP可靠性低有可能造成应用故障,特别是对于管理者来说采用浏览器方式进行系统的维护是非常不安全与不方便的。(4)WEB服务器成为对数据库的唯一的客户端,所有对数据库的连接都通过该服务器实现。WEB服务器同时要处理与客户请求以及与数据库的连接,当访问量大时,服务器端负载过重。(5)由于业务逻辑和数据访问程序一般由JavaScript、VBScript等嵌入式小程序实现,分散在各个页面里,难以实现共享,给升级和维护也带来了不便。同时由于源代码的开放性,使得商业规则很容易暴露,而商业规则对应用程序来说则是非常重要的。2.2系统的开发办法程序设计的方法经历了多次变革,先后经历了:以计算任务为中心的功能分解法,以数据为中心的结构化程序设计,以对象为中心的面向对象程序设计,以组件为中心的组件程序设计。目前在实际运用的过程中,是将这四种技术进行综合运用。传统的面向对象的设计方法采用白箱框架,类和对象是两个最为重要的概念,具有三大特性:封装性、继承性、多态性,利用程序语言(如C++,Java,VB等)的集成机制,在程序编译时,编译程序(Complier)建立框架内组件与多样性组件之间的沟通接口,从OOAD到程序实现的过程是直截了当的。但使用白箱框架时必须对父类有较多的了解,如果更改父类,很可能会影响到已有的子类,这种框架并不适合用来构建开放式的系统。基于组件的软件方法建立在面向对象方法基础之上的,较好地弥补了纯面向对象方法的缺陷。使用组件技术,可以使己有的一些应用程序的升级更加方便和灵活,也可以用现存的组件为基础,装配出新的应用程序。组件化程序设计(Component-BasedDeveloper)结合了对象技术和组件技术两种特征,更为适合现代企业级应用程序的开发需要。49 在科研管理系统的设计中,为了降低问题的复杂度,本文首先利用结构化方法的思想将科研管理系统进行功能划分,然后将每一功能模块作为基本模块组件,以组件化程序开发方法构造系统的体系结构,使用面向对象的方法进行组件的开发。使用组件有如下优点:l、组件运行效率高。便于使用和管理。业务逻辑组件被封装编译成二进制代码,所以运行效率高。组件在网络上的位置可被透明地分配,组件和使用它的程序能在同一进程中,也能在不同进程中或不同机器上运行。2、充分利用服务器的良好性能及WebService组件的分布性能来提高系统的资源利用率。3、组件可以共享与数据库的连接,数据库服务器不再为每个活动的用户保持一个连接,从而降低了数据库服务器的负担,避免因用户的增多而导致数据库系统崩溃。4、在多层分布式应用模式下,各层在逻辑上是相互独立的,因此可以组织专门的技术人员同时进行各层的开发,从而缩短开发周期和提高软件质量。另外,组件的重用也为快速建立Internet应用提供了便利条件。2.3系统的建模采用面向对象的建模方法,以下对面向对象建模方法、统一建模语言UML(UnifiedModelingLanguage)、建模工具RationalRose做一简要介绍。2.3.1面向对象的建模方法面向对象方法具有以下四个要点:l、认为现实世界由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。面向对象的软件系统是由对象组成,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。2、把所有对象都划分成各种类,每个类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。每当建立这个类的一个新实例时,就按照类中对数据的定义,为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。49 类中定义的方法,是允许施加于该类对象上的操作,为该类所有对象共享,并不需要为每个对象都复制操作的代码。类是指具有相同或相似结构、操作和约束规则的对象所组成的集合,它是一个共享属性和操作方法的集合。任何一个对象都是某一类的实例,每一个类都是由具有某些共同特征的对象组成。类体现了人们认识事物的基本思维方法——分类,即把具有相同操作和属性的对象划分为一类,用类作为它们的抽象描述。3、按照子类(也称导出类)与父类的关系,把若干个类组成一个层次结构的系统。在这种层次结构中,通常下层的导出类具有和上层的父类相同的特性(包括数据结构和方法),这种现象称为继承。4、对象之间仅能通过传递消息相联系。对象与传统的数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。即,一切局部于该对象的私有信息,都被封装在该对象类的定义中,这就是封装性。类的构成过程是人们对事物从特殊到一般的归纳抽象过程;反之,任何一个具体的对象个体必然具有它同类的一般属性,即类属性,因此,类继承性的构成过程反映了个体之间从上到下,从一般到特殊的演绎过程。2.3.2建模语言及工具UML(UnifiedModelingLanguage,统一建模语言)是一种通用的建模语言,可创建系统的静态结构和动态行为等多种结构模型,具有可扩展性和通用性,适合为各种多变的系统建模。它是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统的制品进行可视化、详述、构造和文档化。从企业信息系统到基于Web的分布式应用,甚至严格的实时嵌入式系统都适合用OML来建模。顺序图把行为描述为一组对象间的信息交换序列。而状态图根据单个对象的状态及状态可能的转换描述行为。Rational公司推出的RationalRose是目前最好的基于UML的建模工具之一,本论文所采用的就是RationalRose49 2003。它把UML和谐地集成进面向对象的软件开发中。不论是在系统需求阶段,还是在对象的分析与设计、软件的实现与测试阶段,它都提供了清晰的UML表达方法和完善的工具,方便建立起相应的软件模型。RationalRose是分析和设计面向软件系统的强大的可视化工具,可以用来先建模系统再编写代码,从而一开始就保证系统结构合理。利用模型可以更方便地捕获设计缺陷,从而以较低的成本修正这些缺陷。RationalRose支持业务模型,帮助了解系统的业务,有助于系统分析。可以先设计使用案例和UseCase图,显示系统的功能,也可以用交互图显示对象之间如何配合,提供所需功能。类图可以显示系统中的对象及其相互关系。组件图可以演示类如何映射到实现组件。2.3.3建模时应注意的问题UML是一种直观化、明确化、构建和归档软件系统产物的通用可视化建模语言,是一种工具。它的主要作用是帮助用户对系统进行面向对象的描述和建模,它可以描述这个软件开发过程从需求分析直到实现和测试的全过程。它有多种模型,十分复杂,使用时应熟练掌握基本概念,区分不同抽象层次,在实践中灵活运用。建模时应注意:1、不要试图使用所有的符号。在UML中,有些符号仅用于特殊的场合和方法中,只有当需要时才去使用。2、不要为每个事物都画一个模型,应该把精力放在关键的领域。最好只画几张较为关键的图,经常使用并不断更新修改。使用类图的最大危险是过早地陷入实现细节。3、时序图和协作图适合描述单个用例中几个对象的行为。当行为复杂时,可以考虑使用活动图。2.4系统运行及开发环境2.4.1运行环境49 系统运行采用B/S结构。B/s方式的特点在于具有广泛的信息发布能力。它对前端的用户数目没有限制,客户端只需要普通的浏览器即可,系统维护方便简洁。系统运行环境将充分利用现有的办公网络系统,同时要配置必要软硬件环境。1.网络环境网络拓朴结构的选择是设计网络方案的主要内容之一,理论上的拓扑结构有多种,如总线型、环型、树型、星型和点到点连接等,它们各有其优缺点和适用范围,设计时要根据实际情况而定。在本系统设计时,由于该院已建立了办公网,为了既尽量利用原有的投资,又要使系统具有良好的扩展性和较高的安全性及易维护性,我们在该院财务处内部建造Windows2000局域网,并将财务处的局域网并入办公网,把财务核算系统的数据和本系统收集的数据进行有效整合,实现各个科研项目的财务经费分配、支出的监控。2.硬件环境(1)、服务器要求最低InterPIII1-0G以上CPU,256M内存,推荐PIV2.OG以上CPU,512M00R内存。服务器至少10G以上硬盘空间。(2)、对客户端系统没有要求。3.软件环境服务器端:(1)、MicrosoftWindows2000Server或AdvanceServer版。(2)、IIS5.0或以上版本。(3)、NETFramework1.1。(4)、数据库MSSQLServer2008标准版,建议使用企业版。客户端:(1)、Windows98或以上操作系统。(2)、IE5.5或以上版本。2.4.2系统开发环境一、数据库的选择本系统选用的是SQLServer2008作为后台数据库,基于两点考虑:一是价格问题,二是开发者有使用SQLServer开发小型系统的经验,比较熟悉它的环境。三是SQLSERVER2008的特点分不开:l、INTERNET的高度集成49 SQLSERVER2008数据库引擎提供完整的XML支持。它还具有构成最大的WEB站点的资料存储组件所需要的可伸缩性、可用性和安全功能.SQLSERVER2000程序设计模型与WINDONWSDNA构架集成,用以开发WEB应用程序,并且SQLSERVER2008支持ENGLISHQUERY和MICROSOFT搜索服务等功能,在WEB应用程序中包含了用户友好的查询和强大的搜索功能.SQLSERVER2008与其他产品共同构成了可靠安全的INTERNET和INTRANET系统的数据存储。例如:SQLSERVER2008与WINDOWS2000SERVER和WINDOWSNTSERVR安全及加密工具共同实现安全的数据存储;SQLSERVER2008为在IIS服务下运行或通过防火墙访问数据库的WEB应用程序构成了高性能的数据存储服务;SQLSERVER2008TCP/IP套接字通讯支持可与MICROSOFTPROXYSERVER集成,以实现安全的INTERNET和INTRANET通讯.所有这些SQLSERVER2008功能,使您得以更容易地集成WEB和发挥网络地强大功能。2、伸缩性和适应性同一SOLSERVER2008数据库引擎运行在WINDOWS2000PRoFEssI洲AL、WINDOWS2000SERVER上。还运行在WINDOWSNT4.0版本上。此数据库引擎是一个功能强健地服务器。可管理共上千用户访问地TB数据库。同时,当以默认设置运行时,SOLSERVER2008还具有动态自调整等功能,这使得它可以有效地运行在便携式电脑和台式机中,用户无须承担管理任务。3、企业级数据库功能强大SOLSERVER2008关系数据库引擎支持当今苛刻地数据处理环境所需的功能。数据库引擎充分保护资料完整性,同时将管理上千个并发修改数据库地用户地开销减到最小。SOLSERVER2008分布式查询使您得以引用来自不同资料源地资料,就好像这些资料是SOLSERVER2008数据库的一部分,同时分布式事务支持充分保护任何分布式资料更新的完整性。4、易于安装和使用SOLSERVER2008中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SOLSERVER的过程。二、开发平台采用的是MicrosoftVisualStudio.NET。它和.NET开发框架紧密结合,遵循.NET49 Framework规范,可以利用通用语言运行环境和公用层次类库提供的工具,加速开发过程。VS.NET还提供了完全集成的数据处理,尤其是XML和数据库集成,通过和数据源相连结合起来,大大简化了对来自不同种类的数据源的联合数据的处理。使用.NET框架的开发工具,大大提高了开发者的效率,集成了多种语言支持:简化了服务器端的开发,提供了高效地创建和使用网络服务的方法,使开发人员能够快速构建和部署强健的、可靠的应用程序。使用Microsoft.NETFramework体系结构完全满足开发的要求。目前大多数的单位和个人用户都采用Windows系统平台,所以,以Microsoft.NETFramework作为应用体系结构是开发科研管理的很好的选择。三、开发语言开发语言采用的是c#。c#不仅具有c++的强大功能,而且具有VisualBasic简单易用的特性。c#是第一个面向组件((Component-Oriented)的编程语言,开发组件的能力C#在设计上的重要考虑。c#支持组件所需的属性(Property)、方法(Method)、事件(Event)、设计时属性(Designedtimeattribute)与执行时属性(Runtimeattribute)。设计时的方案处理如图2-4.图2-4开发系统的各个部分c#是微软公司专门为此类简易应用量身订做的编程语言,它与.NET有着密不可分的关系。作为一种简单、先进、面向对象和类型安全的编程语言,它是由C和C++派生而来。C#深深地根植于C和C++语言家族,因此C和c++的编程人员能够很快熟悉它。C#的目标是将VisualBasic的高效率和C++的强大功能相结合。默认情况下,c#代码在.NET框架提供的受控环境下工作,不允许直接操作内存。它所带来的最大变化是c#没有了C和c+十中的指针。49 c#具有面向对象编程语言所应具有的一切特性,如封装、继承和多态。在c#的类型系统中,每种类型都可以看作对象。但c#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。另外,c#没有了全局函数。没有了全局变量,也没有全局常量,所有的一切都必须封装在一个类之中。因此,用c#编写的代码具有更好的可读性,而且减少了发生命名冲突的可能性。四、选择WindowsServer2008操作系统WindowsServer2008是一个功能强大的操作系统平台,它具有强大的功能和易用性及可伸缩能力,而诸如集中式安全管理和强有力的容错管理等特点又使它成为用于网络服务器的理想的操作系统。WindowsServer2008将网络管理和基本操作系统完美地结合起来,并且使网络易于使用和管理。它内部完全是32位体系结构,在运行时有多个线程,从而可以支持功能更为强大的应用程序,同时通过向操作系统和应用程序提供分离的内存空间以防止数据冲突。确保了系统的稳定性。49 第3章系统分析3.1决算系统的分析3.1.1系统分析系统分析就是运用系统的观点和方法,对现行系统进行目标分析、环境分析、数据分析、费用效益分析和风险分析,从而得出管理信息系统的目标和逻辑模型的过程。系统分析是软件工程中的重要阶段,是所有开发的依据。系统分析是传统软件工程生命周期里的一个环节,即:分析、设计、开发、测试。在系统分析阶段,通过对系统的综合研究,对问题域进行抽象,准确地理解系统需求和系统内部运行机制,有助于准确地掌握系统的需求,从而正确地定义问题域,确定软件开发的具体内容。通过系统分析,要完成确定系统需求的内容、确定所有涉及到的要素、为当前需要解决的问题建立相应的模型等工作,做到充分理解用户对系统的需求。做到对账目的全面管理。如图3-1所示。图3-1决算系统界面3.1.2需求分析财务管理信息系统的开发是为了更好地利用计算机信息技术和网络技术提高财务工作的工作效率,并且为领导查询信息和决策提供一种便捷的手段。49 财务管理是为实现企业的目标服务的,并受财务管理的内容制约。基本任务是依法合理筹资并有效地利用企业各项资产,最终提高效益。具体来说,财务管理任务包括以下几方面内容:(1)依法合理筹集资金,满足企业资金需要量。企业进行生产经营活动需要必备的资金额,企业财务管理的首要任务是合理地从各种渠道,采用种种方式合理地筹集到生产经营活动所需要的资金。这项任务有两个面向,一是要正确确定企业的资金需求量,二是要选择好获得资金的渠道和方式。因为企业筹资有多种渠道和方式可供选择,在进行比较选择时主要考虑资金成本。偿还期限,担保条件可能性和资金供应者的其他具体要求,并考虑其对企业投资收益和风险影响,据此选择确定企业筹资的最佳组合方式。(2)有效地分配和使用企业资金,提高资金利用效果。财务管理部门应规划性地,合理地安排各类资产,使其形成合理的资产结构。要使货币资产保持在最佳的水平上,要避免存货资产占用过多,要及时解决资金使用过程中出现的问题,加速资金周转,提高资金的利用效果。(3)分配企业的收益,协调各方面的经济关系。税后利润按照规定的顺序进行分配,在分配中处理好各方面的经济关系,以调动企业、员工、投资者各方面的积极性。(4)实行财务监督。维护财经法规。财务监督是利用货币形式对企业的经济活动进行监督,它是通过对财务收支的审核控制和对财务指标的检查分析,及时发现生产经营活动存在的问题,及时进行处理。实行财务监督,能够促使企业在严格地规范化的范围内生产经营,维护法规制度上的企业完整往。财务管理工作中存在大量的数据。如何充分利用信息技术和网络技术将这些数据信息管理起来,促进工作效率的提高,提高数据的分析利用水平,同时将财务正作人员从繁重的数据处理工作中解放出来,并给领导以便捷的查询信息、监督和决策的手段,是本财务管理信息系统的设计初衷。财务工作的内容繁杂、数据量大且来源分散给日常财务的管理和业务处理工作带来了很大的难度,迫切需要运用现代化的手段实现安全、准确、快捷、高效的管理模式,提高办公效率。3.1.3系统开发的设计要求为了达成系统的总体目标,本系统的设计原则如下:49 1、实用性和经济性相结合建设信息系统的价值在于应用,而应用就必须切合实际。所以系统的设计要求深入研究分析科研院所现有科研管理流程和管理特点,结合当前的实际情况,提供一个面向应用、注重实效的、高性价比的方案。2、先进性和成熟性相结合如今的计算机技术发展日新月异,系统的更新换代非常之快。为此,要求在方案设计过程中,尽量选用当今技术先进并且相对成熟的软硬件产品,从而确保建设好的系统不但能反映当今的先进水平,而且使系统具有发展潜力,并能顺利地过渡到下一代技术。3、可靠性和稳定性相结合根据科研院所科研项目管理的特点,要求将系统的可靠性设计亦视为一个重点,以保证数据的安全和系统的稳定运行。4、可扩展性和易维护性相结合为了适应系统变化的要求,在方案设计过程中尽量选用扩充性强的软硬件系统,同时要求开发的应用系统具有可扩展、易维护,以便系统建成后,用户可以用最简便的方法、低的投资,实现系统的扩展和维护。3.2财务管理信息系统功能分析财务管理信息系统设计主要分为决算系统、工薪系统、核算系统、数据库四大模块。每个模块独立完成相应功能,并且各个模块相互关联共同完成此系统的功能。如图3-2所示。49 图3-2财务管理系统常见结构(通用版)3.2.1决算系统决算系统主要分为决算编制系统和决算审核系统组成。3.2.2工薪系统工资系统主要有工资核算系统、保险基金管理系统和住房资金管理系统组成。49 3.2.3核算系统账务核算管理模块主要完成资产管理系统,完成会计账务处理系统的维护、现金存款管理系统、会计档案系统等功能。会计初始账的录入和凭证的录入、记账、查询、汇总、打印等功能。3.2.4数据库数据库模块主要完成单位、部门和人员信息的维护,此模块主要负责单位、部门和人员信息的增减、变更等信息的维护。此模块是财务软件的基础,因为有了此模块一切财务活动才有了载体。3.3系统细化分析设计科研信息管理系统涉及到科研工作的很多方面,做好系统的分析设计工作对系统的具体实现十分重要。在对整体功能作分析描述之后,为了更进一步清楚准确的表达系统的功能需求,采用面向对象的方法,利用UML建立系统的USECASE图,交互图,组件图等,对未来系统的行为建立模型,为进一步的设计打下基础。3.3.1细化USECASE图在这一阶段,可对上面需求分析中用例模型中的每一个使用案例进行细化,得到若干个小的低一层次的UseCase,深入理解系统的要求和目标。3.3.2类图49 构建面向对象模型的基础是类、对象和它们之间的关系。所谓对象就是可以控制和操作的实体,类是对象的抽象描述,它包括属性的描述和行为的描述。类图是描述类、接口、协作以及它们之间关系的图,它是系统中静态视图的一部分。静态视图可以包括许多的类图,主要用于对软件系统进行结构建模。类图是构建其它图的基础。类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。类图包括三个部分:类、用户接口、联系。类是面向对象模型的最基本的模型元素。类有属性、操作、约束以及其他成分等。属性描述类性质的实例所能具有的值,操作实现类的服务功能,它可以被本类的对象请求执行,从而发生某种行为。用户接口就是用户和系统交互的界面,它也可以用类表示。联系代表对象类之间的关系,这种关系可以有多种,关联、聚合、泛化、依赖等都是非常重要的联系。首先从研究USECASE和交互剧本中发现类,确定类的属性和主要操作。类的属性可以通过检查类的定义、分析问题的需求和运用领域知识来确定。类的操作可以通过检查分析交互图确定,把交互图中对象之间的交互活动抽象成一个类的操作。除了一般类之外,还需要分析定义系统的用户接口,这些接13也可以用类定义。在定义了类之后,需要进一步分析对象类之间的联系。在定义联系时,需要同时分析和确定联系端的多重性、角色、导航的性质,这些可以从需求分析、领域知识来分析和确定。根据己定义的对象类及其联系,以及类的多重性、角色、导航等性质,可以画出类图。通常以下述三种方式之一使用类图:1、对系统的词汇建模系统的基本词汇用于描述系统的边界,决定哪些抽象是要建模系统中的一部分,哪些抽象是处于要建模系统之外。2、对简单协作建模现实的事物大都是相互联系,相互影响的,这些事物抽象成类后,很少有孤立存在的,它们总是和其他类协同工作,因此需要对类的协同工作建模。在对类的简单协作建模时,不仅要描述类的职责、结构和服务,还要强调类间的关系.3、对逻辑数据库模式建模49 可以使用类图对数据库的模式进行建模。使用类图对数据库模式建模时,不仅对数据建模,还允许对行为建模。类图的属性一般用数据库的表的属性来描述,而类图的操作一般转换成数据库的触发器或存储过程。在整个财务管理系统中,涉及到的类非常多,有用户界面类,商业对象类,实体类。其中,实体类主要存储着系统的永久信息,对数据库的设计十分重要。3.3.3交互图交互图是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。交互图包括时序图(Sequence框图)和协作图((collaboration框图)两种形式。时序图描述了类系统中类和类之问的交互,主要反映对象之间发送消息的先后次序,说明对象之间的交互过程以及系统执行过程中在某一具体位置将会有什么事件发生。协作图和时序图一样,反映的也是动态协作,它强调参加交互的各对象的组织。时序图和协作图之间可以相互转化。一个用例需要多个时序图或协作图,除非特别简单的用例。通过它可以分析系统的行为,印证和修改系统的静态结构,实现用户需求,达到系统目标。如图3-3所示。图3-3系统交互图3.3.4系统的组件图UML提供了两种物理表示图-形:组件图和配置图。组件是逻辑事物的物理包,组件图表示系统中的不同物理组件及其联系,它表达的是系统代码本身的结构。配置图由节点构成,节点代表系统的硬件,组件在节点上驻留并执行,配置图表达的是运行系统的结构。49 组件图和配置图用于建立系统的实现模型,系统实现的代码可以按照模块化的思想用组件分别组织起来,从而明确系统各部分的功能职责和软件结构。组件图由组件、接口和组件之间的联系构成。组件图用于建立系统的实现模型,也可以用于建立业务模型,还可以用于建立开发期间的软件产物的依赖关系,用于系统的开发管理。如图3-4。图3-4系统实现模型3.4系统架构的设计企业全面决算系统根据用户输入的财务预测及设置的参数信息进行业务、财务决算,编制决算报告,使得企业管理者能够掌握企业未来一定决算期内的预计财务状况和经营成果。因此在设计时充分考虑各种体系结构的优缺点,选择三层C/S结构进行开发实现,以实现业务,财务决算,和生成报告。如图3-4所示。3.4.1系统架构的选择在信息管理系统领域,目前普遍采用的体系结构有多层C/S结构和多层B/S结构。B/S结构即Browser/Server(浏览器服务器)结构,它是随着Interact技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过www浏览器实现,一部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现。交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换[221。企业全面决算系统的客户端应用较为复杂,需要用户大量的数据输入,频繁读写数据库,数据流量大,处理这样的应用,C/S结构有成熟的技术支持复杂应用的实现且效率更高。49 B/S将计算负担绝大部分压在服务器上,当众多访问者使用B/S进行占用服务器资源比较多的操作时,服务器反映会变慢,而C/S则可以把一部分运算放到Client端进行,从而减轻WEB服务器的负担,现在普通PC机的内存、CPU都有较高的配置,用户端完全有能力分担数据计算的能力。C/S结构的系统可以通过功能模块实现自动升级,服务器升级后,客户端自动检测版本号,有新版本就自动下载升级,通过这种自动升级方式,完全可以实现方便的升级和维护。对于一个公司来说,决算人员相对比较集中,人数比较少,用户最需要的是高效率,因此我们采用C/S结构的开发模式。3.4.2系统架构本系统采用三层C/S结构的逻辑架构。系统在逻辑上分为三层:用户界面层(客户端)、业务逻辑层(应用服务器)和数据访问层(数据库服务器)其中,数据访问层用于存放系统初始信息,决算项目,现金收入参数等二维表及存储过程、触发器。中间层主要是与业务逻辑相关的类,封装了用户的一些业务操作,完成与数据库的数据存取和业务逻辑。用户界面层主要完成用户的数据录入和查询,与事务和操作流程相关的界面通过中间层与数据库连接。49 第4章系统实现的理论基础4.1系统逻辑结构的设计从整体上划分,系统采用逻辑四层体系架构:客户层、Web层、业务层、企业信息系统层。整个架构中采用了MVC设计模式。MVC(Model-View-Controller)即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层(模式层、视图层、控制层)。采用MVC的设计模式,使设计和使用有了很大的灵活性。运用这种设计模式,一个应用被分为三部分:Model、View和Controller,每个部分负责不同的功能。Model包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需要的数据,提供了完成问题处理的操作过程。View通过显示的形式,把信息传达给用户。不同视图通过不同的显示,来表达模型的数据和状态信息。Controller通过除法的方式,接受用户的输入。它定义了用户界面对用户输入的响应方式,接收用户的输入并调用模型和视图去完成用户的需求,负责Model与View之间的协调工作,也就是将View的操作映射到具体的Model以完成具体的业务逻辑或者将通过Model处理完的业务数据及时地反应到View上。MVC模式可以与J2EE架构进行很好的结合,可以按照如下的方式将J2EE技术映射到MVC的三个部分:Model、JavaBean和EJB主要接收视图的请求的数据,并返回最终的处理结果。业务模型可以说是MVC最主要的核心。J2EE的体系结构(客户层、应用层、数据层)与本系统的三层结构相吻合,客户层(Browser)为瘦客户,为系统使用人员提供方便直观的可视化图形界面;应用层运行业务逻辑,针对客户请求,完成相应的计算和数据操作,大大减轻了Web层的负担,提高了系统效率,并且将业务逻辑与其他分层分开,提高了系统的可扩展性和灵活性:数据层为大型关系数据库,存放相关资源信息,保证整个系统数据一致性。J2EE安全模型通过定义用户权限和配置组件,使用户不能访问顶层系统资源或者只能由授权的用户访问,从而提高系统的安全性。如图4-1表示。49 图4-1J2EE安全模型4.2数据库设计原则和E-R图数据库是信息系统的核心和基础。它把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。一个信息系统的各个部分能否紧密地结合在一起以及如何结合,关键在数据库。因此只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统。数据库设计是信息系统开发和建设的重要组成部分。数据库设计负责把创建的类图转化为支持关系数据库的设计。数据库设计以及从类图的转化不仅对于那些请求数据库服务的其他层来说是很重要的,而且对于数据库的性能来说也是很重要的。数据服务层主要是利用ADO.NET实现对数据的操作,并结合数据库管理系统在数据库管理系统上开发存储过程、触发器、视图来完成数据服务层的功能。将类转化为表的最简单的方法是建立从类到表的一对一的映射,但这种做法会导致产生的表比实际需要的多、连接太多、表丢失等后果。所以在类转换为数据模型时根据类与类之间的不同关系(如一对一、一对多、多对多、继承、聚合)按照一定的规则进行转化。在进行数据库设计时,应注意以下几个问题:1、数据的完整性49 数据库的数据完整性是指数据的正确性与相容性,也就是在多用户,多进程共享数据的环境中,保证更新的~致性,保证数据库中的数据是正确的,不出现与实际不符的情况。完整性可以由两个方面来控制约束机制:一种是静态约束,对关键表的某些字段的值设置约束条件,当输入任何其它不合法字符,系统将根据约束条件自动判断是否接受。还有一种是动态约束,设置触发器,当删除、修改一个数据库中某一个表中的某条记录时,其它与之相关数据也要做某些相应的操作才能保证数据库之间数据的完整性。事务控制:对重要操作迸行事务控制,利用回流机制,保护数据一致性。例如:在进行成果、论文的修改或删除操作时,不仅要修改或删除成果信息表或论文信息表,同时也要调整与之相对应的成果参加人员表和论文主要作者表,两者必须同步进行,否则全部执行失败,以保持数据的一致性。2、数据库的安全性数据库的安全性是指保护数据库,防止不合法的使用,以免数据的泄露、更改和破坏。在软件上,可以从以下三个层次来设置:操作系统级:对数据服务器设置密码,防止未经授权的用户从操作系统着手访问数据库。网络级:从网络访问系统时进行身份认证与识别,不同用户进入不同的页面,防止无权用户访问.数据库系统级:在设计数据库时,对数据库进行权限设置。将不同的权限授予不同的角色,比如所有的主题库只能由管理员来修改,供查询统计使用的临时库任何人无权修改,以此来保证系统的安全。3、合理利用视图视图是数据库系统提供给用户以多种角度观察数据库中数据的重要机制。它可以从一个或几个表导出,是一个虚表。在科研管理系统中,经常使用一些较为复杂的查询工作,这些查询会用到若干张表,使用视图,可以简化用户的操作,对机密数据提供安全保护。因此,在数据库设计时,应注意视图的定义与使用。在科研管理系统中,为保证数据的完整性和安全性,对关键操作采用了事务控制,并设置了一些触发器,对主题库、临时库、基本信息库定义了不同的权限,对综合查询操作利用视图来实现。数据库表和代码都可以通过系统提供的工具,根据用户的具体需要作相应的修改和删减。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。描述概念模型的有力工具是E—R模型.科研管理系统的核心是科研项目管理,为了更好的对科研项目财务费用的数据结构进行分析,我们借助于数据库的E_R图来表示数据实体以及他们之间的关系49 4.2.1系统拓扑结构本系统的物理架构中包括以下几个部分:客户端PC:包括参数设置员、业务员与决算经理等使用的PC,运行客户端参数设置、业务决算或财务决算程序。应用服务器:运行具体的业务处理逻辑的服务器,负责响应客户端请求,处理业务逻辑,完成与数据库的数据存取,并将结果返回给客户端。数据库服务器:存放系统初始信息,决算项目,现金收入参数等二维表及存储过程、触发器。E-R可参考4-2图提供的模型理解:图4-2E-R逻辑图4.3安全性设计对于SQLServer2008共有两类权限:一类是Select、Update、Insert、Delete和Execute等操作权限,称为目标权限。另一类叫做命令权限,它们只能由系统管理员或数据库所有者授予,包括Create(Database、Default、Role、View、Procedure)。每个数据库有自己独立的保护体系,即被授权在某一个数据库中使用某个命令对其它数据库没有影响。如果使用未被授权的命令或数据库目标,SOLServer将返回出错信息。49 如果需要授予权限的对象很多,那么需要往返设置,浪费大量数据库进行输入和输出。优化的方法是:利用数据库的系统表,系统过程或者存储过程在前台编写应用程序,完成对用户账户的建立和权限的设置。一个用户要完成对数据库的访问,首先要有服务器的登录账号,然后要有数据库的访问权限,即该用户的登录账号有一个合法的Database用户账号。另外要对具体对象控制则需要设置相应的权限,可以具体到某个表(Table)的某些列(Colunm)。思想是:首先,针对应用程序所使用具体对象的不同要求细分为不同的基本岗位,根据业务规则可以执行的操作赋予不同岗位、不同的权限。然后,在系统设计阶段在数据库中建立岗位的服务器登录账号和数据库访问账号,并设置对必要的数据库对象的访问的权限。最后,前台开发应用界面供系统管理员添加新的用户,并根据其岗位级别映射到相应岗位上,那么该用户就拥有了相应的岗位权限,可以实现对登录用户及其权限的集中管理,也就完成了对数据的安全性管理。此外,还可以充分利用视图,利用视图,用户不用访问表实体,而是访问虚拟地址表,只允许查看表的一部分,达到保密的效果。视图在此起到了“防火墙”的作用。49 第5章系统实现5.1系统实现概述本系统是一个基于C/S结构的多层应用程序,利用.NET类相关技术来实现。DataSnap可以连接位于同一台电脑或者不同电脑中的用户接口层和事务逻辑层,使得数据库应用程序部署非常灵活。DataSnap可以把应用服务器从数据库服务器获取的数据封装成一个个的数据包,通过用户DCOM连接组件传送给客户端;并可以把客户端数据集中修改后的数据通过同样的连接方式传送给应用服务器,再由应用服务器通过数据库访问方式写入数据库。应用服务器端主要是通过TDataSetProvider来完成DataSnap的服务器端功能,而客户端主要是通过TClientDataSet组件来完成DataSnap的客户端功能。用户对TClientDataSet组件的操作只影响它内部维护的数据集,不会直接改变后台数据库的内容。TClientDataSet内部的Data属性保存着从后台数据库读取的只读的数据集内容,Delta属性记录着所有用户对数据集内容改变的操作。当用户调用TClientDataSet的ApplyUpdates方法后,TClientDataSet会把Data和Delta属性都传递给TDataSetProvider组件。TDataSetProvider组件负责接收TClientDataSet传递过来的指令,通过数据集组件读取数据库数据,然后传递给TClientDataSet。对于TClientDataSet发送过来的Data和Delta属性,TDataSetProvider进行分析,然后调用数据集组件,将改变后的数据集内容写入数据库。DCOM组件用于客户端,负责将TClientDataSet组件与应用服务器的TDataSetProvider组件连接起来,传递数据包。5.2基于DCOM的三层结构的实现5.2.1远程数据模块启动远程数据库模块(RemoteData49 Module)向导,建立一个DCOM对象YsAppServer,它的线程处理模式为Apartment,即远程数据模块的每个实例只服务一个客户端,对于每个实例内部,数据是安全的,不需要考虑多线程同步问题。加入一个TSession组件,设置其AutoSessionName属性为true,让TSession组件来管理BDE数据集的线程问题。BCB6提供了多种数据库访问技术,BDE作为BCB中一直支持的数据库访问技术,相对稳定和成熟一些,而dbExpress推出时间尚短,配套的数据库驱动还不够齐全,而BDE发展时间较长,数据库驱动比较丰富,因此本项目选用BDE这种数据库访问技术。在远程数据模块中加入一个TDataBase组件dbsYs,三个TQuery组件qryFunc,qryFuncRec,qryLsysb,三个TDataSetProvider组件dspFunc,dspFuncRec,dspLsysb。dbsYs用于设置数据库及数据库登录的用户名、密码等参数信息。TQuery组件用于根据程序设定的SQL语言进行数据库访问,返回相应的数据集或执行相应的数据库操作。TDataSetProvider组件用于响应客户端请求的事件处理实现业务和数据逻辑。5.2.2创建应用服务器利用TLE(TypeLibraryEdit)为YsAppServer对象接口编写实现各种业务逻辑的方法,保存、编译并运行应用服务器,应用服务器程序会在第一次运行时自动运行。5.2.3创建客户程序(1)与应用服务器连接新建一个应用程膨,为其建立一个数据模块,在数据模块中加入一个TDCOMConnection、三个TClientDataSct组件、三个TDataSource组件,设置DCOMConnectionl组ComputerName属瞧为疰焉照务器所在电脑名称,ServerName属性为prjYsAppServ.YsAppServ。TDCOMCormection组件给客户端提供连接服务黪的链力。设置TClientDataSet组件约Remo把Server改写49 为DCOMConnectionI,设定三个组件的ProviderNmale属性分别为dSpFunc、dspFuncRec、dspLsysb,然后连接DataSource组件。为客户端程序提供数据源。为各模浃建窗体,显示用户界面,供用户输入查询,以完成各模块功能。(2)调用服务器上的接口要调用服务器上的接口,首先需声明应用服务器接口类serFunc,建立客户程序与应用服务器的造接,使serFunc得到应用服务器的对象实镶,然后调整应用服务器上的接口。调试完成后,释放数据,然后关闭与应用服务器的连接。5.3数据访问性能的优化5.3.1问题描述在项目开发过程中,我们发现采用多层数据库访问方式以后,程序部分功能的执行效率有所下降,在局域网内一个简单的数据查询页面的弹出时间较慢,需要1至2秒钟,当把程序放到广域网上运行时其响应速度甚至可超过1分钟,这样的响应速度是用户无法忍受的。由于我们开发的分布式多层应用系统须在网络环境下运行,所以,这样的速度无疑成为项目的效率瓶颈。5.3.2问题分析若记录了在三种体系结构中分别连续100次发送100字节、1000字节、10000字节时所花费的时间,试想连续发送1000次和10000次的情况。从中可以看出同一体系结构中,发送次数相同时,发送数据量的大小对于时间开销的影响并不大;在不同的体系结构中,发送相同的数据量时,花费的时间相差较大,当发送次数增加时,这种差距尤为明显。由此可见,在多层结构中传递数据,其时间开销的大小与连接次数的多少密切相关,而与传递的数据量的大小没有太大关系,也就是说在多层C/S结构中连接次数是产生数据访问瓶颈的重要因素。49 我们将两层、三层和四层结构中数据传送的总时间开销分别设为X、Y和Z。将上述三张表中各表的第二行的数据减去第一行的数据,即Y二)("得出Y1,第三行的数据减去第二行的数据,即Z-Y,得出Z1,由表中数据可知:在数据传输过程中,客户端到应用服务器端的时间开销所占的比例较小,绝大部分的时间花费在与数据库服务器上的连接上。5.3.3解决方案通过研究测试发现,多层结构与传统的两层结构相比,因为多了一层应用程序服务器,接管了众多客户端的连接处理,数据库服务器只需处理应用服务器的连接,这样就不会因为用户(Client)数的增加而影响系统的运行性能,从而在宏观上大幅度地减少数据库服务器的负担。但是就具体的一个数据库服务请求而言,其响应速度反而会变慢。通过上节的数据分析我们得出变慢的原因主要存在于两个方面:一是连接次数;二是与数据库服务器的连接。那么怎样才能有效地减少连接次数呢?我们通过研究连接次数来说明问题。客户端向数据库服务器发出一次数据访问请求后,需要经过如图5—3所示的4次连接才能完成一次数据访问。假设客户端请求的数据有N项,并分N次提出请求时,其总连接次数为4N次。若N项请求在客户端合并为一次请求,那么需要的总连接次数为2N+2次。那么我们为什么可以将N项数据请求合并为1项数据请求呢?通过分析我们发现,在很多情况下,连续的N次数据请求具有一定的稳定性,即根据不同的业务逻辑,连续多次的数据请求往往具有某种固定的搭配关系,所以,我们可以将业务逻辑统筹规划,把经常同时出现且具有固定顺序的数据请求合并成一个请求。根据前面的推导结果可知,这样就可以有效地大幅度减少连接次数。大量的时间花费在应用服务器和数据库服务器之间的连接上。如果将应用服务器到数据库服务器的N次请求也合并成1次的话,则总的连接次数将减少到4次。我们通过使用存储过程的办法,将N项数据合并成一项交给应用服务器。这样总交互次数由原来的4N次减少到4次。那么怎样减少与数据库服务器的连接呢?我们通过详细分析业务逻辑,将客户端经常使用的数据项通过文件形式缓存到应用服务器端。当客户端提出请求时,数据由应用服务器端直接返回至客户端,这样就可以减少与数据库服务器的连接,而且总连接次数减少至2次,大幅度提高了响应速度。49 5.4面向对象技术自动化对象技术可以使一个应用程序通过操纵另一个应用程序中的对象及对象的属性和方法来使用这个应用程序提供的丰富的功能;或者可以使一个应用程序通过给另一个应用程序提供一些对象及对象的属性和方法来允许这个应用程序使用它提供的各种功能。其中,提供对象及对象的属性和方法的应用程序被称为自动化服务端;调用其他应用程序的对象及对象的属性和方法的应用程序被称为自动化客户端或自动化控制器。本系统是一个典型的自动化服务端,它以自动化对象的方式提供内部的数据和功能,其他应用程序作为自动化客户端或自动化控制器使用VBA调用对象的方法或更改对象的属性,来访问和控制这些由本系统显示的自动化对象。本系统提供了一组自动化服务器组件,这些组件含有很多自动化对象,如:本系统Application、Documents、Paragraphs、Tables、Range、Styles等。利用这些对象可指定文档、段落、表格、区域、样式等文档元素,然后将数据从指定文档元素中读出或写入,实现客户程序访问和控制本系统文档。本课题利用自动化对象技术,调用本系统提供的服务创建本系统文本对象,生成图文并茂的本系统文档。5.4.1创建本系统自动化对象新建一个窗体,添加一个T本系统Application组件本系统Application、一个T本系统Document组件本系统Document、两个TBitBtn组件btnNew和btnClose。在btnNew的Click事件处理函数中首先建立与本系统自动化服务器的连接,若连接不上显示出错信息以提示用户。创建财务账目的对象的代码如下所示:privatevoidmenuItem12_Click(objectsender,System.EventArgse){DialogResultresult=MessageBox.Show("结帐后将进入下一会计期间,是否结帐","确认结帐",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);if(result==DialogResult.OK)49 {stringstrConn="workstationid=localhost;IntegratedSecurity=SSPI;database=caiwubook";SqlConnectioncn=newSqlConnection(strConn);cn.Open();try{SqlCommandcmd=cn.CreateCommand();cmd.CommandText="execsf_期末结帐";cmd.ExecuteNonQuery();MessageBox.Show("期末结帐成功!","结帐成功",MessageBoxButtons.OK,MessageBoxIcon.Information);}catch(Exceptionexpress){MessageBox.Show(express.ToString(),"期末结帐失败",MessageBoxButtons.OK,MessageBoxIcon.Error);return;5.4.2创建工作账目根据空白模板创建一个空白账目表,为该文档设置文档标题,连接到本系统Document组件,以便于对该文档插入数据。图5-4账目生成界面49 第6章系统测试6.1测试计划主要测试内容将包括(1)软件测试单元测试:程序员对每一个功能模块进行测试,并书写测试记录。集成测试:测试各模块间的接口和联系,验证功能的完整性。测试依据:系统概要设计书、需求说明书。测试方法:采用白盒测试和黑盒测试相结合的方法,在确定测试用例后,我们将编制和采用已产品化的自动测试工具进行反复调测。(2)压力测试数据库容量的测试:测试数据库可存放的数据容量,在大数据量下数据库的I/O能力,数据库结构及索引的合理性,数据库配置的合理性。网络通量测试:测试在网络各网段实际发送信息量。并发性测试:包括数据库、操作系统、应用程序等并发访问可行性。(3)稳定性测试主机系统的稳定性测试:异常情况下,主机系统对数据及应用的保护程度。数据库稳定性测试:在非法宕机、联接丢失、批量处理中断等特殊情况下数据库的保护程度。应用程序稳定性测试:对新增,修改,删除等数据的处理能力,测试代码如下:PrivatevoidtoolBar1_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse){49 if(e.Button.ToolTipText=="首记录"){this.dataGrid1.UnSelect(cmOrders.Position);cmOrders.Position=0;this.dataGrid1.Select(cmOrders.Position);this.dataGrid1.CurrentRowIndex=cmOrders.Position;return;}if(e.Button.ToolTipText=="上一记录"){if(cmOrders.Position>=0){this.dataGrid1.UnSelect(cmOrders.Position);cmOrders.Position--;this.dataGrid1.Select(cmOrders.Position);this.dataGrid1.CurrentRowIndex=cmOrders.Position;}return;}if(e.Button.ToolTipText=="下一记录"){if(cmOrders.Position<=cmOrders.Count-1){this.dataGrid1.UnSelect(cmOrders.Position);cmOrders.Position++;this.dataGrid1.Select(cmOrders.Position);49 this.dataGrid1.CurrentRowIndex=cmOrders.Position;}return;}if(e.Button.ToolTipText=="尾记录"){this.dataGrid1.UnSelect(cmOrders.Position);cmOrders.Position=cmOrders.Count-1;this.dataGrid1.Select(cmOrders.Position);this.dataGrid1.CurrentRowIndex=cmOrders.Position;return;}if(e.Button.ToolTipText=="新增"){cmOrders.AddNew();SetModifyMode(true);输出值测试代码:stringstrConn="workstationid=localhost;IntegratedSecurity=SSPI;database=caiwubook";SqlConnectioncn=newSqlConnection(strConn);cn.Open();SqlCommandcmd=cn.CreateCommand();cmd.CommandText="select取值from系统参数表where参数名称="当前会计期间"";txt7.Text=cmd.ExecuteScalar().ToString();49 cmd.CommandText="selectmax(凭证编号)最大编号from凭证表";objectmaxResult=cmd.ExecuteScalar();intmaxID=1;if(maxResult!=System.DBNull.Value)maxID=Convert.ToInt32(maxResult)+1;intlength=maxID.ToString().Length;switch(length){case1:txt4.Text="00000"+maxID.ToString();break;case2:txt4.Text="0000"+maxID.ToString();break;case3:txt4.Text="000"+maxID.ToString();break;case4:txt4.Text="00"+maxID.ToString();break;case5:txt4.Text="0"+maxID.ToString();break;49 }txt5.Text=DateTime.Now.ToShortDateString();txt8.Text="未过";comboBox1.SelectedText="收";this.enableDoubleClick=true;dataGrid2.ReadOnly=false;DataGridStateControl();newTable.Clear();}if(e.Button.ToolTipText=="修改"){SetModifyMode(true);this.enableDoubleClick=true;dataGrid2.ReadOnly=false;}if(e.Button.ToolTipText=="删除")通讯的稳定性:包括内部网络及外部联接。(4)性能测试各个组件通讯响应时间;数据堵塞情况;CPU使用率;数据库I/O及磁盘I/0情况;内存使用情况(5)测试程序各项功能测试所需的数据:包括网络测试所用数据和应用软件测试需要的各种数据列表和对数据的说明;49 测试结果记录的说明:测试后的结果资料有详细的记录,包括各种环境因素和条件,并对结果有详细的解释说明。6.2测试结果(1)测试的系统性能:包括硬件网络平台的性能和应用软件系统的性能,对照系统总体设计的原则,列出各种性能指标参数。(2)测试的系统功能:根据系统总体设计的结构,测试系统使用到的各种功能是否实现。(3)纠正系统缺点需做的变动:对于如果在测试中发现系统的错误并修改后,应该详细说明错误的原因和系统改动的地方,防止系统隐患和造成不可预计的后果。(4)提出的建议:对测试后的结果资料分析,如果发现还有更好的能够安全有效的提高性能的方法可以写出建议,提供参考。49 结论本论文的研究是结合财务知识以及计算机系统而进行的。研究的主要工作从以下几个方面展开:探讨了系统的体系结构、系统中所用ASP.NET的主要技术,研究了科研项目财务信息管理系统的运行模式、开发和运行环境、系统功能结构、数据库的设计、系统安全机制及各功能模块的实现技术:最后对系统进行部署。系统最终在实际工作中得到应用,提高我单位科研项目财务费用管理的水平,同时也提高了我单位信息化的水平。本论文的特点主要包括如下几个方面:在系统实现中,采用了微软全套的VS开发环境,从而大大增加了系统运行的稳定性、可靠性、安全性及高效性。在表示层,采用了VS控件及用户自定义控件。代替了以前的ASP脚本语言,并充分考虑到数据的可靠性及对用户的友好性。提高了程序的安全性及高效性:系统响应时间较短,数据传输安全准确。在应用逻辑层,采用了VS创建可重用组件技术及VS访问数据库技术,充分利用.NET提供的类库,大大简化了中间层的组织和管理,提高了系统的可伸缩性和可维护性;在数据层,利用SQLServer2008。及其存储过程的高效性和安全性,为在IIS服务下运行的数据库的数据资料提供了高性能的数据存储服务。在系统安全性方面,结合三层结构提供的安全机制及不同用户分级权限的设计技术,为应用程序提供了可靠的安全保障。49 致谢本篇论文是在杨老师的精心指导下完成,从选题到论文内容都给予了精心的指导和严格的教诲,无论从学术水平还是学术造诣上都使我心服口服,在系统的设计中,自己动手,亲身经历了从学习、研究到进入使用的过程。不仅是我学到了技术和经验,更重要的是让我提高了个人工作能力,是我意识到计算机专业的优越性在这次毕业论文设计中,我第一次亲身体验个人制作项目所面临的困难。通过对本系统的开发是我对书本上的知识点和理论有了更深一层的了解,使我学会了如何利用所学的知识,将理论付诸实践,进一步掌握了决算类管理信息系统开发的规律,从而对本专业有了更深刻的认识。此后,我会加倍努力的去研究,在熟练的基础上掌握更多的新型技术,来提高自己的开发水平。通过这一阶段的学习和研究,该项目终于完成,虽然耗费了许多经历和时间,单从另一方面它验证了我的知识和能力,让我有了不断提高自身素质的意识。在这里我衷心的感谢我的指导老师杨老师对我的指导和启发。在您的帮助下我成功的完成了大学的最终任务。最后,我谨向所有关心和帮助过我的老师、同学、领导、同事和家人致最衷心的感谢和祝福。49 参考文献1中华会计网校《中华会计网校会计从业资格考试辅导教材》《财经法规与会计职业道德》2009版2黄莉《中文数据库管理与研究[J]》《电脑知识与技术》2010版3赵燕平《电子商务基础与应用》北京大学出版社2009版4潘玉琪《SQL2008从入门到精通》清华大学出版社2011(04版)5雷万云《信息化与信息管理实践之道》清华大学出版社2012版6中央会计学院《会计电算化初级培训》经济科学出版社出版2012版7谭浩强《C++程序设计》清华大学出版社2011版8电子科技大学《VISUALC++应用开发》电子工业出版社2012版9周晓芬《会计电算化实务》清华大学出版社2011版10高冬梅《SQLSERVER2008数据库程序设计》机械工业出版社201149'