計(jì)算機(jī)專業(yè)畢業(yè)論文-- 報(bào)表設(shè)計(jì)器開(kāi)發(fā)_第1頁(yè)
已閱讀1頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題 目 報(bào)表設(shè)計(jì)器開(kāi)發(fā) </p><p>  專 業(yè) 網(wǎng)絡(luò)工程 </p><p>  班 級(jí) 網(wǎng)絡(luò)041 </p><p>  學(xué) 生

2、 </p><p>  指導(dǎo)教師 </p><p>  二零零八 年</p><p><b>  摘 要</b></p><p>  現(xiàn)在是信息社會(huì),各種信息都需要處理并直觀展現(xiàn),如股票,物價(jià)等信息都需要通過(guò)數(shù)據(jù)報(bào)表來(lái)展現(xiàn)、分析,因此高質(zhì)量報(bào)表軟件系統(tǒng)具有重要的實(shí)際意義。&l

3、t;/p><p>  本論文課題研究探索了報(bào)表系統(tǒng)的開(kāi)發(fā)方法與技術(shù),綜合應(yīng)用Eclipse、 JAVA 、JDBC、SWT/Jface、 RCP、XML、 CSS、DOM4J,IText,POI等先進(jìn)技術(shù),開(kāi)發(fā)了基于WEB環(huán)境運(yùn)行的報(bào)表設(shè)計(jì)器,實(shí)現(xiàn)了報(bào)表設(shè)計(jì)、模板生成、報(bào)表編輯,報(bào)表發(fā)布等基本功能,為進(jìn)一步開(kāi)發(fā)實(shí)用的報(bào)表系統(tǒng)奠定了基礎(chǔ)。 </p><p>  關(guān)鍵詞:報(bào)表,SWT/Jface,

4、Eclipse,XML,B/S,RCP</p><p><b>  Abstract</b></p><p>  Now is the information society, all kinds of information need to be addressed and visual display, such as stock ,prices and othe

5、r information needed to demonstrate through data reports, analysis, the statements of high-quality software system has important practical significance.</p><p>  This paper statements subject to study and ex

6、plore the system development methods and technology, comprehensive application of Eclipse, JAVA, JDBC, SWT / Jface, RCP, XML, CSS, DOM4J, IText, POI, and other advanced technology, the development of the operating enviro

7、nment based on the statements WEB design , Achieved a report design, template generation, editing statements, issued statements of such basic functions, for the further development of practical system laid the foundation

8、 for statements</p><p>  KEY WORDS: Report,SWT/JFace、Eclipse、XML、B/S、RCP </p><p><b>  目 錄</b></p><p><b>  第一章 概述1</b></p><p>  1.1 課題背景與意義1

9、</p><p>  1.2 報(bào)表系統(tǒng)發(fā)展概況2</p><p>  第二章 開(kāi)發(fā)技術(shù)及環(huán)境4</p><p><b>  2.1軟件環(huán)境4</b></p><p>  2.2 主要開(kāi)發(fā)技術(shù)4</p><p>  第三章 系統(tǒng)設(shè)計(jì)6</p><p>  3.1系統(tǒng)

10、體系結(jié)構(gòu)6</p><p>  3.2 軟件模塊結(jié)構(gòu)7</p><p>  3.3數(shù)據(jù)源與系統(tǒng)文件結(jié)構(gòu)8</p><p>  3.3.1 系統(tǒng)數(shù)據(jù)源8</p><p>  3.3.2 系統(tǒng)文件結(jié)構(gòu)9</p><p>  3.3.3 報(bào)表顯示部分文件13</p><p>  第四章 系

11、統(tǒng)實(shí)現(xiàn)14</p><p>  4.1主要實(shí)現(xiàn)算法14</p><p>  4.1.1新建報(bào)表流程圖14</p><p>  4.1.2 新建數(shù)據(jù)源流程圖15</p><p>  4.1.3編輯單元格流程圖16</p><p>  4.1.4 保存報(bào)表流程圖17</p><p> 

12、 4.1.5 生成電子表格流程圖18</p><p>  4.1.6 發(fā)布報(bào)表流程圖20</p><p>  4.1.7 編輯CSS流程圖21</p><p>  4.1.8 生成模板流程圖22</p><p>  4.1.9 配置服務(wù)器流程圖23</p><p>  4.2 系統(tǒng)編碼實(shí)現(xiàn)23<

13、/p><p>  4.2.1 系統(tǒng)的主界面實(shí)現(xiàn)23</p><p>  4.2.2 新建數(shù)據(jù)源32</p><p>  4.2.3 新建報(bào)表34</p><p>  4.2.4 編輯單元格35</p><p>  4.2.5 生成電子表格36</p><p>  4.2.6 發(fā)布報(bào)表

14、40</p><p>  4.2.7 編輯CSS42</p><p>  4.2.8 生成模板44</p><p>  4.2.9 報(bào)表保存45</p><p>  4.2.10 配置服務(wù)器48</p><p>  第五章 系統(tǒng)典型界面51</p><p>  5.1系統(tǒng)主界面5

15、1</p><p>  5.1.1 編輯視圖界面52</p><p>  5.1.2 屬性視圖界面52</p><p>  5.1.3 服務(wù)器視圖界面53</p><p>  5.1.4 數(shù)據(jù)源視圖界面53</p><p>  5.2部分功能界面54</p><p>  5.2.

16、1 新建報(bào)表界面54</p><p>  5.2.2 新建數(shù)據(jù)源界面55</p><p>  5.2.3 設(shè)置CSS界面56</p><p>  5.2.4 設(shè)置服務(wù)器參數(shù)界面57</p><p>  5.2.5 設(shè)置報(bào)表參數(shù)界面58</p><p>  5.2.6生成模板界面58</p>&

17、lt;p>  第六章 課題總結(jié)60</p><p><b>  致謝62</b></p><p><b>  參考文獻(xiàn)63</b></p><p><b>  附錄65</b></p><p><b>  第一章 概述</b></p&g

