計算機專業(yè)畢業(yè)論文.pdf_第1頁
計算機專業(yè)畢業(yè)論文.pdf_第2頁
計算機專業(yè)畢業(yè)論文.pdf_第3頁
計算機專業(yè)畢業(yè)論文.pdf_第4頁
計算機專業(yè)畢業(yè)論文.pdf_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

計算機專業(yè)畢業(yè)論文.pdf.pdf 免費下載

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

文檔簡介

畢業(yè)設(shè)計(論文) 題目報表設(shè)計器開發(fā) 專業(yè)網(wǎng)絡(luò)工程 班級網(wǎng)絡(luò) 041 學(xué)生楊濟(jì)忠 指導(dǎo)教師張璟 二零零八年 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 摘要 現(xiàn)在是信息社會, 各種信息都需要處理并直觀展現(xiàn),如股票,物價等信 息都需要通過數(shù)據(jù)報表來展現(xiàn)、分析,因此高質(zhì)量報表軟件系統(tǒng)具有重要 的實際意義。 本論文課題研究探索了報表系統(tǒng)的開發(fā)方法與技術(shù),綜合應(yīng)用 Eclipse 、 JAVA 、JDBC 、SWT/Jface、 RCP 、XML 、 CSS 、DOM4J,IText,POI等先進(jìn)技 術(shù),開發(fā)了基于 WEB 環(huán)境運行的報表設(shè)計器,實現(xiàn)了報表設(shè)計、模板生成、 報表編輯,報表發(fā)布等基本功能,為進(jìn)一步開發(fā)實用的報表系統(tǒng)奠定了基 礎(chǔ)。 關(guān)鍵詞 :報表, SWT/Jface,Eclipse ,XML ,B/S,RCP 楊濟(jì)忠:報表設(shè)計器開發(fā) Abstract Now is the information society, all kinds of information need to be addressed and visual display, such as stock ,prices and other information needed to demonstrate through data reports, analysis, the statements of high-quality software system has important practical significance. This paper statements subject to study and explore the system development methods and technology, comprehensive application of Eclipse, JA VA, JDBC, SWT / Jface, RCP, XML, CSS, DOM4J, IText, POI, and other advanced technology, the development of the operating environment 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 for statements. KEY WORDS : Report,SWT/JFace、Eclipse 、XML 、B/S、RCP 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 目 錄 第一章 概述 . 1 1.1 課題背景與意義 . 1 1.2 報表系統(tǒng)發(fā)展概況 . 2 第二章 開發(fā)技術(shù)及環(huán)境. 4 2.1 軟件環(huán)境 . 4 2.2 主要開發(fā)技術(shù) . 4 第三章 系統(tǒng)設(shè)計 . 6 3.1 系統(tǒng)體系結(jié)構(gòu). 6 3.2 軟件模塊結(jié)構(gòu) . 7 3.3 數(shù)據(jù)源與系統(tǒng)文件結(jié)構(gòu). 8 3.3.1 系統(tǒng)數(shù)據(jù)源 . 8 3.3.2 系統(tǒng)文件結(jié)構(gòu). 9 3.3.3 報表顯示部分文件 13 第四章 系統(tǒng)實現(xiàn) 14 4.1 主要實現(xiàn)算法 14 4.1.1 新建報表流程圖 . 14 4.1.2 新建數(shù)據(jù)源流程圖. 15 4.1.3 編輯單元格流程圖 . 16 4.1.4 保存報表流程圖 17 4.1.5 生成電子表格流程圖 18 4.1.6 發(fā)布報表流程圖. 20 4.1.7 編輯 CSS 流程圖 21 4.1.8 生成模板流程圖. 22 4.1.9 配置服務(wù)器流程圖. 23 4.2 系統(tǒng)編碼實現(xiàn) 23 4.2.1 系統(tǒng)的主界面實現(xiàn) 23 4.2.2 新建數(shù)據(jù)源 32 4.2.3 新建報表 . 34 4.2.4 編輯單元格 35 4.2.5 生成電子表格. 36 4.2.6 發(fā)布報表 . 40 4.2.7 編輯 CSS . 42 4.2.8 生成模板 44 4.2.9 報表保存 45 4.2.10 配置服務(wù)器 48 楊濟(jì)忠:報表設(shè)計器開發(fā) 第五章 系統(tǒng)典型界面 . 51 5.1 系統(tǒng)主界面 . 51 5.1.1 編輯視圖界面 . 52 5.1.2 屬性視圖界面 . . 52 5.1.3 服務(wù)器視圖界面 . . 53 5.1.4 數(shù)據(jù)源視圖界面 . . 53 5.2 部分功能界面 . 54 5.2.1 新建報表界面 . 54 5.2.2 新建數(shù)據(jù)源界面 . 55 5.2.3 設(shè)置 CSS界面. 56 5.2.4 設(shè)置服務(wù)器參數(shù)界面 . 57 5.2.5 設(shè)置報表參數(shù)界面 . 58 5.2.6 生成模板界面 . 58 第六章 課題總結(jié) . 60 致謝 . . 62 參考文獻(xiàn) . . 63 附錄 . . 65 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 1 第一章概述 1.1 課題背景與意義 現(xiàn)在是信息社會, 各種信息都需要處理并直觀展現(xiàn),如股票,物價等信 息都需要通過數(shù)據(jù)報表來展現(xiàn)、分析,因此對高質(zhì)量報表軟件系統(tǒng)的需求 非常強烈。 報表設(shè)計工具是報表系統(tǒng)的重要組成部分,使用報表設(shè)計工具, 可對企 業(yè)以及其他用戶需要的各種報表進(jìn)行設(shè)計,并在報表引擎上運行。報表設(shè) 計工具的功能包括數(shù)據(jù)源關(guān)聯(lián)與訪問、報表繪制、布局繪制、屬性編輯、 腳本編輯、圖表編輯、表達(dá)式編輯、報表數(shù)據(jù)映射、報表預(yù)覽調(diào)試等???通過 XML轉(zhuǎn)換技術(shù)將報表轉(zhuǎn)換換為PDF 、Excel 等格式輸出。 隨著 B/S 應(yīng)用逐步取代 C/S,市場上對 Web環(huán)境下運行報表的要求日益 強烈,C/S 時期的報表工具紛紛進(jìn)行了若干改進(jìn)與加強,支持 B/S 結(jié)構(gòu)。這 些工具大都是對開源軟件進(jìn)行包裝改造,基本上有兩種流派:一類來自于 FastReport 這種基于 Delphi 的軟件,通過控件方式實現(xiàn)Web 報表,進(jìn)而將 報表計算移至服務(wù)器上進(jìn)行,再改進(jìn)為支持Linux ;另一類來自于Jasper 的基于 Java 的開源軟件。這些工具的整體思路還是沿襲了C/S 時的方式, 仍然是傳統(tǒng)的分組報表的模式,仍然無法解決表樣和大作量的代碼編寫問 題,而且使用復(fù)雜,不能很好的發(fā)揮其效率,不能利用已有的軟件功能, 同 時他們都是利用 SWING/AWT來開發(fā)的 , 界面難看。 因此,開發(fā)一個具有B/S 結(jié)構(gòu)、能適應(yīng)中國國情、開源的、使用方便、 界面美觀的報表設(shè)計器是一個很多用戶直期待的。但是,目前流行的報表 軟件產(chǎn)品中,比較適合中國情況的產(chǎn)品還是不多。 因此,進(jìn)行本課題研究, 開發(fā)報表設(shè)計器軟件, 對于開發(fā)適合中國特點 的實用報表系統(tǒng),促進(jìn)企業(yè)與社會信息化,具有很好的實際意義。 楊濟(jì)忠:報表設(shè)計器開發(fā) 2 1.2 報表系統(tǒng)發(fā)展概況 信息化的初期階段 , 計算機作為一種新的生產(chǎn)工具,其主要功能是文字 輸出,如文件打印、表格輸出等,相比較手工方式而言,工作效率大大提 高。這個時期,用于報表生成的軟件主要是WPS 表格、CCED 、Excel 等文字 處理工具,這些工具僅僅是將手工繪制報表的方式改為電子處理方式,未 涉及到報表數(shù)據(jù)的集中、共享等處理。更確切地說,這個時期還沒有真正 意義上的報表工具。 隨著信息化程度的不斷提高,C/S 應(yīng)用方式逐漸成熟,出現(xiàn)了很多報 表工具軟件, 最著名的當(dāng)屬水晶報表和PB的 DataWindow 。水晶報表在上世 紀(jì)一直被微軟 OEM ,成為 VB的內(nèi)置報表工具,在微軟的強大支持下,VB龐 大的用戶群為水晶報表培養(yǎng)了眾多應(yīng)用人員并積累了大量成功案例,從而 產(chǎn)生了世界第一(用戶量)的報表工具。DataWindow 是 PB 中獲取專利技 術(shù)的控件,它對數(shù)據(jù)的處理方法相當(dāng)簡潔,能處理各種顯示格式,快速的 報表制作能力深受PB開發(fā)者的喜愛。 這些軟件的基本特征是單數(shù)據(jù)源、條帶式(BAND )分組統(tǒng)計模型, 通過控件拖拽方式繪制報表,在不編碼的情況下能完成簡單地行式(分組) 報表和單片交叉報表,數(shù)據(jù)集中在數(shù)據(jù)庫中,可以共享。 但這一時期的用戶需求已經(jīng)與前一階段的需求大為不同。用戶希望放 在數(shù)據(jù)庫中的數(shù)據(jù)能以自己熟悉的方式展現(xiàn)(復(fù)雜的表樣、統(tǒng)計運算等), 而這些報表軟件的數(shù)據(jù)模型源于國外的報表習(xí)慣,解決復(fù)雜表樣的方法并 不好,復(fù)雜的統(tǒng)計運算也要求開發(fā)人員編寫大量的程序代碼,導(dǎo)致報表開 發(fā)時間太長,后期的維護(hù)工作量也很大。 隨著 B/S 應(yīng)用逐步取代 C/S, 市場上對 Web 報表的要求越來越強烈, C/S 時期的報表工具紛紛進(jìn)行了若干改進(jìn)與加強,普遍支持B/S 結(jié)構(gòu),新的報 表軟件也如雨后春筍一樣不斷出現(xiàn)。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 3 在報表工具的發(fā)展過程中,還有一類特殊的表格式產(chǎn)品,最著名有 ormula1 和華表。這種類 Excel 的工具,展現(xiàn)能力非常強,但是因為沒有 數(shù)據(jù)模型,導(dǎo)致其數(shù)據(jù)處理能力幾乎為零,程序員需要按格編寫代碼往里 填數(shù)。相比較分組式報表工具,類Excel 工具能徹底解決復(fù)雜報表的樣式 問題,所以在實際應(yīng)用中它一直是與分組報表互補的一類產(chǎn)品。 SWT/JFACE 是 Eclipse推出優(yōu)秀的 JAVA圖形 API。 RCP, 也就是富客戶端 , 是在 Eclipse3.0之后分離出來的一個平臺。 RCP 技術(shù)其實就是插件開發(fā),可以在一個很小的模板上加入各種插件,擴(kuò)展性 能?,F(xiàn)在 RCP 已經(jīng)成為 Eclipse 開源項目的一個亮點,在國際上廣泛的使 用大量 PCR 來開發(fā)桌面應(yīng)用程序。在RCP 平臺上,可以使用Eclipse 的插 件機制來快速開發(fā)獨立應(yīng)用的桌面應(yīng)用,從而輕松擁有Eclipse 的界面結(jié) 構(gòu)和界面元素,節(jié)省了很多開發(fā)精力。 運用 SWT/Jface和 RCP 技術(shù)來開發(fā)報表, 是當(dāng)前報表開發(fā)的主流方向。 一方面, SWT/Jface 可以提供優(yōu)秀的圖形界面,克服JAVA桌面應(yīng)用界面難 看的缺陷;另一方面RCP 技術(shù)可以提高開發(fā)效率。聯(lián)合運用SWT/Jface和 RCP 技術(shù),可以開發(fā)出優(yōu)秀的報表產(chǎn)品。 楊濟(jì)忠:報表設(shè)計器開發(fā) 4 第二章開發(fā)技術(shù)及環(huán)境 2.1 軟件環(huán)境 本系統(tǒng)的開發(fā)環(huán)境 : 操作系統(tǒng): Window server 2003標(biāo)準(zhǔn)版 應(yīng)用服務(wù)器 : Tomcat5.5 開發(fā)平臺: eclipse3.3 ;jdk1.5 2.2 主要開發(fā)技術(shù) SWT/Jface SWT(Standard Widget Toolkit )是標(biāo)準(zhǔn)控件工具集。 Jface 意為 JAVA face 。由于 SUN的 AWT/SWING 技術(shù)在與本地界面融合方面存在缺陷,因此 IBM開發(fā)了 SWT, 使得界面風(fēng)格和本地保持一致。 而 Jface 是 SWTa 的擴(kuò)展包, 采用 MVC 的設(shè)計模式,使用更加方面。 RCP RCP (Rich Client Platform)意為富客戶平臺。在RCP 平臺上,可使 用 Eclipse的插件機制來快速開發(fā)獨立應(yīng)用的桌面應(yīng)用,從而輕松擁有 Eclipse 的界面結(jié)構(gòu)和界面元素,節(jié)省了很多開發(fā)精力。 Dom4j Dom4j (Document Object Model for JAVA)是一個易用的、開源的 庫,用于 XML ,XPath和 XSLT 。它應(yīng)用于 Java 平臺,采用了 Java 集合框架 并完全支持 DOM ,SAX和 JAXP 。Dom4j使用起來非常簡單,效率高。只要了 解基本的 XML-DOM 模型就能使用。 POI POI(Point of Interest)意為為興趣點,是JAVA與 MS Office 交互 時用到的第三方 JAR,也是開源的, 屬于 Apache的一個項目, 用法簡單。它 主要用來讀寫 OLE 2復(fù)合文檔結(jié)構(gòu),本系統(tǒng)主要用它來操作EXCEL 。 IText 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 5 iText是著名的開放源碼的站點sourceforge一個項目,是用于生成 PDF文檔的一個 java 類庫。通過 iText 不僅可以生成 PDF或 rtf的文檔, 而且可以將 XML 、Html 文件轉(zhuǎn)化為 PDF文件。用法很簡單,效率很高。 Lomboz lomboz 是用來開發(fā) j2ee 應(yīng)用、免費 eclipse插件,用它可以大大加快 web開發(fā)、部署等工作。 楊濟(jì)忠:報表設(shè)計器開發(fā) 6 第三章系統(tǒng)設(shè)計 3.1 系統(tǒng)體系結(jié)構(gòu) 本系統(tǒng)采用三層B/S 架構(gòu) ,分別為表示層、設(shè)計層和數(shù)據(jù)層,如圖 3-1 所示。 (1)表示層 (Presentation-Tier) 是報表顯示層。本報表系統(tǒng)的表示層有三種類型:Web類型, Excel 類型, Pdf 類型。 (2)設(shè)計層 (Designer-Tier) 是本報表系統(tǒng)的重中之重。設(shè)計層設(shè)計的好壞直接影響到報表的使 用。其主要任務(wù)是建立報表、修改報表、發(fā)布報表、生成模板等。這涉 及到報表的數(shù)據(jù)來源,報表的格式,報表輸出,是連接表示層和數(shù)據(jù)層 的橋梁。 (3)數(shù)據(jù)層 (Data-Tier) 主要是和用戶有關(guān)。 本報表系統(tǒng)可以與幾種常用的數(shù)據(jù)庫系統(tǒng)交互。 報表中可以輸入的數(shù)據(jù)很多, 如圖表、序列號、常量等。數(shù)據(jù)層可以存儲 并管理這些數(shù)據(jù)。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 7 圖 3-1 系統(tǒng)體系結(jié)構(gòu)圖 3.2 軟件模塊結(jié)構(gòu) 本系統(tǒng)的軟件模塊結(jié)構(gòu),如圖3-2 所示。 圖 3-2 系統(tǒng)軟件模塊結(jié)構(gòu)圖 圖 3-2 中各模塊的基本功能如下: 新建報表 :設(shè)置報表的名字、每頁顯示數(shù)目、選用報表模板;把這 些數(shù)據(jù)存到 Preferences 中,供保存報表使用。 新建數(shù)據(jù)源 :設(shè)置數(shù)據(jù)源名稱,用它來標(biāo)識數(shù)據(jù)連接;選擇數(shù)據(jù)庫 類型,并設(shè)置各種連接參數(shù);進(jìn)行數(shù)據(jù)源說明;進(jìn)行連接測試;連接 成功后把數(shù)據(jù)源名稱和各種連接參數(shù)保存到dataSource.xml文件中, 供以后使用;而數(shù)據(jù)源說明就生成一個文本文件保存。 編輯單元格 :設(shè)置單元格的數(shù)據(jù),如數(shù)據(jù)源列、函數(shù)、系列號、圖 像;設(shè)置顏色,字體;設(shè)置所對應(yīng)的行列是否擴(kuò)展,所對應(yīng)的行列是 否排序。這些都要用一定的格式保存起來,供報表顯示時使用。 保存報表 :設(shè)置單元格屬性后,保存設(shè)置內(nèi)容。先從Preferences 報表設(shè)計器 新 建 報 表 發(fā) 布 報 表 編 輯 報 表 編 輯 單 元 格 保 存 報 表 編 輯 C S S 生 成 模 板 生 成 電 子 表 格 配 置 服 務(wù) 器 新 建 數(shù) 據(jù) 源 楊濟(jì)忠:報表設(shè)計器開發(fā) 8 讀取報表相關(guān)數(shù)據(jù), 然后生成報表的xml;遍歷表格,把表格各種信息 填到 xml 中。 編輯報表 :保存表格后,如覺得不滿意,可以打開報表修改。讀 取 xml, 把相關(guān)信息填到相應(yīng)的單元格。 也可以設(shè)置報表的每頁的行數(shù)、 報表發(fā)布者、發(fā)布時間、報表說明。 生成電子表格 :電子表格可用來直接發(fā)布,也可用來編輯。先讀 取報表 xml 文件,得到各個單元格的數(shù)據(jù)源,根據(jù)數(shù)據(jù)源不同,得到 不同的數(shù)據(jù),并填到相應(yīng)的電子表格內(nèi)??梢栽O(shè)置電子表格的屬性。 發(fā)布報表 :先設(shè)置發(fā)布目錄,然后把項目文件夾下Files目錄下 的名和 Preferences 中保存相同的,后綴名為xml、xls 、css、pdf 的 文件都復(fù)制到發(fā)布目錄下。如發(fā)布目錄已有相同文件,就覆蓋。 編輯 CSS :CSS 決定網(wǎng)頁頁面顯示格式,對報表非常重要。本系統(tǒng) 提供一個模板,旁邊還有介紹各種標(biāo)記的代表的內(nèi)容的提示,這樣用 戶就可以自己修改它。修改完后點“確定”,生成報表名+“.css ”的 樣式文件。 生成模板 :CSS 不是很難,但要做一個好看的格式卻很難,所心有 必要把前面生成的CSS文件保存起來,提供下次使用。首先設(shè)置模板 名字,然后設(shè)置說明,點“確定”后,系統(tǒng)會把當(dāng)前報表的CSS文件 復(fù)制到模板 xml 文件,并生成說明的txt文件。 配置服務(wù)器 :配置發(fā)布目錄、端口、最大線程數(shù),以方便使用。 3.3 數(shù)據(jù)源與系統(tǒng)文件結(jié)構(gòu) 3.3.1 系統(tǒng)數(shù)據(jù)源 報表就是數(shù)據(jù)的顯示,所以數(shù)據(jù)源很重要。本系統(tǒng)的數(shù)據(jù)源方案如下: (1)提供建立數(shù)據(jù)源及管理數(shù)據(jù)源的功能。針對不同類型的數(shù)據(jù)庫 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 9 數(shù)據(jù),建立相應(yīng)的數(shù)據(jù)源。 建立了數(shù)據(jù)源后,就用一個XML 文件保存數(shù)據(jù) 源信息,以后可直接從XML 文件讀取或修改連接信息。 (2)提供對其它類型數(shù)據(jù)源的支持。主要支持EXCEL 文件、函數(shù)、 系列號、公式等數(shù)據(jù)源。 EXCEL 文件可以直接解析為WEB 格式,而函數(shù), 系列號,公式,圖像等可以直接插入。 3.3.2 系統(tǒng)文件結(jié)構(gòu) 本系統(tǒng)作為一個桌面應(yīng)用系統(tǒng), 涉及到許多文件系統(tǒng) , 不管用戶還是開 發(fā)者, 都有可能容易迷失在文件堆中, 所以必須科學(xué)管理。 為了解決此問題, 本系統(tǒng)設(shè)計了系統(tǒng)主目錄文件結(jié)構(gòu),以下是系統(tǒng)主目錄的的文件截圖: 圖 3-4 系統(tǒng)主目錄文件結(jié)構(gòu)圖 圖 3-4 中各文件的功能如下 : .metadata 文件夾 : 系統(tǒng)自動生成,保存有日志文件。 .setting文件夾 : 系統(tǒng)自動生成,用于保存項目的各個參數(shù)。 Bin 文件夾 : 存放已經(jīng)編譯過的JAVA的.class文件。 楊濟(jì)忠:報表設(shè)計器開發(fā) 10 DataSource 文件夾 : 存放數(shù)據(jù)源的 dataSource.xml文件,其中還有各 種.txt文件,用來說明各個數(shù)據(jù)源。該文件夾結(jié)構(gòu)如圖3-5 所示: 圖 3-5 DataSource文件夾示意圖 Files文件夾 :用來存放所生成的報表。其中有存放報表信息的xml 文件,也有生成為電子表格的.xls文件、 pdf 文件。當(dāng)然也存放了報表說 明的.txt文件,其結(jié)構(gòu)如圖3-6 所示: 圖 3-6 Files文件夾結(jié)構(gòu)示意圖 icons 文件夾 :用來存放圖象,如按鈕圖標(biāo)。 intro文件夾 : 系統(tǒng)自動生成。 lib文件夾 :用來存放第三方JAR包。 META-INF文件夾 : 系統(tǒng)自動生成,里面有MENIFEST.MF, 在這個文件里 有描述插件各種信息基本信息。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 11 src 文件夾 : 是源文件,其結(jié)構(gòu)如下圖所示: 圖 3-7 src文件夾示意圖 從圖中可知, src 文件夾包括兩個包,一個是xautreportdesign包, 里面有 Activator.java文件,這是 RCP 的激活類。另一個是com包。其實 這個包里有三個子包: com. Xautreportdesign.action,主要用來存放菜單, 工具欄動作類的; com. Xautreportdesign.util,主要用來存放一些工具類 的,這些工具類對全局都有用;com.Xautreportdesign.win,主要是界面方 面的類,有一些是自動生成后我修改的。 com. Xautreportdesign.action包中的一部分類如圖3-8 所示: 楊濟(jì)忠:報表設(shè)計器開發(fā) 12 圖 3-8 com. Xautreportdesign.action包中文件示意圖 com. Xautreportdesign.util包中的類如圖 3-9 所示: 圖 3-9 com. Xautreportdesign.util包中文件示意圖 com. Xautreportdesign.win包中類類如圖 3-10 所示: 圖 3-10 com. Xautreportdesign.win包中文件示意圖 Template 文件夾 :是保存模板的文件夾,里面有模板文件.css 文件, 也有模板說明 .txt文件,如圖 3-11 所示: 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 13 圖 3-11 Template文件夾示意圖 .classpath、.project、perties、javaCompiler.args、 plugin.xml、plugin_customization.ini都是系統(tǒng)自動生成的。 build.xml:是用 ant 生成的,為系統(tǒng)打包用。 Rduct:是要生成的新產(chǎn)品配置文件。 splash.bmp :系統(tǒng)啟動時產(chǎn)閃動畫面使用。 3.3.3 報表顯示部分文件 對于報表 WEB 顯示部分,有如下重要文件或文件夾: dataSource 文件夾 :存放數(shù)據(jù)源文件dataSourece.xml 。 photo 文件夾 :存放需要的圖片文件。 .css 文件: 是報表的 css 文件。 report.jsp: 是解析保存報表信息的 .xml 的文件。 exceltoweb.jsp:是解析EXCEL 并生成 WEB 的文件。 楊濟(jì)忠:報表設(shè)計器開發(fā) 14 第四章系統(tǒng)實現(xiàn) 4.1 主要實現(xiàn)算法 4.1.1新建報表流程圖 開始 結(jié)束 輸入報表信息 已有相同報表 輸入數(shù)字? 存入 Preferences 是 否 圖 4-1 新建報表算法流程圖 該算法首先判斷是否已有同名的報表,然后判斷行數(shù)是否為數(shù)字,最 后存入 Preferences中。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 15 4.1.2 新建數(shù)據(jù)源流程圖 選擇數(shù)據(jù)庫 輸入連接信息 試連接 是否成功 寫入 XML 文件 是 否 結(jié)束 開始 圖 4-2 新建數(shù)據(jù)源算法流程圖 該算法先選擇合適自己的數(shù)據(jù)庫,然后輸入信息,最后連接,看是否成 功,若成功就把信息保存起來。 楊濟(jì)忠:報表設(shè)計器開發(fā) 16 4.1.3編輯單元格流程圖 選擇單元格 設(shè)置單元格可編輯 選擇數(shù)據(jù)源 設(shè)置單元格屬性 開始 結(jié)束 圖 4-3 新建報表算法流程圖 該算法首先要得到當(dāng)前鼠標(biāo)的位置,然后轉(zhuǎn)化為表格的行列,最后選擇 數(shù)據(jù)源,并設(shè)置單元格屬性。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 17 4.1.4 保存報表流程圖 讀取Preferences 生成 xml 遍歷表格 寫入 xml 是否用模板 是 生成相應(yīng) CSS 結(jié)束 否 開始 圖 4-4 保存報表算法流程圖 該算法首先從Preferences中讀取報表相關(guān)信息,生成報表名的xml 文件。然后遍歷表格,讀取各非空單元格的值及屬性,填入寫入小xml 文 件中,最后看是否用到模板,如用到,就生成報表名的css 文件。生成 xml 的代碼如下所示: 楊濟(jì)忠:報表設(shè)計器開發(fā) 18 A1 在 XautReportFile中, “Name ”代表報表的名字,“tempname ”代表 報表用到的模板,“rownum ”代表 WEB 頁每頁顯示的行數(shù),“ownerName ”代 表作者, time 代表發(fā)布時間, intro代表是否有說明內(nèi)容。 而 Columm 代表一個單元格,“DataSource”代表數(shù)據(jù)源,里面不同的部 分又代表不同的意思: 如前面為“ D : ” ,那代表數(shù)據(jù)庫,中間代表前面建的數(shù)據(jù)源的名稱,最 后代碼數(shù)據(jù)源的列。 如前面是“ I: ”, 那代表常量,后面部分就是常量的值。 、 如前面是“ S:”, 那代表系列號,后面代表系列號的一部分。 如前面是“ F: ” ,那代表的是函數(shù),后面是函數(shù)。 “Span”,代表擴(kuò)展情況。擴(kuò)展就是其它單元格的值是否依賴這個單元 格的值;“Arrange ”代表是否排序;“Color ”代表是顏色,; “Font”代表 字體。而這個單元格的ID 是 A1。 4.1.5 生成電子表格流程圖 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 19 圖 4-5 生成電子表格算法流程圖 該算法首先從 Preferences 中得到當(dāng)前報表名,然后讀取報表 XML文件, 得到數(shù)據(jù)源名稱。讀取數(shù)據(jù)源XML,遍歷得到數(shù)據(jù)源的各種參數(shù)。用這些參 數(shù)連接數(shù)據(jù)庫。用 POI創(chuàng)建 EXCEL 文件。把數(shù)據(jù)庫中數(shù)據(jù)寫入EXCEL 文件。 開始 讀Preferences 讀報表 xml 讀數(shù)據(jù)源xml 連接數(shù)據(jù)庫 創(chuàng)建 xls 文件 數(shù)據(jù)庫寫入xls 結(jié)束 楊濟(jì)忠:報表設(shè)計器開發(fā) 20 4.1.6 發(fā)布報表流程圖 開始 讀Preferences 復(fù)制 xml到發(fā)布目錄 復(fù)制到發(fā)布目錄 已設(shè)發(fā)布目錄? 設(shè)置發(fā)布目錄 有相應(yīng) excel文件? 有相應(yīng) css文件 有相應(yīng) txt文件 復(fù)制到發(fā)布目錄 復(fù)制到發(fā)布目錄 有相應(yīng) pdf 文件 復(fù)制到發(fā)布目錄 結(jié)束 是 否 否 否 否 否 圖 4-6 發(fā)布報表算法流程圖 該算法首先從Preferences中查看發(fā)布目錄,如有,就復(fù)制報表XML 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 21 到發(fā)布目錄 , 如沒有 , 就設(shè)置。然后就開始判斷是否有相關(guān)文件,如有,就 一同復(fù)制,因為不復(fù)制,就沒有用。 4.1.7 編輯 CSS流程圖 開始 讀css 模板文件 讀Preferences 創(chuàng)建報表 CSS 已有相同文件? 覆蓋 寫入文件 結(jié)束 是 圖 4-7 編輯 CSS算法流程圖 該算法首先從 CSS模板中讀出模板內(nèi)容,并顯示出來,提供用戶修改。 修改完成后點確定,從Preferences得當(dāng)前報表,然后生成報表的CSS文 件,如已有相同的就覆蓋。最后把修改后的CSS 寫入報表文件。 楊濟(jì)忠:報表設(shè)計器開發(fā) 22 4.1.8 生成模板流程圖 開始 設(shè)置模板名字及說 明 得到當(dāng)前報表 生成模板 CSS及說 明文件 讀取當(dāng)前報表CSS 寫入模板文件 結(jié)束 圖 4-8 生成模板算法流程圖 該算法首先設(shè)置要生成模板的模板名及說明。然后生成模板文件,當(dāng)然 是 CSS類型。如模板說明不為空,也生成文件文件類型的說明書。然后從 Preferences中得到當(dāng)前報表,由此得到當(dāng)前報表的CSS文件,最后把這 CSS 文件的內(nèi)容寫入模板文件里。 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 23 4.1.9 配置服務(wù)器流程圖 開始 讀取服務(wù)器配置文件 顯示當(dāng)前值 把修改后值寫入文件 更新相關(guān)視圖 結(jié)束 圖 4-9 配置服務(wù)器算法流程圖 該算法首先讀取服務(wù)器配置文件并顯示各個參數(shù),這可以修改。點確 定后,就把修改后值寫入配置文件,并更新相關(guān)視圖。 4.2 系統(tǒng)編碼實現(xiàn) 4.2.1 系統(tǒng)的主界面實現(xiàn) 本系統(tǒng)采用 Eclipse RCP 技術(shù), 也就是開發(fā)可以獨立運行的Eclipse的 插件。運用 RCP技術(shù),可以實現(xiàn)與Eclipse一樣友好的界面,可以方便地 組裝成一個很強大的系統(tǒng), 因為這是采用插件機制。本系統(tǒng)的主界面如圖 4-1 所示: 楊濟(jì)忠:報表設(shè)計器開發(fā) 24 圖 4-1 報表設(shè)計系統(tǒng)主界面圖 由圖 4-1 可以看到,本系統(tǒng)和Eclipse界面有很大的相似性。本系統(tǒng) 主要用到了包 com.xautreportdesign.win。其中各個類的功能及重要代碼 說明如下: Application類:是 RCP程序的入口類, RCP 程序啟動后第一個執(zhí)行就 是它,它負(fù)責(zé)程序的載入與退出。這個類是建立項目后自動生成的,平常 情況不需要修改。 ApplicationWorkbenchAdvisor類:是配置工作臺的類,工作臺的初 始化就在這完成。這個類是建立項目后自動生成的,可以修改成自己需要 的。這個類的部分代碼如下: ApplicationWorkbenchWindowAdvisor類:用來設(shè)置窗口。一個工作臺可以有多 個窗口,所以可以多個該類的對象。這個類是建立項目后自動生成的,可以修改成自 己需要的。下面代碼說明了窗口大小為(700, 550),有工具欄,窗口標(biāo)題, 顯示狀態(tài)欄,生成系統(tǒng)托盤等。以下是該類的部分實現(xiàn)代碼: 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 25 publicvoid preWindowOpen() /*設(shè)置窗口初始化的各種屬性*/ IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(700, 550); configurer.setShowCoolBar(true ); configurer.setShowStatusLine(false); configurer.setTitle(“ 報表生成系統(tǒng)“ ); configurer.setShowPerspectiveBar(true ); configurer.setShowStatusLine(true ); final IWorkbenchWindow window = getWindowConfigurer().getWindow(); /*創(chuàng)建系統(tǒng)托盤*/ trayItem = initTrayItem(window); /*如果支持系統(tǒng)托盤,則創(chuàng)建托盤的菜單*/ if ( trayItem != null) createPopupMenu(window); Perspective類: 是透視圖類。透視圖是各個視圖,編輯面組成的一個 專用的程序界面。本類是項目默認(rèn)生成,當(dāng)然也可以寫自己的視圖,只要 實現(xiàn) IperspectiveFactory接口。下面就是本透視圖的布局部分代碼,效 果如圖 4-1 所示。 publicvoid createInitialLayout (IPageLayout layout) String editorArea = layout.getEditorArea(); layout.setEditorAreaVisible(true ); layout.setFixed(false); / layout.addView(View.ID,IPageLayout.LEFT, 0.25f, editorArea); IFolderLayout left = layout.createFolder(“l(fā)eft“, IPageLayout.LEFT, 0.25f, editorArea); left.addPlaceholder(DatasourceView.ID); left.addPlaceholder(ServerView.ID); layout.getViewLayout(ServerView.ID).setCloseable(false); layout.getViewLayout(ServerView.ID).setMoveable(false); layout.addPlaceholder(editAreaView.ID, IPageLayout.TOP, 0.50f, 楊濟(jì)忠:報表設(shè)計器開發(fā) 26 editorArea); layout.addPlaceholder(AttributeView.ID, IPageLayout.BOTTOM, 0.25f, editorArea); layout.getViewLayout(AttributeView.ID).setCloseable(false); layout.getViewLayout(AttributeView.ID).setMoveable(false); ApplicationActionBarAdvisor類:負(fù)責(zé)創(chuàng)建和配置工作臺窗口上主 菜單,工具欄,狀態(tài)欄等,是報表各種功能模塊相關(guān)入口。下面的代碼是 用來建立系統(tǒng)托盤項。其中newSeparator()是畫一條分隔線,在菜單工具 欄中也用到。 publicvoid fillTrayItem(MenuManager trayMenu) trayMenu.add(deployAction); trayMenu.add(new Separator(); trayMenu.add(exampleAction); trayMenu.add(aboutAction); editAreaView類: 是編輯視圖類。視圖相當(dāng)于一個小窗口,顯示某一 方面的內(nèi)容 , 可以在一個頁面上放置幾個視圖。視圖可通過兩種方式創(chuàng)建: 一通過擴(kuò)展點:修改plugin.xml文件,設(shè)置視圖擴(kuò)展點,在最后一 行 的 前 加 入 , 下 面 的 代 碼 說 明 了 擴(kuò) 展 點 是 org.eclipse.ui.views,視圖名字是“編輯區(qū)”,對應(yīng)的JAVA 文件是 com.xautreportdesign.win.editAreaView,ID是視圖的標(biāo)識,為 XautReportDesign.EditAreaView。對于其它視圖,都可以這樣創(chuàng)建: 二通過繼承抽象類ViewPart 類,要改寫類中 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 27 createPartControl,setFocus方法。 本視圖實現(xiàn)部分的代碼如下所示: publicvoid createPartControl(Composite parent) createToolbar(); if (!isedit) setPartName( “ 編輯 “ + reportName ); else setPartName( “( 未保存 ) 編輯 “ + reportName ); createTable(parent, colnum , rownum); 上面的代碼是實現(xiàn)視圖內(nèi)容,其中最重要的是createTable()方法。這個 方法是在視圖中創(chuàng)建類似EXCEL中的表格。下面的代碼創(chuàng)建一個表格,并 設(shè)置表格的樣式 , 部分代碼如下: Composite c1 = new Composite(parent, SWT.NONE); c1.setLayout(new FillLayout(); table = new Table(c1, SWT.SINGLE | SWT.HIDE_SELECTION | SWT.FULL_SELECTION); table .setHeaderVisible(true ); table .setLinesVisible(true ); table .setRedraw(true ); 對于表格的列號,下面的代碼創(chuàng)建列名從A開始的 20 個列,其中得把 數(shù)字轉(zhuǎn)化為字符型 , 其實現(xiàn)代碼如下: for ( int i = 0; i New Project , then expand Plug-in Development and double-click Plug-in Projectto bring up the Plug-in Project wizard. On the subsequent pages, enter a Project name such as org.eclipse.ui.tutorials.rcp.part1, indicate you want a Java project, select the version of Eclipse youre targeting (at least 3.1), and enable the option to Create an OSGi bundle manifest. Then click Next . Beginning in Eclipse 3.1 you will get best results by using the OSGi bundle manifest. In contrast to previous versions, this is now the default. In the next page of the Wizard you can change the Plug-in ID and other parameters. Of particular importance is the question, “Would you like to create a rich client application?“. Select Yes. The generated plug-in class is optional but for this example just leave all the other options at their default values. Click Next to continue. If you get a dialog asking if Eclipse can switch to the Plug-in Development Perspective click Remember my decision and select Yes (this is optional). 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 67 Starting with Eclipse 3.1, several templates have been provided to make creating an RCP application a breeze. Well use the simplest one available and see how it works. Make sure the option to Create a plug-in using one of the templates is enabled, then select the Hello RCP template. This is RCPs equivalent of “Hello, world“. Click Finishto accept all the defaults and generate the project (see Figure 1). Eclipse will open the Plug-in Manifest Editor. The Plug-in Manifest editor puts a friendly face on the various configuration files that control your RCP application. Figure 1. The Hello World RCP project was created by a PDE wizard. Taking it for a spin Trying out RCP applications used to be somewhat tedious. You had to create a custom launch configuration, enter the right application 楊濟(jì)忠:報表設(shè)計器開發(fā) 68 name, and tweak the plug-ins that were included. Thankfully the PDE keeps track of all this now. All you have to do is click on the Launch an Eclipse Application button in the Plug-in Manifest editors Overview page. You should see a bare-bones Workbench start up (see Figure 2). Figure 2. By using the templates you can be up and running an RCP application in minutes. Making it a product In Eclipse terms a product is everything that goes with your application, including all the other plug-ins it depends on, a command to run the application (called the native launcher), and any branding (icons, etc.) that make your application distinctive. Although as weve just seen you can run a RCP application without defining a product, having one makes it a whole lot easier to run the application outside of Eclipse. This is one of the major innovations that Eclipse 3.1 brought to RCP development. 2008 屆網(wǎng)絡(luò)工程專業(yè)畢業(yè)設(shè)計(論文) 69 Some of the more complicated RCP templates already come with a product defined, but the Hello RCP template does not so well have to make one. In order to create a product, the easiest way is to add a product configuration file to the project. Right click on the plug-in project and select New Product Configuration. Then enter a file name for this new configuration file, such as duct. Leave the other options at their default values. Then click Finish. The Product Configuration editor will open. This editor lets you control exactly what makes up your product including all its plug-ins and branding elements. In the Overview page, select the New. button to create a new product extension. Type in or browse to the defining plug-in (org.eclipse.ui.tutorials.rcp.part1). Enter a Product ID such as product , and for the Product Application select org.eclipse.ui.tutorials.rcp.part1.application. Click Finish to define the product. Back in the Overview page, type in a new Product Name, for example RCP Tutorial 1. In Eclipse 3.1.0 if you c

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論