收藏 分销(赏)

建筑项目资金分析毕业设计.doc

上传人:可**** 文档编号:3050836 上传时间:2024-06-14 格式:DOC 页数:26 大小:427.50KB
下载 相关 举报
建筑项目资金分析毕业设计.doc_第1页
第1页 / 共26页
建筑项目资金分析毕业设计.doc_第2页
第2页 / 共26页
建筑项目资金分析毕业设计.doc_第3页
第3页 / 共26页
建筑项目资金分析毕业设计.doc_第4页
第4页 / 共26页
建筑项目资金分析毕业设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、摘要 本论文主要阐释内容为用友软件股份有限公司建筑研发部开发出的“V63建筑项目综合管理”产品中“建筑项目资金分析”功能模块。 该模块从开发到测试结束历时2个月,主要目的是展现一个建筑项目从施工到结束整个过程中资金的分配,项目的进度以及大概的盈亏情况,该模块的实现方式,是用图表的形式展现的,主要用到JFreeChart画图技术,Swing画图技术。如果没有充足的资金,建筑施工企业无法顺利的完成施工生产任务,更不用说什么企业发展和壮大,因此在建筑施工企业加强资金的控制和管理势在必行。关键字:建筑项目资金分析、JFreeChart画图、Swing画图。AbstractThis thesis mai

2、nly explains the content of ufida co., LTD., construction of research and development department to develop the V63 construction project integrated management products in the construction project funds analysis function module.The module from development to test the end of the last 2 months, the mai

3、n purpose is to show a building project from construction to finish the whole process of the allocation of funds, the project on schedule and about the profit and loss, the module is implemented, is in the form of charts show, mainly use JFreeChart drawing technology, Swing drawing technology.If you

4、 dont have sufficient funds, construction enterprises cant smoothly to complete production tasks, not to mention what enterprises to develop and grow, so the control of the construction enterprises to strengthen capital and management is imperative.Key words: construction project financing analysis,

5、 JFreeChart drawing, draw the Swing.目录1.引言11.1背景和意义11.1.1 背景11.1.2 意义11.2 国内的现状11.3本文的重点12.技术支持12.1 开发背景简介12.1.1 NC简介12.1.2 建筑项目综合管理简介12.2开发工具和环境12.2.1开发环境12.2.2开发软件12.2.3系统环境配置12.2.4运行环境12.3 Spring技术12.3.1 spring介绍12.3.2 Spring面向切面编程12.3.3 Spring 中 AOP 的实现。12.4 JFreeChart技术12.5 Tomcat服务器12.6 观察者设计模

6、式13.需求分析与概要设计13.1需求分析13.1.1 设计思想13.1.2功能需求13.1.3设计优势13.2概要设计13.2.1 系统总体分析13.2.2按模块分总体设计14.详细设计及实现14.1设计说明14.2数据结构设计14.2.1数据库的选择14.2.2数据结构14.3 系统详细设计14.3.1主要模块UMl类图14.3.2JFreeChart画图技术14.3.3 swing画图技术14.4关键技术实现14.4.1系统设计模式14.4.2项目改变事件传递设计14.4.3数据动态增长处理14.4.4重要的类及包14.4.5开发遇到的问题以及解决方法15结论15.1技术特点15.2缺点

7、及不足15.4开发总结1致谢1参考文献11.引言本系统是面向建筑施工企业,基于建筑项目的资金进行分析。它基于java语言开发,不但操作简单,界面友好,易于操作,实用性强;同时还能够跨平台运行。1.1背景和意义1.1.1 背景无论对于何种企业来说,资金管理都是极其重要的组成部分,对于施工企业来说,它是进行施工的重要价值基础,是企业进行生产经营活动的必要条件,被称为企业经营的“血液”。有效的资金控制和管理,可以提高经营效益,降低施工成本。因此,建筑施工企业应当提高企业市场竞争力和营利能力,加强资金的控制和管理的能力,将资金作为企业经营的重点进行管理,促进企业稳健发展。1.1.2 意义资金是企业运营

