2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p><b>  建筑項目資金分析</b></p><p><b>  摘要</b></p><p>  本論文主要闡釋內(nèi)容為用友軟件股份有限

2、公司建筑研發(fā)部開發(fā)出的“V63建筑項目綜合管理”產(chǎn)品中“建筑項目資金分析”功能模塊。</p><p>  該模塊從開發(fā)到測試結(jié)束歷時2個月,主要目的是展現(xiàn)一個建筑項目從施工到結(jié)束整個過程中資金的分配,項目的進度以及大概的盈虧情況,該模塊的實現(xiàn)方式,是用圖表的形式展現(xiàn)的,主要用到JFreeChart畫圖技術(shù),Swing畫圖技術(shù)。如果沒有充足的資金,建筑施工企業(yè)無法順利的完成施工生產(chǎn)任務(wù),更不用說什么企業(yè)發(fā)展和壯大,

3、因此在建筑施工企業(yè)加強資金的控制和管理勢在必行。</p><p>  關(guān)鍵字:建筑項目資金分析、JFreeChart畫圖、Swing畫圖。</p><p><b>  Abstract</b></p><p>  This thesis mainly explains the content of ufida co., LTD., constr

4、uction 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 developme

5、nt to test the end of the last 2 months, the main 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

6、 module i</p><p><b>  目錄</b></p><p><b>  1.引言1</b></p><p>  1.1背景和意義1</p><p>  1.1.1 背景1</p><p>  1.1.2 意義1</p><p>

7、;  1.2 國內(nèi)的現(xiàn)狀1</p><p>  1.3本文的重點1</p><p><b>  2.技術(shù)支持1</b></p><p>  2.1 開發(fā)背景簡介1</p><p>  2.1.1 NC簡介1</p><p>  2.1.2 建筑項目綜合管理簡介1</p>

8、<p>  2.2開發(fā)工具和環(huán)境1</p><p>  2.2.1開發(fā)環(huán)境1</p><p>  2.2.2開發(fā)軟件1</p><p>  2.2.3系統(tǒng)環(huán)境配置1</p><p>  2.2.4運行環(huán)境1</p><p>  2.3 Spring技術(shù)1</p><p> 

9、 2.3.1 spring介紹1</p><p>  2.3.2 Spring面向切面編程1</p><p>  2.3.3 Spring 中 AOP 的實現(xiàn)。1</p><p>  2.4 JFreeChart技術(shù)1</p><p>  2.5 Tomcat服務(wù)器1</p><p>  2.6 觀察者設(shè)計

10、模式1</p><p>  3.需求分析與概要設(shè)計1</p><p><b>  3.1需求分析1</b></p><p>  3.1.1 設(shè)計思想1</p><p>  3.1.2功能需求1</p><p>  3.1.3設(shè)計優(yōu)勢1</p><p><b

11、>  3.2概要設(shè)計1</b></p><p>  3.2.1 系統(tǒng)總體分析1</p><p>  3.2.2按模塊分總體設(shè)計1</p><p>  4.詳細(xì)設(shè)計及實現(xiàn)1</p><p><b>  4.1設(shè)計說明1</b></p><p>  4.2數(shù)據(jù)結(jié)構(gòu)設(shè)計1&

12、lt;/p><p>  4.2.1數(shù)據(jù)庫的選擇1</p><p>  4.2.2數(shù)據(jù)結(jié)構(gòu)1</p><p>  4.3 系統(tǒng)詳細(xì)設(shè)計1</p><p>  4.3.1主要模塊UMl類圖1</p><p>  4.3.2JFreeChart畫圖技術(shù)1</p><p>  4.3.3 swin

13、g畫圖技術(shù)1</p><p>  4.4關(guān)鍵技術(shù)實現(xiàn)1</p><p>  4.4.1系統(tǒng)設(shè)計模式1</p><p>  4.4.2項目改變事件傳遞設(shè)計1</p><p>  4.4.3數(shù)據(jù)動態(tài)增長處理1</p><p>  4.4.4重要的類及包1</p><p>  4.4.5開

14、發(fā)遇到的問題以及解決方法1</p><p><b>  5結(jié)論1</b></p><p><b>  5.1技術(shù)特點1</b></p><p>  5.2缺點及不足1</p><p><b>  5.4開發(fā)總結(jié)1</b></p><p><

15、;b>  致謝1</b></p><p><b>  參考文獻1</b></p><p><b>  1.引言</b></p><p>  本系統(tǒng)是面向建筑施工企業(yè),基于建筑項目的資金進行分析。它基于java語言開發(fā),不但操作簡單,界面友好,易于操作,實用性強;同時還能夠跨平臺運行。</p>

16、;<p><b>  1.1背景和意義</b></p><p><b>  1.1.1 背景</b></p><p>  無論對于何種企業(yè)來說,資金管理都是極其重要的組成部分,對于施工企業(yè)來說,它是進行施工的重要價值基礎(chǔ),是企業(yè)進行生產(chǎn)經(jīng)營活動的必要條件,被稱為企業(yè)經(jīng)營的“血液”。有效的資金控制和管理,可以提高經(jīng)營效益,降低施工成本

