SCI核心期刊查詢網(wǎng)提供SCI、AHCI、SSCI、國內(nèi)核刊等期刊目錄查詢選刊服務(wù),助力上萬名科研人員成功評職晉升!

中文、英文期刊目錄查詢系統(tǒng)

快速了解學(xué)術(shù)期刊目錄級別、選刊、行業(yè)刊物等解決方案

基于SSM的自動(dòng)組卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

文章簡要:經(jīng)過詳細(xì)分析組卷過程中的各項(xiàng)約束條件,以試卷難度系數(shù)、知識點(diǎn)覆蓋率、題型、題量、總分為依據(jù),采用遺傳算法,設(shè)計(jì)并實(shí)現(xiàn)基于SSM框架的自動(dòng)組卷系統(tǒng)。以遺傳算法和FreeMarker模板技術(shù)為支撐,結(jié)合對科目、知識點(diǎn)、題型、試題模塊的管理,系統(tǒng)提供的自動(dòng)生

  經(jīng)過詳細(xì)分析組卷過程中的各項(xiàng)約束條件,以試卷難度系數(shù)、知識點(diǎn)覆蓋率、題型、題量、總分為依據(jù),采用遺傳算法,設(shè)計(jì)并實(shí)現(xiàn)基于SSM框架的自動(dòng)組卷系統(tǒng)。以遺傳算法和FreeMarker模板技術(shù)為支撐,結(jié)合對科目、知識點(diǎn)、題型、試題模塊的管理,系統(tǒng)提供的自動(dòng)生成Word格式試卷的功能,能有效解決教師在實(shí)際中組卷的需求。系統(tǒng)目前已經(jīng)部署并投入教學(xué)使用,并取得了良好的教學(xué)效果。

