国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SSH框架的實(shí)踐課程管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2018-01-29 17:18楊佳績(jī),孟艷紅
軟件工程 2017年12期
關(guān)鍵詞:模板數(shù)據(jù)庫測(cè)試

楊佳績(jī),孟艷紅

摘 要:本文針對(duì)各高校實(shí)踐課程管理工作中存在的任務(wù)繁重、教學(xué)效果不佳、項(xiàng)目工程化培養(yǎng)程度不夠等問題,提出了一套實(shí)踐課程管理系統(tǒng)的開發(fā)方案。該方案在對(duì)需求分析的基礎(chǔ)上確定了系統(tǒng)所使用的開發(fā)框架,設(shè)計(jì)了系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)模型,并闡述了系統(tǒng)實(shí)現(xiàn)的功能。對(duì)如何實(shí)現(xiàn)課程報(bào)告的自動(dòng)生成并打印提出了一種有效的解決途徑,并闡述了其利用Freemaker的實(shí)現(xiàn)過程。該系統(tǒng)操作方便,有效地提高了高校實(shí)踐課程的管理效率,具有一定的使用價(jià)值。

關(guān)鍵詞:實(shí)踐課程管理;SSH框架;Freemaker模板引擎;數(shù)據(jù)庫

中圖分類號(hào):TP315 文獻(xiàn)標(biāo)識(shí)碼: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)往往沒有對(duì)學(xué)生的學(xué)習(xí)情況做更好的檢測(cè)與評(píng)估,沒有很好地切合目前工程化培養(yǎng)的目標(biāo)。無論是教師還是學(xué)生都迫切需要一套更加完善的管理系統(tǒng),以進(jìn)行良好的實(shí)踐課程管理。

對(duì)于教師來說,隨時(shí)了解學(xué)生實(shí)踐課程的學(xué)習(xí)情況,并對(duì)學(xué)生進(jìn)行項(xiàng)目工程化培養(yǎng)是十分必要的。另一方面,對(duì)于學(xué)生來說,精準(zhǔn)無誤地掌握項(xiàng)目開發(fā)知識(shí)是學(xué)生在進(jìn)行實(shí)踐課程時(shí)所要完成的首要任務(wù)?;谝陨洗嬖诘膯栴}我們使用具有良好擴(kuò)展性和耦合性的SSH框架對(duì)系統(tǒng)進(jìn)行開發(fā),實(shí)現(xiàn)了學(xué)生、教師和管理員端的功能,使用Maven工具與SSH框架結(jié)合為系統(tǒng)開發(fā)及維護(hù)提供了便利條件。采用Freemaker替換技術(shù)對(duì)word模板進(jìn)行替換修改不僅解決了實(shí)驗(yàn)報(bào)告按模板自動(dòng)生成并打印的難點(diǎn),也為后期圖片的替換提供了一種合理方法。

2 系統(tǒng)開發(fā)框架及技術(shù)(System development

framework and technology)

基于對(duì)系統(tǒng)需求上的深入分析,其使用框架應(yīng)該具有良好的可擴(kuò)展性、解耦合性,并且能夠適應(yīng)大規(guī)模用戶同時(shí)在線。

系統(tǒng)使用Struts2-Spring-Hibernate三種框架整合開發(fā),利用Struts2將從頁面接收到的請(qǐng)求發(fā)送給一個(gè)標(biāo)準(zhǔn)的過濾鏈,包括(ActionContextCleanUp)過濾器。通過FilterDispatcher核心控制器調(diào)用ActionMapper配置集來確定請(qǐng)求哪個(gè)Action,這種方式可以使系統(tǒng)更加健壯安全[1]。利用Spring去整合服務(wù)器對(duì)數(shù)據(jù)庫的事務(wù)處理。對(duì)Action、Dao和數(shù)據(jù)庫連接池進(jìn)行配置[2]。利用Hibernate實(shí)現(xiàn)對(duì)表中數(shù)據(jù)的持久化處理,利用映射技術(shù),直接將表轉(zhuǎn)換成類,并在類中編寫對(duì)數(shù)據(jù)庫進(jìn)行處理的SQL語句,方便系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行操作,減少服務(wù)器連接數(shù)據(jù)庫時(shí)產(chǎn)生的開銷,提高系統(tǒng)運(yùn)行效率[3]。

采用Maven管理工具中橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件[4]?;贛aven的實(shí)踐課程管理系統(tǒng)可以更加方便地在pom.xml中引入依賴,使得開發(fā)效率得以提高[5]。