17、。因此,建筑施工企業(yè)應(yīng)當(dāng)提高企業(yè)市場競爭力和營利能力,加強資金的控制和管理的能力,將資金作為企業(yè)經(jīng)營的重點進行管理,促進企業(yè)穩(wěn)健發(fā)展。</p><p><b>  1.1.2 意義</b></p><p>  資金是企業(yè)運營和發(fā)展的“血液”,如果企業(yè)資金缺乏,會致使企業(yè)不能及時償還貸款、不能及時支付購買施工設(shè)備和材料的價款,從而降低了該企業(yè)的信譽,帶來了許多有形或無形

18、的損失。強化建筑施工企業(yè)資金管理,可以有效地降低施工成本,提高企業(yè)的管理能力、市場競爭力以及營利能力。 </p><p>  (一)提高建筑施工企業(yè)管理能力。在建筑施工企業(yè),財務(wù)管理是企業(yè)管理的核心內(nèi)容,而資金管理又是財務(wù)管理極其重要的組成部分,所以可以說,資金管理是建筑施工企業(yè)的核心內(nèi)容,加強資金控制和管理可以實現(xiàn)提高企業(yè)管理水平的目的。換一個角度來說,一個企業(yè)價值可以分為資金流和物質(zhì)流,加強資金流控制能夠提高

19、企業(yè)經(jīng)營管理能力,對企業(yè)整體經(jīng)營進程進行科學(xué)、有效地控制。 </p><p> ?。ǘ┙档推髽I(yè)財務(wù)風(fēng)險。企業(yè)償還到期債務(wù)需要有充足的資金,如果企業(yè)不能償還到期債務(wù)會引起財務(wù)風(fēng)險的產(chǎn)生,作為企業(yè)“血液”的資金出現(xiàn)“斷流”,會給企業(yè)帶來嚴(yán)重的影響,會遭受罰款、影響企業(yè)的信用。加強建筑施工企業(yè)的資金控制和管理,可以有效地降低企業(yè)財務(wù)風(fēng)險,增強企業(yè)現(xiàn)金流的穩(wěn)定性。 </p><p> ?。ㄈ┨?/p>

20、高企業(yè)盈利能力和市場競爭力。資金是施工企業(yè)生產(chǎn)經(jīng)營的必要的、也是重要的價值基礎(chǔ)。合理分配資金可以提高企業(yè)價值,尤其是在目前市場經(jīng)濟環(huán)境下,建筑施工企業(yè)面臨激烈的市場競爭,企業(yè)要想提高經(jīng)營獲利能力,只能從自身努力提高。然而,在施工企業(yè)中,資金管理可以有效地代表其自身的經(jīng)營管理能力,建筑施工企業(yè)對資金進行有效的控制和管理可以有效降低企業(yè)運營成本,減少企業(yè)資金浪費,從而提高企業(yè)的市場競爭力,增強企業(yè)的獲利能力和水平。 </p>

21、<p><b>  1.2 國內(nèi)的現(xiàn)狀</b></p><p>  盡管我國ERP軟件行業(yè)的發(fā)展在技術(shù)、人才、應(yīng)用實施方面存在不少問題,但“十二五”是經(jīng)濟轉(zhuǎn)型的關(guān)鍵時期,我國經(jīng)濟增長模式將從外延式增長向內(nèi)生式增長轉(zhuǎn)變,精細(xì)化管理成為提升企業(yè)競爭力的關(guān)鍵,而ERP在其中扮演著關(guān)鍵角色,這使得ERP市場發(fā)展前景廣闊,ERP行業(yè)將2倍于GDP增速的速度向前發(fā)展。</p>&

22、lt;p>  近年來,隨著企業(yè)對管理水平的日益重視,越來越多的企業(yè)將目光投向ERP軟件市場,希望通過ERP系統(tǒng)的建設(shè)增強企業(yè)的綜合競爭力,從而推動了國內(nèi)ERP軟件市場穩(wěn)定增長。2010年,中國ERP軟件行業(yè)市場規(guī)模為69.56億元,占管理軟件整體市場規(guī)模比例超過50%。而隨著管理軟件的發(fā)展,ERP套件已成為市場的主流。盡管ERP軟件市場增長強勁,但我國ERP軟件支出占全部IT支出的比例仍大大低于發(fā)達(dá)國家。我國ERP軟件市場的發(fā)展空

23、間仍然廣闊。</p><p>  從ERP軟件行業(yè)細(xì)分領(lǐng)域市場發(fā)展?fàn)顩r來看,ERP軟件的目標(biāo)市場主要集中于大中型企業(yè),但隨著小型企業(yè)精細(xì)化管理需求的發(fā)展,小型企業(yè)ERP軟件市場也在不斷發(fā)展。從ERP軟件應(yīng)用的行業(yè)來看,制造業(yè)、流通業(yè)以及能源行業(yè)是ERP軟件市場銷售額主要集中領(lǐng)域。</p><p>  從ERP軟件行業(yè)市場競爭來看,在市場需求的拉動與產(chǎn)業(yè)政策的保護雙重作用下,國外知名ERP軟

