吳志霞,陳 平,葉根梅
(馬鞍山師范高等??茖W(xué)校,安徽 馬鞍山 243041)
?
JasperReports在招生管理平臺(tái)的應(yīng)用研究*1
吳志霞,陳平,葉根梅
(馬鞍山師范高等??茖W(xué)校,安徽 馬鞍山 243041)
摘要:招生管理系統(tǒng)是校園信息化的一部分,其報(bào)表的實(shí)現(xiàn)有多種方法,課題組采用iReport與JasperReports并基于JavaBeans數(shù)據(jù)源方式進(jìn)行報(bào)表的設(shè)計(jì)及實(shí)現(xiàn),使報(bào)表的實(shí)現(xiàn)過(guò)程更簡(jiǎn)易,并給用戶提供豐富的報(bào)表格式和輸出方式.文中對(duì)系統(tǒng)報(bào)表的設(shè)計(jì)思路及實(shí)現(xiàn)過(guò)程進(jìn)行了論述,以便能為類似開發(fā)人員提供參考和借鑒.
關(guān)鍵詞:報(bào)表;JasperReports; JavaBeans;招生管理
報(bào)表制作及輸出是信息系統(tǒng)的一個(gè)重要組成部分.高校招生系統(tǒng)作為信息化管理的一部分,需要提供分批次打印錄取通知書,新生報(bào)到時(shí)打印報(bào)到單,針對(duì)錄取情況提供分省、分科、分專業(yè)統(tǒng)計(jì),針對(duì)新生報(bào)到情況提供報(bào)到率、報(bào)到統(tǒng)計(jì)分析、新生名單打印、入學(xué)名冊(cè)打印、已報(bào)到人員數(shù)據(jù)導(dǎo)出、未報(bào)到人員數(shù)據(jù)導(dǎo)出等多種報(bào)表統(tǒng)計(jì)輸出功能.本課題組對(duì)管理平臺(tái)所需的報(bào)表進(jìn)行了分析、設(shè)計(jì)、編碼測(cè)試及實(shí)現(xiàn),基本能滿足前述學(xué)生錄取管理及報(bào)到管理報(bào)表的統(tǒng)計(jì)和輸出,下文將闡述設(shè)計(jì)思路及實(shí)現(xiàn)過(guò)程.
1設(shè)計(jì)思路
本研究采用iReport工具設(shè)計(jì)出符合JasperReports所需要的報(bào)表模板文件,基于MVC設(shè)計(jì)模式,將JasperReports與Java Web框架技術(shù)進(jìn)行集成,實(shí)現(xiàn)基于Web的招生管理平臺(tái)的報(bào)表制作與生成.在運(yùn)用iReport進(jìn)行報(bào)表模板文件制作時(shí),選用基于JavaBean類型的數(shù)據(jù)源,避免了針對(duì)復(fù)雜或復(fù)合型報(bào)表數(shù)據(jù)無(wú)法用某一條SQL語(yǔ)句進(jìn)行表述的問(wèn)題;在JasperReorts報(bào)表導(dǎo)出實(shí)現(xiàn)階段,運(yùn)用JasperReorts提供的API去編寫代碼、加載報(bào)表模板文件,將JavaBean類型的集合數(shù)據(jù)去動(dòng)態(tài)填充報(bào)表,為用戶提供報(bào)表的顯示和多種格式的報(bào)表輸出.[2-3]
2JasperReports和iReport介紹
JasperReports是一個(gè)免費(fèi)的、基于Java的純開源報(bào)表生成工具和引擎.其類庫(kù)中提供了很多API,通過(guò)這些API,能夠非常方便的操作報(bào)表的生成、編譯、填充、打印、導(dǎo)出等等.它可以支持多種數(shù)據(jù)源,比如Bean、Connection、xml、ResultSet記錄集等作為數(shù)據(jù)源,可以很靈活地設(shè)計(jì)普通報(bào)表、主細(xì)表、交叉報(bào)表,并可以將報(bào)表的結(jié)果導(dǎo)出成excel、pdf、xml、html等格式文件,可以應(yīng)用于各種Java程序,比如在JavaEE、Web 應(yīng)用程序中生成動(dòng)態(tài)內(nèi)容.其主要的目的是輔助生成面向頁(yè)面(page oriented)的準(zhǔn)備付諸打印的文檔.[1-2]但JasperReports本身沒有圖形界面的設(shè)計(jì)工具,初期都是通過(guò)編寫JRXML來(lái)完成報(bào)表模板的創(chuàng)建,效率很低,后來(lái)引入了iReport工具來(lái)輔助創(chuàng)建報(bào)表模板.
iReport是JasperReports的一個(gè)可視化報(bào)表模板設(shè)計(jì)工具,用它就可以動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù)生成報(bào)表,或在SQL語(yǔ)句中輸入?yún)?shù),提取指定的數(shù)據(jù)來(lái)生成報(bào)表.但iReport只是一個(gè)客戶端工具,要生成報(bào)表,用戶必須先安裝它,并知道如何使用,如果要改變篩選條件,還要求用戶懂得SQL語(yǔ)句.iReport在創(chuàng)建報(bào)表模板的過(guò)程中會(huì)產(chǎn)生jsxml和jasper兩種文件,jsxml是用來(lái)定義報(bào)表格式的,比如報(bào)表頭是什么內(nèi)容,報(bào)表體有哪些列等,jasper 是由jsxml編譯生成的二進(jìn)制文件,開發(fā)者加載經(jīng)過(guò)編譯后的jasper文件,然后利用jasperReports這個(gè)工具包來(lái)編寫程序代碼,實(shí)現(xiàn)信息系統(tǒng)動(dòng)態(tài)生成所需的報(bào)表.
3JasperReports報(bào)表業(yè)務(wù)的邏輯處理總體設(shè)計(jì)
報(bào)表的主要功能是數(shù)據(jù)的展示,而報(bào)表的功能需要結(jié)合實(shí)際的業(yè)務(wù)需要進(jìn)行開展,根據(jù)系統(tǒng)的業(yè)務(wù)需求實(shí)現(xiàn)報(bào)表的導(dǎo)出.課題組選取Struts2+hibernate+Spring的Java Web框架來(lái)設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng).在設(shè)計(jì)處理報(bào)表業(yè)務(wù)的邏輯過(guò)程時(shí),采用了MVC設(shè)計(jì)模式,實(shí)現(xiàn)表現(xiàn)層與功能模塊的完全分離,結(jié)構(gòu)圖如圖1所示.
圖1 報(bào)表業(yè)務(wù)的邏輯處理結(jié)構(gòu)圖
4JasperReports報(bào)表數(shù)據(jù)源的選定
在使用iReport進(jìn)行報(bào)表模板的設(shè)計(jì)之前,必須先確定要使用哪種類型的DataSources來(lái)填充報(bào)表,常用的是基于Connection類型的數(shù)據(jù)源,因Connection作為報(bào)表數(shù)據(jù)源要求使用SQL查詢作為數(shù)據(jù)來(lái)源,但有時(shí)報(bào)表的內(nèi)容并不能由一條SQL語(yǔ)句完成,鑒于課題實(shí)際業(yè)務(wù)報(bào)表的復(fù)雜度,本文采用基于JavaBeans類型的數(shù)據(jù)源,后期開發(fā)者只要將數(shù)據(jù)封裝成一個(gè)個(gè)JavaBean對(duì)象,然后將其添加到一個(gè)JavaBean集合類之中,就可完成填充報(bào)表的數(shù)據(jù)準(zhǔn)備工作.
確定采用基于JavaBeans類型的數(shù)據(jù)源,在運(yùn)用iReport進(jìn)行報(bào)表模板的設(shè)計(jì)之前,開發(fā)者必須先完成JavaBean實(shí)體類及工廠測(cè)試類的創(chuàng)建與編譯工作,其中工廠測(cè)試類主要是用來(lái)提供一個(gè)方法,該方法內(nèi)部將創(chuàng)建多個(gè)JavaBean對(duì)象,并將其添加到一個(gè)集合類對(duì)象中,而這個(gè)JavaBean集合類對(duì)象,就是要用來(lái)在iReport中查看報(bào)表生成效果的填充測(cè)試數(shù)據(jù).隨后將JavaBean與工廠測(cè)試類的.class文件打包成.jar文件,至此完成基于JavaBeans類型的數(shù)據(jù)源報(bào)表模板設(shè)計(jì)前期數(shù)據(jù)準(zhǔn)備工作.
5JasperReports報(bào)表模板的實(shí)現(xiàn)
課題組選用iReport進(jìn)行JasperReports報(bào)表模板的設(shè)計(jì).在使用iReport進(jìn)行拖曳控件設(shè)計(jì)報(bào)表模板之前,打開iReport工具軟件設(shè)置.jar文件的classPath路徑,選用JavaBeans Set data source方式建數(shù)據(jù)源,若測(cè)試連接成功,表明在iReport中已經(jīng)可以采用JavaBeans類型的數(shù)據(jù)源進(jìn)行報(bào)表模板的設(shè)計(jì).[3-4]
在iReport中,開發(fā)者打開報(bào)表模板設(shè)計(jì)向?qū)?,選擇一個(gè)標(biāo)準(zhǔn)空白模板進(jìn)行樣式設(shè)計(jì),設(shè)置表頭、內(nèi)容、行尾,還可以進(jìn)行報(bào)表的參數(shù)、字段或變量的設(shè)置,最后保存模板,生成.jrxml文件.將生成的jrxml文件進(jìn)行編譯,會(huì)得到j(luò)asper文件,而這個(gè)jasper文件將應(yīng)用到JavaEE Web框架來(lái)完成報(bào)表的制作,實(shí)現(xiàn)步驟如圖2所示.
圖2 基于JavaBeans數(shù)據(jù)源JasperReports報(bào)表模板的實(shí)現(xiàn)
6JasperReports報(bào)表的導(dǎo)出
有了前期生成的jasper文件,應(yīng)用程序加載該文件,并導(dǎo)入JasperReports的jar包,便可編寫代碼來(lái)實(shí)現(xiàn)報(bào)表的填充及導(dǎo)出.本系統(tǒng)既提供用戶在線瀏覽數(shù)據(jù)的功能,也提供給用戶在客戶端閱覽與保存.如圖3所示,用戶可以通過(guò)瀏覽器在頁(yè)面上查看到“2014年分省分科類分專業(yè)成績(jī)統(tǒng)計(jì)表”,點(diǎn)擊“打印預(yù)覽”按鈕將輸出pdf文檔供用戶預(yù)覽或打印;點(diǎn)擊“數(shù)據(jù)導(dǎo)出”按鈕將導(dǎo)出如圖4所示的Excel文檔供用戶進(jìn)行分析或處理.
圖3 基于Web的招生系統(tǒng)頁(yè)面樣例
以報(bào)表生成并導(dǎo)出Excel文檔為例,其工作原理為首先調(diào)用業(yè)務(wù)邏輯管理類,獲取用來(lái)填充報(bào)表的數(shù)據(jù),接著去獲取報(bào)表模板文件(.jasper文件)并通過(guò)加載的方式將其轉(zhuǎn)成JasperReport對(duì)象,再通過(guò)JasperFillManager類將數(shù)據(jù)自動(dòng)填充到報(bào)表對(duì)應(yīng)的數(shù)據(jù)項(xiàng)中,最后采用導(dǎo)出器導(dǎo)出Excel文檔,其核心代碼如下:
按照上述步驟,在招生管理系統(tǒng)中已實(shí)現(xiàn)了學(xué)
生錄取管理及報(bào)到管理相關(guān)報(bào)表的統(tǒng)計(jì)和輸出功能.采用JasperReports來(lái)設(shè)計(jì)與開發(fā)報(bào)表,使整個(gè)系統(tǒng)開發(fā)過(guò)程得到簡(jiǎn)化,減少時(shí)間和精力的投入,并能為用戶提供豐富的圖表顯示和多種格式的報(bào)表輸出,使管理人員、工作人員能夠清晰了解本校招生及報(bào)到狀況.本文提供了一個(gè)較好的報(bào)表生成方案,對(duì)類似項(xiàng)目的開發(fā)有一定的借鑒指導(dǎo)作用,期望能為同類研究提供一定參考.
參考文獻(xiàn):
[1]周琳.JasperReports在物流商管理平臺(tái)中的研究與應(yīng)用[D].大連:大連海事大學(xué),2013.
[2]黃鈺.基于Flex和JasperReport報(bào)表工具的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2010.
[3] iReport中文用戶手冊(cè).[EB/OL](2012-01-13).http://wenku.baidu.com/view/a1e0aa0a7cd184254b3535f9.html?re=view,iReport中文用戶手冊(cè)
[4] 關(guān)鑫.基于J2EE的通用報(bào)表系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:成都理工大學(xué),2010.
(責(zé)任編輯:王前)
Research and Application of JasperReports in Enrollment Management Platform
WU Zhi-xia, CHEN Ping, YE Gen-mei
(MaanshanTeacher'sCollege,Maanshan,Anhui243041,China)
Abstract:Enrollment management information system is a part of the construction of campus information. About how to design and implement the report, there are multiple ways. In this paper, using iReport and JasperReports technology which based on the JavaBeans data source to make, so that the reporting process is more simple, and to provide the users with a wealth of report formats and output modes. The paper will gradually explain the design ideas and implementation process, so as to provide reference for similar developers.
Key words:report forms; JasperReports; JavaBeans; enrollment management
DOI:10.13877/j.cnki.cn22-1284.2016.04.016
*收稿日期:2015-11-20
基金項(xiàng)目:安徽省質(zhì)量工程項(xiàng)目資助“軟件技術(shù)專業(yè)綜合改革試點(diǎn)”(2014zy085)
作者簡(jiǎn)介:吳志霞,女,江西撫州人,講師.
中圖分類號(hào):TP31
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1008-7974(2016)02-0050-03