18、t;<p>  1.1 課題背景與意義</p><p>  現(xiàn)在是信息社會(huì),各種信息都需要處理并直觀展現(xiàn),如股票,物價(jià)等信息都需要通過(guò)數(shù)據(jù)報(bào)表來(lái)展現(xiàn)、分析,因此對(duì)高質(zhì)量報(bào)表軟件系統(tǒng)的需求非常強(qiáng)烈。</p><p>  報(bào)表設(shè)計(jì)工具是報(bào)表系統(tǒng)的重要組成部分,使用報(bào)表設(shè)計(jì)工具,可對(duì)企業(yè)以及其他用戶需要的各種報(bào)表進(jìn)行設(shè)計(jì),并在報(bào)表引擎上運(yùn)行。報(bào)表設(shè)計(jì)工具的功能包括數(shù)據(jù)源關(guān)聯(lián)與訪問(wèn)、

19、報(bào)表繪制、布局繪制、屬性編輯、腳本編輯、圖表編輯、表達(dá)式編輯、報(bào)表數(shù)據(jù)映射、報(bào)表預(yù)覽調(diào)試等??赏ㄟ^(guò)XML轉(zhuǎn)換技術(shù)將報(bào)表轉(zhuǎn)換換為PDF、Excel等格式輸出。</p><p>  隨著B(niǎo)/S應(yīng)用逐步取代C/S,市場(chǎng)上對(duì)Web環(huán)境下運(yùn)行報(bào)表的要求日益強(qiáng)烈,C/S時(shí)期的報(bào)表工具紛紛進(jìn)行了若干改進(jìn)與加強(qiáng),支持B/S結(jié)構(gòu)。這些工具大都是對(duì)開(kāi)源軟件進(jìn)行包裝改造,基本上有兩種流派:一類來(lái)自于FastReport這種基于Delp

20、hi的軟件,通過(guò)控件方式實(shí)現(xiàn)Web報(bào)表,進(jìn)而將報(bào)表計(jì)算移至服務(wù)器上進(jìn)行,再改進(jìn)為支持Linux;另一類來(lái)自于Jasper的基于Java的開(kāi)源軟件。這些工具的整體思路還是沿襲了C/S時(shí)的方式,仍然是傳統(tǒng)的分組報(bào)表的模式,仍然無(wú)法解決表樣和大作量的代碼編寫(xiě)問(wèn)題,而且使用復(fù)雜,不能很好的發(fā)揮其效率,不能利用已有的軟件功能,同時(shí)他們都是利用SWING/AWT來(lái)開(kāi)發(fā)的,界面難看。  </p><p> 

21、 因此,開(kāi)發(fā)一個(gè)具有B/S結(jié)構(gòu)、能適應(yīng)中國(guó)國(guó)情、開(kāi)源的、使用方便、界面美觀的報(bào)表設(shè)計(jì)器是一個(gè)很多用戶直期待的。但是,目前流行的報(bào)表軟件產(chǎn)品中,比較適合中國(guó)情況的產(chǎn)品還是不多。</p><p>  因此,進(jìn)行本課題研究,開(kāi)發(fā)報(bào)表設(shè)計(jì)器軟件,對(duì)于開(kāi)發(fā)適合中國(guó)特點(diǎn)的實(shí)用報(bào)表系統(tǒng),促進(jìn)企業(yè)與社會(huì)信息化,具有很好的實(shí)際意義。</p><p>  1.2 報(bào)表系統(tǒng)發(fā)展概況</p><

22、;p>  信息化的初期階段,計(jì)算機(jī)作為一種新的生產(chǎn)工具,其主要功能是文字輸出,如文件打印、表格輸出等,相比較手工方式而言,工作效率大大提高。這個(gè)時(shí)期,用于報(bào)表生成的軟件主要是WPS表格、CCED、Excel等文字處理工具,這些工具僅僅是將手工繪制報(bào)表的方式改為電子處理方式,未涉及到報(bào)表數(shù)據(jù)的集中、共享等處理。更確切地說(shuō),這個(gè)時(shí)期還沒(méi)有真正意義上的報(bào)表工具。</p><p>  隨著信息化程度的不斷提高,C/

23、S應(yīng)用方式逐漸成熟,出現(xiàn)了很多報(bào)表工具軟件,最著名的當(dāng)屬水晶報(bào)表和PB的DataWindow。水晶報(bào)表在上世紀(jì)一直被微軟OEM,成為VB的內(nèi)置報(bào)表工具,在微軟的強(qiáng)大支持下,VB龐大的用戶群為水晶報(bào)表培養(yǎng)了眾多應(yīng)用人員并積累了大量成功案例,從而產(chǎn)生了世界第一(用戶量)的報(bào)表工具。DataWindow 是 PB 中獲取專利技術(shù)的控件,它對(duì)數(shù)據(jù)的處理方法相當(dāng)簡(jiǎn)潔,能處理各種顯示格式,快速的報(bào)表制作能力深受PB開(kāi)發(fā)者的喜愛(ài)。</p>

24、<p>  這些軟件的基本特征是單數(shù)據(jù)源、條帶式(BAND)分組統(tǒng)計(jì)模型,通過(guò)控件拖拽方式繪制報(bào)表,在不編碼的情況下能完成簡(jiǎn)單地行式(分組)報(bào)表和單片交叉報(bào)表,數(shù)據(jù)集中在數(shù)據(jù)庫(kù)中,可以共享。</p><p>  但這一時(shí)期的用戶需求已經(jīng)與前一階段的需求大為不同。用戶希望放在數(shù)據(jù)庫(kù)中的數(shù)據(jù)能以自己熟悉的方式展現(xiàn)(復(fù)雜的表樣、統(tǒng)計(jì)運(yùn)算等),而這些報(bào)表軟件的數(shù)據(jù)模型源于國(guó)外的報(bào)表習(xí)慣,解決復(fù)雜表樣的方法并

25、不好,復(fù)雜的統(tǒng)計(jì)運(yùn)算也要求開(kāi)發(fā)人員編寫(xiě)大量的程序代碼,導(dǎo)致報(bào)表開(kāi)發(fā)時(shí)間太長(zhǎng),后期的維護(hù)工作量也很大。</p><p>  隨著B(niǎo)/S應(yīng)用逐步取代C/S,市場(chǎng)上對(duì)Web報(bào)表的要求越來(lái)越強(qiáng)烈,C/S時(shí)期的報(bào)表工具紛紛進(jìn)行了若干改進(jìn)與加強(qiáng),普遍支持B/S結(jié)構(gòu),新的報(bào)表軟件也如雨后春筍一樣不斷出現(xiàn)。</p><p>  在報(bào)表工具的發(fā)展過(guò)程中,還有一類特殊的表格式產(chǎn)品,最著名有ormula1和華表