24、件廠商抓住有利條件搶占中國ERP軟件市場,并已經(jīng)在中國ERP軟件市場占據(jù)一定地位;國內(nèi)ERP軟件廠商則在整體實力上進一步壯大,并且已經(jīng)在某些市場和以SAP、Oracle等為代表的國際廠商展開了針鋒相對的競爭。在ERP軟件市場競爭過程中,ERP軟件營銷模式也得到進一步發(fā)展,各廠商紛紛推出自己的體驗式營銷策略或整合營銷策略,以便更有力的進行品牌推廣。ERP軟件行業(yè)整體向前發(fā)展,行業(yè)內(nèi)的企業(yè)在競爭之中得到更好的提升和發(fā)展。</p>

25、<p><b>  1.3本文的重點</b></p><p>  本文重點敘述如何使用圖表的形式對項目中的資金進行分析,以及繪制圖表所使用的技術(shù)。</p><p><b>  2.技術(shù)支持</b></p><p>  2.1 開發(fā)背景簡介</p><p>  2.1.1 NC簡介<

26、;/p><p>  “建筑項目綜合管理”是基于用友軟件股份有限公司下NC平臺開發(fā)的產(chǎn)品。</p><p><b>  NC簡介:</b></p><p>  穩(wěn)定開放的底層技術(shù)平臺</p><p>  J2EE架構(gòu),跨數(shù)據(jù)庫,跨操作系統(tǒng),豐富的底層技術(shù)支持</p><p>  基于多流程的企業(yè)應(yīng)用運行

27、平臺</p><p>  業(yè)務(wù)流程,審批流程,會計平臺,權(quán)限模型等</p><p>  基于模式化的開發(fā)平臺</p><p>  表單、報表、打印、查詢功能的模式化 </p><p><b>  開放的系統(tǒng)集成平臺</b></p><p>  信息集成平臺、Portal和基于SOA的交換架構(gòu)<

28、;/p><p><b>  統(tǒng)一的系統(tǒng)管理平臺</b></p><p><b>  系統(tǒng)監(jiān)控,統(tǒng)一配置</b></p><p><b>  NC數(shù)據(jù)交互模型</b></p><p>  圖2-1展示了NC平臺下的數(shù)據(jù)交互模型,前臺UI與后臺通過VO傳輸數(shù)據(jù),通過遠(yuǎn)程組件調(diào)用。<

29、;/p><p>  圖2-1 NC數(shù)據(jù)交互圖</p><p>  2.1.2 建筑項目綜合管理簡介</p><p>  “建筑項目綜合管理”是基于NC平臺下的一套完整的erp軟件,主要客戶為建筑施工企業(yè)。而本文所要敘述的“建筑項目資金分析”是“建筑項目綜合管理”下的一個功能模塊。</p><p>  2.2開發(fā)工具和環(huán)境</p>&

30、lt;p><b>  2.2.1開發(fā)環(huán)境</b></p><p>  主機操作系統(tǒng): WINDOWS7、windowsXP</p><p><b>  2.2.2開發(fā)軟件</b></p><p>  JDK1.6級以上版本 </p><p>  集成開發(fā)環(huán)境:eclipse </p>

31、;<p>  數(shù)據(jù)庫:SQL SEVVER 2012.</p><p>  2.2.3系統(tǒng)環(huán)境配置</p><p>  使用進java環(huán)境下開發(fā)程序,必須在電腦中安裝jdk和tomcat,并配置系統(tǒng)環(huán)境變量,一邊程序正常運行。</p><p>  系統(tǒng)所處環(huán)境變量設(shè)置如下:</p><p>  Set java_home

32、c:\ JDK 1.6.0</p><p>  Set Catalina_home D:\ Apache-tomcat-6.0.18</p><p>  Set CLASSPATH %java_home%\lib;%java_home%\lib\tools.jar;C:\Program Files (x86)\</p><p>  Set sql path

33、Microsoft SQL Server\jdbc driver\sqljdbc_3.0\chs\sqljdbc.jar</p><p>  .;%java_home%lib\tool.jar;%java_home%\lib\dt.jar;%catalina_home%\lib\jsp-api.jar;%catalina_home%lib\servlet-api.jar;</p><p>

34、<b>  2.2.4運行環(huán)境</b></p><p>  裝有用友NC系統(tǒng)的windows系統(tǒng)。</p><p>  2.3 Spring技術(shù)</p><p>  2.3.1 spring介紹</p><p>  Spring是一個開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Sp

35、ring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。</p><p>  Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。</p><p>  輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring

36、框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。</p><p>  控制反轉(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進了松耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為IoC與JNDI

37、相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。</p><p>  面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)(transaction)管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。&l

38、t;/p><p>  容器——Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。</p><p>  

39、框架——Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。</p><p>  所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。</p><p> 

40、 2.3.2 Spring面向切面編程</p><p>  Spring 中 AOP 代理由 Spring 的 IoC 容器負(fù)責(zé)生成、管理,其依賴關(guān)系也由 IoC 容器負(fù)責(zé)管理。因此,AOP 代理可以直接使用容器中的其他 Bean 實例作為目標(biāo),這種關(guān)系可由 IoC 容器的依賴注入提供。Spring 默認(rèn)使用 Java 動態(tài)代理來創(chuàng)建 AOP 代理, 這樣就可以為任何接口實例創(chuàng)建代理了。當(dāng)需要代理的類不是代理接

