吉豪杰
?
大數(shù)據(jù)時(shí)代下基于SSM框架的高校畢業(yè)生檔案管理系統(tǒng)的研發(fā)設(shè)計(jì)
吉豪杰
(山西農(nóng)業(yè)大學(xué) 軟件學(xué)院,山西 晉中 030800)
基于對(duì)當(dāng)前高校檔案管理工作的現(xiàn)狀剖析:我國(guó)高校對(duì)檔案管理工作普遍不重視,檔案管理工作大多都還處于手工管理的狀態(tài),大量的紙質(zhì)檔案不僅占用物理空間,還存在紙質(zhì)老化、受潮等風(fēng)險(xiǎn),查找時(shí)也比較麻煩;對(duì)檔案管理人員而言,不僅工作量大,而且管理效率低。為此,本文基于SSM框架并結(jié)合當(dāng)下流行的JSP、POI等技術(shù)對(duì)高校畢業(yè)生檔案管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行研究,此系統(tǒng)依據(jù)大多數(shù)高校檔案工作人員的需求進(jìn)行開(kāi)發(fā),在大數(shù)據(jù)時(shí)代背景下,為檔案工作人員提供了一個(gè)能夠同時(shí)處理大量數(shù)據(jù)、紙質(zhì)檔案電子化、并且將WEB技術(shù)與MicroSoft Office良好結(jié)合的管理系統(tǒng),提高了檔案管理的工作效率,節(jié)省了檔案管理的成本。
SSM;高校檔案管理;LODOP;POI;管理系理;Bootstrap;Java
根據(jù)教育部不完全統(tǒng)計(jì),我國(guó)每年高校畢業(yè)生的人數(shù)不斷增加,2018年已達(dá)到820萬(wàn)人。這是一個(gè)龐大的數(shù)字,每個(gè)高校每年平均有1.025萬(wàn)的畢業(yè)生,學(xué)生們畢業(yè)之后,各自的學(xué)籍檔案會(huì)去往不同的地方。對(duì)于每個(gè)高校的檔案管理人員,管理如此多的檔案是一件頭疼的事情。
受當(dāng)下大數(shù)據(jù)時(shí)代浪潮的影響,為跟進(jìn)網(wǎng)絡(luò)信息的發(fā)展并提升高校檔案管理工作的效率,滿足時(shí)代發(fā)展的需求,開(kāi)發(fā)一款適用于檔案管理的系統(tǒng)迫在眉睫。本文講述了基于SSM框架并結(jié)合多種技術(shù)的高校畢業(yè)生檔案管理系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)。
本系統(tǒng)將充分考慮用戶的需求,并結(jié)合時(shí)下流行的SSM框架(Spring MVC、Spring、Mybatis)、 JSP動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)、JS、JQuery、Ajax、Bootstrap框架、CSS、displayTag分頁(yè)插件、POI以及LODOP打印插件等技術(shù),對(duì)系統(tǒng)架構(gòu)進(jìn)行良好的設(shè)計(jì)、功能進(jìn)行合理劃分并實(shí)現(xiàn)。
本系統(tǒng)在設(shè)計(jì)時(shí)參考了《高等學(xué)校檔案管理辦法》,如圖1系統(tǒng)的總體設(shè)計(jì)圖所示,系統(tǒng)分為三個(gè)模塊:檔案管理、權(quán)限管理、個(gè)人信息,其中個(gè)人信息模塊用于用戶對(duì)個(gè)人信息的管理,檔案管理和權(quán)限管理模塊是本系統(tǒng)的主要功能模塊。檔案管理模塊下又分為查詢檔案、刪除檔案、添加檔案、打印檔案、導(dǎo)出Excel等模塊,這些模塊實(shí)現(xiàn)了學(xué)生檔案的管理(增刪改查)、打印、生成Excel文件、生成統(tǒng)計(jì)報(bào)表等功能。權(quán)限管理模塊實(shí)現(xiàn)了系統(tǒng)的權(quán)限機(jī)制如表1系統(tǒng)的權(quán)限機(jī)制,滿足了系統(tǒng)管理員對(duì)系統(tǒng)中其他用戶的管理、所有用戶操作記錄的管理、以及學(xué)校中系別和專業(yè)的管理等功能。
圖1 系統(tǒng)的總體設(shè)計(jì)圖
表1 系統(tǒng)的權(quán)限機(jī)制
Tab.1 System permission mechanism
本系統(tǒng)針對(duì)每個(gè)模塊功能的獨(dú)特性,為每個(gè)模塊進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)。
如圖2檔案管理模塊數(shù)據(jù)模型所示,該模塊中有4張表,student、archive、department、profession表分別用來(lái)存儲(chǔ)學(xué)生、檔案、學(xué)院部門和專業(yè)信息。student與archive屬于1對(duì)1的關(guān)系,即一個(gè)學(xué)生只能有一份檔案;dapartment與profession屬于1對(duì)多的關(guān)系,即一個(gè)學(xué)院中可以開(kāi)設(shè)多個(gè)專業(yè),同時(shí)一個(gè)專業(yè)只屬于一個(gè)學(xué)院;student與profession表屬于多對(duì)1的關(guān)系,即一個(gè)學(xué)生只能屬于一個(gè)專業(yè),而一個(gè)專業(yè)中可以有多個(gè)學(xué)生。
圖2 檔案管理模塊數(shù)據(jù)模型
如圖3權(quán)限管理模塊數(shù)據(jù)模型所示,該模塊也有4張表,user、role、authority、record表分別用來(lái)存儲(chǔ)用戶、系統(tǒng)角色、系統(tǒng)權(quán)限和用戶操作記錄信息。user與role是多對(duì)1的關(guān)系,表示一個(gè)用戶只能有一個(gè)系統(tǒng)角色,一個(gè)角色可以屬于多個(gè)用戶;user與record表是1對(duì)多的關(guān)系,表示一個(gè)用戶可以有多條操作記錄,一條操作記錄只屬于一個(gè)用戶;role與authority表是多對(duì)多的關(guān)系,表示一個(gè)系統(tǒng)角色可以有多個(gè)權(quán)限,而一個(gè)權(quán)限同時(shí)歸多個(gè)角色所有。
圖3 權(quán)限管理模塊數(shù)據(jù)模型
整個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)通過(guò)這兩張類圖來(lái)實(shí)現(xiàn),可見(jiàn)系統(tǒng)中的兩個(gè)功能模塊在數(shù)據(jù)庫(kù)的設(shè)計(jì)上充分解耦,相互獨(dú)立,降低了系統(tǒng)開(kāi)發(fā)的復(fù)雜程度,方便了后期數(shù)據(jù)庫(kù)的維護(hù)。
上文提到本系統(tǒng)的核心模塊有檔案管理和權(quán)限管理兩部分,這兩部分分別保障了系統(tǒng)的功能性、安全性。檔案管理模塊實(shí)現(xiàn)了系統(tǒng)的主要功能,而權(quán)限管理模塊是為系統(tǒng)提供了一層安全保障,降低的系統(tǒng)的安全隱患。依據(jù)圖1系統(tǒng)的總體設(shè)計(jì)圖對(duì)每個(gè)功能模塊進(jìn)行詳細(xì)說(shuō)明。
1.3.1 檔案管理模塊
(1)添加檔案
該功能主要完成用戶對(duì)學(xué)生檔案信息的添加,通過(guò)此功能將學(xué)生檔案信息添加到數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)數(shù)據(jù)持久化。添加方式主要有兩種:?jiǎn)蝹€(gè)添加和批量添加。單個(gè)添加就是用戶通過(guò)使用系統(tǒng)提供的輸入界面手動(dòng)輸入檔案信息完成添加,這種方式效率比較低,適用于添加少量數(shù)據(jù)的情況。相對(duì)地,為了滿足用戶一次性添加大量數(shù)據(jù)的要求,系統(tǒng)的批量添加功能實(shí)現(xiàn)了只需在操作界面上上傳相應(yīng)的Excel文件,系統(tǒng)便會(huì)自動(dòng)解析數(shù)據(jù)、驗(yàn)證數(shù)據(jù)、提取數(shù)據(jù)、保存數(shù)據(jù)到數(shù)據(jù)庫(kù)中,此功能很大程度上節(jié)省了工作時(shí)間,提升了工作效率,將以前幾個(gè)小時(shí)的工作量用幾秒鐘就可以完成。
(2)刪除檔案
對(duì)于系統(tǒng)中錯(cuò)誤的、無(wú)用的檔案信息,系統(tǒng)提供刪除功能。同樣,刪除功能也分為單個(gè)刪除和批量刪除,用戶可以選擇一個(gè)或多個(gè)檔案信息進(jìn)行刪除。
(3)修改檔案
用戶可以對(duì)檔案信息(文本、圖片信息)進(jìn)行修改,修改后將會(huì)同步到數(shù)據(jù)庫(kù)中。
(4)查詢檔案
為提高查詢的靈活性,系統(tǒng)提供了多種查詢方式,比如根據(jù)學(xué)生的姓名、入學(xué)年份、所屬院系等信息進(jìn)行模糊查詢,還支持組合查詢,通過(guò)接受用戶輸入的多個(gè)查詢條件精確地查詢檔案信息。
(5)打印檔案
用戶需要先查詢出需要打印的檔案,在操作界面上點(diǎn)擊打印,便會(huì)彈出打印預(yù)覽頁(yè)面,用戶瀏覽后再確認(rèn)打印。打印功能通過(guò)LODOP打印服務(wù)來(lái)實(shí)現(xiàn),在后文的系統(tǒng)技術(shù)架構(gòu)中會(huì)有詳細(xì)解釋。
(6)導(dǎo)出Excel
該功能與批量添加功能相反,批量添加通過(guò)導(dǎo)入Excel文件來(lái)完成,而該功能是將系統(tǒng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)根據(jù)用戶的選擇導(dǎo)出到Excel文件中,該功能不僅滿足了用戶的工作需求,還很好地將WEB技術(shù)與MicroSoft Excel相結(jié)合,是系統(tǒng)包容性、多功能性的體現(xiàn)。
1.3.2 權(quán)限管理模塊
(1)用戶管理
系統(tǒng)為不同角色的用戶提供了不同的系統(tǒng)權(quán)限,正是利用這樣的權(quán)限機(jī)制使系統(tǒng)更加可控、可靠。用戶在系統(tǒng)初期將會(huì)通過(guò)注冊(cè)功能,注冊(cè)一個(gè)擁有所有權(quán)限的管理員用戶,此后,該管理員用戶可以對(duì)系統(tǒng)中存在的其他用戶的信息、權(quán)限等進(jìn)行管理,比如設(shè)置用戶不允許注冊(cè)成為管理員,那么其他用戶在注冊(cè)時(shí)就會(huì)被禁止注冊(cè)管理員。通過(guò)這一功能可以防止系統(tǒng)中存在惡意用戶,避免惡意用戶對(duì)系統(tǒng)數(shù)據(jù)的竊取等。
(2)操作記錄管理
系統(tǒng)會(huì)對(duì)所有用戶在系統(tǒng)上執(zhí)行的操作進(jìn)行記錄,管理員可以對(duì)不同用戶的操作記錄進(jìn)行檢查,以達(dá)到監(jiān)督系統(tǒng)用戶行為的目的。
(3)院系管理
由于每個(gè)高校的院系設(shè)置的不同,為了適應(yīng)不同的高校,系統(tǒng)提供院系管理功能,管理員用戶可以根據(jù)自己所在學(xué)校的情況,對(duì)學(xué)校中的院系信息進(jìn)行設(shè)置。這一功能是系統(tǒng)通用性的體現(xiàn)
本系統(tǒng)可以分為前端開(kāi)發(fā)和服務(wù)器端開(kāi)發(fā)兩部分,其中前端使用了JSP動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)、Bootstrap框架、Javascript、CSS等技術(shù)來(lái)實(shí)現(xiàn)一個(gè)具有人性化、美觀化、易操作等特性的用戶頁(yè)面,而服務(wù)器端是基于當(dāng)前流行的SSM框架,結(jié)合MVC的設(shè)計(jì)思想、面向?qū)ο蟮脑O(shè)計(jì)思想以及其他一些技術(shù)進(jìn)行開(kāi)發(fā),數(shù)極庫(kù)使用Mysql數(shù)據(jù)庫(kù),WEB服務(wù)器使用Tomcat。如圖4系統(tǒng)技術(shù)架構(gòu)圖所示。
圖4 系統(tǒng)技術(shù)架構(gòu)圖
MVC的設(shè)計(jì)思想就是將軟件分為模型、控制器、視圖三部分進(jìn)行開(kāi)發(fā),使軟件系統(tǒng)中各層次之間充分解耦,實(shí)際上就是將業(yè)務(wù)數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)的操作進(jìn)行分離,使各層次專注于各自的職責(zé)。根據(jù)MVC的設(shè)計(jì)思想,本系統(tǒng)分為4層進(jìn)行開(kāi)發(fā):表示層、控制層、業(yè)務(wù)邏輯層、持久層。下文將介紹系統(tǒng)在每一層中所使用到的技術(shù)以及實(shí)現(xiàn)原理。
2.1.1 SSM框架整合
(1)Spring框架
Spring框架是Rod Johnson為解決EJB開(kāi)發(fā)笨重繁雜、成本高、效率低所提出的一種輕量級(jí)框架。通過(guò)Spring的依賴注入、控制反轉(zhuǎn)(Ioc)、面向切面編程(Aop)等特性將原先復(fù)雜且難以維護(hù)的javaEE開(kāi)發(fā)變得簡(jiǎn)單高效,Spring框架可以與其他框架相結(jié)合來(lái)更好地實(shí)現(xiàn)每一層。
Spring框架通過(guò)ContextLoaderListener監(jiān)聽(tīng)器來(lái)初始化,并以XML或注解方式來(lái)實(shí)現(xiàn)Spring的行為,比如通過(guò)注解方式對(duì)java類進(jìn)行依賴注入,減少類之間的耦合程度;配置事務(wù)管理器,保證數(shù)據(jù)的一致性和完整性。本系統(tǒng)關(guān)于Spring的配置代碼寫(xiě)在spring.xml中:(省略部分代碼)
(2)SpringMVC
SpringMVC框架是基于DispatcherServlet(前端控制器)來(lái)實(shí)現(xiàn)表示層與控制層的交互,通過(guò)XML配置的方式將映射處理器、處理適配器、攔截器、視圖解析器、文件上傳解析器等注入到Spring容器中。為了簡(jiǎn)化開(kāi)發(fā)還提供了注解方式,只需要在java類上寫(xiě)上相應(yīng)的注解名,SpringMVC就會(huì)對(duì)其進(jìn)行掃描并自動(dòng)注入。如下java類的代碼:
@Controller
@RequestMapping("/system")
public class UserController {//省略代碼}
SpringMVC容器就會(huì)自動(dòng)將該類設(shè)置為控制器類,@Controller注解是用來(lái)標(biāo)識(shí)該類為控制器類,@RequestMapping("/system")則是用來(lái)進(jìn)行控制層與表示層的URL請(qǐng)求映射,用戶在瀏覽器中輸入相應(yīng)的請(qǐng)求名,SpringMVC就會(huì)匹配程序中配置的請(qǐng)求來(lái)訪問(wèn)相應(yīng)的服務(wù)。如圖5本系統(tǒng)的SpringMVC工作流程圖。
(3)Mybatis框架、JavaBean技術(shù)
在介紹Mybati之前先介紹JavaBean技術(shù),為了更好地實(shí)現(xiàn)java程序與數(shù)據(jù)庫(kù)的交互,創(chuàng)建一個(gè)java類,將數(shù)據(jù)庫(kù)表中的各個(gè)字段與該類中的各個(gè)屬性相對(duì)應(yīng),這個(gè)類就被稱為JavaBean。持久層的Mybatis框架是ORM映射框架的一種,主要用來(lái)處理數(shù)據(jù)庫(kù)表與JavaBean之間的映射,將表結(jié)構(gòu)中的數(shù)據(jù)轉(zhuǎn)換成類屬性對(duì)應(yīng)的數(shù)據(jù)。Mybatis框架與其他的持久層框架不同,Mybatis框架是一種半自動(dòng)的ORM框架,支持定制化SQL、高級(jí)映射等,可以通過(guò)簡(jiǎn)單的XML或注解來(lái)配置映射信息,并通過(guò)SQL語(yǔ)句將JavaBean映射成數(shù)據(jù)庫(kù)中的記錄或從數(shù)據(jù)庫(kù)中接受數(shù)據(jù)保存到JavaBean中。
2.1.2 POI技術(shù)
POI是由Apache軟件基金會(huì)的一個(gè)開(kāi)源項(xiàng)目,它提供給Java程序?qū)icroSoft Office文件的讀寫(xiě)功能。在2.3.1檔案管理模塊中提到的批量添加和導(dǎo)出Excel兩個(gè)功能需要用到POI技術(shù)。POI中有兩個(gè)與Excel有關(guān)結(jié)構(gòu):HSSF和XSSF,HSSF用來(lái)處理Excel 2007版之前的文件(.xls),XSSF用來(lái)處理Excel 2007版之后的文件(.xlsx)。本系統(tǒng)結(jié)合兩種結(jié)構(gòu)來(lái)實(shí)現(xiàn)Excel文件的讀取與導(dǎo)出功能,用戶可以上傳.xls后綴和.xlsx后綴的兩種Excel文件來(lái)實(shí)現(xiàn)批量添加數(shù)據(jù),并且系統(tǒng)默認(rèn)導(dǎo)出.xlsx后綴的文件。
(1)JSP動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)
JSP(Java Server Page)其實(shí)是一種運(yùn)行在服務(wù)器端的java技術(shù),用來(lái)開(kāi)發(fā)WEB動(dòng)態(tài)網(wǎng)頁(yè)。準(zhǔn)確來(lái)講,JSP是一種服務(wù)端的腳本語(yǔ)言,因?yàn)橄到y(tǒng)表示層的視圖使用的是jsp文件進(jìn)行顯示,所以在這里對(duì)JSP進(jìn)行介紹。
在JSP頁(yè)面中除了可以編寫(xiě)前端代碼外,還可以編寫(xiě)java代碼,每次在請(qǐng)求該頁(yè)面時(shí),都需要在服務(wù)端進(jìn)行編譯和運(yùn)行之后才能正常顯示,這也是為什么被稱為動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)的原因。JSP提供獨(dú)特的標(biāo)簽、指令、九大內(nèi)置對(duì)象、EL表達(dá)式等來(lái)滿足動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)的需要。關(guān)于JSP的標(biāo)簽、指令在參考文獻(xiàn)[9]中有詳細(xì)介紹, JSP還有4大作用域:ServletContext(整個(gè)應(yīng)用程序)、session(一次回話)、request(請(qǐng)求域)、pageContext(當(dāng)前頁(yè)面),通過(guò)這些作用域及其對(duì)應(yīng)的內(nèi)置對(duì)象,可以實(shí)現(xiàn)應(yīng)用程序中數(shù)據(jù)的共享和傳遞。EL表達(dá)式可以在JSP頁(yè)面中直接使用,并通過(guò)${}的方式將代碼寫(xiě)在括號(hào)中執(zhí)行,不僅使用形式簡(jiǎn)單、靈活,還可以通過(guò)自身的內(nèi)置對(duì)象來(lái)實(shí)現(xiàn)數(shù)據(jù)的共享與傳遞。
(2)Bootstrap前端框架
Bootstrap是美國(guó)Twitter公司基于HTML、CSS、JavaScript開(kāi)發(fā)的一個(gè)美觀、簡(jiǎn)潔、直觀、功能強(qiáng)大的前端開(kāi)發(fā)框架。針對(duì)HTML中的各個(gè)元素提供了多種CSS樣式、組件、jQuery以及JavaScript插件,利用Bootstrap框架可以對(duì)用戶操作界面進(jìn)行非常多樣、人性化的修飾,取代了以往死板、單一、簡(jiǎn)陋的界面,提升用戶的視覺(jué)體驗(yàn)。
Bootstrap框架使用前需要去官網(wǎng)下載相應(yīng)版本的Bootstrap安裝包,安裝包中包括了CSS文件和JavaScript插件,將這兩個(gè)文件導(dǎo)入到工程的指定目錄下(本系統(tǒng)放在resourse目錄下),在jsp頁(yè)面中可以直接導(dǎo)入需要的文件:
(3)LODOP打印
LODOP是由夢(mèng)泰爾軟件工作室研發(fā)的適用于WEB的比較徹底的打印方案。其設(shè)計(jì)者將WEB下的打印需求分類匯總、高度抽象,設(shè)計(jì)出僅用幾個(gè)功能函數(shù)就能實(shí)現(xiàn)基本打印需求的解決方案。常用的函數(shù)比如:PREVIEW打印預(yù)覽、PRINT_SETUP打印維護(hù)、PRINT_DESIGN打印設(shè)計(jì)、PRINT直接打印等,在2016年發(fā)布的6.2版本中還額外加入了C-LODOP云打印服務(wù),C-LODOP實(shí)現(xiàn)了調(diào)用JS命令遠(yuǎn)程打印,與LODOP相比,不僅安裝文件體積更小,還可以支持任何PC端、移動(dòng)端的瀏覽器,使用C-LODOP還可以解決因?yàn)g覽器變化而引起的無(wú)法正常打印的問(wèn)題,增強(qiáng)了系統(tǒng)的可靠性和功能穩(wěn)定性。
對(duì)系統(tǒng)當(dāng)中使用的技術(shù)有了簡(jiǎn)單的了解之后,該部分將會(huì)講解系統(tǒng)的核心功能是如何使用相關(guān)技術(shù)來(lái)實(shí)現(xiàn)的,以及系統(tǒng)具有哪些優(yōu)勢(shì)。
SSM框架通過(guò)配置的方式來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)架構(gòu)中各個(gè)層次的控制,spring.xml、spring-mvc.xml、mybatis- config.xml分別代表Spring、SpringMVC、Mybatis框架的配置文件。Spring和SpringMVC都使用了注解方式的依賴注入,通過(guò)@Autowired可以將java類中使用到的其他對(duì)象自動(dòng)進(jìn)行實(shí)例化,一方面減少了代碼量、提供程序可讀性,另一方面又可以緩和類之間的依賴關(guān)系,使得程序中各個(gè)類之間高內(nèi)聚低耦合。系統(tǒng)涉及到大量復(fù)雜的數(shù)據(jù)處理操作,為保證數(shù)據(jù)的一致性與正確性,需要把一組數(shù)據(jù)操作當(dāng)做一個(gè)事務(wù)進(jìn)行處理,數(shù)據(jù)操作前要開(kāi)啟事務(wù),數(shù)據(jù)操作結(jié)束之后要關(guān)閉事務(wù),如果出現(xiàn)異常則要進(jìn)行事務(wù)回滾,這一系列的事務(wù)處理無(wú)疑增加了代碼的復(fù)雜程度。Spring中使用AOP來(lái)處理事務(wù),通過(guò)事務(wù)管理器和聲明式事務(wù)來(lái)對(duì)業(yè)務(wù)層中添加了@Transactional注解的類中的所有方法進(jìn)行事務(wù)管理,將這些方法的事務(wù)管理交給Spring容器來(lái)進(jìn)行,使開(kāi)發(fā)人員在編寫(xiě)業(yè)務(wù)層代碼時(shí)更專注業(yè)務(wù)功能的實(shí)現(xiàn)。
Spring與Mybatis在整合時(shí),將Mybatis中關(guān)于數(shù)據(jù)庫(kù)和Mapper映射的配置都放到了Spring的配置文件中,Mybatis的配置文件中只設(shè)置了本系統(tǒng)為懶加載模式,只在需要執(zhí)行持久化操作的時(shí)候才加載相應(yīng)的Mapper映射文件,節(jié)省了系統(tǒng)初始化時(shí)的時(shí)間消耗和空間占用。如下整合的部分代碼:
3.2.1 權(quán)限管理模塊的實(shí)現(xiàn)
在表2.1系統(tǒng)的權(quán)限機(jī)制中介紹了系統(tǒng)的權(quán)限設(shè)計(jì),不同的用戶有不同的系統(tǒng)角色,而不同的系統(tǒng)角色又擁有不同的權(quán)限。在本系統(tǒng)中,用戶通過(guò)賬號(hào)和密碼來(lái)進(jìn)行登錄,系統(tǒng)在用戶登錄前會(huì)對(duì)其角色進(jìn)行識(shí)別,不同的角色會(huì)進(jìn)入到不同的頁(yè)面,進(jìn)行不同的操作。比如管理員登錄后進(jìn)入系統(tǒng),系統(tǒng)會(huì)提供幾乎所有的功能;而如果是工作人員登錄系統(tǒng),系統(tǒng)不會(huì)對(duì)其提供用戶管理、操作記錄管理等功能,只提供檔案管理的功能。
3.2.2 檔案管理模塊的實(shí)現(xiàn)
(1)批量添加功能實(shí)現(xiàn)
使用POI技術(shù)來(lái)實(shí)現(xiàn)批量添加,本系統(tǒng)中封裝了一個(gè)ExcelUtil類用于處理Excel的相關(guān)操作,對(duì)批量添加功能分步驟實(shí)現(xiàn)。
第一步,系統(tǒng)接收到用戶上傳的Excel文件之后,調(diào)用ExcelUtil中的getListByExcel方法來(lái)解析并獲取數(shù)據(jù),以文件流的形式將Excel文件傳遞給getListByExcel方法。在getListByExcel方法中先判斷Excel文件的類型,如果是.xls文件則使用HSSF結(jié)構(gòu),否則使用XSSF結(jié)構(gòu);
第二步,然后將Excel文件以工作表(Sheet)為單位進(jìn)行拆分,每個(gè)Sheet又是一個(gè)二維表的結(jié)構(gòu)(行和列,分別用Row和Cell表示),在代碼中用一個(gè)三層的for循環(huán)來(lái)獲取其中的數(shù)據(jù),第一層for循環(huán)用來(lái)遍歷每一個(gè)Sheet,第二層for循環(huán)用來(lái)遍歷每一個(gè)Row,第三層for便是用來(lái)獲取一個(gè)Row中每一個(gè)Cell中的值;
第三步,獲取每一個(gè)Cell中的值時(shí),需要對(duì)每一個(gè)數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行識(shí)別并保存,POI的用戶模型的Cell類中提供了幾種常用的數(shù)據(jù)類型:CELL_TYPE_STRING、CELL_TYPE_NUMBER、CELL_TYPE_BOOLEAN、CELL_TYPE_BLANK等,本系統(tǒng)中通過(guò)一個(gè)switch語(yǔ)句來(lái)對(duì)每一種不同類型的數(shù)據(jù)進(jìn)行操作;
第四步,將每一個(gè)Row的數(shù)據(jù)用一個(gè)List集合進(jìn)行存儲(chǔ),再用一個(gè)List集合存儲(chǔ)每一個(gè)Row對(duì)應(yīng)的List集合,所以整個(gè)Excel表結(jié)構(gòu)就轉(zhuǎn)化為一個(gè)雙層嵌套的List集合的結(jié)構(gòu)。
第五步,系統(tǒng)中學(xué)生的檔案信息是通過(guò)Student類來(lái)保存到數(shù)據(jù)庫(kù)的student和archive表中的,所以要將上一步的雙層嵌套的List集合中的數(shù)據(jù)放到一個(gè)List
第六步,得到最終的List
第七步,前端用戶界面顯示添加成功或失敗。
(2)導(dǎo)出Excel文件
該功能與批量添加功能是反方向?qū)崿F(xiàn)的,首先會(huì)根據(jù)用戶的需求從數(shù)據(jù)庫(kù)中查詢出需要導(dǎo)出的數(shù)據(jù),將數(shù)據(jù)保存為L(zhǎng)ist
第一步,獲取到用戶查詢的數(shù)據(jù)之后,先通過(guò)ExcelBean類來(lái)創(chuàng)建表頭信息、樣式、對(duì)應(yīng)的類屬性名等。
第二步,將表頭信息、查詢到的數(shù)據(jù)信息、以及Student.class作為參數(shù)傳遞到ExcelUtil的create-ExcelFile方法中,通過(guò)該方法來(lái)創(chuàng)建Excel文件。
第三步,在createExcelFile方法中,首先判斷數(shù)據(jù)是否為空,如果數(shù)據(jù)為空,則創(chuàng)建一個(gè)空的Excel文件;否則創(chuàng)建一個(gè)Sheet,先設(shè)置該Sheet的樣式(字體、字體大小、對(duì)齊方式等),再將ExcelBean對(duì)象中的表頭信息設(shè)置到該Sheet的第一個(gè)Row中,最后將數(shù)據(jù)根據(jù)提供的get方法從Student對(duì)象中獲取出來(lái)并添加到每一個(gè)Row的Cell中。通過(guò)get方法獲取值的代碼:
//獲得getXXX()方法
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(excelBean.getPropertyName(), Student.class); Method getMethod = propertyDescriptor.getRead-Method();
Object getValue = getMethod.invoke(obj);//student對(duì)象調(diào)用get方法獲得屬性值
第四步,上一步把所有的數(shù)據(jù)都添加到對(duì)應(yīng)的Cell中后,一個(gè)完整的Excel文件就生成了,createExcelFile函數(shù)將生成的Excel文件傳遞到控制層中,在控制層中將該Excel文件以輸出流的形式傳遞到用戶操作界面。
(3)打印檔案
打印檔案是本系統(tǒng)的主要功能之一,是電子信息輸出為紙質(zhì)化信息的形式,該功能使用LODOP打印控件結(jié)合JavaScript來(lái)實(shí)現(xiàn)動(dòng)態(tài)打印,用戶先查詢檔案信息,再進(jìn)行打印操作。該功能的優(yōu)勢(shì)是間接地與服務(wù)器解耦,如圖6打印檔案執(zhí)行流程圖所示,LODOP部分幾乎沒(méi)有與服務(wù)器進(jìn)行任何交互,,只是獲取了系統(tǒng)前一次請(qǐng)求的數(shù)據(jù),將數(shù)據(jù)動(dòng)態(tài)綁定到打印頁(yè)面中進(jìn)行打印,這樣可以減輕服務(wù)器端的壓力。如圖7打印預(yù)覽圖(以山西農(nóng)業(yè)大學(xué)檔案館為例,其中數(shù)據(jù)為測(cè)試數(shù)據(jù))。
本系統(tǒng)的視圖渲染使用了Bootstrap框架,使用戶具有更好地視覺(jué)體驗(yàn),良好的視覺(jué)體驗(yàn)有助于辦公效率的提高。本系統(tǒng)從功能和安全兩個(gè)角度進(jìn)行設(shè)計(jì)和開(kāi)發(fā),不僅滿足用戶的功能需求,還保證系統(tǒng)有一個(gè)相對(duì)安全的運(yùn)行環(huán)境。結(jié)合了SSM框架以及POI、LODOP等技術(shù)進(jìn)行開(kāi)發(fā),這些技術(shù)的結(jié)合體現(xiàn)了本系統(tǒng)的可擴(kuò)展性、可靠性,同時(shí)使用SSM框架可以協(xié)調(diào)好系統(tǒng)中各層之間的關(guān)系,提升開(kāi)發(fā)效率并方便后期的維護(hù)工作。本系統(tǒng)還支持同時(shí)操作一萬(wàn)條以上的數(shù)據(jù)量,并能保持良好的響應(yīng),改變了以往傳統(tǒng)的檔案管理方式,解決了以往檔案管理系統(tǒng)處理數(shù)據(jù)少、效率低、不安全的問(wèn)題,這也充分符合了大數(shù)據(jù)時(shí)代下人們的工作要求。
圖6 打印檔案執(zhí)行流程圖
圖7 打印預(yù)覽圖
本文通過(guò)對(duì)系統(tǒng)中核心功能模塊和相關(guān)技術(shù)的介紹,展示了一款設(shè)計(jì)合理、功能完善、性能良好的高校畢業(yè)生檔案管理系統(tǒng)。本系統(tǒng)是根據(jù)當(dāng)前大多數(shù)高校檔案管理人員的需求,進(jìn)行充分的設(shè)計(jì),采用SSM框架完成系統(tǒng)的開(kāi)發(fā),并且本系統(tǒng)已經(jīng)通過(guò)了集成測(cè)試、系統(tǒng)測(cè)試,實(shí)現(xiàn)了系統(tǒng)預(yù)期的功能,通過(guò)了用戶的驗(yàn)收,可以適用于大部分高校的畢業(yè)生檔案管理工作。
[1] 韓凌波. 基于mvc 架構(gòu)的普法考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2015, 36(3): 132-134.
[2] 臧進(jìn)進(jìn), 鄂海紅. 基于響應(yīng)式Web設(shè)計(jì)的網(wǎng)頁(yè)生成系統(tǒng)研究與實(shí)現(xiàn)[J]. 軟件, 2015, 36(6): 37-41.
[3] 蘇奎, 董默, 張彥超. 響應(yīng)式Web開(kāi)發(fā)模式分析[J]. 軟件, 2015, 36(6): 92-96.
[4] 姚云飛, 杜洪波, 梁建輝. 基于 SpringMVC 框架畢業(yè)設(shè)計(jì)管理系統(tǒng)設(shè)計(jì)[J]. 軟件, 2018, 39(01): 91-93.
[5] 原方圓, 馬書(shū)南, 雷偉, 等. 高安全性數(shù)字化檔案管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2018, 39(7): 98-102.
[6] Walls, C., 著. Spring實(shí)戰(zhàn)[M]. 耿淵, 張衛(wèi)濱, 譯. 北京: 人民郵電出版社, 2014.
[7] 林雪南. 基于Apache POI解析Excel文件及內(nèi)存使用分析[J]. 電腦編程技巧與維護(hù), 2016, (23): 60-98.
[8] Apache POI docs[EB/OL]. [2018-10-26]. http://poi.apache.org/ components/spreadsheet/index.html.
[9] 任繼念. 基于Web的證書(shū)打印系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 教學(xué)與科技, 2016(4): 16-17.
[10] 賈志城, 王云. JSP程序設(shè)計(jì)(慕課版)[M]. 北京: 人民郵電出版社, 2016.
[11] Bootstrap 中文網(wǎng)[EB/OL]. [2018-10-26]. https://v3.bootcss. com/css/.
In the Era of Big Data, the Research and Development of the File Management System for College Graduates Based on SSM Framework is Designed
JI Hao-jie
(Software College of Shanxi Agricultural University, Jinzhong, Shanxi 030800, China)
Based on the analysis of the current situation of archives management in colleges and universities: Chinese colleges and universities generally do not pay attention to archives management, and most of them are still in the state of manual management. For the file management personnel, not only the workload, but also low efficiency.Therefore, based on the framework of SSM and combined with the present popular JSP, POI and other technical archives management system of college graduates through the research of the design and implementation of this system on the basis of the demand for development of most archivists in colleges and universities, under the background in the era of big data, for the archivists offers a can handle large amounts of data at the same time, the paper files electronically, and WEB technology combined with good MicroSoft Office management system, improve the efficiency of the archives management work, save the cost of archives management.
SSM; University archives management; LODOP; POI; Management system; Bootstrap; Java
TP315
A
10.3969/j.issn.1003-6970.2018.11.033
吉豪杰(1998-),男,本科生,主要研究方向:軟件工程。
吉豪杰. 大數(shù)據(jù)時(shí)代下基于SSM框架的高校畢業(yè)生檔案管理系統(tǒng)的研發(fā)設(shè)計(jì)[J]. 軟件,2018,39(11):151-158