楊佳績,孟艷紅
摘 要:本文針對各高校實(shí)踐課程管理工作中存在的任務(wù)繁重、教學(xué)效果不佳、項(xiàng)目工程化培養(yǎng)程度不夠等問題,提出了一套實(shí)踐課程管理系統(tǒng)的開發(fā)方案。該方案在對需求分析的基礎(chǔ)上確定了系統(tǒng)所使用的開發(fā)框架,設(shè)計(jì)了系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)模型,并闡述了系統(tǒng)實(shí)現(xiàn)的功能。對如何實(shí)現(xiàn)課程報(bào)告的自動生成并打印提出了一種有效的解決途徑,并闡述了其利用Freemaker的實(shí)現(xiàn)過程。該系統(tǒng)操作方便,有效地提高了高校實(shí)踐課程的管理效率,具有一定的使用價值。
關(guān)鍵詞:實(shí)踐課程管理;SSH框架;Freemaker模板引擎;數(shù)據(jù)庫
中圖分類號:TP315 文獻(xiàn)標(biāo)識碼:A
Design and Implementation of the Practice Curriculum Management
System Based on the SSH Framework
YANG Jiaji,MENG Yanhong
(School of Software,Shenyang University of Technology,Shenyang 110023,China)
Abstract:In view of the problems,such as heavy tasks,poor teaching effect and weak degree of project engineering training,this paper puts forward a development scheme of the practice curriculum management system.On the basis of requirement analysis,the scheme determines the system development framework,designs the system data structure model,and describes the system functions.The paper proposes effective solutions to the automatic generation and printing of curriculum reports,and expounds the implementation process via Freemaker.The system is easy to operate and effectively improves the efficiency of college practical curriculum management,which is of great application value.
Keywords:practice curriculum management;SSH framework,F(xiàn)reemaker template engine;database
1 引言(Introduction)
實(shí)踐課程管理是各大學(xué)的主要日常管理工作之一,涉及校、系、師、生的諸多方面。學(xué)生實(shí)踐課程日常管理工作及保存管理日趨繁重、復(fù)雜?,F(xiàn)存在的系統(tǒng)往往沒有對學(xué)生的學(xué)習(xí)情況做更好的檢測與評估,沒有很好地切合目前工程化培養(yǎng)的目標(biāo)。無論是教師還是學(xué)生都迫切需要一套更加完善的管理系統(tǒng),以進(jìn)行良好的實(shí)踐課程管理。
對于教師來說,隨時了解學(xué)生實(shí)踐課程的學(xué)習(xí)情況,并對學(xué)生進(jìn)行項(xiàng)目工程化培養(yǎng)是十分必要的。另一方面,對于學(xué)生來說,精準(zhǔn)無誤地掌握項(xiàng)目開發(fā)知識是學(xué)生在進(jìn)行實(shí)踐課程時所要完成的首要任務(wù)?;谝陨洗嬖诘膯栴}我們使用具有良好擴(kuò)展性和耦合性的SSH框架對系統(tǒng)進(jìn)行開發(fā),實(shí)現(xiàn)了學(xué)生、教師和管理員端的功能,使用Maven工具與SSH框架結(jié)合為系統(tǒng)開發(fā)及維護(hù)提供了便利條件。采用Freemaker替換技術(shù)對word模板進(jìn)行替換修改不僅解決了實(shí)驗(yàn)報(bào)告按模板自動生成并打印的難點(diǎn),也為后期圖片的替換提供了一種合理方法。
2 系統(tǒng)開發(fā)框架及技術(shù)(System development
framework and technology)
基于對系統(tǒng)需求上的深入分析,其使用框架應(yīng)該具有良好的可擴(kuò)展性、解耦合性,并且能夠適應(yīng)大規(guī)模用戶同時在線。
系統(tǒng)使用Struts2-Spring-Hibernate三種框架整合開發(fā),利用Struts2將從頁面接收到的請求發(fā)送給一個標(biāo)準(zhǔn)的過濾鏈,包括(ActionContextCleanUp)過濾器。通過FilterDispatcher核心控制器調(diào)用ActionMapper配置集來確定請求哪個Action,這種方式可以使系統(tǒng)更加健壯安全[1]。利用Spring去整合服務(wù)器對數(shù)據(jù)庫的事務(wù)處理。對Action、Dao和數(shù)據(jù)庫連接池進(jìn)行配置[2]。利用Hibernate實(shí)現(xiàn)對表中數(shù)據(jù)的持久化處理,利用映射技術(shù),直接將表轉(zhuǎn)換成類,并在類中編寫對數(shù)據(jù)庫進(jìn)行處理的SQL語句,方便系統(tǒng)對數(shù)據(jù)進(jìn)行操作,減少服務(wù)器連接數(shù)據(jù)庫時產(chǎn)生的開銷,提高系統(tǒng)運(yùn)行效率[3]。
采用Maven管理工具中橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件[4]?;贛aven的實(shí)踐課程管理系統(tǒng)可以更加方便地在pom.xml中引入依賴,使得開發(fā)效率得以提高[5]。
系統(tǒng)使用三個常用的開發(fā)工具Easy-ui、Ztree和富文本編輯框Ueditor設(shè)計(jì)了用戶界面,使用戶在使用上更加方便。另外在對頁面加載技術(shù)方面,系統(tǒng)采用了Ajax異步加載技術(shù),使該系統(tǒng)不用重新加載整個頁面便可實(shí)現(xiàn)部分刷新效果[6,7]。此外Struts2框架對Ajax提供支持,開發(fā)者只需要調(diào)用action中的getter方法就能獲取到相應(yīng)的值,使系統(tǒng)在對請求action的處理上更加靈活[8]。endprint
3 系統(tǒng)需求分析和功能設(shè)計(jì)(System requirement
analysis and function design)
3.1 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)的整體設(shè)計(jì)如下:
(1)用戶登錄設(shè)計(jì):將用戶按角色分為學(xué)生、教師和管理員。用戶以用戶名與密碼進(jìn)行登錄。如果用戶名或密碼錯誤,給予提示。用戶信息統(tǒng)一由管理員添加。用戶不能自行注冊。
(2)學(xué)生端功能設(shè)計(jì)
①上傳實(shí)踐報(bào)告:學(xué)生將編寫好的實(shí)踐報(bào)告通過系統(tǒng)上傳界面上傳給教師。
②填寫實(shí)踐報(bào)告:學(xué)生根據(jù)提供的實(shí)驗(yàn)報(bào)告模板進(jìn)行填寫,根據(jù)填寫信息自動生成實(shí)驗(yàn)報(bào)告文檔。
③簽到:學(xué)生在系統(tǒng)中進(jìn)行本次課程的簽到,系統(tǒng)自行對簽到時間及學(xué)生信息進(jìn)行記錄,教師通過系統(tǒng)查看學(xué)生的簽到情況。
④在線測試:學(xué)生在系統(tǒng)中進(jìn)行在線測試,測試題目由教師發(fā)布,學(xué)生提交的答案將由教師評閱并給出最終分?jǐn)?shù)。
⑤成績查詢:學(xué)生通過系統(tǒng)對在線測試的成績進(jìn)行查詢。
(3)教師端功能設(shè)計(jì)
①發(fā)布課程任務(wù):根據(jù)相應(yīng)科目發(fā)布新的實(shí)踐課程任務(wù),并可對發(fā)布的實(shí)踐課程任務(wù)進(jìn)行添加、查看、刪除操作。
②發(fā)布在線測試:教師對學(xué)生端的測試內(nèi)容進(jìn)行修改及發(fā)布。
③成績評判:教師可查看到學(xué)生對在線測試做出的答案,給出成績的評判并打分,成績可被學(xué)生查看。
④查看簽到:教師可查詢所有人的簽到信息及簽到時間,并可進(jìn)行打印。
⑤下載報(bào)告:教師對學(xué)生上傳的實(shí)踐報(bào)告進(jìn)行下載并可打印。
(4)管理員功能設(shè)計(jì)
管理員可通過正確錄入老師信息(姓名、密碼等)添加教師用戶,其錄入值不能為空。管理員可刪除數(shù)據(jù)庫中所有該老師的關(guān)聯(lián)信息。管理員可通過系統(tǒng),對學(xué)生信息進(jìn)行錄入,學(xué)生無法登錄也無法自行注冊。管理員可對學(xué)生信息進(jìn)行刪除。系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。
3.2 系統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是系統(tǒng)功能實(shí)現(xiàn)的關(guān)鍵核心。數(shù)據(jù)結(jié)構(gòu)是否符合業(yè)務(wù)要求,是否存在冗余直接影響到系統(tǒng)功能優(yōu)化程度。系統(tǒng)對其功能需求進(jìn)行深入分析,避免了數(shù)據(jù)冗余,并根據(jù)各實(shí)體間存在的聯(lián)系建立了如下數(shù)據(jù)庫表。
系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括權(quán)限表(pow)、用戶表(user)、功能表(able)、教授表(teach)、課程表(class)、題目表(title)、測試表(test)、任務(wù)表(task)、任務(wù)內(nèi)容表(content)。
(1)用戶表(user)其主要字段有賬號、用戶名、密碼、權(quán)限身份,該表包含該系統(tǒng)三個角色所有用戶信息數(shù)據(jù)。
(2)權(quán)限表(pow)其主要字段有權(quán)限、權(quán)限名稱。權(quán)限表與用戶表之間組成一對多的關(guān)系,實(shí)現(xiàn)不同用戶不同權(quán)限劃分。
(3)功能表(able)其主要字段有父節(jié)點(diǎn)、子節(jié)點(diǎn)、跳轉(zhuǎn)頁面、功能名稱、權(quán)限。功能表與權(quán)限表組成一對一的關(guān)系,實(shí)現(xiàn)不同權(quán)限不同功能。登錄時系統(tǒng)須根據(jù)權(quán)限確定用戶功能,即每個用戶對應(yīng)一個權(quán)限,每個權(quán)限對應(yīng)多個用戶,每個權(quán)限對應(yīng)多個功能,每個功能對應(yīng)一個權(quán)限。
(4)教授表(teach)其主要字段有編號、用戶賬號、課程編號。
(5)課程表(class)其主要字段有課程編號、課程名稱、用戶表、教授表。課程表三表實(shí)現(xiàn)用戶分班管理的結(jié)構(gòu)。系統(tǒng)須根據(jù)班級管理用戶信息,每個用戶對應(yīng)一個班級,教師教授多個班級,每個班級對應(yīng)多個用戶。
(6)題目表(title)其主要字段有編號、用戶賬號、課程名稱、測試題目、測試時間、截止時間、發(fā)布人。
(7)測試表(test)其主要字段有題號、題目內(nèi)容、a選項(xiàng)、b選項(xiàng)、c選項(xiàng)、d選項(xiàng)、試題編號。題目表與測試表之間存在一對多的關(guān)系,從而實(shí)現(xiàn)測試題成組出,測試功能測試題目對應(yīng)多個測試題,每個測試題對應(yīng)一個題目。
(8)任務(wù)表(task)其主要字段有編號、課程編號、任務(wù)號。
(9)任務(wù)內(nèi)容表(content)其主要字段有任務(wù)編號、任務(wù)內(nèi)容、題目編號。任務(wù)表與任務(wù)內(nèi)容表存在一對多的關(guān)系,任務(wù)編號作為連接兩個表的碼,從而實(shí)現(xiàn)成組管理。
數(shù)據(jù)庫表之間的關(guān)系圖如圖2所示。
4 系統(tǒng)的實(shí)現(xiàn)(System implementation)
系統(tǒng)各功能運(yùn)行時會依次連接Action、Service、Dao三種類型的類實(shí)現(xiàn)數(shù)據(jù)通信,這樣對于同一張表中的不同事務(wù)處理就需要每次先執(zhí)行相同的連接操作。基于這種操作,設(shè)計(jì)BaseXXX抽象類,將重復(fù)代碼放入抽象類中,進(jìn)行自定義基礎(chǔ)通用類DAO、Service為BaseDAO、BaseService,從而在運(yùn)行時只需繼承這些抽象類便可實(shí)現(xiàn)數(shù)據(jù)通信。同時對于不同表所執(zhí)行的增刪改查時,設(shè)計(jì)通用DAO組件,只編寫一個DAO工具類就可完成對所有表的增刪改查處理。通過反射和泛型技術(shù)使系統(tǒng)各模塊功能都只需調(diào)用上述定義的函數(shù)就可實(shí)現(xiàn)。另外自定義攔截器LoginInterceptor,實(shí)現(xiàn)未登錄用戶不能訪問Web-INF下所有頁面和除登錄之外的其他Action,并用攔截器傳遞錯誤信息。系統(tǒng)各功能模塊設(shè)計(jì)包括如下:
(1)用戶登錄功能實(shí)現(xiàn)
登錄時并不是跳轉(zhuǎn)到不同界面,而是通過Ajax異步加載動態(tài)加載每種用戶的功能部分,將數(shù)據(jù)庫中根據(jù)權(quán)限存儲好的功能表抽象成對象userDao,并通過userDAO.findById方法取回?cái)?shù)據(jù),再將數(shù)據(jù)壓入值棧中以json輸出,將得到的字符串賦值到利用zTree工具生成的樹中,實(shí)現(xiàn)動態(tài)加載菜單的效果,減輕了系統(tǒng)接收請求的負(fù)擔(dān),增加了加載頁面的效率。
(2)學(xué)生端功能實(shí)現(xiàn)
填寫實(shí)踐報(bào)告:學(xué)生根據(jù)提供的文本框及提示進(jìn)行填寫,最后提交到數(shù)據(jù)庫中,并根據(jù)填寫信息自動生成實(shí)驗(yàn)報(bào)告文檔。學(xué)生填寫的信息通過public void save保存到數(shù)據(jù)庫中。endprint
簽到:將簽到表抽象為對象userDAO.findById,對用戶表的簽到信息進(jìn)行修改和存儲。
在線測試:學(xué)生可在該界面對教師下發(fā)的任務(wù)進(jìn)行回答,并由教師給出相關(guān)分?jǐn)?shù)。該功能的實(shí)現(xiàn)與菜單功能基本類似,將測試題信息抽象為對象,再通過自定義函數(shù)對數(shù)據(jù)進(jìn)行操作,將從數(shù)據(jù)庫中找回的數(shù)據(jù)存儲為List,壓入值棧,轉(zhuǎn)換為json字符串,然后在前端對字符串進(jìn)行處理,從而實(shí)現(xiàn)在線測試題的顯示。
成績查詢:通過數(shù)據(jù)庫查詢函數(shù)userDAO.findById,返回成績信息并顯示到前端頁面上。
學(xué)生端運(yùn)行界面如圖3所示。
(3)教師端功能實(shí)現(xiàn)
發(fā)布課程任務(wù):該功能將填寫的任務(wù)信息通過save方法存入數(shù)據(jù)庫中。在學(xué)生端進(jìn)行獲取顯示,實(shí)現(xiàn)發(fā)布任務(wù)的效果。
發(fā)布在線測試:教師可對學(xué)生端的測試內(nèi)容進(jìn)行修改及發(fā)布。與發(fā)布課程任務(wù)功能原理相同。
成績評判:教師可查看到學(xué)生對在線測試做出的答案,給出成績的評判并打分。將成績直接存入用戶表中對應(yīng)id的成績信息中。
查看簽到:教師可看到所有人的簽到信息及簽到時間,將數(shù)據(jù)庫表中簽到標(biāo)記為“1”的信息取回屏顯示,通過userDAO.findByNameQuery方法實(shí)現(xiàn)。
下載報(bào)告:教師可下載學(xué)生上傳的實(shí)踐報(bào)告。通過configuration.setClassForTemplateLoading方法加載文檔模板,然后將存儲的數(shù)據(jù)裝載到定義出的map中,通過Freemaker模板引擎生成報(bào)告并下載。
教師端運(yùn)行界面如圖4所示。
(4)實(shí)踐報(bào)告模板模塊實(shí)現(xiàn)
系統(tǒng)的開發(fā)難點(diǎn)在于如何實(shí)現(xiàn)Java與Word之間的模板式轉(zhuǎn)換。Word是微軟公司開發(fā)的字處理文件格式,以.doc或者.docx作為文件后綴名。使用Freemaeker模板引擎對已定義好的模板進(jìn)行替換修改,從而實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告的自動生成和下載上傳。
該功能基于Freemaker模板引擎,將編寫好的實(shí)踐報(bào)告存儲為.flt,通過setClassForTemplateLoading方法加載文檔模板,然后將存儲的數(shù)據(jù)裝載到定義出的map中,通過Freemaker技術(shù)編寫工具類對文件里的標(biāo)記位置如${velue}進(jìn)行替換,將獲取來的數(shù)據(jù)存儲在定義好的鍵值對map中。最終將修改后的.flt文件以.doc文檔格式生成并下載到根目錄。
5 結(jié)論(Conclusion)
系統(tǒng)針對高校實(shí)踐課程的特點(diǎn)和管理中的實(shí)際需要而設(shè)計(jì),能夠有效地實(shí)現(xiàn)課程管理的信息化,減輕老師的工作負(fù)擔(dān),高效率、規(guī)范化地管理大量的學(xué)生程序設(shè)計(jì)課程信息,并避免人為操作的錯誤和不規(guī)范行為。系統(tǒng)使用目前較成熟的開發(fā)工具及框架,使其對后期維護(hù)及其繼續(xù)開發(fā)都提供了便利的條件。利用Ajax動態(tài)加載菜單是一種新的實(shí)現(xiàn)用戶權(quán)限登錄的方式,其能有效地提高程序運(yùn)行的效率,減少了響應(yīng)時間。在實(shí)踐報(bào)告模板方面,利用Freemaker直接對模板進(jìn)行修改,避免了傳統(tǒng)技術(shù)上利用各種插件進(jìn)行Word文件生成所帶來的使用上的不便,從實(shí)用性和功能的完善上都有了不小的提升。該系統(tǒng)實(shí)現(xiàn)的自動生成實(shí)踐報(bào)告模板功能是現(xiàn)存一些系統(tǒng)所沒有的。該功能的實(shí)現(xiàn)使學(xué)生能夠更好地規(guī)范實(shí)踐報(bào)告的格式要求,能夠使老師更加便利地管理學(xué)生所提交的實(shí)踐報(bào)告。
參考文獻(xiàn)(References)
[1] 杜文藝.基于Struts和Hibernate的web應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)中[M].北京:電子工業(yè)出版社,2014:4-10.
[2] Nicholas S.Williams.Professional Java for Web Applications:Featuring Websockets,Spring Framework,JPA Hibernate,and Spring Security[M].USA:Wrox Press,2014:295-314.
[3] 李剛.輕量級Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)(第3版):Struts 2+Spring 3+Hibernate整合開發(fā)[M].北京:電子工業(yè)出版社,2012:362-429.
[4] Apace Maven.Welcome to Apache Maven[EB/OL].http//maven.apache.org/[2013-06-16].
[5] 李俊杰.Maven在企業(yè)Java軟件產(chǎn)品中的應(yīng)用[J].電腦知識與技術(shù),2011,7(7):1562-1565.
[6] 李洋,孫永維,許冰,等.基于Ajax,Struts,Hibernate和Spring的J2EE架構(gòu)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2011(06):577-578.
[7] 屈展,李嬋.JSON在Ajax數(shù)據(jù)交換中的應(yīng)用研究[J].西安石油大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,1:96-98.
[8] 甘文麗,劉為超.基于Struts2和Ajax的企業(yè)級Web應(yīng)用開發(fā)[J].工礦自動化,2013(02):24-26.
[9] Paul DuBois.MySQL[M].USA:Addison-Wesley Educational Publishers,2013:609-695.
作者簡介:
楊佳績(1997-),男,本科生.研究領(lǐng)域:軟件開發(fā).
孟艷紅(1973-),女,碩士,講師.研究領(lǐng)域:計(jì)算機(jī)網(wǎng)絡(luò)與信息安全技術(shù).endprint