41、口的時候, Spring 自動會切換為使用 CGLIB 代理,也可強制使用 CGLIB。 </p><p>  AOP 編程其實是很簡單的事情??v觀 AOP 編程, 其中需要程序員參與的只有三個部分:</p><p><b>  定義普通業(yè)務(wù)組件。</b></p><p>  定義切入點,一個切入點可能橫切多個業(yè)務(wù)組件。&l

42、t;/p><p>  定義增強處理,增強處理就是在 AOP 框架為普通業(yè)務(wù)組件織入的處理動作。</p><p>  所以進行 AOP 編程的關(guān)鍵就是定義切入點和定義增強處理。一旦定義了合適的切入點和增強處理,AOP 框架將會自動生成 AOP 代理,即:代理對象的方法 = 增強處理 + 被代理對象的方法。</p><p>  2.3.3 Spring 中 AOP 的實現(xiàn)。

43、</p><p>  Spring 有如下兩種選擇來定義切入點和增強處理。</p><p>  基于 Annotation 的“零配置”方式:使用@Aspect、@Pointcut等 Annotation 來標(biāo)注切入點和增強處理。</p><p>  基于 XML 配置文件的管理方式:使用 Spring 配置文件來定義切入點和增強點。</p><

44、p>  本系統(tǒng)是基于XML配置文件的管理方式實現(xiàn)的。</p><p>  2.4 JFreeChart技術(shù)</p><p>  JFreeChart是JAVA平臺上的一個開放的圖表繪制類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設(shè)計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar ch

45、arts)、散點圖(scatter plots)、時序圖(time series)、甘特圖(Gantt charts)等等多種圖表,并且可以產(chǎn)生PNG和JPEG格式的輸出,還可以與PDF和EXCEL關(guān)聯(lián)。</p><p>  2.5 Tomcat服務(wù)器</p><p>  Tomcat服務(wù)器傳送(serves)頁面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用(call

46、)的方法(methods)。確切一點,你可以說:Web服務(wù)器專門處理HTTP請求(request),但是應(yīng)用程序服務(wù)器是通過很多協(xié)議來為應(yīng)用程序提供(serves)商業(yè)邏輯(business logic)。</p><p>  Tomcat服務(wù)器可以解析(handles)HTTP協(xié)議。當(dāng)Web服務(wù)器接收到一個HTTP請求(request),會返回一個HTTP響應(yīng)(response),例如送回一個HTML頁面。為了

47、處理一個請求(request),Web服務(wù)器可以響應(yīng)(response)一個靜態(tài)頁面或圖片,進行頁面跳轉(zhuǎn)(redirect),或者把動態(tài)響應(yīng)(dynamic response)的產(chǎn)生委托(delegate)給一些其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,服務(wù)器端(server-side)JavaScript,或者一些其它的服務(wù)器端(s

48、erver-side)技術(shù)。無論它們(譯者注:腳本)的目的如何,這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個HTML的響應(yīng)(response)來讓瀏覽器可以瀏覽。 </p><p>  Web服務(wù)器的代理模型(delegation model)非常簡單。當(dāng)一個請求(request)被送到Web服務(wù)器里來時,它只單純的把請求(request)傳遞給可以很好的處理請求(request)的程序(譯者注:服務(wù)

49、器端腳本)。Web服務(wù)器僅僅提供一個可以執(zhí)行服務(wù)器端(server-side)程序和返回(程序所產(chǎn)生的)響應(yīng)(response)的環(huán)境,而不會超出職能范圍。服務(wù)器端(server-side)程序通常具有事務(wù)處理(transaction processing),數(shù)據(jù)庫連接(database connectivity)和消息(messaging)等功能。</p><p>  2.6 觀察者設(shè)計模式</p>

50、<p>  觀察者模式有很多實現(xiàn)方式,從根本上說,該模式必須包含兩個角色:觀察者和被觀察對象。在剛才的例子中,業(yè)務(wù)數(shù)據(jù)是被觀察對象,用戶界面是觀察者。觀察者和被觀察者之間存在“觀察”的邏輯關(guān)聯(lián),當(dāng)被觀察者發(fā)生改變的時候,觀察者就會觀察到這樣的變化,并且做出相應(yīng)的響應(yīng)。如果在用戶界面、業(yè)務(wù)數(shù)據(jù)之間使用這樣的觀察過程,可以確保界面和數(shù)據(jù)之間劃清界限,假定應(yīng)用程序的需求發(fā)生變化,需要修改界面的表現(xiàn),只需要重新構(gòu)建一個用戶界面,業(yè)

51、務(wù)數(shù)據(jù)不需要發(fā)生變化。觀察者模式主要類圖如圖2-2所示。</p><p>  圖2-2 觀察者模式</p><p>  3.需求分析與概要設(shè)計</p><p><b>  3.1需求分析</b></p><p>  3.1.1 設(shè)計思想</p><p>  用戶選擇一個建筑項目,以不同形式的圖表展

52、現(xiàn)出這個項目的資金動向及分布,包括成本分析盤點、贏得值分析、項目金額、產(chǎn)值情況、費用明細(xì)等內(nèi)容。</p><p><b>  3.1.2功能需求</b></p><p><b>  功能劃分:</b></p><p><b>  用戶選擇項目。</b></p><p>  根據(jù)