26、。這種類Excel 的工具,展現(xiàn)能力非常強(qiáng),但是因?yàn)闆](méi)有數(shù)據(jù)模型,導(dǎo)致其數(shù)據(jù)處理能力幾乎為零,程序員需要按格編寫(xiě)代碼往里填數(shù)。相比較分組式報(bào)表工具,類Excel工具能徹底解決復(fù)雜報(bào)表的樣式問(wèn)題,所以在實(shí)際應(yīng)用中它一直是與分組報(bào)表互補(bǔ)的一類產(chǎn)品。</p><p>  SWT/JFACE是Eclipse推出優(yōu)秀的JAVA圖形API。</p><p>  RCP,也就是富客戶端,是在Eclips

27、e3.0之后分離出來(lái)的一個(gè)平臺(tái)。RCP技術(shù)其實(shí)就是插件開(kāi)發(fā),可以在一個(gè)很小的模板上加入各種插件,擴(kuò)展性能?,F(xiàn)在RCP已經(jīng)成為Eclipse開(kāi)源項(xiàng)目的一個(gè)亮點(diǎn),在國(guó)際上廣泛的使用大量PCR來(lái)開(kāi)發(fā)桌面應(yīng)用程序。在RCP平臺(tái)上,可以使用Eclipse的插件機(jī)制來(lái)快速開(kāi)發(fā)獨(dú)立應(yīng)用的桌面應(yīng)用,從而輕松擁有Eclipse的界面結(jié)構(gòu)和界面元素,節(jié)省了很多開(kāi)發(fā)精力。</p><p>  運(yùn)用SWT/Jface和RCP技術(shù)來(lái)開(kāi)發(fā)報(bào)

28、表,是當(dāng)前報(bào)表開(kāi)發(fā)的主流方向。一方面,SWT/Jface可以提供優(yōu)秀的圖形界面,克服JAVA桌面應(yīng)用界面難看的缺陷;另一方面RCP技術(shù)可以提高開(kāi)發(fā)效率。聯(lián)合運(yùn)用SWT/Jface和RCP技術(shù),可以開(kāi)發(fā)出優(yōu)秀的報(bào)表產(chǎn)品。</p><p>  第二章 開(kāi)發(fā)技術(shù)及環(huán)境</p><p><b>  2.1軟件環(huán)境</b></p><p><b&g

29、t;  本系統(tǒng)的開(kāi)發(fā)環(huán)境:</b></p><p>  操作系統(tǒng): Window server 2003標(biāo)準(zhǔn)版</p><p>  應(yīng)用服務(wù)器: Tomcat5.5</p><p>  開(kāi)發(fā)平臺(tái):eclipse3.3 ;jdk1.5</p><p>  2.2 主要開(kāi)發(fā)技術(shù)</p><p><b

30、>  SWT/Jface</b></p><p>  SWT(Standard Widget Toolkit )是標(biāo)準(zhǔn)控件工具集。Jface意為JAVA face。由于SUN的AWT/SWING技術(shù)在與本地界面融合方面存在缺陷,因此IBM開(kāi)發(fā)了SWT,使得界面風(fēng)格和本地保持一致。而Jface是SWTa的擴(kuò)展包,采用MVC的設(shè)計(jì)模式,使用更加方面。</p><p><

31、b>  RCP</b></p><p>  RCP(Rich Client Platform)意為富客戶平臺(tái)。在RCP平臺(tái)上,可使用Eclipse的插件機(jī)制來(lái)快速開(kāi)發(fā)獨(dú)立應(yīng)用的桌面應(yīng)用,從而輕松擁有Eclipse的界面結(jié)構(gòu)和界面元素,節(jié)省了很多開(kāi)發(fā)精力。</p><p><b>  Dom4j </b></p><p>  D

32、om4j (Document Object Model for JAVA)是一個(gè)易用的、開(kāi)源的庫(kù),用于XML,XPath和XSLT。它應(yīng)用于Java平臺(tái),采用了Java集合框架并完全支持DOM,SAX和JAXP。Dom4j使用起來(lái)非常簡(jiǎn)單,效率高。只要了解基本的XML-DOM模型就能使用。</p><p><b>  POI </b></p><p>  POI(Po

33、int of Interest)意為為興趣點(diǎn),是JAVA與MS Office交互時(shí)用到的第三方JAR,也是開(kāi)源的,屬于Apache的一個(gè)項(xiàng)目,用法簡(jiǎn)單。它主要用來(lái)讀寫(xiě)OLE 2復(fù)合文檔結(jié)構(gòu),本系統(tǒng)主要用它來(lái)操作EXCEL。</p><p><b>  IText </b></p><p>  iText是著名的開(kāi)放源碼的站點(diǎn)sourceforge一個(gè)項(xiàng)目,是用于生成P

34、DF文檔的一個(gè)java類庫(kù)。通過(guò)iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉(zhuǎn)化為PDF文件。用法很簡(jiǎn)單,效率很高。</p><p><b>  Lomboz </b></p><p>  lomboz是用來(lái)開(kāi)發(fā)j2ee應(yīng)用、免費(fèi)eclipse插件,用它可以大大加快web開(kāi)發(fā)、部署等工作。</p><p><

35、b>  第三章 系統(tǒng)設(shè)計(jì)</b></p><p><b>  3.1系統(tǒng)體系結(jié)構(gòu)</b></p><p>  本系統(tǒng)采用三層B/S架構(gòu) ,分別為表示層、設(shè)計(jì)層和數(shù)據(jù)層,如圖3-1所示。</p><p>  表示層(Presentation-Tier)</p><p>  是報(bào)表顯示層。本報(bào)表系統(tǒng)的表示層