系統(tǒng)使用三個(gè)常用的開發(fā)工具Easy-ui、Ztree和富文本編輯框Ueditor設(shè)計(jì)了用戶界面,使用戶在使用上更加方便。另外在對(duì)頁面加載技術(shù)方面,系統(tǒng)采用了Ajax異步加載技術(shù),使該系統(tǒng)不用重新加載整個(gè)頁面便可實(shí)現(xiàn)部分刷新效果[6,7]。此外Struts2框架對(duì)Ajax提供支持,開發(fā)者只需要調(diào)用action中的getter方法就能獲取到相應(yīng)的值,使系統(tǒng)在對(duì)請(qǐ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)行登錄。如果用戶名或密碼錯(cuò)誤,給予提示。用戶信息統(tǒng)一由管理員添加。用戶不能自行注冊(cè)。

(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ù)填寫信息自動(dòng)生成實(shí)驗(yàn)報(bào)告文檔。

③簽到:學(xué)生在系統(tǒng)中進(jìn)行本次課程的簽到,系統(tǒng)自行對(duì)簽到時(shí)間及學(xué)生信息進(jìn)行記錄,教師通過系統(tǒng)查看學(xué)生的簽到情況。

④在線測(cè)試:學(xué)生在系統(tǒng)中進(jìn)行在線測(cè)試,測(cè)試題目由教師發(fā)布,學(xué)生提交的答案將由教師評(píng)閱并給出最終分?jǐn)?shù)。

⑤成績(jī)查詢:學(xué)生通過系統(tǒng)對(duì)在線測(cè)試的成績(jī)進(jìn)行查詢。

(3)教師端功能設(shè)計(jì)

①發(fā)布課程任務(wù):根據(jù)相應(yīng)科目發(fā)布新的實(shí)踐課程任務(wù),并可對(duì)發(fā)布的實(shí)踐課程任務(wù)進(jìn)行添加、查看、刪除操作。

②發(fā)布在線測(cè)試:教師對(duì)學(xué)生端的測(cè)試內(nèi)容進(jìn)行修改及發(fā)布。

③成績(jī)?cè)u(píng)判:教師可查看到學(xué)生對(duì)在線測(cè)試做出的答案,給出成績(jī)的評(píng)判并打分,成績(jī)可被學(xué)生查看。

④查看簽到:教師可查詢所有人的簽到信息及簽到時(shí)間,并可進(jìn)行打印。

⑤下載報(bào)告:教師對(duì)學(xué)生上傳的實(shí)踐報(bào)告進(jìn)行下載并可打印。

(4)管理員功能設(shè)計(jì)

管理員可通過正確錄入老師信息(姓名、密碼等)添加教師用戶,其錄入值不能為空。管理員可刪除數(shù)據(jù)庫中所有該老師的關(guān)聯(lián)信息。管理員可通過系統(tǒng),對(duì)學(xué)生信息進(jìn)行錄入,學(xué)生無法登錄也無法自行注冊(cè)。管理員可對(duì)學(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)對(duì)其功能需求進(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)、測(cè)試表(test)、任務(wù)表(task)、任務(wù)內(nèi)容表(content)。

(1)用戶表(user)其主要字段有賬號(hào)、用戶名、密碼、權(quán)限身份,該表包含該系統(tǒng)三個(gè)角色所有用戶信息數(shù)據(jù)。

(2)權(quán)限表(pow)其主要字段有權(quán)限、權(quán)限名稱。權(quán)限表與用戶表之間組成一對(duì)多的關(guān)系,實(shí)現(xiàn)不同用戶不同權(quán)限劃分。

(3)功能表(able)其主要字段有父節(jié)點(diǎn)、子節(jié)點(diǎn)、跳轉(zhuǎn)頁面、功能名稱、權(quán)限。功能表與權(quán)限表組成一對(duì)一的關(guān)系,實(shí)現(xiàn)不同權(quán)限不同功能。登錄時(shí)系統(tǒng)須根據(jù)權(quán)限確定用戶功能,即每個(gè)用戶對(duì)應(yīng)一個(gè)權(quán)限,每個(gè)權(quán)限對(duì)應(yīng)多個(gè)用戶,每個(gè)權(quán)限對(duì)應(yīng)多個(gè)功能,每個(gè)功能對(duì)應(yīng)一個(gè)權(quán)限。

(4)教授表(teach)其主要字段有編號(hào)、用戶賬號(hào)、課程編號(hào)。

(5)課程表(class)其主要字段有課程編號(hào)、課程名稱、用戶表、教授表。課程表三表實(shí)現(xiàn)用戶分班管理的結(jié)構(gòu)。系統(tǒng)須根據(jù)班級(jí)管理用戶信息,每個(gè)用戶對(duì)應(yīng)一個(gè)班級(jí),教師教授多個(gè)班級(jí),每個(gè)班級(jí)對(duì)應(yīng)多個(gè)用戶。

(6)題目表(title)其主要字段有編號(hào)、用戶賬號(hào)、課程名稱、測(cè)試題目、測(cè)試時(shí)間、截止時(shí)間、發(fā)布人。