53、選擇的項目在數(shù)據(jù)庫中查找相應(yīng)的數(shù)據(jù)。</p><p>  將數(shù)據(jù)以圖表形式展現(xiàn)在界面上。</p><p><b>  3.1.3設(shè)計優(yōu)勢</b></p><p>  使用圖表的形式展現(xiàn)數(shù)據(jù)具有更加直觀、可對比性強,等優(yōu)勢。</p><p><b>  3.2概要設(shè)計</b></p>&

54、lt;p>  3.2.1 系統(tǒng)總體分析</p><p>  總體分析如圖3-1:</p><p>  3.2.2按模塊分總體設(shè)計</p><p>  本系統(tǒng)按模塊主要分為項目參照、圖表展現(xiàn)兩部分,圖表展現(xiàn)又分為,項目金額、產(chǎn)值分析、項目資金明細(xì)等部分,如圖3-2所示</p><p>  圖3-2 總體設(shè)計圖</p><

55、;p><b>  4.詳細(xì)設(shè)計及實現(xiàn)</b></p><p><b>  4.1設(shè)計說明</b></p><p>  本模塊功能操作比較簡易,利用觀察者設(shè)計模式將用戶選擇的項目派發(fā)到各個圖表中,模塊間的數(shù)據(jù)封裝在model中,通過model傳輸數(shù)據(jù)而圖表的實現(xiàn)使用了jfreechart技術(shù)和swing畫圖技術(shù),最后利用多線程技術(shù)將數(shù)據(jù)動態(tài)的

56、填充圖表。</p><p><b>  4.2數(shù)據(jù)結(jié)構(gòu)設(shè)計</b></p><p>  由于數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)復(fù)雜并且關(guān)系緊密,因此設(shè)計一個合理的數(shù)據(jù)結(jié)構(gòu),用來存儲數(shù)據(jù)庫內(nèi)部表與表、字段與表、字段與字段之間的關(guān)系和信息是很有必要的。</p><p>  4.2.1數(shù)據(jù)庫的選擇</p><p>  在開發(fā)這個系統(tǒng)上,通用性是我

57、們考慮的一個重要因素,因為主要用于服務(wù),所以選擇sql數(shù)據(jù)庫。在匹配上比較適合系統(tǒng)。</p><p><b>  4.2.2數(shù)據(jù)結(jié)構(gòu)</b></p><p>  根據(jù)系統(tǒng)面對用戶,數(shù)據(jù)庫設(shè)計以下結(jié)構(gòu):</p><p>  數(shù)據(jù)庫信息結(jié)構(gòu):數(shù)據(jù)庫名稱(ProjectAnalysis)</p><p>  4.3 系統(tǒng)詳細(xì)設(shè)

58、計</p><p>  4.3.1主要模塊UMl類圖</p><p>  本系統(tǒng)設(shè)計實現(xiàn)中重要類和接口的關(guān)系如圖4-1所示。</p><p><b>  圖4-1UML類圖</b></p><p>  4.3.2JFreeChart畫圖技術(shù)</p><p>  本系統(tǒng)中3D柱狀圖是使用JFreeC

59、hart畫圖技術(shù)繪制其效果如圖4-2所示</p><p>  圖4-2 3D柱狀圖</p><p><b>  重要的類和接口</b></p><p>  org.jfree.data.general.Dataset 所有數(shù)據(jù)源類都要實現(xiàn)的接口。org.jfree.chart.ChartFactory 由它來產(chǎn)生 JFreeChart 對象。

60、org.jfree.chart.JFreeChart 所有對圖形的調(diào)整都是通過它。org.jfree.chart.plot.Plot 通過JFreeChart 對象獲得它,然后再通過它對圖形外部部分(例:坐標(biāo)軸)調(diào)整。org.jfree.chart.renderer.AbstractRenderer 通過JFreeChart 對象獲得它,然后再通過它對圖形內(nèi)部部分。(例:柱狀圖的類型)調(diào)整。</p><p&g

61、t;<b>  畫圖流程</b></p><p>  創(chuàng)建一個數(shù)據(jù)源(dataset)</p><p>  初始化一個JFreeChart并將dataset傳進去。</p><p>  chart = ChartFactory.createBarChart3D(this.getModel().getTitle(), this.getModel(

62、).getCategoryAxisLabel(), this.getModel().getValueAxisLabel(), this.getModel().getDataset(), PlotOrientation.VERTICAL, true,true, true);</p><p>  獲取并初始化Plot</p><p>  CategoryPlot plot = (Catego

63、ryPlot) chart.getPlot();</p><p><b>  4.初始化坐標(biāo)軸</b></p><p>  initAxis((NumberAxis)plot.getRangeAxis(), plot.getDomainAxis());</p><p>  總結(jié):JFreeChart的圖表展現(xiàn)在一個ChartPanel中,數(shù)據(jù)封