36、有三種類型:Web類型,Excel類型,Pdf類型。</p><p> ?。?)設(shè)計(jì)層(Designer-Tier)</p><p>  是本報(bào)表系統(tǒng)的重中之重。設(shè)計(jì)層設(shè)計(jì)的好壞直接影響到報(bào)表的使用。其主要任務(wù)是建立報(bào)表、修改報(bào)表、發(fā)布報(bào)表、生成模板等。這涉及到報(bào)表的數(shù)據(jù)來(lái)源,報(bào)表的格式,報(bào)表輸出,是連接表示層和數(shù)據(jù)層的橋梁。</p><p> ?。?)數(shù)據(jù)層(Da

37、ta-Tier)</p><p>  主要是和用戶有關(guān)。本報(bào)表系統(tǒng)可以與幾種常用的數(shù)據(jù)庫(kù)系統(tǒng)交互。報(bào)表中可以輸入的數(shù)據(jù)很多,如圖表、序列號(hào)、常量等。數(shù)據(jù)層可以存儲(chǔ)并管理這些數(shù)據(jù)。</p><p>  圖3-1系統(tǒng)體系結(jié)構(gòu)圖</p><p>  3.2 軟件模塊結(jié)構(gòu)</p><p>  本系統(tǒng)的軟件模塊結(jié)構(gòu),如圖3-2所示。</p>

38、<p>  圖3-2 系統(tǒng)軟件模塊結(jié)構(gòu)圖</p><p>  圖3-2中各模塊的基本功能如下:</p><p>  新建報(bào)表:設(shè)置報(bào)表的名字、每頁(yè)顯示數(shù)目、選用報(bào)表模板;把這些數(shù)據(jù)存到Preferences中,供保存報(bào)表使用。</p><p>  新建數(shù)據(jù)源:設(shè)置數(shù)據(jù)源名稱,用它來(lái)標(biāo)識(shí)數(shù)據(jù)連接;選擇數(shù)據(jù)庫(kù)類型,并設(shè)置各種連接參數(shù);進(jìn)行數(shù)據(jù)源說(shuō)明;進(jìn)行連

39、接測(cè)試;連接成功后把數(shù)據(jù)源名稱和各種連接參數(shù)保存到dataSource.xml文件中,供以后使用;而數(shù)據(jù)源說(shuō)明就生成一個(gè)文本文件保存。</p><p>  編輯單元格:設(shè)置單元格的數(shù)據(jù),如數(shù)據(jù)源列、函數(shù)、系列號(hào)、圖像;設(shè)置顏色,字體;設(shè)置所對(duì)應(yīng)的行列是否擴(kuò)展,所對(duì)應(yīng)的行列是否排序。這些都要用一定的格式保存起來(lái),供報(bào)表顯示時(shí)使用。</p><p>  保存報(bào)表:設(shè)置單元格屬性后,保存設(shè)置內(nèi)容

40、。先從Preferences讀取報(bào)表相關(guān)數(shù)據(jù),然后生成報(bào)表的xml;遍歷表格,把表格各種信息填到xml中。</p><p>  編輯報(bào)表:保存表格后,如覺(jué)得不滿意,可以打開(kāi)報(bào)表修改。讀取xml,把相關(guān)信息填到相應(yīng)的單元格。也可以設(shè)置報(bào)表的每頁(yè)的行數(shù)、報(bào)表發(fā)布者、發(fā)布時(shí)間、報(bào)表說(shuō)明。</p><p>  生成電子表格:電子表格可用來(lái)直接發(fā)布,也可用來(lái)編輯。先讀取報(bào)表xml文件,得到各個(gè)單元格

41、的數(shù)據(jù)源,根據(jù)數(shù)據(jù)源不同,得到不同的數(shù)據(jù),并填到相應(yīng)的電子表格內(nèi)。可以設(shè)置電子表格的屬性。</p><p>  發(fā)布報(bào)表:先設(shè)置發(fā)布目錄,然后把項(xiàng)目文件夾下Files目錄下的名和Preferences中保存相同的,后綴名為xml、xls、css、pdf的文件都復(fù)制到發(fā)布目錄下。如發(fā)布目錄已有相同文件,就覆蓋。</p><p>  編輯CSS:CSS決定網(wǎng)頁(yè)頁(yè)面顯示格式,對(duì)報(bào)表非常重要。本系

42、統(tǒng)提供一個(gè)模板,旁邊還有介紹各種標(biāo)記的代表的內(nèi)容的提示,這樣用戶就可以自己修改它。修改完后點(diǎn)“確定”,生成報(bào)表名+“.css”的樣式文件。</p><p>  生成模板:CSS不是很難,但要做一個(gè)好看的格式卻很難,所心有必要把前面生成的CSS文件保存起來(lái),提供下次使用。首先設(shè)置模板名字,然后設(shè)置說(shuō)明,點(diǎn)“確定”后,系統(tǒng)會(huì)把當(dāng)前報(bào)表的CSS文件復(fù)制到模板xml文件,并生成說(shuō)明的txt文件。</p>&

43、lt;p>  配置服務(wù)器:配置發(fā)布目錄、端口、最大線程數(shù),以方便使用。</p><p>  3.3數(shù)據(jù)源與系統(tǒng)文件結(jié)構(gòu)</p><p>  3.3.1 系統(tǒng)數(shù)據(jù)源</p><p>  報(bào)表就是數(shù)據(jù)的顯示,所以數(shù)據(jù)源很重要。本系統(tǒng)的數(shù)據(jù)源方案如下:</p><p>  提供建立數(shù)據(jù)源及管理數(shù)據(jù)源的功能。針對(duì)不同類型的數(shù)據(jù)庫(kù)數(shù)據(jù),建立相應(yīng)的

44、數(shù)據(jù)源。建立了數(shù)據(jù)源后,就用一個(gè)XML文件保存數(shù)據(jù)源信息,以后可直接從XML文件讀取或修改連接信息。</p><p>  提供對(duì)其它類型數(shù)據(jù)源的支持。主要支持EXCEL文件、函數(shù)、系列號(hào)、公式等數(shù)據(jù)源。EXCEL文件可以直接解析為WEB格式,而函數(shù),系列號(hào),公式,圖像等可以直接插入。</p><p>  3.3.2 系統(tǒng)文件結(jié)構(gòu)</p><p>  本系統(tǒng)作為一個(gè)桌