(7)測(cè)試表(test)其主要字段有題號(hào)、題目?jī)?nèi)容、a選項(xiàng)、b選項(xiàng)、c選項(xiàng)、d選項(xiàng)、試題編號(hào)。題目表與測(cè)試表之間存在一對(duì)多的關(guān)系,從而實(shí)現(xiàn)測(cè)試題成組出,測(cè)試功能測(cè)試題目對(duì)應(yīng)多個(gè)測(cè)試題,每個(gè)測(cè)試題對(duì)應(yīng)一個(gè)題目。

(8)任務(wù)表(task)其主要字段有編號(hào)、課程編號(hào)、任務(wù)號(hào)。

(9)任務(wù)內(nèi)容表(content)其主要字段有任務(wù)編號(hào)、任務(wù)內(nèi)容、題目編號(hào)。任務(wù)表與任務(wù)內(nèi)容表存在一對(duì)多的關(guān)系,任務(wù)編號(hào)作為連接兩個(gè)表的碼,從而實(shí)現(xiàn)成組管理。

數(shù)據(jù)庫表之間的關(guān)系圖如圖2所示。

4 系統(tǒng)的實(shí)現(xiàn)(System implementation)

系統(tǒng)各功能運(yùn)行時(shí)會(huì)依次連接Action、Service、Dao三種類型的類實(shí)現(xiàn)數(shù)據(jù)通信,這樣對(duì)于同一張表中的不同事務(wù)處理就需要每次先執(zhí)行相同的連接操作。基于這種操作,設(shè)計(jì)BaseXXX抽象類,將重復(fù)代碼放入抽象類中,進(jìn)行自定義基礎(chǔ)通用類DAO、Service為BaseDAO、BaseService,從而在運(yùn)行時(shí)只需繼承這些抽象類便可實(shí)現(xiàn)數(shù)據(jù)通信。同時(shí)對(duì)于不同表所執(zhí)行的增刪改查時(shí),設(shè)計(jì)通用DAO組件,只編寫一個(gè)DAO工具類就可完成對(duì)所有表的增刪改查處理。通過反射和泛型技術(shù)使系統(tǒng)各模塊功能都只需調(diào)用上述定義的函數(shù)就可實(shí)現(xiàn)。另外自定義攔截器LoginInterceptor,實(shí)現(xiàn)未登錄用戶不能訪問Web-INF下所有頁面和除登錄之外的其他Action,并用攔截器傳遞錯(cuò)誤信息。系統(tǒng)各功能模塊設(shè)計(jì)包括如下:

(1)用戶登錄功能實(shí)現(xiàn)

登錄時(shí)并不是跳轉(zhuǎn)到不同界面,而是通過Ajax異步加載動(dòng)態(tài)加載每種用戶的功能部分,將數(shù)據(jù)庫中根據(jù)權(quán)限存儲(chǔ)好的功能表抽象成對(duì)象userDao,并通過userDAO.findById方法取回?cái)?shù)據(jù),再將數(shù)據(jù)壓入值棧中以json輸出,將得到的字符串賦值到利用zTree工具生成的樹中,實(shí)現(xiàn)動(dòng)態(tài)加載菜單的效果,減輕了系統(tǒng)接收請(qǐng)求的負(fù)擔(dān),增加了加載頁面的效率。

(2)學(xué)生端功能實(shí)現(xiàn)

填寫實(shí)踐報(bào)告:學(xué)生根據(jù)提供的文本框及提示進(jìn)行填寫,最后提交到數(shù)據(jù)庫中,并根據(jù)填寫信息自動(dòng)生成實(shí)驗(yàn)報(bào)告文檔。學(xué)生填寫的信息通過public void save保存到數(shù)據(jù)庫中。endprint

簽到:將簽到表抽象為對(duì)象userDAO.findById,對(duì)用戶表的簽到信息進(jìn)行修改和存儲(chǔ)。

在線測(cè)試:學(xué)生可在該界面對(duì)教師下發(fā)的任務(wù)進(jìn)行回答,并由教師給出相關(guān)分?jǐn)?shù)。該功能的實(shí)現(xiàn)與菜單功能基本類似,將測(cè)試題信息抽象為對(duì)象,再通過自定義函數(shù)對(duì)數(shù)據(jù)進(jìn)行操作,將從數(shù)據(jù)庫中找回的數(shù)據(jù)存儲(chǔ)為L(zhǎng)ist,壓入值棧,轉(zhuǎn)換為json字符串,然后在前端對(duì)字符串進(jìn)行處理,從而實(shí)現(xiàn)在線測(cè)試題的顯示。

成績(jī)查詢:通過數(shù)據(jù)庫查詢函數(shù)userDAO.findById,返回成績(jī)信息并顯示到前端頁面上。

