个人财务管理系统中期报告

时间:2024.4.7

江西理工大学 理学院

毕业设计中期报告

题目:个人财务管理系统

    专业:信息与计算科学

班级:信息081班

姓名:郑龙辉

    指导老师:邹伟刚老师

个人财务管理系统

一、        项目描述

  本项目实现实现个人财务的管理,以及对财务和人员信息的数据处理。方便用户管理个人财务

二、        主要工作

1、            安装和部署代码编写环境,包括JBoss,oracle,Myeclipse等的安装。

2、            编写该项目的需求说明书,详细设计书等相关文档的设计

3、            建立所需要的EJB项目和Gwt项目

4、            建立相应的实体类和实现类,即Ejb框架的搭建

5、            将EJb项目和Gwt项目进行关联,完成项目的开发

6、            将项目打包发布

三、        综合概述

(如今的程序领域,大家都在说,面向对象OOP,但是真正能理解面向对象的含义的程序员却很少,究竟什么是对象,怎样面向对象)
  1).面向对象:
  1.何谓对象:在面向对象程序设计中,我们将问题空间中的元素以及他们在方案空间中的的表示物称作对象(object)
   Alan Kay总结了smalltalk中对象的5大基本特征:

 所有的东西都是对象。
  程序是一大堆对象的集合,他们通过消息传递,各个对象之间知道要做些什么。
  每个对象都分配有自己的存储空间,可容纳其他对象。
  每个对象都有一个类型。
  同一类的所有对象能接收相同的消息。
   -----而所有的编程语言的最终目的是提供一种抽象方法----
  2.对象的接口:我们向对象发出请求是通过它的接口定义的,对象的类型决定了它的接口形式。
  3.OOP中唯一关心的: 就是接口是什么,就像汽车的发动机一样,我们不必要知道它的结构是什么,只要它能工作就行了。所有的程序是由一定的属性(数据)和行为(方法)组成的,不同的对象访问通过函数调用来完成,对象间的所有交流都是通过方法调用,通过对封装数据对象,很大程度上提高复用率。
  4.对象的3个主要特征:
   behavior—说明这个对象能做什么。
   State—当对象施加方法时对象的反映。
   Identity---与其他相似行为对象的区分标志,每一个对象有唯一的indentity, 而这3者是相互影响的。
  5.面向对象中最重要的思想 就是类,类是模板是蓝图,从类中构造一个对象,即创建了一个类的实例。(类好比一个建材市场,其中有许多子类--各种各样的装饰材料,而我们装修自己的房子就要选择我们需要的材料,(为了建立我们自己的程序,我们必须选 择我们需要的类)这个比喻可以很形象的解释类是什么。
  6.类之间的关系:
   依赖关系:use-a A类中的一个方法操作了另一个类中的对象。
   聚合关系:has-a A类中的对象包含B类的对象。
   继承关系:is-a A继承了B类,此时A类不仅有了B类的方法,还加入了自己的方法。以便我们创建我们自己需要的对象。
  Java中定义的每一个类都必须继承另一个类,使用关键字extends,如果一个类在定义中不现实使用关键字extends,这个类就会隐式继承Object类。Object类又叫根超类,或基类。,我们从根超类继承来的叫子类。Java中每个类都是根超类的子类。
  8.接口(interface)规定了可对特定的对象发出哪些请求。
  9.继承=重新使用接口:创建出一个数据类型后,当需要新建立一个数据类型去实现相同的功能,是很没有意义的一件事,此时对其克隆后,再根据情况改进实现自己的目的就是继承。
  10.封装:就是把数据和行为结合在一起在一个包中,并对对象使用者隐藏数据的实现过程。Java用3个关键字来设置边界,从而进行对数据的隐藏。Public(共有)的定义任何人都可使用.private(私有)意味着除你自己,类型创建者及那个类型的内部函数成员可以访问外其他任何人使用都会产生错误。Friendly(友好)
  意味在包(package)中是可以访问的。(以上过程也可叫方案隐藏)
  11.引用(Handle)操控对象:
   当创建一个引用时必须要对其进行初始化
   例: String s=”happy”(未建立连接)
   String s=new string(“happy”)与一个新的对象连接使用new 。此句建立了一个引用,并且连接引用并初始化对象 赋值字符串“happy”.
  12.对象的创建及存在时间:数据存放的地点
   1:寄存器-速度快,数量少,在cpu内部,我们对寄存器没有控制权。
   2:堆栈:驻留长规内存中,堆栈指针下移建立新的内存,上移释放内存。
   3:堆:常用内存池,保存对象,有极大的灵活性,java的数据就存放在此,但是要以时间及效率为代价。Java的对象建立是在程序运行时才决定。而c++是在设计时建立对象。
  对象的生存时间(lifetime)java提出的垃圾收集器可以很好的发现无须再用的对象,使用GC(grabage collector)垃圾收集器。清除对象,释放内存。
  为此我们就要付出一定的运行期的开销。
  13.在此我们就会有这样一个印象,一个程序只是一系列对象的集合,他们的方法将其他对象作为自己的变量使用.
  14.主要类型: java的主要类型有:boolean,char,byte,short,int,long,float,double,void.这些主类型的大小都不随机器的结构变化而变化,提供了java很好的可移植性.
  15.字段方法:字段又叫数据成员,成员函数又叫方法,java的全部工作就是定义类,制作累得对象及发送消息.
  16.一个程序只是一系列对象的集合,他们的方法将其他的对象作为自己的变量使用,而且将消息发给那些对象.
  17.名字的可见性:为了使名字不重复,作者可以定义自己的库,一般用自己域名的倒写形式 如: COM.:Leeak.utility.foidles
  18.static关键字:即使没有创建对象,也需要一愕能调用的方法,此时可以使用static
  19.java.lang默认自动的导入每个java程序中
  20.OOP中对象使对属性和方法的封装,对象具有信息的隐蔽的性质,对细节的隐藏,对象只需要知道去这样做,而不知道如何做的细节,类的方法应谨慎控制对java数据的访问,可以用get读取方法,用set修改方法.
  21:pakage:Java API中每个类和接口属于一个特定的包,包实际上市对类和接口进行组织的目录结构,提供了一种软件复用机制.
  22.创建可复用的类得步骤:1.定义一个public类
   2.选择一个包名,并把pakage语句加到可复用的类的源码中.
   3.编译这个类.
   4.把可复用的类导入其他程序中即可.
  23.java中提出在类定义的括号外的仅有2个语句,pakage和import.
  24.软件的复用性,软件的复用性就是利用紫的已有的,定义良好的的经过仔细测试的文档清晰的可移植的易于获得的软件构件开发新的软件.
  以上就是java面向对象的一些基本术语的概述,其中的有些部分可以扩展的更深,看过think in java的 朋友就会有此种感觉.此文章向对初学者阐述了面向对象的基本概念.对已是java程序员的朋友可以对他们的基本知识做以回顾.

2、Jboss综述

  JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors' Choice 2002评选中获得“最佳Java应用服务器”大奖。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。

刚开始使用JBoss进行EJB开发时,由于可供参考的资源不是很多,所以有一个比较困难的起步阶段。JBoss的配置和使用没有提供图形向导界面,所以开发部署EJB相对比较复杂。本文通过尽量具体的演示来对JBoss3.0下的EJB开发和部署的进行一个简单的介绍,从而使刚开始使用JBoss的用户可以很快地进入到真正的J2EE应用开发中。

Enterprise JavaBean (EJB)规范定义了开发和部署基于事务性、分布式对象应用程序的服务器端软件组件的体系结构。企业组织可以构建它们自己的组件,或从第三方供应商购买组件。这些服务器端组件称作 Enterprise Bean,它们是 Enterprise JavaBean 容器中驻留的分布式对象,为分布在网络中的客户机提供远程服务。

JBoss是一个开源的符合J2EE规范的应用服务器,作为J2EE规范的补充,JBoss中引入了AOP框架,为普通Java类提供了J2EE服务,而无需遵循EJB规范。JBoss通过类载入时,使用Javassist对字节码操作实现动态AOP框架,Javassist是一个开源的编辑字节码的类库。

JBoss中参考,切入点与方面也由普通Java对象实现,并使用XML文件配置。JBoss的连接点模型与AspectJ略有不同,提供了一系列预定义的切入点,包括类匹配,方法调用,构造器调用,域访问,特定的调用与被调用关系。通过这些切入点的逻辑运算,可以实现更为复杂的切入点。方面为Java 类,参考是其中的一个方法,方面中不含切入点,方面主要为各种拦截器(Interceptor),拦截器即为只含一个参考的方面,单一连接点上可由多个拦截器形成拦截器链,拦截器执行额外的操作。对方法的拦截由Advisor类管理,在连接点依次调用拦截器,并最终调用被逻辑的方法。而关于切入点,参考已及方面的信息由AspectManager管理。此外,JBoss提供对元数据的支持,用于为类,方法,构造器以及域添加额外的属性,并可在运行期访问。

为实现拦截,JBoss需要修改类的字节码,大致过程如下。

XML配置文件中关于切入点,拦截器,元数据以及混合类的信息在应用程序部署时被读入、解析,并生成相应的对象,这些信息与实例化的对象由 AspectManager管理。在需要混入方面代码的类载入时,AspectManager将创建Advisor类,将方面相关信息传递给它,并对类的字节码进行修改,之后将修改过的字节码交给类载入器完成类的装载。字节码的修改主要是对被载入的类添加一系列方法用于代理那些匹配连接点的方法调用,构造器调用,域访问以及方法导入,转为对Advisor类相应方法的调用。类中各方法将重命名,保留原方法体,并添加一个与原方法同名的方法,在这个方法中调用那些代理方法,用来将调用代理给Advisor类,或调用重命名的原方法。对于域访问,分别添加两个方法,对应于读与写操作,将域访问代理至 Advisor类,在访问这个域的类中,则需将对域的访问转换为对上述方法的调用。对于构造器调用,则添加一个方法,将调用代理至Advisor类,并对构造对象的类的构造代码作相应转换。对于导入,被导入的类中将添加一个混合类实现的引用,并添加混合类接口中的方法,将对混合类方法的调用代理至 Advisor类,并最终调用混合类的实现。相关类载入后,初始化Advisor类,填入拦截器链,以完成整个处理过程。 

3、Oracle综述

Oracle 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。
  特点
  1、ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。
  2、提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。
  3、支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。
  4、提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。
  5、提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术

4、EJB综述

EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序,类似微软的.net技术。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。

EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。

在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态 Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品.EJB是 BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理...

5、软件工程概述

 软件工程是分析、设计、实现、与维护软件系统的一组规范,它指导着软件开发人员以工程化的手段规范地开发高质量的软件。

  今天,计算机软件在世界上的应用越来越普及,影响着我们工作和生活的方方面面。然而,软件的开发却常常以失败而告终。在这门课中,我们将集中从构建和维护软件系统的实践的角度来讲授软件工程的整个知识体系。

  本门课的内容将基于国际软件工程知识体系( SWEBOK ),参考软件工程方面卓有建树的软件工程师和计算机专家的著作和论文,并引入软件工程发展的最新成果、前沿技术、最佳实践、文档模板和软件工具。本门课将采用“案例 - 原理 - 实践”的教学方法,以及多媒体和双语教学手段。

四、               软件工程是一门将理论和知识应用于实践的工程,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。除了工程,软件工程还综合应用了计算机科学、数学和管理科学。计算机科学和数学用于构造模型与算法,工程科学用于制定规范、分析与设计、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。 

         软件工程这一概念,主要是针对 20 世纪 60 年代 “ 软件危机 ” 而提出的。它首次出现在 1968 年 NATO (北大西洋公约组织)会议上。自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言(例如 PASCAL 语言, Ada 语言)、结构化方法等。并且,围绕项目管理提出了费用估算、文档复审等方法和工具。综观 60 年代末至 80 年代初,其主要特征是,前期着重研究系统实现技术,后期开始强调开发管理和软件质量。 

        70 年代初,自 “ 软件工厂 ” 这一概念提出以来,主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相关的面向对象方法,大力开展了计算机辅助软件工程( CASE )的研究与实践。尤其是近几年来,针对软件复用及软件生产,软件构件技术以及软件质量控制技术、质量保证技术得到了广泛的应用。软件工程所涉及的要素可概括如下: 


         根据这一框架,可以看出:软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。 

         软件工程的主要目标是:生产具有正确性、可用性以及开销合宜的产品。正确性意指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜性是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多问题有待解决,它们形成了对过程、过程模型及工程方法选取的约束。 

         软件工程活动是 “ 开发一个最终满足需求且达到工程目标的软件产品所需要的步骤 ” 。主要包括需求、设计、实现、确认以及支持等活动。需求活动包括问题分析和需求分析。设计活动一般包括概要设计和详细设计。概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计模型转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。支持活动包括修改和完善。伴随以上活动,还有管理过程、支持过程、培训过程等。

五、        毕业设计进展情况

1、在进行毕业设计的设计阶段,包括简单代码的设计和功能的准备

1、            该设计的总体结构图

账务的实体结构图

主要页面包括:

   AccountSearchPage.Java

主要代码如下:

private Widget drawSearchShow() throws ClientBizException {

    RVerticalPanel gvpanel = new RVerticalPanel();

    gvpanel.setWidth("100%");

    gvpanel.setSpacing(0);

    gvpanel.add(drawSearchGrid());

    pagingGrid = new PagingGrid(rgrid, new GridDataProvider());

    gvpanel.add(pagingGrid);

    RCaptionBox showbox = new RCaptionBox();

    showbox.setContent(gvpanel);

    showbox.setCaption("所有账目");

    bcount = new HTML("共计0条");

    showbox.getCaptionBar().addButton(bcount);

    return showbox;

  }

  privateclass GridDataProvider implements RPageDataProvider<BAccount> {

    @Override

    publicvoid fetchData(int page, int pageSize, String sortField, OrderDir sortDir,

        AsyncCallback<RPageData<BAccount>> callback) {

      // TODO Auto-generated method stub

       if(searchbox.getText()!=null&&!"".equals(searchbox.getText())){

         filter.setCode(searchbox.getText());

       }

      filter.setName(namebox.getText());

      AccountService.Locator.getService().queryAccount(filter, callback);

    }

    @Override

    public Object getData(int row, int col, BAccount rowData, List<BAccount> pageData) {

      // TODO Auto-generated method stub

      bcount.setHTML("共计" + pagingGrid.getTotalCount() + "条");

      if (col == gcode.getIndex()) {

        return rowData.getCode();

      } elseif (col == gusername.getIndex()) {

        return rowData.getName();

      } elseif (col == ginprice.getIndex()) {

        return rowData.getInprice();

      } elseif (col == goutprice.getIndex()) {

        return rowData.getExplain();

      } elseif (col == gcreated.getIndex()) {

        return rowData.getCreated();

      } elseif (col == gcreator.getIndex()) {

        return rowData.getCreator();

      } elseif (col == glastModified.getIndex()) {

        return rowData.getLastModified();

      } elseif (col == glastModifier.getIndex()) {

        return rowData.getLastModifier();

      } elseif (col == gedit.getIndex()) {

        return "编辑";

      } elseif (col == gview.getIndex()) {

        return "查看";

      } else {

        returnnull;

      }

    }

  }

AccountCreatePage.java

AccountEditPage。Java等

以上代码不一一贴出

六、        毕业设计遇到的问题及解决方法

1、            界面设计不是很理想,使用了很多gwt UI控件,通过查看资料和仿照其他代码使页面更加美观。如在此页面的基础上进行改进

2、            EJB的实现方面,比如INprice 和outprice属性,通常用的long类型,但其精度不高,因此采用的是BigDicimal类型。

3、            JBoss数据源的配置,采用的本机的数据库Orcl。配置的数据源为JDBC/Account

七、        总结

   以上为本期毕业设计的中期报告概述,由于设计的很多地方还未完善,因此这里不对其进行详细贴出,下面的工作还有界面设计的完善,相关代码的规范化以及报表的设计及发布。

更多相关推荐:
第七章 中期财务报告

第七章中期财务报告与分部报告一单项选择题1对于分部报告来说下列不需要披露的信息是CA分部资产B分部负债C分部股东权益D分部收入2如果集团某分部的收入资产和营业利润均占整个集团的C以上就没有必要提供分部报表A10...

上市公司中期财务报告分析

在过去的几十年间中期财务报告问题似乎并未引起人们的特别重视与兴趣尽管西方个别国家实行中期财务报告制度已有多年但多数国家特别是这些国家的会计界是近年才开始对此议题感兴趣并将其列入议事日程的关于中期财务报告的各种问...

中期财务报告的编制要求及原则

中期财务报告一中期财务报告及其构成一中期财务报告的定义中期财务报告是指以中期为基础编制的财务报告二中期财务报告的构成中期财务报告至少应当包括以下组成部分1资产负债表2利润表3现金流量表4附注二中期财务报告的编制...

中期财务报告的编制要求

一中期财务报告编制应遵循的原则1遵循与年度财务报告相一致的会计政策原则2遵循重要性原则1重要性程度的判断应当以中期财务数据为基础而不得以预计的年度财务数据为基础2重要性原则的运用应当保证中期财务报告包括了与理解...

32中期财务报表

企业会计准则第32号中期财务报告比较与分析20xx年2月财政部发布的企业会计准则第32号中期财务报告下称新准则是在20xx年原准则基础上充分借鉴国际会计准则第34号中期财务报告进行修订后发布的一新准则的主要内容...

中期财务报告比较与衔接精解

中期财务报告比较与衔接精解主讲老师王昌锐中期财务报告是指以中期为基础编制的财务报告包括月度财务报告季度财务报告半年度财务报告也包括年初至本中期末的财务报告第一节新准则的主要内容第二节新旧准则之间的主要变化新准则...

我国上市公司中期财务报告研究

我国上市公司中期财务报告研究赵正萍一我国现行中期财务报告中存在的问题一中期财务报告披露不够充分1不按照现行规定充分披露中期信息许多上市公司的重要财务信息不披露或者简要披露在一定程度上损害了投资者和债权人的利益也...

会计(20xx)第12章 财务报告 课后作业(下载版)

第十二章财务报告一单项选择题1关于财务报表的列报下列说法中不正确的是A企业如果采用了不恰当的会计政策不能通过在附注中披露予以更正B财务报表项目的列报应当在各个会计期间保持一致不得随意变更C财务报表项目可以以总额...

1半年度财务报告应于年度中期结束后60天对外提供

1半年度财务报告应于年度中期结束后60天对外提供2会计从业资格管理机构作出准予颁发会计从业资格证书的决定应当自作出决定之日起10内向申请人颁发会计从业资格证书会计从业资格管理机构不能当场作出决定的应当自受理之日...

国际财务报告准则与美国公认会计准则比较

国际财务报告准则与美国公认会计原则的主要差异这份简报列示了国际财务报告准则IFRS与美国公认会计原则USGAAP之间的一些主要差异同时我们亦根据我们对国际会计准则理事会IASB和美国财务报告准则理事会FASB对...

140我国中期财务报告会计准则介绍及其国际比较研究

我国中期财务报告会计准则介绍及其国际比较研究摘要本文就我国企业会计准则第32号中期财务报告下文简称中报准则与国际会计准则以及其他国家会计准则的相关问题进才比较分析并结合我国的情况提出了可供借鉴的经验1我国中期财...

中国电信20xx中期财务报告(Word)

中国电信20xx中期财务报告发布时间20xx082609508月25日中国电信王晓初董事长年中报告书指出中国电信在做好做精网络基础设施的同时将聚焦移动互联网流量经营开放业务平台打造差异化竞争新优势中国电信王晓初...

中期财务报告(28篇)