計(jì)算機(jī)科學(xué)與探索

  《計(jì)算機(jī)科學(xué)與探索》是由中國電子科技集團(tuán)公司主管、華北計(jì)算技術(shù)研究所主辦的國內(nèi)外公開發(fā)行的計(jì)算機(jī)學(xué)報(bào)級高級學(xué)術(shù)期刊,中國計(jì)算機(jī)學(xué)會(huì)會(huì)刊。報(bào)道計(jì)算機(jī)(硬件、軟件)各學(xué)科具有創(chuàng)新性、前沿性、導(dǎo)向性、開拓性及探索性的科研成果。內(nèi)容包括高性能計(jì)算機(jī),體系結(jié)構(gòu)、并行處理,計(jì)算機(jī)科學(xué)新理論、算法設(shè)計(jì)與分析、人工智能與模式識別、系統(tǒng)軟件,軟件工程、數(shù)據(jù)庫、計(jì)算機(jī)網(wǎng)絡(luò)、信息安全、計(jì)算機(jī)圖形學(xué)與計(jì)算機(jī)輔助設(shè)計(jì)、虛擬現(xiàn)實(shí)、多媒體技術(shù)及交叉學(xué)科的相互滲透和新理論的衍生等。榮獲工業(yè)和信息化部優(yōu)秀科技期刊;中國計(jì)算機(jī)學(xué)會(huì)優(yōu)秀會(huì)刊。

  1 背景

  隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,傳統(tǒng)人工組卷方式已經(jīng)落后,計(jì)算機(jī)組卷成為新型的教學(xué)輔助方式。計(jì)算機(jī)組卷是按照教學(xué)要求,由計(jì)算機(jī)自動(dòng)從試題庫中選擇試題,組成符合知識點(diǎn)分布、題型分布、難度分布、分?jǐn)?shù)分布要求的試卷[1]。計(jì)算機(jī)自動(dòng)組卷,組卷算法是關(guān)鍵。該文以難度系數(shù)、知識點(diǎn)覆蓋率、題型、題量、總分五個(gè)指標(biāo)為約束條件,采用遺傳算法進(jìn)行組卷。該系統(tǒng)主要實(shí)現(xiàn)了自動(dòng)組卷、手動(dòng)組卷和導(dǎo)出Word格式試卷功能,同時(shí)提供對科目、知識點(diǎn)、題型、題目、試卷的操作,幫助用戶有效便捷地管理組卷過程。

  2 自動(dòng)組卷系統(tǒng)的功能模塊設(shè)計(jì)

  根據(jù)實(shí)際使用情況,系統(tǒng)有管理員、教師、試題錄入人員三種用戶角色,不同的用戶角色對應(yīng)不同的功能權(quán)限。經(jīng)過分析用戶組卷以及用戶使用系統(tǒng)的流程,用戶的行為主要有:管理科目、知識點(diǎn)、題型、試題信息;管理試卷信息、自動(dòng)生成試卷、手動(dòng)生成試卷、導(dǎo)出Word格式試卷;管理員、教師管理下屬用戶;管理員管理系統(tǒng)信息、公告信息;用戶管理個(gè)人信息。根據(jù)以上分析,該系統(tǒng)功能結(jié)構(gòu)如圖1所示。

  3 基于SSM架構(gòu)的系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)

  3.1 關(guān)鍵技術(shù)及作用

  SSM是Spring、SpringMVC、MyBatis三大框架的簡稱。作為目前較為流行的Web框架,SSM框架有許多優(yōu)良的特性,使其成為當(dāng)前輕量級Web應(yīng)用領(lǐng)域最優(yōu)秀的框架組合之一。

  Spring是應(yīng)用于設(shè)計(jì)層面的框架。它不解決開發(fā)過程中具體的功能點(diǎn),而從系統(tǒng)設(shè)計(jì)層面出發(fā),解決代碼的耦合問題。Spring在系統(tǒng)中的主要作用有:1)提供容器功能,管理Bean的生命周期,整合SpringMVC和 MyBatis框架[2];2)通過依賴注入,管理代碼間的依賴關(guān)系;3)通過AOP切面,獨(dú)立管理事務(wù)、日志功能;4)整合EhCache緩存框架管理緩存;5)整合dbcp數(shù)據(jù)庫連接池管理數(shù)據(jù)庫連接。

  SpringMVC是Spring框架基于MVC設(shè)計(jì)模型的用于構(gòu)建Web應(yīng)用程序的一個(gè)模塊[3],主要作用有:1)將請求映射到處理器;2)輔助實(shí)現(xiàn)上傳文件功能;3)整合Hibernate Validator驗(yàn)證用戶輸入合法性;4)解析并渲染視圖,最終返回響應(yīng)頁面。

  MyBatis是一個(gè)基于Java的數(shù)據(jù)持久層框架[4],實(shí)現(xiàn)了對數(shù)據(jù)庫中數(shù)據(jù)的CRUD操作。

  MyBatis通過XML配置文件或者Java程序獲得連接數(shù)據(jù)庫的SqlSession對象,該系統(tǒng)采用Java程序形式,將其與Spring框架整合開發(fā)。其中,最重要的是mapper映射器,mapper映射器中最主要的是SQL映射語句。這些映射語句以注解或者SQL映射文件的形式存在,通過select、insert、update、delete等元素,執(zhí)行編寫的SQL語句。

  3.2 體系結(jié)構(gòu)設(shè)計(jì)

  該系統(tǒng)采用分層式體系結(jié)構(gòu),分為View視圖層、Controller控制層、Service服務(wù)層、Dao數(shù)據(jù)持久層、Model模型層。下文結(jié)合系統(tǒng)中自動(dòng)生成試卷功能的實(shí)現(xiàn),展示架構(gòu)中各個(gè)層的任務(wù)與功能。

  3.2.1 View視圖層

  View視圖層采用JSP,JQuery,BootStrap技術(shù)。BootStrap框架用來搭建靜態(tài)頁面;JQuery負(fù)責(zé)發(fā)送AJAX請求,獲得后臺數(shù)據(jù)并將其渲染進(jìn)頁面;JSP技術(shù)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁效果。在自動(dòng)生成試卷頁面中,提供試卷標(biāo)題、難度系數(shù)、題型個(gè)數(shù)、題型分?jǐn)?shù)、題型順序供用戶設(shè)置,并將其作為自動(dòng)組卷功能的入?yún),頁面效果如圖2所示。本頁面在以下3個(gè)方面做出優(yōu)化:1)在頁面中多處使用AJAX異步交互技術(shù),刷新局部數(shù)據(jù)時(shí),不用刷新整個(gè)頁面;2)根據(jù)數(shù)據(jù)庫中已有的題目數(shù)量,限制用戶在一定范圍內(nèi)選擇,保證了執(zhí)行遺傳算法時(shí)題目的充足性;3)用戶點(diǎn)擊生成試卷按鈕時(shí),匯總呈現(xiàn)所選擇的信息,經(jīng)過二次確認(rèn)后再發(fā)起自動(dòng)生成試卷請求。

  3.2.2 Controller控制層

  從View層發(fā)起的自動(dòng)生成試卷請求:testPaper/generatePaperAuto,會(huì)被web.xml中定義的servlet攔截,并將請求交給SpringMVC框架中的核心處理器DispatcherServlet。核心處理器請求HandlerMapping映射器,返回Handler對象,再請求HandlerAdapter適配器,找到控制類中的方法。映射關(guān)系通過注解在控制類中的方法上配置,注解如下:

  @RequestMapping(value="/testPaper/generatePaperAuto",method=RequestMethod.POST)

  組卷控制類中的自動(dòng)組卷方法負(fù)責(zé)處理自動(dòng)組卷功能的業(yè)務(wù)流程。業(yè)務(wù)處理流程如下:

  1)得到前臺用戶選擇的科目Id、知識點(diǎn)列表、題型列表,根據(jù)這些條件查找試題,組成題庫:questionDB=questionService.getQues(sId,kPList,qTList);

  2)根據(jù)試卷id、總分、難度系數(shù)、知識點(diǎn)列表,題型列表初始化用戶期望試卷:expectedExam=new TempExam(eId,totalScore,paperDiffLev,kpsSet,qtList);

  3)將以上方法返回的參數(shù)questionDB、expectedExam,作為遺傳算法的入?yún),進(jìn)行組卷:resultExam=testPaperServcie.geneticAlgorithm(questionsDB,expectedExamA);

  4)將生成的試卷信息存入數(shù)據(jù)庫:examService.examInToDB(resultExam);

  5)將數(shù)據(jù)庫中的試卷信息導(dǎo)出成Word格式試卷:examService.exportWord(eId);

  6)返回試卷生成成功信息

  可以看出,控制層只是調(diào)用Service層中的方法,而沒有方法的具體實(shí)現(xiàn)。Service服務(wù)層對象通過@Autowired注解,被注入控制器類中,這避免了實(shí)例化帶來的代碼耦合問題。

  3.2.3 Service服務(wù)層

  Service服務(wù)層分為Service接口與ServiceImpl實(shí)現(xiàn)類,控制層直接調(diào)用Service接口但不用關(guān)心此接口的具體實(shí)現(xiàn)。這樣的分離隱藏了代碼的實(shí)現(xiàn)細(xì)節(jié),具有封裝性、高內(nèi)聚性的特點(diǎn)。Spring框架通過@Service注解將ServiceImpl注冊成服務(wù)類,存放于Spring容器中,供控制類調(diào)用。

  以ExamService中插入試卷方法的具體實(shí)現(xiàn)為例:插入試卷信息,需要向數(shù)據(jù)庫中exam、exam_question、exam_questiontype三張表中插入相應(yīng)數(shù)據(jù),考慮到數(shù)據(jù)一致性的問題,使用Spring中的@Transaction注解,實(shí)現(xiàn)對插入試卷信息功能的事務(wù)管理。向數(shù)據(jù)庫中插入數(shù)據(jù)的方法在Dao層中實(shí)現(xiàn),因此ExamService需調(diào)用Dao層中examMapper對象的insert方法,Dao層的對象實(shí)例同樣通過@Autowired注解注入ServiceImpl類中。

  3.2.4 Dao數(shù)據(jù)訪問層

  數(shù)據(jù)訪問層主要對數(shù)據(jù)庫進(jìn)行操作,并將處理結(jié)果封裝成實(shí)體對象返回給服務(wù)層[5]。數(shù)據(jù)訪問層采用MyBatis框架,通過Mapper.xml映射文件中的SQL語句,對數(shù)據(jù)庫進(jìn)行基本的 CRUD操作。通過在Spring配置文件中聲明Dao層所在的包名稱,Spring容器實(shí)現(xiàn)對Dao層中的Mapper接口以及Mapper映射文件的管理。Mapper接口與Mapper.xml映射文件一一對應(yīng),以方法名為id所對應(yīng)的配置內(nèi)容就是操作數(shù)據(jù)庫的SQL語句。例如examMapper接口中的insert(Exam exam)方法,在examMappper.xml映射文件中,有以下映射語句與其對應(yīng): insert sql

  3.2.5 Model模型層

  模型層中存放的是與數(shù)據(jù)庫中表相對應(yīng)的POJO(Plan Ordinary Java Object),表中的字段對應(yīng)模型中的成員變量。模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù),除此之外,層與層之間的數(shù)據(jù)傳輸也大量使用模型對象。

  4 系統(tǒng)核心功能的實(shí)現(xiàn)

  該系統(tǒng)的核心功能有:自動(dòng)、手動(dòng)生成試卷、導(dǎo)出Word格式試卷。其他諸如管理科目、知識點(diǎn)、題型、題目的功能都是為這兩個(gè)功能提供服務(wù)。

  4.1 遺傳算法實(shí)現(xiàn)自動(dòng)組卷功能

  遺傳算法是模擬達(dá)爾文生物進(jìn)化論,從而得到問題最優(yōu)解的算法。傳統(tǒng)遺傳算法容易陷入局部極值,出現(xiàn)過成熟的情況[6]。該系統(tǒng)針對組卷這一實(shí)際場景進(jìn)行調(diào)參優(yōu)化,主要體現(xiàn)在:對題目采取實(shí)數(shù)編碼、對試卷采取分段實(shí)數(shù)編碼、有條件產(chǎn)生初始種群、變異算子的有效選擇。算法關(guān)鍵步驟如下所示:

  1)設(shè)計(jì)基因編碼:傳統(tǒng)的遺傳算法編碼使用二進(jìn)制編碼,即用一串二進(jìn)制數(shù)表示每個(gè)基因。該系統(tǒng)中改進(jìn)遺傳算法,采用實(shí)數(shù)編碼,用一個(gè)唯一實(shí)數(shù)表示每道題目。

  2)初始種群的設(shè)計(jì)與實(shí)現(xiàn):該系統(tǒng)在一定條件下產(chǎn)生種群。遺傳算法的實(shí)現(xiàn)封裝在geneticAlgorithm方法中,方法接受兩個(gè)參數(shù):questionDB題庫、expectExam期望試卷。產(chǎn)生種群操作,便是按照用戶期望的試卷信息,在滿足總分以及各題型數(shù)目的條件下,從questionDB中隨機(jī)選擇題目,形成初始種群。

  3)設(shè)計(jì)適應(yīng)度函數(shù):適應(yīng)度函數(shù)用來評價(jià)試卷個(gè)體的質(zhì)量。適應(yīng)度用浮點(diǎn)數(shù)表示,適應(yīng)度值越大,對環(huán)境的適應(yīng)能力越強(qiáng),被選擇繁殖后代的幾率越大[7]。因?yàn)樵诋a(chǎn)生初始種群時(shí)已經(jīng)考慮過題型、題量、試卷總分,因此現(xiàn)在只需要考慮試卷難度系數(shù)以及知識點(diǎn)覆蓋率。題目的難易等級[8]設(shè)計(jì)為5級:很容易、容易、中等、困難、很困難,分別用5個(gè)0-1的小數(shù)表示。試卷難度系數(shù)P=第i題的難易等級值×分值/總分。知識點(diǎn)覆蓋率R=試卷中已包含的知識點(diǎn)數(shù)M/用戶期望包含的知識點(diǎn)個(gè)數(shù)N[9]。適應(yīng)度與知識點(diǎn)覆蓋率成正比;與試卷難度系數(shù)和用戶期望的難度系數(shù)之差的絕對值成反比,適應(yīng)度函數(shù)如下所示:

  [f=1-1-R*f1-EP-p*f2]

  其中f1和f2分別代表試卷知識點(diǎn)覆蓋率的權(quán)重以及試卷難度系數(shù)的權(quán)重,EP代表用戶期望的適應(yīng)度。

  4)算子的設(shè)計(jì)與實(shí)現(xiàn):遺傳算法共有選擇、交叉、變異三種算子。選擇算子的作用是從當(dāng)前群體中選出優(yōu)良個(gè)體,使它們有機(jī)會(huì)作為父代,產(chǎn)生后代個(gè)體[10]。該系統(tǒng)使用輪盤賭算法挑選試題,適應(yīng)度越大的個(gè)體被選中的概率越大。交叉是按照題型對兩套試卷中的題目進(jìn)行交換操作,整張?jiān)嚲砑幢憩F(xiàn)為分段多點(diǎn)交叉。變異操作是隨機(jī)對試卷中的一道題目進(jìn)行變異,系統(tǒng)改進(jìn)變異后算子的選擇操作:變異后的題目要求和原題目題型相同、題目id不同、知識點(diǎn)屬于用戶期望知識點(diǎn)集合與試卷中不存在知識點(diǎn)集合的交集。

  遺傳算法實(shí)現(xiàn)偽代碼如下:

  geneticAlgorithms(questionDB,expectExam)//入?yún)轭}庫和期望試卷

  count=1;//迭代計(jì)數(shù)器

  initMass(30,expectedExam,questionDB);//初始種群,種群個(gè)體數(shù)目為30

  while(種群中個(gè)體適應(yīng)度未達(dá)到期望適應(yīng)度))

  count達(dá)到最大迭代次數(shù)無結(jié)果,退出

  種群數(shù)量<=1,退出

  select(unitList,20);//選擇,選擇后的種群大小為20

  cross(unitList,15,expectedExam);//交叉,交叉后的種群大小為15

  if(種群中有個(gè)體適應(yīng)度達(dá)到期望適應(yīng)度) break;

  change(unitList,questionDB,expectedExam);//變異

  4.2 導(dǎo)出Word格式試卷功能的設(shè)計(jì)與實(shí)現(xiàn)

  該系統(tǒng)采用FreeMaker模板技術(shù),實(shí)現(xiàn)生成Word格式試卷的功能,該功能實(shí)現(xiàn)流程如下:1)制作Word模板,將需要改變的地方用占位符表述,保存為ftl(FreeMarker模板文件)類型文件;2)查詢所需數(shù)據(jù);3)處理包含圖片的試題信息:在ftl文件編碼時(shí),需要將圖片信息以base64編碼存儲在ftl文件中,文件末尾規(guī)定著各種資源的引用位置,而實(shí)際展示圖片的body部分只是做一個(gè)引用。因此,ftl文件需要改動(dòng)三個(gè)地方:base64編碼部分${imagesBase64},聲明資源引用位置 ${imagesXmlHrefString},body中的引用代碼。處理圖片信息,主要就是處理以上三個(gè)地方;4)用數(shù)據(jù)替換占位符,并寫入Word模板文件中。

  5 結(jié)束語

  該文描述了以遺傳算法為核心的基于SSM框架的自動(dòng)組卷系統(tǒng)的設(shè)計(jì)以及實(shí)現(xiàn)過程。通過一系列功能模塊,系統(tǒng)實(shí)現(xiàn)了對組卷過程的有效管理。目前該系統(tǒng)各模塊功能運(yùn)行良好,但是關(guān)于試題難易等級的設(shè)置,未有充足的反饋信息來支撐。因此,試題反饋模塊以及進(jìn)一步的組卷算法優(yōu)化是組卷系統(tǒng)未來需要考慮的。

  參考文獻(xiàn):

  [1] 黃國政. 基于遺傳算法的自動(dòng)組卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 南京: 南京理工大學(xué), 2008.

  [2] 李洋. SSM框架在Web應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2016, 26(12): 190-194.

  [3] 鄒紅霆. 基于SSM框架的Web系統(tǒng)研究與應(yīng)用[J]. 湖南理工學(xué)院學(xué)報(bào): 自然科學(xué)版, 2017, 30(1): 39-43.

  [4] 任曉鵬, 趙文兵, 張春平. 基于框架的Web系統(tǒng)開發(fā)研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2010, 31(4): 772-775.

  [5] 魏書寒. 基于SSM框架的圖書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 工業(yè)控制計(jì)算機(jī), 2017, 30(7): 133-134.

  [6] 李勇, 曹廣益, 朱新堅(jiān). 一種基于復(fù)合交叉的實(shí)數(shù)編碼遺傳算法[J]. 計(jì)算機(jī)仿真, 2006(6).

  [7] 于淼, 王日宏. 改進(jìn)遺傳算法在自動(dòng)組卷中的應(yīng)用研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2008(25): 236-238.

  [8] 柳浪濤, 谷林. 自動(dòng)組卷系統(tǒng)試題難度和知識點(diǎn)覆蓋控制算法[J]. 西安工程大學(xué)學(xué)報(bào), 2015, 29(3): 320-324.

  [9] 黃艷峰, 陳濤. 基于改進(jìn)遺傳算法的智能組卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 煤炭技術(shù), 2009, 28(10): 150-151.

  [10] 夏愛月. 基于遺傳算法的自動(dòng)組卷系統(tǒng)研究與實(shí)現(xiàn)[J]. 電腦編程技巧與維護(hù), 2009(2): 94-95.

SCI期刊