學(xué)生端運(yùn)行界面如圖3所示。

(3)教師端功能實(shí)現(xiàn)

發(fā)布課程任務(wù):該功能將填寫的任務(wù)信息通過save方法存入數(shù)據(jù)庫中。在學(xué)生端進(jìn)行獲取顯示,實(shí)現(xiàn)發(fā)布任務(wù)的效果。

發(fā)布在線測(cè)試:教師可對(duì)學(xué)生端的測(cè)試內(nèi)容進(jìn)行修改及發(fā)布。與發(fā)布課程任務(wù)功能原理相同。

成績(jī)?cè)u(píng)判:教師可查看到學(xué)生對(duì)在線測(cè)試做出的答案,給出成績(jī)的評(píng)判并打分。將成績(jī)直接存入用戶表中對(duì)應(yīng)id的成績(jī)信息中。

查看簽到:教師可看到所有人的簽到信息及簽到時(shí)間,將數(shù)據(jù)庫表中簽到標(biāo)記為“1”的信息取回屏顯示,通過userDAO.findByNameQuery方法實(shí)現(xiàn)。

下載報(bào)告:教師可下載學(xué)生上傳的實(shí)踐報(bào)告。通過configuration.setClassForTemplateLoading方法加載文檔模板,然后將存儲(chǔ)的數(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模板引擎對(duì)已定義好的模板進(jìn)行替換修改,從而實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告的自動(dòng)生成和下載上傳。

該功能基于Freemaker模板引擎,將編寫好的實(shí)踐報(bào)告存儲(chǔ)為.flt,通過setClassForTemplateLoading方法加載文檔模板,然后將存儲(chǔ)的數(shù)據(jù)裝載到定義出的map中,通過Freemaker技術(shù)編寫工具類對(duì)文件里的標(biāo)記位置如${velue}進(jìn)行替換,將獲取來的數(shù)據(jù)存儲(chǔ)在定義好的鍵值對(duì)map中。最終將修改后的.flt文件以.doc文檔格式生成并下載到根目錄。

5 結(jié)論(Conclusion)

系統(tǒng)針對(duì)高校實(shí)踐課程的特點(diǎn)和管理中的實(shí)際需要而設(shè)計(jì),能夠有效地實(shí)現(xiàn)課程管理的信息化,減輕老師的工作負(fù)擔(dān),高效率、規(guī)范化地管理大量的學(xué)生程序設(shè)計(jì)課程信息,并避免人為操作的錯(cuò)誤和不規(guī)范行為。系統(tǒng)使用目前較成熟的開發(fā)工具及框架,使其對(duì)后期維護(hù)及其繼續(xù)開發(fā)都提供了便利的條件。利用Ajax動(dòng)態(tài)加載菜單是一種新的實(shí)現(xiàn)用戶權(quán)限登錄的方式,其能有效地提高程序運(yùn)行的效率,減少了響應(yīng)時(shí)間。在實(shí)踐報(bào)告模板方面,利用Freemaker直接對(duì)模板進(jìn)行修改,避免了傳統(tǒng)技術(shù)上利用各種插件進(jìn)行Word文件生成所帶來的使用上的不便,從實(shí)用性和功能的完善上都有了不小的提升。該系統(tǒng)實(shí)現(xiàn)的自動(dòng)生成實(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] 李剛.輕量級(jí)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í)與技術(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è)級(jí)Web應(yīng)用開發(fā)[J].工礦自動(dòng)化,2013(02):24-26.

[9] Paul DuBois.MySQL[M].USA:Addison-Wesley Educational Publishers,2013:609-695.

作者簡(jiǎn)介:

楊佳績(jī)(1997-),男,本科生.研究領(lǐng)域:軟件開發(fā).

孟艷紅(1973-),女,碩士,講師.研究領(lǐng)域:計(jì)算機(jī)網(wǎng)絡(luò)與信息安全技術(shù).endprint

猜你喜歡
模板數(shù)據(jù)庫測(cè)試
幽默大測(cè)試
“攝問”測(cè)試
“攝問”測(cè)試
“攝問”測(cè)試
鋁模板在高層建筑施工中的應(yīng)用
城市綜改 可推廣的模板較少
辉县市| 固阳县| 德昌县| 上杭县| 博白县| 酒泉市| 昭苏县| 洛隆县| 社会| 武隆县| 余姚市| 华蓥市| 华亭县| 无为县| 静安区| 徐州市| 安吉县| 望奎县| 肥乡县| 鸡泽县| 盐源县| 砀山县| 万盛区| 景洪市| 南安市| 清原| 灵山县| 阳高县| 溆浦县| 五大连池市| 太仆寺旗| 乡城县| 绥棱县| 衡东县| 宜兴市| 临高县| 涞水县| 杭锦旗| 台安县| 忻州市| 南开区|