64、裝在DataSet中,為了適配整個系統(tǒng)的數(shù)據(jù)傳輸方式,將DataSet封裝到一個自定義的Model中,這樣的好處使得整個程序界面的展現(xiàn)和數(shù)據(jù)分離開來,充分發(fā)揮MVC開發(fā)模式的優(yōu)勢。</p><p>  4.3.3 swing畫圖技術(shù)</p><p>  本節(jié)重點介紹分析用儀表圖實現(xiàn)過程,效果圖如圖4-3所示:</p><p><b>  圖4-3分析儀表圖

65、</b></p><p>  圖4-3分為四部門組成,首先畫儀表盤外邊框如下代碼所示:</p><p><b>  // 畫儀表盤外框</b></p><p>  drawOutBoard(g2, x, y, width, height);</p><p>  其次對外邊框做模糊處理,并設(shè)置抗鋸齒效果。<

66、;/p><p><b>  //模糊處理</b></p><p>  GradientPaint gPaint = new GradientPaint(p1, COLOR_OUT_BOARD_UP, p2, COLOR_OUT_BOARD_DOWN, true); </p><p>  g2.setPaint(gPaint);</p>

67、<p>  g2.fill(outBoard);</p><p><b>  //反鋸齒</b></p><p>  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);</p><p>  // 畫儀表盤刻度

68、圈</p><p>  x += OUTTODIAL_SIZE;</p><p>  y += OUTTODIAL_SIZE;</p><p>  width -= 2 * OUTTODIAL_SIZE;</p><p>  height-= 2 * OUTTODIAL_SIZE;</p><p>  drawDial

69、(g2, x, y, width, height);</p><p>  // 畫儀表盤內(nèi)表盤</p><p>  x += DIAL_SIZE;</p><p>  y += DIAL_SIZE;</p><p>  width -= 2 * DIAL_SIZE;</p><p>  height-= 2 * DIA

70、L_SIZE;</p><p>  drawInBoard(g2, x, y, width, height);</p><p>  // 畫儀表盤中心裝飾</p><p>  drawDecoration(g2, centerX, centerY);</p><p><b>  // 畫儀表盤指針</b></p&g

71、t;<p>  drawPointer(g2, centerX, centerY, width / 2);</p><p><b>  4.4關(guān)鍵技術(shù)實現(xiàn)</b></p><p>  4.4.1系統(tǒng)設(shè)計模式</p><p>  本系統(tǒng)的圖表都是獨立的組件,通過Spring框架注冊在AnalysisComponent.xml中,系統(tǒng)

72、初始化時會首先解析這個文件。如下這段代碼定義了各個組件:</p><p>  <bean id="incomeAnalysis" class="nc.ui.jzpm.projbusi.income.IncomeAnalysis" ></p><p>  <constructor-arg value="900" /

73、></p><p>  <constructor-arg value="400" /></p><p><b>  </bean></b></p><p>  <bean id="barChartModel" class="nc.ui.jzpm.projbus

74、i.barchart.model.BarChartModel"></p><p>  <property name="title" value="產(chǎn)值金額" /></p><p>  <property name="categoryAxisLabel" value="月份" /

75、></p><p>  <property name="valueAxisLabel" value="金額" /></p><p><b>  </bean></b></p><p>  <bean id="costAnalysis" class=&

76、quot;nc.ui.jzpm.projbusi.costanalysis.JZCostAnalysis" ></p><p>  <constructor-arg value="900" /></p><p>  <constructor-arg value="400" /></p><p

77、><b>  </bean></b></p><p>  <bean id="projCtrlAnalysis" class="nc.ui.jzpm.projbusi.dashboard.JZProjCtrlAnalysis" ></p><p>  <constructor-arg valu

78、e="900" /></p><p>  <constructor-arg value="450" /></p><p><b>  </bean></b></p><p>  <bean id="projStatusBar" class="

79、;nc.ui.jzpm.projbusi.milestonebar.JZProjStatusBar" ></p><p>  <constructor-arg value="900" /></p><p>  <constructor-arg value="150" /></p><p>

80、;<b>  </bean></b></p><p>  <bean id="stackBarChartModel" class="nc.ui.jzpm.projbusi.stackbarchart.model.StackBarChartModel"></p><p>  <property nam

81、e="title" value="項目金額" /></p><p>  <property name="categoryAxisLabel" value="類別" /></p><p>  <property name="valueAxisLabel" value=&

82、quot;金額" /></p><p><b>  </bean></b></p><p>  <bean id="barChart" class="nc.ui.jzpm.projbusi.barchart.BarChartDemo2" ></p><p>  &l

83、t;property name="model" ref="barChartModel" /></p><p><b>  </bean></b></p><p>  <bean id="StackedBarChart" class="nc.ui.jzpm.projbusi.s

84、tackbarchart.StackedBarChart" ></p><p>  <property name="barColor"></p><p><b>  <list></b></p><p>  <value>0xff4500</value><

85、/p><p>  <value>0xb8860b</value></p><p><b>  </list></b></p><p>  </property></p><p>  <property name="model" ref="st

86、ackBarChartModel" /></p><p>  <property name="conColor" ref="barColor" /></p><p><b>  </bean></b></p><p>  在系統(tǒng)初始化時,AnalysisConten