45、面應(yīng)用系統(tǒng),涉及到許多文件系統(tǒng),不管用戶還是開(kāi)發(fā)者,都有可能容易迷失在文件堆中,所以必須科學(xué)管理。為了解決此問(wèn)題,本系統(tǒng)設(shè)計(jì)了系統(tǒng)主目錄文件結(jié)構(gòu),以下是系統(tǒng)主目錄的的文件截圖:</p><p>  圖3-4 系統(tǒng)主目錄文件結(jié)構(gòu)圖 </p><p>  圖3-4中各文件的功能如下:</p><p>  .metadata文件夾:系統(tǒng)自動(dòng)生成,保存有日志文件。<

46、/p><p>  .setting文件夾: 系統(tǒng)自動(dòng)生成,用于保存項(xiàng)目的各個(gè)參數(shù)。</p><p>  Bin文件夾:存放已經(jīng)編譯過(guò)的JAVA的.class文件。</p><p>  DataSource文件夾:存放數(shù)據(jù)源的dataSource.xml文件,其中還有各種.txt文件,用來(lái)說(shuō)明各個(gè)數(shù)據(jù)源。該文件夾結(jié)構(gòu)如圖3-5所示:</p><p>

47、;  圖3-5 DataSource文件夾示意圖</p><p>  Files文件夾:用來(lái)存放所生成的報(bào)表。其中有存放報(bào)表信息的xml文件,也有生成為電子表格的.xls文件、pdf文件。當(dāng)然也存放了報(bào)表說(shuō)明的.txt文件,其結(jié)構(gòu)如圖3-6所示: </p><p>  圖3-6 Files文件夾示意圖</p><p>  圖3-6 Files文件夾結(jié)構(gòu)示意圖&l

48、t;/p><p>  icons文件夾:用來(lái)存放圖象,如按鈕圖標(biāo)。</p><p>  intro文件夾:系統(tǒng)自動(dòng)生成。</p><p>  lib文件夾:用來(lái)存放第三方JAR包。</p><p>  META-INF文件夾:系統(tǒng)自動(dòng)生成,里面有MENIFEST.MF,在這個(gè)文件里有描述插件各種信息基本信息。</p><p&g

49、t;  src文件夾:是源文件,其結(jié)構(gòu)如下圖所示:</p><p>  圖3-7 src文件夾示意圖</p><p>  從圖中可知,src文件夾包括兩個(gè)包,一個(gè)是xautreportdesign包,里面有Activator.java文件,這是RCP的激活類。另一個(gè)是com包。其實(shí)這個(gè)包里有三個(gè)子包:com. Xautreportdesign.action,主要用來(lái)存放菜單,工具欄動(dòng)作類的

50、;com. Xautreportdesign.util,主要用來(lái)存放一些工具類的,這些工具類對(duì)全局都有用;com.Xautreportdesign.win,主要是界面方面的類,有一些是自動(dòng)生成后我修改的。</p><p>  com. Xautreportdesign.action包中的一部分類如圖3-8所示:</p><p>  圖3-8 com. Xautreportdesign.ac

51、tion包中文件示意圖</p><p>  com. Xautreportdesign.util包中的類如圖3-9所示:</p><p>  圖3-9 com. Xautreportdesign.util包中文件示意圖</p><p>  com. Xautreportdesign.win包中類類如圖3-10所示:</p><p>  圖3-

52、10 com. Xautreportdesign.win包中文件示意圖</p><p>  Template文件夾:是保存模板的文件夾,里面有模板文件.css文件,也有模板說(shuō)明.txt文件,如圖3-11所示:</p><p>  圖3-11 Template文件夾示意圖</p><p>  .classpath、.project、build.properties、j

53、avaCompiler...args、plugin.xml、plugin_customization.ini都是系統(tǒng)自動(dòng)生成的。</p><p>  build.xml:是用ant生成的,為系統(tǒng)打包用。</p><p>  Report.product:是要生成的新產(chǎn)品配置文件。</p><p>  splash.bmp:系統(tǒng)啟動(dòng)時(shí)產(chǎn)閃動(dòng)畫(huà)面使用。</p>

54、;<p>  3.3.3 報(bào)表顯示部分文件</p><p>  對(duì)于報(bào)表WEB顯示部分,有如下重要文件或文件夾:</p><p>  dataSource文件夾:存放數(shù)據(jù)源文件dataSourece.xml。</p><p>  photo文件夾:存放需要的圖片文件。</p><p>  .css文件:是報(bào)表的css文件。<

55、;/p><p>  report.jsp:是解析保存報(bào)表信息的.xml的文件。</p><p>  exceltoweb.jsp:是解析EXCEL并生成WEB的文件。</p><p><b>  第四章 系統(tǒng)實(shí)現(xiàn)</b></p><p><b>  4.1主要實(shí)現(xiàn)算法</b></p>&l

56、t;p>  4.1.1新建報(bào)表流程圖</p><p>  圖4-1 新建報(bào)表算法流程圖</p><p>  該算法首先判斷是否已有同名的報(bào)表,然后判斷行數(shù)是否為數(shù)字,最后存入Preferences中。</p><p>  4.1.2 新建數(shù)據(jù)源流程圖</p><p>  圖4-2 新建數(shù)據(jù)源算法流程圖</p><

57、;p>  該算法先選擇合適自己的數(shù)據(jù)庫(kù),然后輸入信息,最后連接,看是否成功,若成功就把信息保存起來(lái)。</p><p>  4.1.3編輯單元格流程圖</p><p>  圖4-3 新建報(bào)表算法流程圖</p><p>  該算法首先要得到當(dāng)前鼠標(biāo)的位置,然后轉(zhuǎn)化為表格的行列,最后選擇數(shù)據(jù)源,并設(shè)置單元格屬性。</p><p>  4.1

58、.4 保存報(bào)表流程圖 </p><p>  圖4-4 保存報(bào)表算法流程圖</p><p>  該算法首先從Preferences中讀取報(bào)表相關(guān)信息,生成報(bào)表名的xml文件。然后遍歷表格,讀取各非空單元格的值及屬性,填入寫(xiě)入小xml文件中,最后看是否用到模板,如用到,就生成報(bào)表名的css文件。生成xml的代碼如下所示:</p><p>  <XautRepor

59、tFile Name="zainan" tempname="Template" rownum="8" ownerName="楊濟(jì)忠" time="2008年6月3日" intro="true"> </p><p>  <Columns> </p><p>