8、和发展的“血液”,如果企业资金缺乏,会致使企业不能及时偿还贷款、不能及时支付购买施工设备和材料的价款,从而降低了该企业的信誉,带来了许多有形或无形的损失。强化建筑施工企业资金管理,可以有效地降低施工成本,提高企业的管理能力、市场竞争力以及营利能力。 (一)提高建筑施工企业管理能力。在建筑施工企业,财务管理是企业管理的核心内容,而资金管理又是财务管理极其重要的组成部分,所以可以说,资金管理是建筑施工企业的核心内容,加强资金控制和管理可以实现提高企业管理水平的目的。换一个角度来说,一个企业价值可以分为资金流和物质流,加强资金流控制能够提高企业经营管理能力,对企业整体经营进程进行科学、有效地控制。

9、(二)降低企业财务风险。企业偿还到期债务需要有充足的资金,如果企业不能偿还到期债务会引起财务风险的产生,作为企业“血液”的资金出现“断流”,会给企业带来严重的影响,会遭受罚款、影响企业的信用。加强建筑施工企业的资金控制和管理,可以有效地降低企业财务风险,增强企业现金流的稳定性。 (三)提高企业盈利能力和市场竞争力。资金是施工企业生产经营的必要的、也是重要的价值基础。合理分配资金可以提高企业价值,尤其是在目前市场经济环境下,建筑施工企业面临激烈的市场竞争,企业要想提高经营获利能力,只能从自身努力提高。然而,在施工企业中,资金管理可以有效地代表其自身的经营管理能力,建筑施工企业对资金进行有效的控制

10、和管理可以有效降低企业运营成本,减少企业资金浪费,从而提高企业的市场竞争力,增强企业的获利能力和水平。 1.2 国内的现状尽管我国ERP软件行业的发展在技术、人才、应用实施方面存在不少问题,但“十二五”是经济转型的关键时期,我国经济增长模式将从外延式增长向内生式增长转变,精细化管理成为提升企业竞争力的关键,而ERP在其中扮演着关键角色,这使得ERP市场发展前景广阔,ERP行业将2倍于GDP增速的速度向前发展。近年来,随着企业对管理水平的日益重视,越来越多的企业将目光投向ERP软件市场,希望通过ERP系统的建设增强企业的综合竞争力,从而推动了国内ERP软件市场稳定增长。2010年,中国ERP软件

11、行业市场规模为69.56亿元,占管理软件整体市场规模比例超过50%。而随着管理软件的发展,ERP套件已成为市场的主流。尽管ERP软件市场增长强劲,但我国ERP软件支出占全部IT支出的比例仍大大低于发达国家。我国ERP软件市场的发展空间仍然广阔。从ERP软件行业细分领域市场发展状况来看,ERP软件的目标市场主要集中于大中型企业,但随着小型企业精细化管理需求的发展,小型企业ERP软件市场也在不断发展。从ERP软件应用的行业来看,制造业、流通业以及能源行业是ERP软件市场销售额主要集中领域。从ERP软件行业市场竞争来看,在市场需求的拉动与产业政策的保护双重作用下,国外知名ERP软件厂商抓住有利条件抢

12、占中国ERP软件市场,并已经在中国ERP软件市场占据一定地位;国内ERP软件厂商则在整体实力上进一步壮大,并且已经在某些市场和以SAP、Oracle等为代表的国际厂商展开了针锋相对的竞争。在ERP软件市场竞争过程中,ERP软件营销模式也得到进一步发展,各厂商纷纷推出自己的体验式营销策略或整合营销策略,以便更有力的进行品牌推广。ERP软件行业整体向前发展,行业内的企业在竞争之中得到更好的提升和发展。1.3本文的重点本文重点叙述如何使用图表的形式对项目中的资金进行分析,以及绘制图表所使用的技术。2.技术支持2.1 开发背景简介2.1.1 NC简介“建筑项目综合管理”是基于用友软件股份有限公司下NC

