楊佳績,孟艷紅



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