60、;  <Column DataSource="D:zainanDS.ID" Span="縱擴(kuò)展" Arrange="不排序" Color="RGB {255, 255, 255}" Font="Tahoma.8.0">A1</Column> </p><p>  在XautReportFi

61、le中, “Name”代表報(bào)表的名字,“tempname”代表報(bào)表用到的模板,“rownum”代表WEB頁(yè)每頁(yè)顯示的行數(shù),“ownerName”代表作者,time代表發(fā)布時(shí)間,intro代表是否有說(shuō)明內(nèi)容。</p><p>  而Columm代表一個(gè)單元格,“DataSource”代表數(shù)據(jù)源,里面不同的部分又代表不同的意思:</p><p>  如前面為“D:”,那代表數(shù)據(jù)庫(kù),中間代表前面

62、建的數(shù)據(jù)源的名稱,最后代碼數(shù)據(jù)源的列。</p><p>  如前面是“I:”,那代表常量,后面部分就是常量的值。、</p><p>  如前面是“S:”,那代表系列號(hào),后面代表系列號(hào)的一部分。</p><p>  如前面是“F:”,那代表的是函數(shù),后面是函數(shù)。</p><p>  “Span”,代表擴(kuò)展情況。擴(kuò)展就是其它單元格的值是否依賴這個(gè)

63、單元格的值;“Arrange”代表是否排序;“Color”代表是顏色,;“Font”代表字體。而這個(gè)單元格的ID是A1。</p><p>  4.1.5 生成電子表格流程圖</p><p>  圖4-5 生成電子表格算法流程圖</p><p>  該算法首先從Preferences中得到當(dāng)前報(bào)表名,然后讀取報(bào)表XML文件,得到數(shù)據(jù)源名稱。讀取數(shù)據(jù)源XML,遍歷得到

64、數(shù)據(jù)源的各種參數(shù)。用這些參數(shù)連接數(shù)據(jù)庫(kù)。用POI創(chuàng)建EXCEL文件。把數(shù)據(jù)庫(kù)中數(shù)據(jù)寫(xiě)入EXCEL文件。</p><p>  4.1.6 發(fā)布報(bào)表流程圖</p><p>  圖4-6 發(fā)布報(bào)表算法流程圖</p><p>  該算法首先從Preferences中查看發(fā)布目錄,如有,就復(fù)制報(bào)表XML到發(fā)布目錄,如沒(méi)有,就設(shè)置。然后就開(kāi)始判斷是否有相關(guān)文件,如有,就一同

65、復(fù)制,因?yàn)椴粡?fù)制,就沒(méi)有用。</p><p>  4.1.7 編輯CSS流程圖</p><p>  圖4-7 編輯CSS算法流程圖</p><p>  該算法首先從CSS模板中讀出模板內(nèi)容,并顯示出來(lái),提供用戶修改。修改完成后點(diǎn)確定,從Preferences得當(dāng)前報(bào)表,然后生成報(bào)表的CSS文件,如已有相同的就覆蓋。最后把修改后的CSS寫(xiě)入報(bào)表文件。</p&g

66、t;<p>  4.1.8 生成模板流程圖</p><p>  圖4-8 生成模板算法流程圖</p><p>  該算法首先設(shè)置要生成模板的模板名及說(shuō)明。然后生成模板文件,當(dāng)然是CSS類型。如模板說(shuō)明不為空,也生成文件文件類型的說(shuō)明書(shū)。然后從Preferences中得到當(dāng)前報(bào)表,由此得到當(dāng)前報(bào)表的CSS文件,最后把這CSS文件的內(nèi)容寫(xiě)入模板文件里。</p>

67、<p>  4.1.9 配置服務(wù)器流程圖</p><p>  圖4-9 配置服務(wù)器算法流程圖</p><p>  該算法首先讀取服務(wù)器配置文件并顯示各個(gè)參數(shù),這可以修改。點(diǎn)確定后,就把修改后值寫(xiě)入配置文件,并更新相關(guān)視圖。</p><p>  4.2 系統(tǒng)編碼實(shí)現(xiàn)</p><p>  4.2.1 系統(tǒng)的主界面實(shí)現(xiàn)</p&g

68、t;<p>  本系統(tǒng)采用Eclipse RCP技術(shù),也就是開(kāi)發(fā)可以獨(dú)立運(yùn)行的Eclipse的插件。運(yùn)用RCP技術(shù),可以實(shí)現(xiàn)與Eclipse一樣友好的界面,可以方便地組裝成一個(gè)很強(qiáng)大的系統(tǒng),因?yàn)檫@是采用插件機(jī)制。本系統(tǒng)的主界面如圖4-1所示:</p><p>  圖4-1 報(bào)表設(shè)計(jì)系統(tǒng)主界面圖</p><p>  由圖4-1可以看到,本系統(tǒng)和Eclipse界面有很大的相似性。

69、本系統(tǒng)主要用到了包c(diǎn)om.xautreportdesign.win。其中各個(gè)類的功能及重要代碼說(shuō)明如下:</p><p>  Application類:是RCP程序的入口類,RCP程序啟動(dòng)后第一個(gè)執(zhí)行就是它,它負(fù)責(zé)程序的載入與退出。這個(gè)類是建立項(xiàng)目后自動(dòng)生成的,平常情況不需要修改。</p><p>  ApplicationWorkbenchAdvisor類:是配置工作臺(tái)的類,工作臺(tái)的初始

70、化就在這完成。這個(gè)類是建立項(xiàng)目后自動(dòng)生成的,可以修改成自己需要的。這個(gè)類的部分代碼如下:</p><p>  ApplicationWorkbenchWindowAdvisor類:用來(lái)設(shè)置窗口。一個(gè)工作臺(tái)可以有多個(gè)窗口,所以可以多個(gè)該類的對(duì)象。這個(gè)類是建立項(xiàng)目后自動(dòng)生成的,可以修改成自己需要的。下面代碼說(shuō)明了窗口大小為(700, 550),有工具欄,窗口標(biāo)題,顯示狀態(tài)欄,生成系統(tǒng)托盤(pán)等。以下是該類的部分實(shí)現(xiàn)代碼:

71、</p><p>  public void preWindowOpen() {</p><p>  /** 設(shè)置窗口初始化的各種屬性 */</p><p>  IWorkbenchWindowConfigurer configurer = getWindowConfigurer();</p><p>  configurer.setInit

72、ialSize(new Point(700, 550));</p><p>  configurer.setShowCoolBar(true);</p><p>  configurer.setShowStatusLine(false);</p><p>  configurer.setTitle("報(bào)表生成系統(tǒng)");</p>

73、<p>  configurer.setShowPerspectiveBar(true);</p><p>  configurer.setShowStatusLine(true);</p><p>  final IWorkbenchWindow window = getWindowConfigurer().getWindow();</p><p>  

74、/** 創(chuàng)建系統(tǒng)托盤(pán) */</p><p>  trayItem = initTrayItem(window);</p><p>  /** 如果支持系統(tǒng)托盤(pán),則創(chuàng)建托盤(pán)的菜單 */</p><p>  if (trayItem != null) {</p><p>  createPopupMenu(window);</p>

75、<p><b>  }</b></p><p><b>  }</b></p><p>  Perspective類:是透視圖類。透視圖是各個(gè)視圖,編輯面組成的一個(gè)專用的程序界面。本類是項(xiàng)目默認(rèn)生成,當(dāng)然也可以寫(xiě)自己的視圖,只要實(shí)現(xiàn)IperspectiveFactory接口。下面就是本透視圖的布局部分代碼,效果如圖4-1所示。</

76、p><p>  public void createInitialLayout (IPageLayout layout) {</p><p>  String editorArea = layout.getEditorArea();</p><p>  layout.setEditorAreaVisible(true);</p><p>  la

77、yout.setFixed(false);</p><p>  // layout.addView(View.ID,IPageLayout.LEFT, 0.25f, editorArea);</p><p>  IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,</p>&l

78、t;p>  0.25f, editorArea);</p><p>  left.addPlaceholder(DatasourceView.ID);</p><p>  left.addPlaceholder(ServerView.ID);</p><p>  layout.getViewLayout(ServerView.ID).setCloseabl

79、e(false);</p><p>  layout.getViewLayout(ServerView.ID).setMoveable(false);</p><p>  layout.addPlaceholder(editAreaView.ID, IPageLayout.TOP, 0.50f,</p><p>  editorArea);</p>&

80、lt;p>  layout.addPlaceholder(AttributeView.ID, IPageLayout.BOTTOM, 0.25f,</p><p>  editorArea);</p><p>  layout.getViewLayout(AttributeView.ID).setCloseable(false);</p><p>  la

81、yout.getViewLayout(AttributeView.ID).setMoveable(false);</p><p><b>  }</b></p><p>  ApplicationActionBarAdvisor類:負(fù)責(zé)創(chuàng)建和配置工作臺(tái)窗口上主菜單,工具欄,狀態(tài)欄等,是報(bào)表各種功能模塊相關(guān)入口。下面的代碼是用來(lái)建立系統(tǒng)托盤(pán)項(xiàng)。其中new Separ

