黃統(tǒng)奎 張艷紅
基于Java EE高校畢業(yè)設(shè)計(jì)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
黃統(tǒng)奎,張艷紅
(廣東技術(shù)師范學(xué)院 天河學(xué)院,廣東 廣州 510540)
摘要:該文研究基于Struts2 + Spring + Hibernate的高校畢業(yè)設(shè)計(jì)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)按照畢業(yè)設(shè)計(jì)工作流程實(shí)現(xiàn)管理端,教師端,學(xué)生端相應(yīng)的功能。重點(diǎn)實(shí)現(xiàn)了業(yè)務(wù)流程管理、用戶權(quán)限管理、選題管理、文檔管理、文檔在線編輯、成績(jī)?cè)u(píng)定、在線交流、數(shù)據(jù)備份等功能。該系統(tǒng)具有界面簡(jiǎn)潔、易用性強(qiáng),交互性好、功能完善、同時(shí)又考慮到數(shù)據(jù)安全和系統(tǒng)功能的擴(kuò)充。
關(guān)鍵詞: Struts2;Spring;Hibernate;畢業(yè)設(shè)計(jì);文檔管理
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)19-4384-03
1 課題背景
隨著大學(xué)的擴(kuò)招,畢業(yè)生數(shù)量的逐年遞增,高校畢業(yè)設(shè)計(jì)教學(xué)活動(dòng)中需要處理的數(shù)據(jù)和信息也越來(lái)越大,在畢業(yè)設(shè)計(jì)管理工作中遇到工作效率低,交互性差,工作量大等問(wèn)題,這已經(jīng)成為高校每年畢業(yè)設(shè)計(jì)管理過(guò)程中急需處理的問(wèn)題。同時(shí)課題資源過(guò)于零散,容易重復(fù), 進(jìn)一步加大了課題資源整合的難度。綜上所述,該文研究基于 Java EE的高校畢業(yè)設(shè)計(jì)管理系統(tǒng),使用該系統(tǒng)實(shí)現(xiàn)快捷高效的畢業(yè)設(shè)計(jì)管理工作。
2 系統(tǒng)分析
通過(guò)需求分析,系統(tǒng)確定有三種角色:學(xué)生、教師、管理員。
2.1功能模塊劃分
在具體設(shè)計(jì)實(shí)現(xiàn)畢業(yè)設(shè)計(jì)管理系統(tǒng)時(shí),主要考慮了系統(tǒng)的以下主要功能和模塊。
1) 公用模塊
(1) 登錄模塊:驗(yàn)證帳號(hào)密碼是否正確。
(2) 修改個(gè)人信息模塊:修改賬號(hào)密碼。
(3) 師生互動(dòng)模塊:師生交流平臺(tái)。
(4) 瀏覽信息模塊:查看信息。
2) 畢業(yè)生模塊
(1) 選報(bào)課題模塊:選擇指導(dǎo)老師與課題。
(2) 上傳論文模塊:上傳各階段的論文。
(3) 下載文件模塊:下載指導(dǎo)老師的資料。
3) 指導(dǎo)教師模塊
(1) 申報(bào)課題模塊:申報(bào)自己的課題。
(2) 分配課題模塊:選擇畢業(yè)生與其對(duì)應(yīng)的課題。
(3) 上傳論文模塊:上傳各個(gè)階段的論文。
(4) 審批論文模塊:審批上傳的論文。
(5) 下載文件模塊:下載畢業(yè)生上傳資料。
4) 管理員模塊
(1) 公告發(fā)布模塊:發(fā)布信息。
(2) 課題管理模塊:管理課題。
(3) 賬號(hào)管理模塊:管理畢業(yè)生與指導(dǎo)教師賬號(hào)。
(4) 日常維護(hù)模塊:數(shù)據(jù)庫(kù)備份還原。
2.2業(yè)務(wù)流程圖
2.2.1 管理員業(yè)務(wù)流程圖
管理員定期對(duì)系統(tǒng)的信息進(jìn)行更新和維護(hù),可以對(duì)公告、課題、帳號(hào)信息進(jìn)行查看、增加、修改、刪除等操作,以及配置系統(tǒng)的參數(shù)。業(yè)務(wù)流程圖如圖1所示。
圖1 管理員業(yè)務(wù)流程圖
圖2 教師業(yè)務(wù)流程圖
2.2.2 教師業(yè)務(wù)流程圖
教師登錄系統(tǒng)后,可以對(duì)課題進(jìn)行管理,審核選題信息。教師可以查看學(xué)生的選題情況和學(xué)生個(gè)人信息,并確定是否錄用學(xué)生提交的課題。在選題完畢之后,教師可以在系統(tǒng)中批閱該課題的上交文件,并給出評(píng)價(jià)及評(píng)分。業(yè)務(wù)流程圖如上圖2所示。
2.2.3 學(xué)生業(yè)務(wù)流程圖
學(xué)生登錄系統(tǒng)后,可以查看公告,修改個(gè)人資料。學(xué)生在選題中,可以自由選擇教師及其提供的課題,也可以自己選取導(dǎo)師并自定義課題。選題后,學(xué)生允許提交各個(gè)時(shí)期的文檔文件,并將上傳信息顯示在教師端界面。學(xué)生的業(yè)務(wù)流程圖如圖3所示。
圖3 學(xué)生業(yè)務(wù)流程圖
3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
為了系統(tǒng)開發(fā)以及后期的維護(hù)更方便和明確,實(shí)現(xiàn)對(duì)項(xiàng)目的分割,將項(xiàng)目分為DAO、Service、Action層。根據(jù)面向?qū)ο笏枷?,建立?shí)體類,實(shí)現(xiàn)實(shí)體關(guān)系,將后臺(tái)的數(shù)據(jù)表映射出來(lái)到這實(shí)體類中,提供給DAO、Service、Action層使用。
在web.xml添加Struts、Spring、Hibernate的filter和listener。在WEB-INF文件夾里面編寫Spring的application.xml,整合Spring和Hibernate,實(shí)現(xiàn)Spring的IoC和AOP功能。將spring與struts的整合在一起,使用了自動(dòng)掃描技術(shù)和注解的方式為每個(gè)類自動(dòng)配置映射文件,使得程序的可讀性變強(qiáng)。
利用Hibernate編寫DAO層,為每個(gè)模塊建立DAO接口,在接口中實(shí)現(xiàn)了增刪改查等方法,實(shí)現(xiàn)JAVA與數(shù)據(jù)庫(kù)的數(shù)據(jù)交互,供Service層調(diào)用。
為每個(gè)模塊建立獨(dú)立的Service接口,每個(gè)接口將實(shí)現(xiàn)不同模塊的邏輯。Service層是實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)邏輯的接口。利用之前編寫的DAO層的接口,編寫Service層,實(shí)現(xiàn)業(yè)務(wù)邏輯。合理規(guī)劃Service的分類,在進(jìn)行系統(tǒng)維護(hù)時(shí)會(huì)非常便利。
Action層用于處理頁(yè)面信息,根據(jù)不同的處理結(jié)果返回不同的頁(yè)面到客戶端。設(shè)計(jì)Action層,調(diào)用Service層方法進(jìn)行邏輯處理,然后根據(jù)處理結(jié)果為客戶端返回頁(yè)面,最后對(duì)界面進(jìn)行美化。實(shí)現(xiàn)過(guò)程如下:
在創(chuàng)建具體的Action時(shí),應(yīng)當(dāng)先創(chuàng)建抽象類BaseAction,繼承Struts2中的ActionSupport抽象類,聲明一個(gè)map變量session,這樣以后每當(dāng)實(shí)現(xiàn)一個(gè)Action,只要繼承BaseAction,便可使用到session進(jìn)行權(quán)限控制。同時(shí)也要?jiǎng)?chuàng)建PageAction,繼承Struts2中的ActionSupport抽象類,并在該類中聲明一個(gè)分頁(yè)技術(shù)所需要的參數(shù),包括了記錄總條目、當(dāng)前頁(yè)碼和總的頁(yè)數(shù)等參數(shù)。
客戶端每向服務(wù)器提交一次請(qǐng)求,都會(huì)先被相應(yīng)的攔截器(interceptor)攔截并進(jìn)行校驗(yàn),攔截器會(huì)檢驗(yàn)session中的key為actor保存的對(duì)象是哪一個(gè)對(duì)象(Admin、Teacher、Student),若滿足攔截器的通過(guò)條件,將允許繼續(xù)進(jìn)行操作,否則將強(qiáng)制跳轉(zhuǎn)到登陸頁(yè)。不同的Action將根據(jù)設(shè)計(jì)時(shí)規(guī)劃好的權(quán)限設(shè)置不同的攔截器。
在線word文件的預(yù)覽功能,使用的是PreviewAction里面的默認(rèn)方法獲取當(dāng)前的文件內(nèi)容,通過(guò)里面的execute方法將內(nèi)容在pageOffice的插件上顯示出來(lái),并且如果我們修改里面的內(nèi)容后直接通過(guò)插件的poCtrl1.setSaveFilePage()方法將數(shù)據(jù)保存起來(lái)。那么下次我們點(diǎn)開文件就可以看到保存后的最新內(nèi)容。
數(shù)據(jù)管理功能,所要調(diào)用到的是DataManageAction里面的execute方法跳轉(zhuǎn)到數(shù)據(jù)管理界面。其中每當(dāng)我們點(diǎn)擊備份時(shí),我們將數(shù)據(jù)庫(kù)名、登陸賬號(hào)、密碼、安裝路徑等參數(shù)傳遞給DataManageAction里面的backup方法,將數(shù)據(jù)進(jìn)行備份出來(lái)并彈出備份是否成功的提醒消息,然后將數(shù)據(jù)庫(kù)還原時(shí),我們需要先選擇備份的文件,最后將頁(yè)面的參數(shù)傳遞給DataManageAction里面的restore方法,將數(shù)據(jù)還原并彈出是否還原成功消息。
日志管理功能,所調(diào)用到的是LogManageAction里面的execute方法跳轉(zhuǎn)到日志管理界面。其中當(dāng)我們點(diǎn)擊“導(dǎo)出日志”時(shí),我們將調(diào)用LogManageAction里面的export方法,將服務(wù)器上項(xiàng)目的HTK.log日志文件以流的形式將其下載到客戶端,并彈出保存的窗口讓用戶選擇存放的路徑。當(dāng)我們點(diǎn)擊“清空日志”時(shí),那么程序?qū)?huì)調(diào)用LogManageAction里面的clean方法,將服務(wù)器上的HTK.log日志文件里面的內(nèi)容清空并彈出清空成功消息。
4 總結(jié)
設(shè)計(jì)難點(diǎn):保證上傳信息的導(dǎo)入正確的添加到后臺(tái)數(shù)據(jù)庫(kù)中,對(duì)導(dǎo)入的xls文件是通過(guò)暫存在服務(wù)器讀取還是直接從客戶端讀取。評(píng)分功能中,如何確定角色并且實(shí)現(xiàn)正確評(píng)分。在進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)時(shí),必須從一個(gè)宏觀的角度,考慮某一功能模塊設(shè)計(jì)會(huì)不會(huì)對(duì)其他的功能模塊造成不良影響。本系統(tǒng)設(shè)計(jì)中充分考慮到數(shù)據(jù)安全性和功能的可擴(kuò)展性,按照軟件測(cè)試流程完成了軟件測(cè)試,確保系統(tǒng)最終滿足用戶需求。
參考文獻(xiàn):
[1] 劉耀欽,袁承芬.MVC設(shè)計(jì)模式在Web開中的應(yīng)用與研究[J].信息安全與技術(shù),2013(9).
[2] 孫元鵬,陳文宇,吳永強(qiáng),等.J2EE架構(gòu)的模板化設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程與應(yīng)用,2012(7).endprint
Action層用于處理頁(yè)面信息,根據(jù)不同的處理結(jié)果返回不同的頁(yè)面到客戶端。設(shè)計(jì)Action層,調(diào)用Service層方法進(jìn)行邏輯處理,然后根據(jù)處理結(jié)果為客戶端返回頁(yè)面,最后對(duì)界面進(jìn)行美化。實(shí)現(xiàn)過(guò)程如下:
在創(chuàng)建具體的Action時(shí),應(yīng)當(dāng)先創(chuàng)建抽象類BaseAction,繼承Struts2中的ActionSupport抽象類,聲明一個(gè)map變量session,這樣以后每當(dāng)實(shí)現(xiàn)一個(gè)Action,只要繼承BaseAction,便可使用到session進(jìn)行權(quán)限控制。同時(shí)也要?jiǎng)?chuàng)建PageAction,繼承Struts2中的ActionSupport抽象類,并在該類中聲明一個(gè)分頁(yè)技術(shù)所需要的參數(shù),包括了記錄總條目、當(dāng)前頁(yè)碼和總的頁(yè)數(shù)等參數(shù)。
客戶端每向服務(wù)器提交一次請(qǐng)求,都會(huì)先被相應(yīng)的攔截器(interceptor)攔截并進(jìn)行校驗(yàn),攔截器會(huì)檢驗(yàn)session中的key為actor保存的對(duì)象是哪一個(gè)對(duì)象(Admin、Teacher、Student),若滿足攔截器的通過(guò)條件,將允許繼續(xù)進(jìn)行操作,否則將強(qiáng)制跳轉(zhuǎn)到登陸頁(yè)。不同的Action將根據(jù)設(shè)計(jì)時(shí)規(guī)劃好的權(quán)限設(shè)置不同的攔截器。
在線word文件的預(yù)覽功能,使用的是PreviewAction里面的默認(rèn)方法獲取當(dāng)前的文件內(nèi)容,通過(guò)里面的execute方法將內(nèi)容在pageOffice的插件上顯示出來(lái),并且如果我們修改里面的內(nèi)容后直接通過(guò)插件的poCtrl1.setSaveFilePage()方法將數(shù)據(jù)保存起來(lái)。那么下次我們點(diǎn)開文件就可以看到保存后的最新內(nèi)容。
數(shù)據(jù)管理功能,所要調(diào)用到的是DataManageAction里面的execute方法跳轉(zhuǎn)到數(shù)據(jù)管理界面。其中每當(dāng)我們點(diǎn)擊備份時(shí),我們將數(shù)據(jù)庫(kù)名、登陸賬號(hào)、密碼、安裝路徑等參數(shù)傳遞給DataManageAction里面的backup方法,將數(shù)據(jù)進(jìn)行備份出來(lái)并彈出備份是否成功的提醒消息,然后將數(shù)據(jù)庫(kù)還原時(shí),我們需要先選擇備份的文件,最后將頁(yè)面的參數(shù)傳遞給DataManageAction里面的restore方法,將數(shù)據(jù)還原并彈出是否還原成功消息。
日志管理功能,所調(diào)用到的是LogManageAction里面的execute方法跳轉(zhuǎn)到日志管理界面。其中當(dāng)我們點(diǎn)擊“導(dǎo)出日志”時(shí),我們將調(diào)用LogManageAction里面的export方法,將服務(wù)器上項(xiàng)目的HTK.log日志文件以流的形式將其下載到客戶端,并彈出保存的窗口讓用戶選擇存放的路徑。當(dāng)我們點(diǎn)擊“清空日志”時(shí),那么程序?qū)?huì)調(diào)用LogManageAction里面的clean方法,將服務(wù)器上的HTK.log日志文件里面的內(nèi)容清空并彈出清空成功消息。
4 總結(jié)
設(shè)計(jì)難點(diǎn):保證上傳信息的導(dǎo)入正確的添加到后臺(tái)數(shù)據(jù)庫(kù)中,對(duì)導(dǎo)入的xls文件是通過(guò)暫存在服務(wù)器讀取還是直接從客戶端讀取。評(píng)分功能中,如何確定角色并且實(shí)現(xiàn)正確評(píng)分。在進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)時(shí),必須從一個(gè)宏觀的角度,考慮某一功能模塊設(shè)計(jì)會(huì)不會(huì)對(duì)其他的功能模塊造成不良影響。本系統(tǒng)設(shè)計(jì)中充分考慮到數(shù)據(jù)安全性和功能的可擴(kuò)展性,按照軟件測(cè)試流程完成了軟件測(cè)試,確保系統(tǒng)最終滿足用戶需求。
參考文獻(xiàn):
[1] 劉耀欽,袁承芬.MVC設(shè)計(jì)模式在Web開中的應(yīng)用與研究[J].信息安全與技術(shù),2013(9).
[2] 孫元鵬,陳文宇,吳永強(qiáng),等.J2EE架構(gòu)的模板化設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程與應(yīng)用,2012(7).endprint
Action層用于處理頁(yè)面信息,根據(jù)不同的處理結(jié)果返回不同的頁(yè)面到客戶端。設(shè)計(jì)Action層,調(diào)用Service層方法進(jìn)行邏輯處理,然后根據(jù)處理結(jié)果為客戶端返回頁(yè)面,最后對(duì)界面進(jìn)行美化。實(shí)現(xiàn)過(guò)程如下:
在創(chuàng)建具體的Action時(shí),應(yīng)當(dāng)先創(chuàng)建抽象類BaseAction,繼承Struts2中的ActionSupport抽象類,聲明一個(gè)map變量session,這樣以后每當(dāng)實(shí)現(xiàn)一個(gè)Action,只要繼承BaseAction,便可使用到session進(jìn)行權(quán)限控制。同時(shí)也要?jiǎng)?chuàng)建PageAction,繼承Struts2中的ActionSupport抽象類,并在該類中聲明一個(gè)分頁(yè)技術(shù)所需要的參數(shù),包括了記錄總條目、當(dāng)前頁(yè)碼和總的頁(yè)數(shù)等參數(shù)。
客戶端每向服務(wù)器提交一次請(qǐng)求,都會(huì)先被相應(yīng)的攔截器(interceptor)攔截并進(jìn)行校驗(yàn),攔截器會(huì)檢驗(yàn)session中的key為actor保存的對(duì)象是哪一個(gè)對(duì)象(Admin、Teacher、Student),若滿足攔截器的通過(guò)條件,將允許繼續(xù)進(jìn)行操作,否則將強(qiáng)制跳轉(zhuǎn)到登陸頁(yè)。不同的Action將根據(jù)設(shè)計(jì)時(shí)規(guī)劃好的權(quán)限設(shè)置不同的攔截器。
在線word文件的預(yù)覽功能,使用的是PreviewAction里面的默認(rèn)方法獲取當(dāng)前的文件內(nèi)容,通過(guò)里面的execute方法將內(nèi)容在pageOffice的插件上顯示出來(lái),并且如果我們修改里面的內(nèi)容后直接通過(guò)插件的poCtrl1.setSaveFilePage()方法將數(shù)據(jù)保存起來(lái)。那么下次我們點(diǎn)開文件就可以看到保存后的最新內(nèi)容。
數(shù)據(jù)管理功能,所要調(diào)用到的是DataManageAction里面的execute方法跳轉(zhuǎn)到數(shù)據(jù)管理界面。其中每當(dāng)我們點(diǎn)擊備份時(shí),我們將數(shù)據(jù)庫(kù)名、登陸賬號(hào)、密碼、安裝路徑等參數(shù)傳遞給DataManageAction里面的backup方法,將數(shù)據(jù)進(jìn)行備份出來(lái)并彈出備份是否成功的提醒消息,然后將數(shù)據(jù)庫(kù)還原時(shí),我們需要先選擇備份的文件,最后將頁(yè)面的參數(shù)傳遞給DataManageAction里面的restore方法,將數(shù)據(jù)還原并彈出是否還原成功消息。
日志管理功能,所調(diào)用到的是LogManageAction里面的execute方法跳轉(zhuǎn)到日志管理界面。其中當(dāng)我們點(diǎn)擊“導(dǎo)出日志”時(shí),我們將調(diào)用LogManageAction里面的export方法,將服務(wù)器上項(xiàng)目的HTK.log日志文件以流的形式將其下載到客戶端,并彈出保存的窗口讓用戶選擇存放的路徑。當(dāng)我們點(diǎn)擊“清空日志”時(shí),那么程序?qū)?huì)調(diào)用LogManageAction里面的clean方法,將服務(wù)器上的HTK.log日志文件里面的內(nèi)容清空并彈出清空成功消息。
4 總結(jié)
設(shè)計(jì)難點(diǎn):保證上傳信息的導(dǎo)入正確的添加到后臺(tái)數(shù)據(jù)庫(kù)中,對(duì)導(dǎo)入的xls文件是通過(guò)暫存在服務(wù)器讀取還是直接從客戶端讀取。評(píng)分功能中,如何確定角色并且實(shí)現(xiàn)正確評(píng)分。在進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)時(shí),必須從一個(gè)宏觀的角度,考慮某一功能模塊設(shè)計(jì)會(huì)不會(huì)對(duì)其他的功能模塊造成不良影響。本系統(tǒng)設(shè)計(jì)中充分考慮到數(shù)據(jù)安全性和功能的可擴(kuò)展性,按照軟件測(cè)試流程完成了軟件測(cè)試,確保系統(tǒng)最終滿足用戶需求。
參考文獻(xiàn):
[1] 劉耀欽,袁承芬.MVC設(shè)計(jì)模式在Web開中的應(yīng)用與研究[J].信息安全與技術(shù),2013(9).
[2] 孫元鵬,陳文宇,吳永強(qiáng),等.J2EE架構(gòu)的模板化設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程與應(yīng)用,2012(7).endprint