87、tPanel中會解析AnalysisComponent.xml文件從中獲得圖表組價的實例對象。這樣有效解決了各個組價之間的耦合問題,下面一段代碼為AnalysisContentPanel解析配置文件并獲得實例對象的過程。</p><p>  @SuppressWarnings("unchecked")</p><p>  private void initCompone

88、ntList() {</p><p>  UIF2BeanFactory factory = new UIF2BeanFactory();</p><p>  factory.loadBeanConfig("nc/ui/jzpm/projbusi/component/analysis/AnalysisComponent.xml");</p><p&g

89、t;  componentList = (List<IAnalysisCompenont>) factory.getBean("componentList");</p><p><b>  }</b></p><p>  4.4.2項目改變事件傳遞設(shè)計</p><p>  項目改變事件主要是由左邊項目參照組件、解

90、耦組件、圖表組件組成。圖表組件實現(xiàn)了ProjectChangedLisenter,解耦組件初始化時會同時初始化右邊參照組件和圖表組件,實現(xiàn)圖表組件對項目參照組件的監(jiān)聽</p><p>  //初始化右邊圖表組件</p><p>  private AnalysisContentPanel contentPanel = new AnalysisContentPanel();</p>

91、;<p>  //初始化左邊項目參照組件</p><p>  private ProjectOverviewPanel overviewPanel = new ProjectOverviewPanel();</p><p>  //右邊Panel監(jiān)聽左邊panel</p><p>  overviewPanel.addProjectChangeList

92、ener(contentPanel);</p><p>  當(dāng)項目發(fā)生改變時項目參照組件會創(chuàng)建一個事件源,并將此事件分發(fā)出去。</p><p>  public void valueChanged(ValueChangedEvent event) {</p><p>  fireProjectChangeEvent(((UIRefPane)event.getSour

93、ce()).getRefPK());</p><p><b>  }</b></p><p><b>  //事件派發(fā)</b></p><p>  private void fireProjectChangeEvent(String pk_project) {</p><p>  Object[]

94、listeners = listenerList.getListenerList();</p><p>  for (Object listener : listeners) {</p><p>  if(listener instanceof ProjectChangeListener) {</p><p>  ((ProjectChangeListener)li

95、stener).valueChange(new ProjectChangeEvent(pk_project, this));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4.3數(shù)

96、據(jù)動態(tài)增長處理</p><p>  本模塊中,圖表中的數(shù)據(jù)動態(tài)增長的處理方式是通過多線程的方式處理的。項目改變的事件觸發(fā)后會將對應(yīng)的數(shù)據(jù)傳入到各個表的model中然后重新初始化數(shù)據(jù)。</p><p>  public void run() {</p><p><b>  try {</b></p><p>  Threa

97、d.sleep(100);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  return;</b></p><p><b>  }</b></p><

98、;p>  List<Double> jihua = new ArrayList<Double>();</p><p>  List<Double> shiji = new ArrayList<Double>();</p><p>  for (int i = 0; i < model.getMonths(); i++) {<

99、/p><p>  jihua.add(model.getPlanMny().get(i) / 20);</p><p>  shiji.add(model.getRealMny().get(i) / 20);</p><p><b>  }</b></p><p>  for (int j = 0; j < 20; j

100、++) {</p><p><b>  try {</b></p><p>  Thread.sleep(120);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b&

101、gt;  return;</b></p><p><b>  }</b></p><p>  this.getModel().updateData(jihua, shiji);</p><p>  for (int i = 0; i < model.getMonths(); i++) {</p><p>

102、;  double m = jihua.get(i);</p><p>  jihua.remove(i);</p><p>  jihua.add(i, m + model.getPlanMny().get(i) / 20);</p><p>  double n = shiji.get(i);</p><p>  shiji.remove

103、(i);</p><p>  shiji.add(i, n + model.getRealMny().get(i) / 20);</p><p><b>  }</b></p><p><b>  }</b></p><p>  this.getModel().updateData(model.ge

104、tPlanMny(), model.getRealMny());</p><p><b>  }</b></p><p>  數(shù)據(jù)每增加20%停頓一秒,由此實現(xiàn)動態(tài)增長的效果。</p><p>  4.4.4重要的類及包</p><p>  nc.ui.jzpm.projbusi.barchart</p>

105、<p>  BarChartDemo2 使用JFreeChart生成產(chǎn)值情況的圖表。</p><p>  nc.ui.jzpm.projbusi.dashboard</p><p>  DashBoardBar 使用swing畫圖,生成儀表盤的圖表。</p><p>  nc.ui.jzpm.projbusi.component.overview<

106、/p><p>  ProjectOverviewPanel 存放左邊項目參照的組件。</p><p>  nc.ui.jzpm.projbusi.component.analysis</p><p>  AnalysisContentPanel 存放右邊功能組件。</p><p>  nc.ui.jzpm.projbusi</p>

107、<p>  JProjectBusinessAnalysis 解耦組件左邊和右邊組件傳遞數(shù)據(jù)的橋梁。</p><p>  nc.ui.jzpm.projbusi.panel</p><p>  JzProjBusiAnalysisToftPanel 程序的入口。</p><p>  4.4.5開發(fā)遇到的問題以及解決方法</p><p&

108、gt;<b>  問題1:</b></p><p>  是用swing畫圖時如果不是直線會產(chǎn)生鋸齒的效果。</p><p><b>  解決方法:</b></p><p>  通過設(shè)置g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VA

109、LUE_ANTIALIAS_ON);</p><p>  這條語句設(shè)置抗鋸齒效果。</p><p><b>  問題2:</b></p><p>  在界面顯示時,偶爾會出現(xiàn)中文亂碼現(xiàn)象。</p><p><b>  解決方法:</b></p><p>  這往往是組件間編碼

110、差異造成,通過設(shè)置各個組件的編碼方式,對所有組件,進行統(tǒng)一編碼設(shè)置,異常消除。</p><p><b>  問題3:</b></p><p>  是用swing畫圖如何使圖像的效果更趨向于3D。</p><p><b>  解決方法:</b></p><p>  在畫分析儀表盤外層邊框時,是用兩種不

111、同的顏色漸變?nèi)缓笤偌由夏:幚怼?lt;/p><p><b>  5結(jié)論</b></p><p><b>  5.1技術(shù)特點</b></p><p>  本系統(tǒng)界面統(tǒng)一友好,操作簡單,實用性強,安全;代碼結(jié)構(gòu)清晰,易讀懂;安裝方便,可移植性和擴展性好。</p><p><b>  5.2缺點及