13、平台开发的产品。NC简介: 稳定开放的底层技术平台 J2EE架构,跨数据库,跨操作系统,丰富的底层技术支持 基于多流程的企业应用运行平台 业务流程,审批流程,会计平台,权限模型等 基于模式化的开发平台 表单、报表、打印、查询功能的模式化 开放的系统集成平台 信息集成平台、Portal和基于SOA的交换架构 统一的系统管理平台 系统监控,统一配置NC数据交互模型图2-1展示了NC平台下的数据交互模型,前台UI与后台通过VO传输数据,通过远程组件调用。图2-1 NC数据交互图2.1.2 建筑项目综合管理简介“建筑项目综合管理”是基于NC平台下的一套完整的erp软件,主要客户为建筑施工企业。而本文所

14、要叙述的“建筑项目资金分析”是“建筑项目综合管理”下的一个功能模块。2.2开发工具和环境2.2.1开发环境主机操作系统: WINDOWS7、windowsXP2.2.2开发软件JDK1.6级以上版本 集成开发环境:eclipse 数据库:SQL SEVVER 2012.2.2.3系统环境配置使用进java环境下开发程序,必须在电脑中安装jdk和tomcat,并配置系统环境变量,一边程序正常运行。系统所处环境变量设置如下:Set java_home c: JDK 1.6.0Set Catalina_home D: Apache-tomcat-6.0.18Set CLASSPATH %java_h

15、ome%lib;%java_home%libtools.jar;C:Program Files (x86)Set sql path Microsoft SQL Serverjdbc driversqljdbc_3.0chssqljdbc.jar.;%java_home%libtool.jar;%java_home%libdt.jar;%catalina_home%libjsp-api.jar;%catalina_home%libservlet-api.jar;2.2.4运行环境装有用友NC系统的windows系统。2.3 Spring技术2.3.1 spring介绍Spring是一个开源框架,

16、它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Sprin

17、g的特定类。控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器Sprin

18、g包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理

19、、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。2.3.2 Spring面向切面编程Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。因此,AOP 代理可以直接使用容器中的其他 Bean 实例作为目标,这种关系可由 IoC 容器的依赖注入提供。Spring 默认使用 Java 动态代理来创建 AOP 代理, 这样就可以为任何接口实例创建代理了。当需要代理的类不是代理接口的时候,Spring 自动会切换为使用 CGLIB 代理,也可强制使用 CGLIB。AOP 编程其实是很简单的事情。纵观 AOP 编程,

20、 其中需要程序员参与的只有三个部分:定义普通业务组件。定义切入点,一个切入点可能横切多个业务组件。定义增强处理,增强处理就是在 AOP 框架为普通业务组件织入的处理动作。所以进行 AOP 编程的关键就是定义切入点和定义增强处理。一旦定义了合适的切入点和增强处理,AOP 框架将会自动生成 AOP 代理,即:代理对象的方法 = 增强处理 + 被代理对象的方法。2.3.3 Spring 中 AOP 的实现。Spring 有如下两种选择来定义切入点和增强处理。基于 Annotation 的“零配置”方式:使用Aspect、Pointcut等 Annotation 来标注切入点和增强处理。基于 XML

21、配置文件的管理方式:使用 Spring 配置文件来定义切入点和增强点。本系统是基于XML配置文件的管理方式实现的。2.4 JFreeChart技术JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCE

22、L关联。2.5 Tomcat服务器Tomcat服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。Tomcat服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(

23、response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。 Web服务器的代理模型(delegat

24、ion model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。2.6 观察者设计模式观察者模式有很多实现方式,从根本上说,该模式必

25、须包含两个角色:观察者和被观察对象。在刚才的例子中,业务数据是被观察对象,用户界面是观察者。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。如果在用户界面、业务数据之间使用这样的观察过程,可以确保界面和数据之间划清界限,假定应用程序的需求发生变化,需要修改界面的表现,只需要重新构建一个用户界面,业务数据不需要发生变化。观察者模式主要类图如图2-2所示。图2-2 观察者模式3.需求分析与概要设计3.1需求分析3.1.1 设计思想用户选择一个建筑项目,以不同形式的图表展现出这个项目的资金动向及分布,包括成本分析盘点、赢得值分析、

26、项目金额、产值情况、费用明细等内容。3.1.2功能需求功能划分:(1) 用户选择项目。(2) 根据选择的项目在数据库中查找相应的数据。(3) 将数据以图表形式展现在界面上。3.1.3设计优势使用图表的形式展现数据具有更加直观、可对比性强,等优势。3.2概要设计3.2.1 系统总体分析总体分析如图3-1:数据库VO层Service界面展示图3-1系统总分析图3.2.2按模块分总体设计本系统按模块主要分为项目参照、图表展现两部分,图表展现又分为,项目金额、产值分析、项目资金明细等部分,如图3-2所示图3-2 总体设计图4.详细设计及实现4.1设计说明 本模块功能操作比较简易,利用观察者设计模式将用

27、户选择的项目派发到各个图表中,模块间的数据封装在model中,通过model传输数据而图表的实现使用了jfreechart技术和swing画图技术,最后利用多线程技术将数据动态的填充图表。4.2数据结构设计由于数据库内部结构复杂并且关系紧密,因此设计一个合理的数据结构,用来存储数据库内部表与表、字段与表、字段与字段之间的关系和信息是很有必要的。4.2.1数据库的选择在开发这个系统上,通用性是我们考虑的一个重要因素,因为主要用于服务,所以选择sql数据库。在匹配上比较适合系统。4.2.2数据结构根据系统面对用户,数据库设计以下结构:数据库信息结构:数据库名称(ProjectAnalysis)4.

28、3 系统详细设计4.3.1主要模块UMl类图本系统设计实现中重要类和接口的关系如图4-1所示。图4-1UML类图4.3.2JFreeChart画图技术本系统中3D柱状图是使用JFreeChart画图技术绘制其效果如图4-2所示图4-2 3D柱状图重要的类和接口org.jfree.data.general.Dataset 所有数据源类都要实现的接口。org.jfree.chart.ChartFactory 由它来产生 JFreeChart 对象。org.jfree.chart.JFreeChart 所有对图形的调整都是通过它。org.jfree.chart.plot.Plot 通过JFreeCh

29、art 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整。org.jfree.chart.renderer.AbstractRenderer 通过JFreeChart 对象获得它,然后再通过它对图形内部部分。(例:柱状图的类型)调整。画图流程1、 创建一个数据源(dataset)2、 初始化一个JFreeChart并将dataset传进去。chart = ChartFactory.createBarChart3D(this.getModel().getTitle(), this.getModel().getCategoryAxisLabel(), this.getModel().get

30、ValueAxisLabel(), this.getModel().getDataset(), PlotOrientation.VERTICAL, true,true, true);3、 获取并初始化PlotCategoryPlot plot = (CategoryPlot) chart.getPlot();4.初始化坐标轴initAxis(NumberAxis)plot.getRangeAxis(), plot.getDomainAxis();总结:JFreeChart的图表展现在一个ChartPanel中,数据封装在DataSet中,为了适配整个系统的数据传输方式,将DataSet封装到一

31、个自定义的Model中,这样的好处使得整个程序界面的展现和数据分离开来,充分发挥MVC开发模式的优势。4.3.3 swing画图技术本节重点介绍分析用仪表图实现过程,效果图如图4-3所示:图4-3分析仪表图图4-3分为四部门组成,首先画仪表盘外边框如下代码所示:/ 画仪表盘外框drawOutBoard(g2, x, y, width, height);其次对外边框做模糊处理,并设置抗锯齿效果。/模糊处理GradientPaint gPaint = new GradientPaint(p1, COLOR_OUT_BOARD_UP, p2, COLOR_OUT_BOARD_DOWN, true);

32、 g2.setPaint(gPaint);g2.fill(outBoard);/反锯齿g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);/ 画仪表盘刻度圈x += OUTTODIAL_SIZE;y += OUTTODIAL_SIZE;width -= 2 * OUTTODIAL_SIZE;height-= 2 * OUTTODIAL_SIZE;drawDial(g2, x, y, width, height);/ 画仪表盘内表盘x += DIAL_SIZE;y += D

33、IAL_SIZE;width -= 2 * DIAL_SIZE;height-= 2 * DIAL_SIZE;drawInBoard(g2, x, y, width, height);/ 画仪表盘中心装饰drawDecoration(g2, centerX, centerY);/ 画仪表盘指针drawPointer(g2, centerX, centerY, width / 2);4.4关键技术实现4.4.1系统设计模式本系统的图表都是独立的组件,通过Spring框架注册在AnalysisComponent.xml中,系统初始化时会首先解析这个文件。如下这段代码定义了各个组件: 0xff450

34、0 0xb8860b 在系统初始化时,AnalysisContentPanel中会解析AnalysisComponent.xml文件从中获得图表组价的实例对象。这样有效解决了各个组价之间的耦合问题,下面一段代码为AnalysisContentPanel解析配置文件并获得实例对象的过程。SuppressWarnings(unchecked)private void initComponentList() UIF2BeanFactory factory = new UIF2BeanFactory();factory.loadBeanConfig(nc/ui/jzpm/projbusi/compon

35、ent/analysis/AnalysisComponent.xml);componentList = (List) factory.getBean(componentList);4.4.2项目改变事件传递设计项目改变事件主要是由左边项目参照组件、解耦组件、图表组件组成。图表组件实现了ProjectChangedLisenter,解耦组件初始化时会同时初始化右边参照组件和图表组件,实现图表组件对项目参照组件的监听/初始化右边图表组件private AnalysisContentPanel contentPanel = new AnalysisContentPanel();/初始化左边项目参照组

36、件private ProjectOverviewPanel overviewPanel = new ProjectOverviewPanel();/右边Panel监听左边paneloverviewPanel.addProjectChangeListener(contentPanel);当项目发生改变时项目参照组件会创建一个事件源,并将此事件分发出去。public void valueChanged(ValueChangedEvent event) fireProjectChangeEvent(UIRefPane)event.getSource().getRefPK();/事件派发private

37、 void fireProjectChangeEvent(String pk_project) Object listeners = listenerList.getListenerList();for (Object listener : listeners) if(listener instanceof ProjectChangeListener) (ProjectChangeListener)listener).valueChange(new ProjectChangeEvent(pk_project, this);4.4.3数据动态增长处理本模块中,图表中的数据动态增长的处理方式是通过

38、多线程的方式处理的。项目改变的事件触发后会将对应的数据传入到各个表的model中然后重新初始化数据。public void run() try Thread.sleep(100); catch (InterruptedException e) e.printStackTrace();return;List jihua = new ArrayList();List shiji = new ArrayList();for (int i = 0; i model.getMonths(); i+) jihua.add(model.getPlanMny().get(i) / 20);shiji.add(

39、model.getRealMny().get(i) / 20);for (int j = 0; j 20; j+) try Thread.sleep(120); catch (InterruptedException e) e.printStackTrace();return;this.getModel().updateData(jihua, shiji);for (int i = 0; i model.getMonths(); i+) double m = jihua.get(i);jihua.remove(i);jihua.add(i, m + model.getPlanMny().get

40、(i) / 20);double n = shiji.get(i);shiji.remove(i);shiji.add(i, n + model.getRealMny().get(i) / 20);this.getModel().updateData(model.getPlanMny(), model.getRealMny();数据每增加20%停顿一秒,由此实现动态增长的效果。4.4.4重要的类及包nc.ui.jzpm.projbusi.barchartBarChartDemo2 使用JFreeChart生成产值情况的图表。nc.ui.jzpm.projbusi.dashboardDashBoardBar 使用swing画图,生成仪表盘的图表。nc.ui

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服