82、ator()是畫(huà)一條分隔線,在菜單工具欄中也用到。</p><p>  public void fillTrayItem(MenuManager trayMenu) {</p><p>  trayMenu.add(deployAction);</p><p>  trayMenu.add(new Separator());</p><p>

83、  trayMenu.add(exampleAction);</p><p>  trayMenu.add(aboutAction);</p><p>  editAreaView類:是編輯視圖類。視圖相當(dāng)于一個(gè)小窗口,顯示某一方面的內(nèi)容,可以在一個(gè)頁(yè)面上放置幾個(gè)視圖。視圖可通過(guò)兩種方式創(chuàng)建:</p><p>  一.通過(guò)擴(kuò)展點(diǎn):修改plugin.xml文件,設(shè)置視

84、圖擴(kuò)展點(diǎn),在最后一行的</plugin>前加入,下面的代碼說(shuō)明了擴(kuò)展點(diǎn)是org.eclipse.ui.views,視圖名字是“編輯區(qū)”,對(duì)應(yīng)的JAVA文件是com.xautreportdesign.win.editAreaView,ID是視圖的標(biāo)識(shí),為XautReportDesign.EditAreaView。對(duì)于其它視圖,都可以這樣創(chuàng)建:</p><p>  <extension</p&

85、gt;<p>  point="org.eclipse.ui.views"></p><p><b>  <view</b></p><p>  name="編輯區(qū)"</p><p>  class="com.xautreportdesign.win.editAreaV

86、iew"</p><p>  id="XautReportDesign.EditAreaView"></p><p><b>  </view></b></p><p>  </extension> </p><p>  二.通過(guò)繼承抽象類ViewPart類

87、,要改寫(xiě)類中createPartControl,setFocus方法。</p><p>  本視圖實(shí)現(xiàn)部分的代碼如下所示:</p><p>  public void createPartControl(Composite parent) {</p><p>  createToolbar();</p><p>  if (!isedit)

88、{</p><p>  setPartName("編輯" + reportName);</p><p><b>  } else</b></p><p>  setPartName("(未保存)編輯" + reportName);</p><p>  createTable(par

89、ent, colnum, rownum);</p><p><b>  }</b></p><p>  上面的代碼是實(shí)現(xiàn)視圖內(nèi)容,其中最重要的是createTable()方法。這個(gè)方法是在視圖中創(chuàng)建類似EXCEL中的表格。下面的代碼創(chuàng)建一個(gè)表格,并設(shè)置表格的樣式,部分代碼如下:</p><p>  Composite c1 = new Comp

90、osite(parent, SWT.NONE);</p><p>  c1.setLayout(new FillLayout());</p><p>  table = new Table(c1, SWT.SINGLE | SWT.HIDE_SELECTION</p><p>  | SWT.FULL_SELECTION);</p><p&g

91、t;  table.setHeaderVisible(true);</p><p>  table.setLinesVisible(true);</p><p>  table.setRedraw(true);</p><p>  對(duì)于表格的列號(hào),下面的代碼創(chuàng)建列名從A開(kāi)始的20個(gè)列,其中得把數(shù)字轉(zhuǎn)化為字符型 ,其實(shí)現(xiàn)代碼如下:</p><p&g

92、t;  for (int i = 0; i < 20; i++) {</p><p>  TableColumn column = new TableColumn(table, SWT.CENTER);</p><p>  column.setText(" " + String.valueOf((char) (65 + i)) + " ")

93、;</p><p>  column.pack();</p><p><b>  }</b></p><p>  而對(duì)于行號(hào),下面的方法把按鈕附加到每一行的第一列,在按鈕上寫(xiě)數(shù)字。這樣做的原因是使表格可編輯。實(shí)現(xiàn)方法如下:</p><p>  Button b[] = new Button[30];</p>

94、;<p>  for (int i = 0; i < 30; i++) {</p><p>  final TableItem item = new TableItem(table, SWT.NONE);</p><p>  item.setText(i + 1, " ");</p><p>  editor[i] = new

95、 TableEditor(table);</p><p>  b[i] = new Button(table, SWT.PUSH);</p><p>  b[i].setText(" " + (i + 1) + " ");</p><p>  editor[i].grabHorizontal = true;</p>

96、<p>  editor[i].minimumHeight = b[i].getSize().y;</p><p>  editor[i].minimumWidth = b[i].getSize().x;</p><p>  editor[i].setEditor(b[i], item, 0);</p><p><b>  } </b&

97、gt;</p><p>  編輯是在屬性視圖完成的,所以需完成數(shù)據(jù)綁定。下面代碼的作用是數(shù)據(jù)綁定,它獲取鼠標(biāo)所在單元格:</p><p>  table.addMouseListener(new MouseAdapter() {</p><p>  public void mouseDown(MouseEvent event) {</p><p&

98、gt;  Control old = editor1.getEditor();</p><p>  if (old != null)</p><p>  old.dispose();</p><p>  Point pt = new Point(event.x, event.y);</p><p>  final TableItem item

99、 = table.getItem(pt);</p><p>  if (item != null) {</p><p>  int column = -1;</p><p>  for (int i = 0; i <= 20; i++) {</p><p>  Rectangle rect = item.getBounds(i);<

100、;/p><p>  if (rect.contains(pt)) {</p><p>  column = i;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p&g

101、t;<p>  要把表格內(nèi)容填到屬性視圖中相應(yīng)的組件上,實(shí)現(xiàn)的方法是首先得到屬性視圖,其中通過(guò)getter()方法得到視圖組件,這樣就可以修改組件的值,同時(shí)得到表格單元格的值,用字符串分析技術(shù)得到不同的值,并填充到屬性視圖table中。實(shí)現(xiàn)代碼如下:</p><p>  final int col = column;</p><p><b>  // 數(shù)據(jù)綁定<

102、;/b></p><p>  IViewPart vp = getViewSite().getPage().findView(</p><p>  AttributeView.ID);</p><p>  AttributeView av = (AttributeView) vp;</p><p>  Label titleLabel

103、= av.getLabel1();</p><p>  String colId = String</p><p>  .valueOf(table.getSelectionIndex() + 1);</p><p>  titleLabel.setText("單元格:"</p><p>  + String.valueO

104、f((char) (64 + column)) + colId);</p><p>  Combo combo = av.getCombo();</p><p>  Combo combo11 = av.getCombo11();</p><p>  Combo combo1 = av.getCombo1();</p><p>  Combo

105、 combo2 = av.getCombo2();</p><p>  String columnValue = item.getText(column);</p><p>  int i = columnValue.indexOf("@", 1);</p><p>  if (i == -1) {</p><p>  c

106、ombo.select(0);</p><p>  combo11.select(0);</p><p>  combo1.select(0);</p><p>  combo2.select(0);</p><p><b>  } else {</b></p><p>  String data

107、source = columnValue.substring(0, i);</p><p>  if (datasource.startsWith("F:")) {</p><p>  combo.select(2);</p><p>  combo11.setText(datasource.substring(2));</p>&

108、lt;p>  } else if (datasource.startsWith("S:")) {</p><p>  combo.select(1);</p><p>  combo11.setText(datasource.substring(2));</p><p>  } else if (datasource.startsWith(

109、"D:")) {</p><p>  int n = datasource.indexOf(".");</p><p>  combo.setText(datasource.substring(2, n));</p><p>  combo11.setText(datasource.substring(n + 1));<

110、/p><p>  } else if (datasource.startsWith("I:")) {</p><p>  combo.select(0);</p><p>  combo11.setText(datasource.substring(2));</p><p><b>  } else {</b&

111、gt;</p><p>  combo.select(0);</p><p>  combo11.setText(datasource);</p><p><b>  }</b></p><p>  AttributeView類:是屬性視圖類,也就是用來(lái)修改單元格的屬性。</p><p>  本視

112、圖的重點(diǎn)工作是編輯單元格屬性,所以工作重點(diǎn)是和編輯視圖交互,部分代碼如下:</p><p>  public void fillInTable(final Composite parent)</p><p>  throws NumberFormatException {</p><p>  IViewPart vp = getViewSite().getPage(

113、).findView(editAreaView.ID);</p><p>  editAreaView eav = (editAreaView) vp;</p><p>  Table table = eav.getTable();</p><p>  int i = label1.getText().indexOf(":");</p>

114、;<p>  String tableLocal = label1.getText().substring(i + 1);</p><p>  String colid = tableLocal.substring(0, 1);</p><p>  String rowid = tableLocal.substring(1);</p><p>  ch

115、ar[] char1 = colid. toCharArray ();</p><p>  int k = char1[0] - 64;</p><p>  TableItem item = table.getItem(Integer.parseInt(rowid) - 1);</p><p>  String valueString = "";

116、</p><p>  if (combo. getSelectionIndex() == 0) {</p><p>  valueString = "I:" + combo11.getText() + "@" + combo1.getText()</p><p>  + "@" + combo2.getTe

117、xt();</p><p>  } else if (combo. getSelectionIndex() == 1) {</p><p>  valueString = "S:" + combo11.getText() + "@" + combo1.getText()</p><p>  + "@" +

118、combo2.getText();</p><p>  } else if (combo.getSelectionIndex () == 2) {</p><p>  valueString = "F:" + combo11.getText() + "@" + combo1.getText()</p><p>  + &quo

溫馨提示

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

評(píng)論

0/150

提交評(píng)論