112、不足</b></p><p>  由于系統(tǒng)規(guī)模較大,時間不足,需求沒有特別明確等原因,導(dǎo)致某些功能模塊沒有完整實現(xiàn),有些異常錯誤沒有及時發(fā)現(xiàn)。</p><p><b>  5.4開發(fā)總結(jié)</b></p><p>  本系統(tǒng)模塊基本達(dá)到預(yù)期的各項技術(shù)指標(biāo),實現(xiàn)了預(yù)期的各種功能。從整體上來講,本系統(tǒng)模塊還比較令人滿意。本系統(tǒng)的關(guān)鍵任務(wù)主

113、要體現(xiàn)在以下兩個方面:(1) 系統(tǒng)架構(gòu)的設(shè)計,包括各個組件的實現(xiàn)方式,功能組件和解耦組件的實現(xiàn)。以及通過觀察者開發(fā)模式實現(xiàn)對項目改變事件觸發(fā)時各個功能組件做出相應(yīng)的處理。 (2)畫圖技術(shù)的實現(xiàn)主要分為JFreeChart畫圖技術(shù)和swing畫圖技術(shù),在本文詳細(xì)設(shè)計中對這兩部分都有介紹。</p><p>  當(dāng)然,由于時間、技術(shù)、需求等各方面原因本系統(tǒng)還存在一些不盡人意之處和有待深入研究的地方。本系統(tǒng)給出了項目資金

114、分析的基本框架,但是系統(tǒng)還不夠完善,數(shù)據(jù)庫方面開發(fā)還有欠缺,功能比較單一。我會在今后的工作和學(xué)習(xí)中去逐步完善。</p><p><b>  致謝</b></p><p>  本課題的開發(fā)是我在用友股份有限公司實習(xí)期間開發(fā)完成,首先要感謝我的導(dǎo)師孫晨霞孫老師同意我使用在公司做的模塊作為畢業(yè)設(shè)計,并對我提供指導(dǎo)幫助。在此衷心的感謝孫老師對我的指導(dǎo)和信任。同時也要特別感謝院

115、領(lǐng)導(dǎo)及各位答辯老師、任課老師對我學(xué)習(xí)的幫助和支持,只有在您的幫助和支持下,我才能順利的完成學(xué)業(yè)。</p><p><b>  參考文獻</b></p><p>  [1]BruceEckel.《Java編程思想》. 機械工業(yè)出版社, 2007年6月</p><p>  [2]劉中兵Java研究室《Java高手真經(jīng)》.電子工業(yè)出版社,2009年3

116、月</p><p>  [3]徐孝凱《數(shù)據(jù)結(jié)構(gòu)教程》(Java語言描述). 清華大學(xué)出版社,2010年8月</p><p>  [4]Thomas A.Powell《HTML5&CSS》.清華大學(xué)出版社,2011年6月</p><p>  [5]java動畫、圖形和極富客戶端效果開發(fā) 機械工業(yè)出版社</p><p>  [6] 閻宏編

117、著,《java與模式》,電子工業(yè)出版社,2002</p><p>  [7]孫衛(wèi)琴,李洪成.《大話設(shè)計模式》.電子工業(yè)出版社,2003年6月:1-205</p><p>  [8]耿祥義,張躍平.《Java核心技術(shù)1》. 清華大學(xué)出版社,2003年5月1日:1-354</p><p>  [9]BruceEckel.《JSP編程思想》. 機械工業(yè)出版社,2003年1

118、0月:1-378</p><p>  [10]FLANAGAN.《JSP技術(shù)手冊》. 中國電力出版社,2002年6月:1-465</p><p>  [11]孫一林,彭波.《JSP數(shù)據(jù)庫編程實例》. 清華大學(xué)出版社,2002年8月:30-210</p><p>  [12]飛思科技產(chǎn)品研發(fā)中心.《JSP應(yīng)用開發(fā)詳解》.電子工業(yè)出版社,2003年9月:32-300&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論