版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
四川師范大學(xué)成全部學(xué)院本科畢業(yè)設(shè)計(jì)試卷自動(dòng)生成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)學(xué)生姓名李錦超學(xué)號所在學(xué)院通信工程學(xué)院專業(yè)名稱通信工程班級級寬帶通信2班指導(dǎo)老師石彬四川師范大學(xué)成全部學(xué)院二○一六年五月試卷自動(dòng)生成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)學(xué)生:李錦超指導(dǎo)老師:石彬內(nèi)容摘要:試卷自動(dòng)生成系統(tǒng),即用戶經(jīng)過自定義選擇設(shè)置試題類型、難度、分?jǐn)?shù)、時(shí)間等多個(gè)原因自動(dòng)生成考試試題并給對錯(cuò)驗(yàn)證。伴隨互聯(lián)網(wǎng)絡(luò)飛速發(fā)展、網(wǎng)絡(luò)教育不停普及和提升,傳統(tǒng)出題考試方法已經(jīng)不能滿足全部需求,一概而論不“因材施教”出題方法不利于考評不一樣類型學(xué)生,也不滿足現(xiàn)代教育發(fā)展需要。所以,現(xiàn)在已經(jīng)逐步開始流行自定義、有難度、時(shí)間、類型選擇控制出題方法來迎合目前社會(huì)考試所需。試卷自動(dòng)生成系統(tǒng)誕生油然而生。該設(shè)計(jì)關(guān)鍵目標(biāo)是幫助出題者和試題訓(xùn)練者能夠依據(jù)不一樣人群自定義設(shè)置難度、類型生成考試試題系統(tǒng)。系統(tǒng)為用戶提供用戶登錄、開始試卷定制、選擇題型、選擇所占分?jǐn)?shù)百分比、最高分?jǐn)?shù)設(shè)定、考試時(shí)間限制設(shè)定、考試難度選擇、生成試卷和答案查看等功效,將用戶需要“因材施教”、“分門別類”地提供,由用戶自定義選擇,從而達(dá)成針對不一樣層次考生訓(xùn)練和考驗(yàn)。同時(shí),也方便了出題者逐一進(jìn)行試卷試題選擇,省去了出題者挨個(gè)設(shè)定過程,既提升了出題速度,也提升了出題整體質(zhì)量。此次設(shè)計(jì)關(guān)鍵是以服務(wù)出題者、試題訓(xùn)練人等人群方便快速地完成試題結(jié)構(gòu)并提升本身所需檢測為目標(biāo)試卷自動(dòng)生成系統(tǒng)。整體設(shè)計(jì)使用是JAVA語言開發(fā)B/S(瀏覽器/服務(wù)器)應(yīng)用系統(tǒng)。用戶登錄該系統(tǒng)后能夠依據(jù)自己能力選擇生成題目標(biāo)難度,依據(jù)自己弱項(xiàng)針對題目類型進(jìn)行生成試題,亦可依據(jù)自己熟練度選擇答題時(shí)間。本系統(tǒng)代碼框架采取了現(xiàn)在比較流行SSH(Spring+Struts+Hibernate)進(jìn)行設(shè)計(jì),在功效模型實(shí)現(xiàn)和頁面處理方面嚴(yán)格遵從了MVC(Model,View,Controller)思想體系。配合Javascript和Xml對頁面提取處理。數(shù)據(jù)庫方面采取了中小型Mysql數(shù)據(jù)庫進(jìn)行處理,數(shù)據(jù)庫工具使用了當(dāng)下主流navicat進(jìn)行操作,以減輕代碼量負(fù)擔(dān)和方便代碼編寫和功效實(shí)現(xiàn)。關(guān)鍵詞:試卷自動(dòng)生成B/SJavaMySQL數(shù)據(jù)庫DesignandimplementationofautomatictestpapergenerationsystemAbstract:Automatictestpapergenerationsystem,thatis,bytheusertocustomizetheselectionofthetypeoftestquestions,difficulty,scores,timeandotherfactorsautomaticallygeneratetestquestionsandgivethewrongverification.WiththerapiddevelopmentofInternet,networkeducationpopularizationandpromotion,thetraditionalwayofexaminationquestionshasbeenunabletomeetalltheneedsofgeneralizationsdonotteachstudentsinaccordanceoftheiraptitudequestionsthewayisnotconducivetotheassessmentofdifferenttypesofstudents,alsodonotmeetthedevelopmentneedofthemoderneducation.Therefore,nowwehaveassemblypopularcustom,difficulty,time,typeselectioncontrolsetsthetopicthewaytocatertothesocialexaminationrequired.Automaticgenerationsystemoftestpaperbirtharisespontaneously.Themainpurposeofthedesignisthehelptopicandquestionsoftrainingcanbesetdifficulty,typeofgeneratingexaminationpaperssystemaccordingtothecustomofdifferentgroupsofpeople.Systemfortheuserprovidesuserloginandstartcustomizedpaper,multiple-choice,choosetheratio,thehighestscoreset,theexaminationtimelimitset,choosethedifficultyoftheexam,testgenerationandcheckyouranswersandotherfunctions,theuserneedto"teachstudentsinaccordancewiththeiraptitude","subcategories"toprovide,selectedbytheuser,soastoachieveforcandidatesofdifferentlevelsoftrainingandtest.,butalsotofacilitatethequestionsonebyoneofpapersselected,eliminatingthetopicandsetonebyone,bothtoenhancethespeedofquestions,thetopicandalsoimprovesthequalityofthewhole.Thisdesignismainlybasedonservicequestions,questionsoftrainingpeopleandotherpeopleeasilyandquicklycompletetheteststructureandenhanceitstestpaperautogeneratingsystem.TheoveralldesignistheuseofJAVAlanguagedevelopmentB/S(Browser/server)applicationsystem.Aftertheuserloginthesystemcanaccordingtotheirabilitytoselectthedifficultyofthequestionsintheform,accordingtotheirweaknessesfortypesofquestionsweregeneratedquestions,canalsochoosetoanswerthequestionsofthetimeaccordingtotheirproficiency.ThecodeframeworkofthesystemusingthenowpopularSSH(Spring+struts+Hibernate)isdesigned.ThefunctionmodelandtherealizationofpageprocessingstrictlycomplywiththeMVC(model,viewandcontroller)systemofthought.WithJavascriptandXmlonpageextraction.DatabaseusedinsmallMysqldatabaseprocessing,databasetoolsusedinthecurrentmainstreamNavicatoperation,inordertoreducetheburdenofwritingcodeandconvenientcodeandfunctionrealization.Keywords:AutomatictestpapergenerationB/SJavaMySQLdatabas目錄序言 11系統(tǒng)功效介紹和分析 11.1用戶登錄功效 11.2試卷生成及試題判定功效 21.3題庫維護(hù)功效 32數(shù)據(jù)庫設(shè)計(jì)和開發(fā) 52.1數(shù)據(jù)庫基礎(chǔ) 52.2數(shù)據(jù)庫設(shè)計(jì)需求 62.2.1數(shù)據(jù)庫設(shè)計(jì)思緒 62.2.2數(shù)據(jù)庫表和字段設(shè)置 73試卷自動(dòng)生成系統(tǒng)步驟 83.1物理結(jié)構(gòu)步驟 83.2文件結(jié)構(gòu)步驟展示 114界面設(shè)計(jì) 124.1界面步驟展示 124.2界面設(shè)計(jì)示意圖 135系統(tǒng)算法設(shè)計(jì) 195.1組卷方法設(shè)計(jì) 195.1.1隨機(jī)法 195.1.2回朔法 205.1.3遺傳算法 215.2試題難度算法 215.3試題分?jǐn)?shù)算法 215.4系統(tǒng)算法總結(jié) 226關(guān)鍵功效代碼展示 226.1登錄功效代碼展示 226.1.1數(shù)據(jù)庫鏈接 226.1.2登錄功效 246.1.3關(guān)鍵功效模塊 276.2前端代碼展示 306.2.1主界面代碼 306.2.2圖片輪播代碼 317總結(jié) 32參考文件 34試卷自動(dòng)生成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)序言現(xiàn)代教育伴伴隨互聯(lián)網(wǎng)、自動(dòng)化發(fā)展而快速地進(jìn)行革新,傳統(tǒng)試卷考試已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足現(xiàn)在社會(huì)急促步伐,不僅如此,傳統(tǒng)試題考試設(shè)計(jì)相當(dāng)?shù)叵某鲱}者時(shí)間和精力,而且沒有針對性。這種方法已經(jīng)不能滿足現(xiàn)代考試緊湊步伐了。所以,能夠快速而且含有針對性、為用戶提供自定義難度、類型、時(shí)間選擇試卷自動(dòng)生成就顯得尤為關(guān)鍵了。試卷自動(dòng)生成系統(tǒng)油然而生。傳統(tǒng)試卷出題方法需要經(jīng)過人工進(jìn)行,出題者或使用者需要依據(jù)自己經(jīng)驗(yàn)進(jìn)行題目標(biāo)設(shè)置,這種方法往往需要人力對試題數(shù)據(jù)反復(fù)制訂和驗(yàn)算、對題目合理性進(jìn)行檢驗(yàn)等等。制訂題目標(biāo)難度梯度,以滿足不一樣層次學(xué)生反應(yīng)不一樣學(xué)習(xí)水平。出題者往往還需要將以往試題和將要出試題考點(diǎn)、難度進(jìn)行對比。由上訴需求能夠看出,傳統(tǒng)人工出題方法不僅沒有將互聯(lián)網(wǎng)聯(lián)動(dòng)優(yōu)勢利用起來,進(jìn)行題庫資源共享和使用,也使出題者浪費(fèi)了大量研究和設(shè)置試題時(shí)間?;ヂ?lián)網(wǎng)時(shí)代是個(gè)資源共享時(shí)代,現(xiàn)代教育也應(yīng)該和時(shí)俱進(jìn),對于優(yōu)異試題、適合學(xué)生做試題能夠進(jìn)行共享而且反復(fù)利用,而且也處理了出題者自我思索浪費(fèi)大量時(shí)間問題。此次設(shè)計(jì)數(shù)據(jù)庫能夠存放大量物聯(lián)網(wǎng)所提供各類試題需求,以滿足資源共享和互補(bǔ)互助需求。另外,該系統(tǒng)還提供了多個(gè)一鍵選擇功效方便用戶意見集成試卷。同時(shí),數(shù)據(jù)庫使用也使得針對不一樣用戶也額外地分配個(gè)人對題庫和試題編輯權(quán)限,用戶能夠自定義題目標(biāo)難度、類型、分?jǐn)?shù)等等,也能夠新增、刪除、查閱和編輯已經(jīng)有試題。愈加人性化是,用戶在完成試卷答題以后,系統(tǒng)會(huì)依據(jù)用戶等分情況給出提升或降低難度一鍵生成試卷選項(xiàng)。從整個(gè)試卷出題到打分結(jié)束,整個(gè)步驟不僅和龐大數(shù)據(jù)庫進(jìn)行了資源共享,也極大地提升了出題質(zhì)量和時(shí)間,可謂一舉多得!試卷自動(dòng)生成系統(tǒng)不停成熟將會(huì)逐步撼動(dòng)傳統(tǒng)出題和訓(xùn)練方法,伴隨試卷自動(dòng)生成系統(tǒng)不停完善和創(chuàng)新,用戶將取得愈加好體驗(yàn)。此次設(shè)計(jì)關(guān)鍵研究試卷自動(dòng)生成系統(tǒng)各項(xiàng)功效和相對傳統(tǒng)出題方法所帶來優(yōu)勢。1系統(tǒng)功效介紹和分析1.1用戶登錄功效每一個(gè)用戶全部會(huì)有自己對題庫和試題不一樣需求,我們提供了Mysql數(shù)據(jù)庫為每個(gè)人分配了單獨(dú)IP而且開辟了獨(dú)立空間。用戶在輸入帳號密碼登錄以后能夠自由地依據(jù)需要管理自己題庫和試題。用戶登錄系統(tǒng)設(shè)置很好地域分了不一樣使用人群對不一樣環(huán)境試題需求,也方便了使用者個(gè)人對特殊體型和試題編輯和修改操作。1.2試卷生成及試題判定功效本試卷自動(dòng)生成系統(tǒng)為用戶提供了多項(xiàng)一鍵生成功效,用戶能夠依據(jù)自己需要對生成試題類型、分?jǐn)?shù)、難度、時(shí)間、所占百分比等等做出對應(yīng)設(shè)置從而生成出對應(yīng)試題。依據(jù)用戶作答給出成績而且提供提升難度和降低難度一鍵生成按鈕方便用戶依據(jù)實(shí)際情況調(diào)整試卷。而且用戶能夠依據(jù)自己需要,自定義增加、刪除、查閱和編輯自己題庫和試題。在用戶登錄該系統(tǒng)以后,用戶會(huì)來到一個(gè)中轉(zhuǎn)歡迎界面,用戶能夠選擇查看題庫對試題進(jìn)行操作,也能夠直接選擇在線答題系統(tǒng)對自己所需試題要求進(jìn)行設(shè)置而且一鍵生成。試題類型選擇生成一套試題首先得明確這套試題結(jié)構(gòu)組成,需要多個(gè)類型試題,每種試題、每道題所占分?jǐn)?shù)百分比全部決定著這套試卷合理性。本系統(tǒng)為用戶提供了現(xiàn)代考試最流行多個(gè)題目類型:選擇題、填空題、問答題。用戶能夠依據(jù)自己需求合理安排各類題目在整個(gè)試卷中所占數(shù)量和分?jǐn)?shù)百分比,比如單選題20道,每道1分;多選題10道,每道2分;填空題10道,每道2分,簡答題5道,分別為6分、8分、8分、10分,共100分。試題難度選擇作答難度設(shè)定關(guān)系這整套試卷出題質(zhì)量,怎樣合理地依據(jù)實(shí)際情況給出合適難度試題顯得尤為關(guān)鍵。本系統(tǒng)為每一道試題全部給出了一個(gè)難度系數(shù),數(shù)據(jù)庫會(huì)依據(jù)給定難度系數(shù)自動(dòng)為您提供您所需要難度系數(shù)試題供用戶選擇。難度系數(shù)設(shè)定在0-1之間,用戶只需設(shè)定不一樣類型題型難度系數(shù)系統(tǒng)即會(huì)自動(dòng)為該類型進(jìn)行題型分配。所以,用戶在設(shè)置難度系數(shù)時(shí)候只需要把握好整套試題難度梯度即可。另外。該系統(tǒng)還會(huì)依據(jù)用戶作答情況給出一鍵自動(dòng)降低難度和一鍵自動(dòng)提升難度試卷生成功效,很好地幫助用戶找到目前階段適合自己訓(xùn)練試題難度??荚嚂r(shí)間選擇不一樣試題難度依據(jù)出題者分配,在設(shè)置難度時(shí)候需要注意就是難度和答題時(shí)間合理結(jié)合,該系統(tǒng)提供了自定義答題時(shí)間設(shè)定,方便使用者依據(jù)自己綜合實(shí)力在不一樣階段設(shè)置需要完成試題時(shí)間。比如當(dāng)用戶第一次做時(shí)候能夠?qū)r(shí)間設(shè)置為兩個(gè)小時(shí),經(jīng)過一段時(shí)間訓(xùn)練,用戶一是能夠經(jīng)過提升難度來加強(qiáng)能力,同時(shí)也能夠選擇相同難度其它試題經(jīng)過減短作答時(shí)間方法來得到提升。本系統(tǒng)提供時(shí)間設(shè)定很好地滿足了用戶這點(diǎn)需求。總分?jǐn)?shù)設(shè)置用戶能夠依據(jù)試卷題量和考試需求自定義指定試卷總分?jǐn)?shù)以此配合題型所占分?jǐn)?shù)百分比,比如在高中學(xué)校應(yīng)用此系統(tǒng)自動(dòng)生成試題,理綜試卷根據(jù)傳統(tǒng)標(biāo)準(zhǔn)應(yīng)該設(shè)置300分為滿分;數(shù)學(xué)、英語和語文等學(xué)科應(yīng)根據(jù)150分給出。在初中或小學(xué)等其它環(huán)境中亦可給出120分或100分甚至80分滿分。當(dāng)然,分?jǐn)?shù)給定完全由用戶自定義,具體情況以實(shí)際需要為主。同時(shí)也方便使用者在單獨(dú)考試中能夠合理地分配分?jǐn)?shù)。生成試卷功效在完成了上訴試卷不一樣類型試題難度系數(shù)設(shè)定、考試總時(shí)間分配、考試總分?jǐn)?shù)設(shè)定以后,自動(dòng)生成試卷就顯得十分簡單了,用戶只需依據(jù)界面提醒一鍵生成即可從數(shù)據(jù)庫中隨機(jī)提取對應(yīng)數(shù)量而且符合條件(如類型和難度系數(shù))試題,開始答題以后,倒計(jì)時(shí)開始開啟。若作答完題以后用戶選擇了提升難度或降低難度,那么系統(tǒng)也會(huì)自動(dòng)依據(jù)目前試題難度系數(shù)做出判定,合適地降低或增加考試難度對數(shù)據(jù)庫進(jìn)行試題調(diào)取,再采取相同方法進(jìn)行試題自動(dòng)生成。試題判定功效當(dāng)用戶完成登錄選題生成試題而且作答以后,點(diǎn)擊提交試卷,系統(tǒng)會(huì)依據(jù)用戶作答情況結(jié)合數(shù)據(jù)庫答案對用戶作答進(jìn)行評分,用戶依據(jù)得分情況從而選擇是否增加難度或降低難度再次進(jìn)行作答訓(xùn)練。針對單選題、多選題、判定題、填空題,經(jīng)過正則處理過后Javascript能夠自動(dòng)忽略空格、空白字符等等干擾原因以確??瞻卓崭竦入娔X認(rèn)為操作帶來誤判。對于簡答題,數(shù)據(jù)庫會(huì)依據(jù)事先關(guān)鍵字提取去抓取用戶答案中關(guān)鍵字進(jìn)行對比,只要最關(guān)鍵關(guān)鍵字符出現(xiàn),基礎(chǔ)能夠判定該題得分。關(guān)鍵字回復(fù)正確率也決定了該用戶此題最終得分,經(jīng)過分割多個(gè)關(guān)鍵字以確保系統(tǒng)判定正確率,極大地降低了誤判,也滿足了自動(dòng)判定節(jié)省人力對比資源時(shí)間。1.3題庫維護(hù)功效用戶除了從數(shù)據(jù)庫中搜索、提取自動(dòng)生成出試題以外,有時(shí)候也需要將自己平時(shí)搜集部分優(yōu)異題目錄入題庫并設(shè)定難度系數(shù),增加題庫題目庫存方便下一次調(diào)用或自動(dòng)生成。另外,對于部分易錯(cuò)、難懂題目我們不需要講究題目內(nèi)容形式,只需要對其關(guān)鍵參數(shù)進(jìn)行修改即可重做以達(dá)成數(shù)次練習(xí)效果,這么既沒有脫離題目考察內(nèi)容本質(zhì),也節(jié)省了大量時(shí)間。當(dāng)然,對于部分用戶已經(jīng)完全掌握試題,用戶可能怕在下一次自動(dòng)生成試題中再次碰到從而降低了訓(xùn)練量并耽擱自己訓(xùn)練時(shí)間。所以需要將其刪掉。也有時(shí),用戶想要有針對性地訓(xùn)練,對于某種類型或自己常常犯錯(cuò)題進(jìn)行反復(fù)練習(xí),需要在茫茫題庫中快速查找到某一道題。綜上所訴,我們?yōu)樵撓到y(tǒng)設(shè)置了題庫試題增加、刪除、查閱和編輯功效,以方便用戶對題庫多種功效需求。以下為具體功效具體介紹:增加、刪除試題功效系統(tǒng)中每一道試題全部有且只有唯一一個(gè)ID作為主鍵,在不考慮恢復(fù)試題情況下,本系統(tǒng)采取了刪除數(shù)據(jù)庫ID字段方法直接對其數(shù)據(jù)進(jìn)行刪除和添加,刪除數(shù)據(jù)ID數(shù)不會(huì)被新數(shù)據(jù)ID所替換,數(shù)據(jù)ID會(huì)依次呈上升形式無限排列下去。經(jīng)過程序界面連接數(shù)據(jù)庫語言,增加采取Mysql增加語句insertintot_user(id,degree(難度),style(類型),content(內(nèi)容))values(xx,xx,xx,xx)來設(shè)置用戶自定義試題;刪除則采取Mysql刪除語句deletefromtablename(表名)wherexx=xxxandxxx=xxxorxxx=xxx數(shù)來進(jìn)行條件控制而且進(jìn)行數(shù)據(jù)庫刪除操作數(shù)據(jù)。當(dāng)然,數(shù)據(jù)庫初始化時(shí)候處理關(guān)鍵鍵和主鍵不能為空以外,其它用戶能夠選擇留空白,只需勾寫必需條件即可完成增加刪除功效。查閱試題功效查閱試題功效關(guān)鍵是為了方便使用者快速、直接地找到自己所需試題??焖偎阉麝P(guān)鍵字方法能夠?yàn)榍芭_或后臺來完成。使用后臺方法需要在數(shù)據(jù)庫當(dāng)中設(shè)置一個(gè)問題關(guān)鍵字字段,在其中錄入對應(yīng)關(guān)鍵字,然后對其搜索按鈕進(jìn)行處理進(jìn)行連接查詢數(shù)據(jù)庫得出符合結(jié)果試題。使用前臺方法需要將關(guān)鍵字全部讀取在指定文件當(dāng)中,經(jīng)過Javascript對其進(jìn)行代碼讀取,采取正則和ajax等方法將對應(yīng)關(guān)鍵字進(jìn)行提取,然后在對比input框中輸入數(shù)據(jù)從而得出符合條件試題。考慮到本系統(tǒng)采取了數(shù)據(jù)庫讀取方法,我們便能夠在數(shù)據(jù)庫模型搭建時(shí)候很好地估計(jì)所需要字段,方便了全部功效實(shí)現(xiàn)。所以本系統(tǒng)采取和后臺數(shù)據(jù)庫結(jié)合方法進(jìn)行查詢。采取Mysql查詢語句selectid(試題ID),stname(試題名稱),keyword(試題關(guān)鍵字)fromDB_name(表名)where(條件設(shè)置)degree(難度系數(shù))isnum(數(shù)值)方法在界面得出用戶所需要查找對應(yīng)內(nèi)容,當(dāng)然,select后面根具體需要展示出來字段能夠依據(jù)用戶需要在設(shè)計(jì)時(shí)候作出調(diào)整,我們也能夠全出查詢出來,只在界面展示用戶需要部分。Where后面跟條件當(dāng)然也能夠依據(jù)用戶需求來改變設(shè)置,用戶能夠使用多個(gè)條件進(jìn)行條件定義。最終滿足全部條件試題將會(huì)被展示出來,不然題庫中沒有符合該條件試題。編輯試題功效對于題庫編輯功效設(shè)定關(guān)鍵方便了用戶對指定試題特殊要求做維護(hù)和修改,經(jīng)過修改關(guān)鍵參數(shù)、內(nèi)容環(huán)境以達(dá)成一題多用、舉一反三。同時(shí)也方便了用戶糾正指出被忽略試題錯(cuò)誤。進(jìn)入試題編輯頁面進(jìn)行完編輯功效后點(diǎn)擊保留,程序?qū)?shí)施修改數(shù)據(jù)庫Mysql語句updatetablename(表名)set字段=xx,字段=xxwhere(條件設(shè)置)xxx=xxxandxxx=xxx從而保留修改內(nèi)容。題庫編輯功效實(shí)現(xiàn)幫助了用戶隨時(shí)隨地自定義地將試題修改成自己所需條件,對于不一樣用戶對同意試題難度了解定義、所花時(shí)間需要和出現(xiàn)頻率不一樣做了很好區(qū)分,每位用戶全部能夠結(jié)合自己實(shí)際情況進(jìn)行試題考評。2數(shù)據(jù)庫設(shè)計(jì)和開發(fā)2.1數(shù)據(jù)庫基礎(chǔ)在整個(gè)系統(tǒng)功效運(yùn)行步驟當(dāng)中,我們能夠很輕易地發(fā)覺一條貫穿整個(gè)系統(tǒng)“線”,那就是數(shù)據(jù)庫,不管是用戶登錄系統(tǒng),還是題目標(biāo)增加、刪除、查閱和編輯,再到試卷生成、試題保留全部離不開數(shù)據(jù)庫。那么接下來,我們就有必需對數(shù)據(jù)庫進(jìn)行部分基礎(chǔ)性質(zhì)講解。我們常說數(shù)據(jù)庫(Database)通俗地來講就是利用主機(jī)空間開辟一個(gè)虛擬對數(shù)據(jù)結(jié)構(gòu)進(jìn)行儲存、管理一個(gè)數(shù)據(jù)倉庫。數(shù)據(jù)庫最初誕生于1950年,最初只是用于儲存和管理部分關(guān)鍵數(shù)據(jù),發(fā)展至今,數(shù)據(jù)庫已經(jīng)得到了很廣泛利用,存放資源種類也變得越來越多個(gè)多樣。用戶能夠經(jīng)過不一樣類型代碼對數(shù)據(jù)庫進(jìn)行連接從而對數(shù)據(jù)進(jìn)行增加、刪除、查閱和修改、展示等等功效?,F(xiàn)在市面上常見數(shù)據(jù)庫有ORACLE(甲骨文)、DB2、SQLServer、Sybase、Informix、MySQL、VF、Access等等。不過通?;谙到y(tǒng)大小、開發(fā)速度、開源程度和成本考慮,在中小型系統(tǒng)或網(wǎng)站開發(fā)時(shí)候,我們往往選擇Mysql數(shù)據(jù)庫作為主流數(shù)據(jù)庫。Mysql功效未必是最強(qiáng)大一個(gè),它相對于ORACLE(甲骨文)、DB2等數(shù)據(jù)庫功效上來說還略差一截,但就其開源程度和傳輸著名度來說,Mysql因其卓越開發(fā)速度和可靠性在中小型系統(tǒng)開發(fā)當(dāng)中占據(jù)了不可或缺一席。數(shù)據(jù)庫廣泛利用使得市面上出現(xiàn)了很多數(shù)據(jù)庫編輯使用工具。比較流行有phpAdmin、Navicat、SQLyog、SequelPro、MicrosoftSQLServer等等。每一款數(shù)據(jù)庫管理軟件全部有自己優(yōu)劣勢,不管使用哪一款,目標(biāo)全部是為了簡化方便對數(shù)據(jù)庫管理和操作。phpAdmin是一款基于網(wǎng)頁Mysql開源管理器,它以界面簡單、功效齊全而深受廣大用戶喜愛。但本系統(tǒng)最終還是選擇了Navicat作為數(shù)據(jù)庫管理編輯軟件。Navicat是一款跨平臺(于Windows/Mac/Linux)管理數(shù)據(jù)工具,相對于頁面形式phpAdmin來說,Navicat在界面優(yōu)化和操作處理運(yùn)行速度上來說更勝一籌,同時(shí)也避免了數(shù)據(jù)庫軟件受到網(wǎng)頁瀏覽器影響情況。Navicat完全開源工作并不復(fù)雜,在網(wǎng)上能夠輕易地搜索到教程而且在5分鐘內(nèi)搞定。本套試卷自動(dòng)生成系統(tǒng)使用Mysql數(shù)據(jù)庫,Navicat數(shù)據(jù)庫管理工具進(jìn)行操作管理。2.2數(shù)據(jù)庫設(shè)計(jì)需求2.2.1數(shù)據(jù)庫設(shè)計(jì)思緒在程序制作初始,將數(shù)據(jù)庫所需要用到表一一羅列出來有利于幫助整個(gè)程序設(shè)計(jì)思緒和需求分析。本系統(tǒng)關(guān)鍵用到數(shù)據(jù)表有用戶表、選擇題型表、填空題型表、簡答題型表和部分備用和拓展功效表。用戶表關(guān)鍵用于不一樣用戶登錄進(jìn)行自定義題庫操作時(shí)候?qū)γ總€(gè)用戶區(qū)分和數(shù)據(jù)保留;選擇、填空、簡答題型表關(guān)鍵用于用戶對試題修改和提取和試卷自動(dòng)生成功效使用。其它部分表(可選)可用于數(shù)據(jù)備份和恢復(fù)、考試時(shí)間、難度系數(shù)算法判定等等,當(dāng)然,也能夠用純前端Javascript來進(jìn)行算法關(guān)聯(lián),數(shù)據(jù)庫大致設(shè)計(jì)思緒圖圖2.2.1-1所表示。圖2.2.1-1數(shù)據(jù)庫設(shè)計(jì)思緒示意圖用戶登錄:用戶登錄首先需要進(jìn)行用戶注冊以確保數(shù)據(jù)庫能夠識別下一次登陸并保留用戶對試題相關(guān)操作。第一次登錄用戶會(huì)得到數(shù)據(jù)庫試題全部初始數(shù)據(jù),以后不一樣用戶對題庫不一樣編輯和修改將會(huì)依據(jù)各自賬戶保留為新數(shù)據(jù)。試題結(jié)構(gòu)表:試題結(jié)構(gòu)表關(guān)鍵是為了滿足試題功效配置而設(shè)置數(shù)據(jù)表,比如選擇題應(yīng)該有ID、試題編號、題目類別、題目狀態(tài)、創(chuàng)建時(shí)間、創(chuàng)建人、答案id、難度等級等多個(gè)字段結(jié)構(gòu)而成。依次構(gòu)建出選擇題、填空題、簡答題數(shù)據(jù)類型表,為用戶在選擇難度、試題類型、試題搜索、試題編輯等方面提供數(shù)據(jù)庫切入字段,方便Mysql數(shù)據(jù)庫語言調(diào)用。2.2.2數(shù)據(jù)庫表和字段設(shè)置用戶登錄表字段:用戶登錄表關(guān)鍵統(tǒng)計(jì)字段有用戶id、userName(用戶名)、userNum(用戶編號)(可選)、passWord(密碼)、state(狀態(tài))(可選)、cTime(創(chuàng)建時(shí)間),表結(jié)構(gòu)如表2.2.2-1所表示。表2.2.2-1數(shù)據(jù)庫用戶登錄數(shù)據(jù)表字段名數(shù)據(jù)類型主關(guān)鍵字取值說明idvarchar(16)key用戶獨(dú)有IDuserNamevarchar(64)用戶名userNumint(32)用戶編號passWordvarchar(64)用戶密碼cTimevarchar(16)創(chuàng)建時(shí)間stateInt(8)用戶狀態(tài)選擇試題表字段:選擇題字段關(guān)鍵有id、subject(題目)、subNum(題目編號)、type(題目類型)、state(題目狀態(tài))(可選)、cTime(創(chuàng)建時(shí)間)、cuser(創(chuàng)建人)(可選)、answerId(答案id)、degree(難度系數(shù))等等,表結(jié)構(gòu)如表2.2.2-2所表示。表2.2.2-2數(shù)據(jù)庫選擇題表字段字段名數(shù)據(jù)類型主關(guān)鍵字取值說明idvarchar(16)key題目IDsubjectvarchar(16)題目subNumint(32)題目編號typevarchar(64)題目類型degreefloat(8)題目難度cuservarchar(64)創(chuàng)建人(可選)cTimevarchar(16)創(chuàng)建時(shí)間stateInt(8)題目狀態(tài)(可選)填空試題表字段:前臺系統(tǒng)下達(dá)訂單后直接更新到后臺,用戶可對新增訂單進(jìn)行辦理操作,表結(jié)構(gòu)如表2.2.2-3所表示。表2.2.2-3數(shù)據(jù)庫填空題表字段字段名數(shù)據(jù)類型主關(guān)鍵字取值說明idvarchar(16)key題目IDsubjectvarchar(32)題目subNumint(32)題目編號typevarchar(8)題目類型degreefloat(8)題目難度cuservarchar(32)創(chuàng)建人(可選)cTimevarchar(16)創(chuàng)建時(shí)間stateInt(8)題目狀態(tài)(可選)簡答試題表字段:用戶系統(tǒng)角色增、刪、改和角色對應(yīng)系統(tǒng)資源分配表結(jié)構(gòu)如表2.2.2-4所表示。表2.2.2-4數(shù)據(jù)庫簡答題表字段字段名數(shù)據(jù)類型主關(guān)鍵字取值說明idvarchar(16)key題目IDsubjectvarchar(64)題目subNumint(32)題目編號typevarchar(8)題目類型degreefloat(8)題目難度cuservarchar(32)創(chuàng)建人(可選)cTimevarchar(16)創(chuàng)建時(shí)間stateInt(8)題目狀態(tài)(可選)3試卷自動(dòng)生成系統(tǒng)步驟3.1物理結(jié)構(gòu)步驟圖3.1-1系統(tǒng)總體設(shè)計(jì)架系統(tǒng)關(guān)鍵兩大塊分為“試題處理”和“在線考試”兩大板塊,無疑二者全部和數(shù)據(jù)庫相關(guān)輛。使用者經(jīng)過登錄系統(tǒng)進(jìn)入主界面選擇查看試題或在線考試。圖3.1-2查看題庫結(jié)構(gòu)示意圖查看題庫是一個(gè)很龐大功效結(jié)構(gòu),進(jìn)入查看題庫界面以后,用戶能夠依據(jù)需要查看試題類型選擇選擇題、填空題和簡答題,并結(jié)合數(shù)據(jù)庫對齊進(jìn)行增加試題、刪除試題、查找試題、編輯試題等功效。若用戶選擇增加試題功效,那么用戶將進(jìn)入到新增試題界面,對其題目、類型、難度和分?jǐn)?shù)等等數(shù)據(jù)進(jìn)行填寫,最終保留數(shù)據(jù)到數(shù)據(jù)庫,新增試題成功。圖3.1-3在線答題示意圖在線答題作為兩大功效模塊之一,一樣擁有強(qiáng)大功效體系。用戶選擇在線答題選項(xiàng)以后,將會(huì)跳轉(zhuǎn)到考試試題需求選擇界面,用戶一次會(huì)對選擇題、填空題、簡答題中需要用到試題類型數(shù)量、單題分?jǐn)?shù)、難度系數(shù)進(jìn)行設(shè)定,系統(tǒng)會(huì)自動(dòng)依據(jù)單題分?jǐn)?shù)統(tǒng)計(jì)出總分?jǐn)?shù),幫助使用者合理地判定和安排自己總分?jǐn)?shù)。最終用戶設(shè)置完測試時(shí)間,即可點(diǎn)擊試題生成按鈕一鍵生成滿足條件試題進(jìn)行試題測試。圖3.1-4試題作答示意圖在試題測試過程中我們往往會(huì)碰到以下問題:用戶因?yàn)樘厥庠虻R了時(shí)間,或用戶在出完試題答題以后發(fā)覺自己設(shè)定難度并不符合自己水平要求,又或一些原因造成用戶此次測試沒有發(fā)揮出自己理想水平,測試結(jié)果并不能真實(shí)地表現(xiàn)自己水平,這個(gè)時(shí)候就需要重新作答或重新愈加合理地制作對應(yīng)自己適合難度試題了。用戶在試題作答過程中系統(tǒng)提供了交卷、重新作答、返回選題功效,很好地幫助用戶處理了以上問題。3.2文件結(jié)構(gòu)步驟展示此次系統(tǒng)程序架構(gòu)關(guān)鍵采取SSH三大框架,使得代碼編寫愈加輕易。系統(tǒng)分層結(jié)構(gòu)以下:圖3.2-1系統(tǒng)代碼結(jié)構(gòu)從一個(gè)項(xiàng)目標(biāo)文件夾結(jié)構(gòu)能夠看出一個(gè)項(xiàng)目標(biāo)整體性是否完整,邏輯思緒是否緊密。一個(gè)優(yōu)異項(xiàng)目肯定有其嚴(yán)謹(jǐn)文件夾結(jié)構(gòu)。以本系統(tǒng)為例,根目錄文件夾以作者名稱拼音大寫字母命名,下放關(guān)鍵文件夾如上圖所表示。以下為文件夾結(jié)構(gòu)說明:action文件夾:關(guān)鍵是存放各個(gè)實(shí)體類之間頁面跳轉(zhuǎn)控制。comms文件夾:關(guān)鍵是存放部分公共類和實(shí)體。entity文件夾:關(guān)鍵是存放各個(gè)實(shí)體類文件。fiter文件夾:關(guān)鍵用來存放各個(gè)過濾器類文件。Service文件夾:關(guān)鍵是存放各個(gè)實(shí)體類經(jīng)過Action控制直接方法。applicationContext.xml:是hibernate配置文件perties:是連接數(shù)據(jù)庫配置文件config.xml:是web項(xiàng)目標(biāo)配置文件initSQL:是數(shù)據(jù)庫初始化數(shù)據(jù)文件log4j:是項(xiàng)目日志文件persustence.xml:是jap數(shù)據(jù)庫連接配置struts.xml:是Struts配置文件4界面設(shè)計(jì)4.1界面步驟展示圖4.1-1系統(tǒng)界面步驟示意圖本系統(tǒng)關(guān)鍵由8個(gè)關(guān)鍵界面組成,分別是用戶登錄界面、系統(tǒng)主界面(幻燈片+導(dǎo)航欄)、查看題庫界面、在線答題界面、編輯題庫界面、新增試題界面、選擇試題要求界面和開始作答界面。用戶使用本套試卷自動(dòng)生成系統(tǒng)以后一次操作步驟將會(huì)圖4.1-1所表示進(jìn)行。4.2界面設(shè)計(jì)示意圖此次系統(tǒng)界面設(shè)計(jì)關(guān)鍵采取灰色冷色調(diào)進(jìn)行顏色搭配,藍(lán)色作為輔色,即確保了考試試題這一嚴(yán)厲場所情景需求,也確保了色調(diào)不單一性,滿足了用戶視覺交互效果。本試題界面菜單中加入了Javascript設(shè)計(jì)用戶交互體驗(yàn),例以下拉菜單,圖片輪播等等,同時(shí)也處理了傳統(tǒng)尸體自動(dòng)生成系統(tǒng)界面單調(diào)尷尬情況。圖4.2-1系統(tǒng)用戶登錄界面展示用戶使用該試卷自動(dòng)生成系統(tǒng),必需先經(jīng)過注冊用戶到數(shù)據(jù)庫以開辟屬于自己獨(dú)立空間,以保留符合自己需求自定義試題,完成對需求試題增刪查改和自定義試卷生成。注冊完成后,用戶編輯額度數(shù)據(jù)將會(huì)被保留到目前用戶,下次用戶輸入帳號密碼即可連接到保留數(shù)據(jù)。用戶也可選擇注冊多個(gè)數(shù)據(jù)以達(dá)成針對性試題分類訓(xùn)練效果。主界面功效導(dǎo)航菜單采取了Javascript作為用戶交互延展,主界面關(guān)鍵提供查看題庫和在線答題兩大模塊。用戶可依據(jù)自己需求進(jìn)行選擇。圖4.2-2系統(tǒng)功效導(dǎo)航菜單展示在線答題分為了兩大塊,一塊為自主構(gòu)建,一塊為系統(tǒng)生成。自主構(gòu)建關(guān)鍵用于用戶自定義選擇試題。系統(tǒng)生成是用戶在選擇了試題難度、分?jǐn)?shù)、數(shù)量等等一系列條件以后系統(tǒng)在數(shù)據(jù)庫中自動(dòng)生成滿足條件對應(yīng)試題。圖4.2-3系統(tǒng)試題菜單展示查看題庫功效為用戶提供了展示數(shù)據(jù)庫題庫功效,用戶能夠依據(jù)類型分別看到數(shù)據(jù)庫中單選題、多選題、填空題和簡答題庫存和情況,方便用戶進(jìn)行試題查找和試題編輯。圖4.2-4系統(tǒng)主頁面展示系統(tǒng)登錄進(jìn)去主界面圖4.2-4所表示,左邊為功效導(dǎo)航菜單展示,右邊為系統(tǒng)展示幻燈片,提供多套優(yōu)異試題給用戶使用,也能夠放很多適用信息。圖4.2-5系統(tǒng)試題編輯菜單展示系統(tǒng)試題編輯菜單界面為用戶對試題編輯整理提供了極大幫助,在這里用戶能夠自定義每一道題目標(biāo)增加、刪除、查閱和編輯功效并保留到數(shù)據(jù)庫中。圖4.2-6單選題展示列表題目名稱能夠更具ajax去動(dòng)態(tài)查數(shù)據(jù)庫已經(jīng)有單選題目,避免反復(fù)。題目類別利用了easyUIcombotree插件,能夠去調(diào)用數(shù)據(jù)庫查找已經(jīng)有題目類別表,供用戶選擇,不能手動(dòng)輸入。圖4.2-7依據(jù)題目類型來查找示意圖圖4.2-8編輯界面示意圖題目名稱能夠更具ajax去動(dòng)態(tài)查數(shù)據(jù)庫已經(jīng)有單選題目,避免反復(fù)。題目類別利用了easyUIcombotree插件,能夠去調(diào)用數(shù)據(jù)庫查找已經(jīng)有題目類別表,供用戶選擇,不能手動(dòng)輸入。圖4.2-9多選題制訂示意圖點(diǎn)擊導(dǎo)航欄多選題,進(jìn)入到多選題展示列表,一樣展示了該題目標(biāo)全部信息,此表格能夠分頁查詢,也能進(jìn)行題目關(guān)鍵字和類別篩選,點(diǎn)擊新建,進(jìn)入到多選題新建頁面,和單選題類似,只是在答案便成了能夠同時(shí)選擇多個(gè)答案值:點(diǎn)擊編輯按鈕,進(jìn)入編輯頁面,并顯示目前這條數(shù)據(jù)全部信息,能夠進(jìn)行修改,并保留。圖4.2-10填空題制訂示意圖在導(dǎo)航欄點(diǎn)擊填空題,進(jìn)入到填空題展示列表,其中基礎(chǔ)功效全部是一樣,只是在題目中,用方框來表示應(yīng)該填空格。點(diǎn)擊新建,進(jìn)去填空題新建頁面,此頁面題目輸入采取了uedit文本編輯器插件,此插件能夠自定義多個(gè)編輯樣式,在此,只有一個(gè)方框樣式,用戶需要用方框來表示填空題空格圖4.2-11簡答題制訂示意圖點(diǎn)擊新建,進(jìn)入到簡答題新建頁面。其中需要用答案關(guān)鍵值來保留簡答題答案,關(guān)鍵詞能夠保留多個(gè),能夠點(diǎn)進(jìn)新增按鈕,則和會(huì)在表格下新增一行,點(diǎn)擊刪除按鈕,則刪除目前關(guān)鍵字。當(dāng)關(guān)鍵字個(gè)數(shù)只有一個(gè)后,假如用戶繼續(xù)點(diǎn)擊刪除,則會(huì)彈出提醒框,提醒用戶必需最少保留一個(gè)關(guān)鍵字。點(diǎn)擊編輯按鈕,則進(jìn)入到編輯頁面,一樣能夠刪除和添加關(guān)鍵字;同一個(gè)關(guān)鍵字只能保留一次,假如有兩個(gè)相同關(guān)鍵字,則經(jīng)過利用easyUIvalidatebox插件來檢測數(shù)據(jù),并提醒用戶此關(guān)鍵字反復(fù)。圖4.2-12新建題目類別示意圖點(diǎn)擊編輯,則進(jìn)入到類別編輯頁面,入宮將這類別狀態(tài)改為停用,則會(huì)同時(shí)停用這類別下面全部題目。5系統(tǒng)算法設(shè)計(jì) 試卷自動(dòng)生成系統(tǒng)當(dāng)中存在著很多需要計(jì)算算法,比如試卷自動(dòng)組成中抽取選定條件試題怎樣從龐大數(shù)據(jù)庫中調(diào)用抽取,對于易錯(cuò)題它針對個(gè)人難度怎樣實(shí)現(xiàn)合理波動(dòng),用戶試題得分計(jì)算等等,全部離不開各項(xiàng)算法研究。一套合理算法不僅僅能夠幫助用戶取得愈加好使用體驗(yàn),幫助用戶經(jīng)過試題愈加好地提升本身需求,同時(shí)也嚴(yán)謹(jǐn)了整個(gè)系統(tǒng)邏輯設(shè)計(jì),提升了系統(tǒng)設(shè)計(jì)科學(xué)性。以下我們就來介紹本套試題中設(shè)計(jì)到算法研究。5.1組卷方法設(shè)計(jì)試卷組卷算法是試卷自動(dòng)生成表現(xiàn)自動(dòng)化關(guān)鍵,它要求依據(jù)用戶所選擇試題難度、分?jǐn)?shù)、數(shù)量、類型等等條件以后自動(dòng)生成符合條件試題,那么其中就存在一套能夠從符合眾多條件龐大數(shù)據(jù)庫題庫中提取對應(yīng)試題算法,而且要盡最大可能避免試題雷同情況。試題組卷優(yōu)良程度是輔助教學(xué)關(guān)鍵緩解,怎樣確保生成試卷滿足不一樣用戶需求不一樣指標(biāo)就顯得十分關(guān)鍵了。試卷組卷方法有很多,常見關(guān)鍵有隨機(jī)法、回朔法和遺傳算法。以下我們就來介紹多個(gè)比較常見試卷組題算法。5.1.1隨機(jī)法隨機(jī)法顧名思義就是隨機(jī)選擇,結(jié)合本系統(tǒng)設(shè)定即依據(jù)用戶設(shè)定各項(xiàng)條件,在滿足各項(xiàng)條件指標(biāo)情況下隨機(jī)地從數(shù)據(jù)庫中調(diào)取滿足需求題目。簡單地說就好比在關(guān)聯(lián)確定了用戶生成哪種類型題目以后,依據(jù)這種題目標(biāo)難度系數(shù),結(jié)合特定隨機(jī)計(jì)算方法生成一個(gè)在該難度系數(shù)試題中隨機(jī)獲取一條,然后經(jīng)過這條信息主鍵確定一條數(shù)據(jù)庫數(shù)據(jù)而且讀取出來,統(tǒng)計(jì)到出題題目集合當(dāng)中去。每隨機(jī)到一道題目對象,就會(huì)和已經(jīng)調(diào)用題目集合進(jìn)行循環(huán)比較,若該值相等話就不予采取并退出繼續(xù)調(diào)用下一個(gè),若不相等話即以調(diào)用試題中還未出現(xiàn)過該題,給調(diào)用。隨機(jī)法優(yōu)點(diǎn)是簡單直接,能夠快速地生成基礎(chǔ)滿足用戶需求試題,同時(shí)較為平均選擇方法也能夠避免作弊現(xiàn)象出現(xiàn)。不過隨機(jī)法選題可能并不是試題選題中質(zhì)量最優(yōu)算法,因?yàn)樗⒉缓谢厮沸再|(zhì),邏輯思緒稍微欠缺一點(diǎn)。5.1.2回朔法回朔法又稱為探索和回朔法,也簡稱試探法。它是一個(gè)一步步根據(jù)最優(yōu)解進(jìn)行不停調(diào)整優(yōu)越搜索法。當(dāng)有很多個(gè)選擇時(shí)候,回溯系統(tǒng)會(huì)對每個(gè)選項(xiàng)逐一進(jìn)行比較,當(dāng)發(fā)覺原先選項(xiàng)不是最優(yōu)解或達(dá)不到設(shè)定目標(biāo)時(shí)候,就會(huì)退回一步做出重新選擇,知道將全部選擇全部試探完,退回到原節(jié)點(diǎn),然后做出最優(yōu)解,選擇前進(jìn)路線,直至試題全部選出。從上述對回朔法描述我們不難看出回朔法能夠很正確地給出試卷組裝最優(yōu)解而且高質(zhì)量地完成試題組裝,不過這種高成功率算法是建立在大量犧牲時(shí)間基礎(chǔ)上面進(jìn)行,往往完成一次回朔法我們已經(jīng)能夠完成N次隨機(jī)法隨機(jī)選擇了,而且回朔法占用內(nèi)存相當(dāng)大,程序結(jié)構(gòu)和邏輯性思緒要求比較高,選擇試題又全部是最優(yōu)解缺乏了一定隨機(jī)性。所以往往在試題數(shù)量要求較小試題組裝過程中,因?yàn)榧夹g(shù)較小能夠忽略那一點(diǎn)隨機(jī)性而且也不是消耗過多時(shí)間,我們能夠考慮選擇回朔法。圖5.1-2回朔法思緒示意圖5.1.3遺傳算法遺傳算法由來其實(shí)是從模擬達(dá)爾文生物進(jìn)化論中自然選擇和遺傳學(xué)機(jī)理生物進(jìn)化過程計(jì)算模型。它其實(shí)是一個(gè)經(jīng)過模擬生物進(jìn)化過程中搜索最優(yōu)解方法。由后人利用到了神經(jīng)網(wǎng)絡(luò)當(dāng)中去而且取得了顯著效果。不過,仿基因編碼工作相當(dāng)龐大復(fù)雜,我們往往采取二進(jìn)制編碼進(jìn)行簡化,經(jīng)過“優(yōu)勝劣汰”方法去判定出“衍生”、“變異”、“交叉組合”優(yōu)劣性質(zhì)而且做出判定。遺傳算法以擬生物學(xué)方法得到了很多學(xué)家認(rèn)可,同時(shí)也能夠利用到和“選擇”相關(guān)編碼當(dāng)中來,不過因?yàn)槠湓磉^于復(fù)雜,本文不作具體研究。5.2試題難度算法 試題難度關(guān)鍵經(jīng)過用戶對試題難度設(shè)定,經(jīng)過文本輸入試題難度,正則控制文本輸入內(nèi)容已抵達(dá)數(shù)據(jù)庫獲取正確試題難度而且保留目標(biāo)。本文中提到試題難度算法關(guān)鍵是在用戶答完試題以后系統(tǒng)自動(dòng)給出增加難度和降低難度算法設(shè)定,其原理也較為簡單,在這里只做簡單介紹。經(jīng)過前面對系統(tǒng)介紹我們知道,在用戶生成完試題而且進(jìn)行完作答以后,系統(tǒng)會(huì)統(tǒng)計(jì)出該用戶此次試題成績而且提供增加試題難度和降低試題難度一鍵再次生成試題功效。試題難度增加或降低全部是根據(jù)系統(tǒng)試題難度算法做出對應(yīng)改變調(diào)整。首先,系統(tǒng)會(huì)獲取到此次試題出題類型、各個(gè)類型題目數(shù)量和難度系數(shù)、考試總分?jǐn)?shù)和總時(shí)間,而且獲取到對應(yīng)數(shù)據(jù)庫字段,其次,用戶若選擇增加難度,系統(tǒng)會(huì)根據(jù)N=N+(p/P)*0.2方法四舍五入保留一至二位小數(shù)給出該類型題目標(biāo)新難度系數(shù),而且從數(shù)據(jù)庫中提取出滿足難度系數(shù)條件及類型對應(yīng)試題重新組題。若用戶選擇降低難度,則公式變?yōu)镹=N-(p/P)*0.2。其中N代表難度系數(shù),p代表此次得分,P代表總分?jǐn)?shù)。5.3試題分?jǐn)?shù)算法本系統(tǒng)分?jǐn)?shù)算法關(guān)鍵解釋系統(tǒng)怎樣對用戶得分做出評價(jià)。我們知道,系統(tǒng)在用戶點(diǎn)擊了提交試卷以后會(huì)依據(jù)用戶作答情況給出對應(yīng)分?jǐn)?shù)。再給出分?jǐn)?shù)之前,系統(tǒng)會(huì)對用戶在文本中答案和標(biāo)準(zhǔn)答案進(jìn)行對比,關(guān)鍵原理是采取了經(jīng)過提取用戶作題文本中數(shù)據(jù)和數(shù)據(jù)庫答案數(shù)據(jù)對比方法進(jìn)行等值判定,若相等,用戶得分追加,若不相等則不作追加得分。相對于選擇題、判定題、填空題能夠很輕易地判定出對錯(cuò),不過怎樣判定簡答題呢?在自動(dòng)化系統(tǒng)當(dāng)中當(dāng)然不會(huì)像人工改卷一樣,我們會(huì)依次讀取用戶在文本中答案,并提前在數(shù)據(jù)庫中答案中給出試題答案關(guān)鍵字或關(guān)鍵語句,若用戶答案當(dāng)中存在和之相符關(guān)鍵字,則基礎(chǔ)能夠判定出用戶該題得分。經(jīng)過一題設(shè)置多個(gè)關(guān)鍵字方法有利于提升判定正確性,也有利于試題一題多問設(shè)置。比如P=p1*J1+p2*J2+n*num,其中P為總得分,p1、p2為類型題答題正確個(gè)數(shù)(簡答題除外),J為該類型題目單體分?jǐn)?shù),n為簡答題關(guān)鍵詞或語句個(gè)體分?jǐn)?shù),num為簡答題關(guān)鍵詞或關(guān)鍵語句正確個(gè)數(shù)。從而計(jì)算出此次試卷考試用戶總分?jǐn)?shù)。5.4系統(tǒng)算法總結(jié)此次試卷自動(dòng)生成系統(tǒng)試卷組卷方法最終選定了隨機(jī)法。隨機(jī)法也是目前最適合利用到試卷作答系統(tǒng)試卷組卷方法,相對于回朔法而言有效率快優(yōu)點(diǎn),相對于遺傳法有簡單、易算優(yōu)勢。另外,一套試題總量通常不會(huì)超出100道,龐大數(shù)據(jù)庫試題支撐加上對于反復(fù)率判定處理極大化地減輕了隨機(jī)法缺點(diǎn)。最關(guān)鍵試卷組題算法確定以后,我們在選擇難度系數(shù)算法和得分算法時(shí)候做處理就顯得略微簡單一點(diǎn)。本身其實(shí)也用不著刻意地去提升這些難度算法難度,我們只需要做出能夠滿足用戶需求功效以后,代碼和算法其實(shí)越簡單越好。6關(guān)鍵功效代碼展示6.1登錄功效代碼展示6.1.1數(shù)據(jù)庫鏈接這是利用Hibernate框架關(guān)鍵配置文件,其中配置了連接數(shù)據(jù)庫地址,用戶名,密碼和框架中多種連接池、緩存池、對數(shù)據(jù)庫操作規(guī)范,和在調(diào)用數(shù)據(jù)庫時(shí)是否在控制臺顯示sql語句和日志保留等。<persistencexmlns="" xmlns:xsi="" xsi:schemaLocation=":///xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unitname="jpa"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <propertyname="hibernate.dialect"value="org.hibernate.dialect.MySQL5Dialect"/> <propertyname="hibernate.connection.driver_class"value="com.p6spy.engine.spy.P6SpyDriver"/> <propertyname="hibernate.connection.username"value="root"/> <propertyname="hibernate.connection.password"value="root"/> <propertyname="hibernate.connection.url"value="jdbc:mysql://localhost:3306/ljc?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8"/> <propertyname="hibernate.max_fetch_depth"value="3"/> <propertyname="hibernate.hbm2ddl.auto"value="update"/> <propertyname="hibernate.jdbc.fetch_size"value="18"/> <propertyname="hibernate.jdbc.batch_size"value="10"/> <propertyname="hibernate.show_sql"value="true"/> <propertyname="hibernate.format_sql"value="false"/> <propertyname="vider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/> <!--最小連接數(shù)--> <propertyname="c3p0.min_size"value="5"/> <!--最大連接數(shù)--> <propertyname="c3p0.max_size"value="30"/> <!--最大空閑時(shí)間,60秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default:0--> <propertyname="c3p0.maxIdleTime"value="60"/> <!--取得連接超時(shí)時(shí)間,假如超出這個(gè)時(shí)間,會(huì)拋出異常,單位毫秒--> <propertyname="c3p0.timeout"value="1800"/> <!--最大PreparedStatement數(shù)量--> <propertyname="c3p0.max_statements"value="50"/> <!--每隔120秒檢驗(yàn)連接池里空閑連接,單位是秒--> <propertyname="c3p0.idle_test_period"value="120"/> <!--當(dāng)連接池里面連接用完時(shí)候,C3P0一下獲取新連接數(shù)--> <propertyname="c3p0.acquire_inscrement"value="1"/> <!--是否每次全部驗(yàn)證連接是否可用--> <propertyname="c3p0.validate"value="false"/> </properties> </persistence-unit></persistence>6.1.2登錄功效 登錄功效實(shí)現(xiàn)在邏輯層上面關(guān)鍵分為了兩層,兩層之間有著對應(yīng)調(diào)用關(guān)系,一層調(diào)用一層第一步進(jìn)行是網(wǎng)頁層,也叫顯示層。顯示層將賬號密碼提交到控制層(也就是Action層),Action層只是起到一個(gè)請求轉(zhuǎn)發(fā)作用,它調(diào)用Service層,Service層來實(shí)施具體操作,然后返回Action,Action更具返回跳轉(zhuǎn),然后用戶就能看到是登陸失敗還是成功。顯示層<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort() +path+"/"; StringsCode="";%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><basehref="<%=basePath%>"><metacharset="utf-8"><linkrel="stylesheet"type="text/css"href="css/login.css"/><!--引入jquery --><scripttype="text/javascript" src="javascript/jquery/js/jquery-1.7.min.js"></script><scripttype="text/javascript"> $(function(){ if(window!=top) top.location.href=location.href;// $("#loginForm").submit(); }); functionclosetip(){ $("#tip").css("display","none"); }</script><title>試卷自動(dòng)生成系統(tǒng)|LJCSoft</title></head><body> style="background:url(images/login_01.png)repeat-x;height:100%;width:100%"> <divid="box"> <divclass="login"> <form id="loginForm" method="post"action="IndexAction.action"> //提交到action <divclass="lg_label"> <labelfor="name">用戶名:</label><inputtype="text" name="j_username"id="txtUserName"value="admin"/> </div> <divclass="lg_label"> <labelfor="code">密碼:</label><inputtype="password"name="j_password"id="code"value="1"/> </div> <divclass="lg_btn"> <inputtype="submit"value=""class="btn"onfocus="this.blur()"/> </div> </form> <divid="tip"class="tip"${Feq1?'style="display:block" ':'style="display:none"'}> <div style="position:absolute;top:-1px;right:-4px;cursor:pointer"> <imgsrc="images/login_06.png"width="13"onclick="closetip()" height="13"> </div> <pclass="tip_atr">密碼或用戶名錯(cuò)誤!</p> <pclass="tpi_ass"> <ahref="#">忘記密碼?</a> </p> </div> </div> </div></body></html>Service層packagecom.xxsoft.service;importjavax.persistence.EntityManager;importorg.springframework.stereotype.Service;importms.database.QueryBuilder;importms.database.Restrictions;importcom.xxsoft.entity.EmployeeInfo;/***登陸Service*@authorLJC**/@Service("LoginService")publicclassLoginServiceextendsBaseService{ publicEmployeeInfoloign(finalEmployeeInfoinfo){ try{ return find(EmployeeInfo.class,newQueryBuilder(){ @Override publicRestrictionscreateRestrictions(Class<?>clazz, EntityManagerentityManager){ Restrictionsrestrictions=Restrictions.forClass(clazz,entityManager); restrictions.eq("username",info.getUsername()); restrictions.eq("userpwd",info.getUserpwd()); restrictions.isNull("failuredate"); restrictions.isNull("quitdate"); returnrestrictions; } }); }catch(Exceptione){ e.printStackTrace(); returnnull; } }}6.1.3關(guān)鍵功效模塊Action方法/** *diy生成試卷方法 *@return */ publicvoiddiyPaper(){ HttpSessionre=getSession();//獲取session域?qū)ο? re.removeAttribute("sqlist");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("sqCount");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("sqScore");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("mqlist"); re.removeAttribute("mqCount");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("mqScore");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("gqlist"); re.removeAttribute("gqCount");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("gqScore");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("shqlist"); re.removeAttribute("shqCount");//將session域上次四個(gè)題目變量刪除 re.removeAttribute("shqScore");//將session域上次四個(gè)題目變量刪除 re.setAttribute("paperName",getString("paperName")); //以前臺獲取試卷題目 re.setAttribute("paperTime",getString("paperTime")); //獲取試卷時(shí)間 re.setAttribute("paperTotal",getString("paperTotal")); //獲取試卷總分 re.setAttribute("paperUser",loginUser.getEmployeename());//獲取答題人 if(sq!=null){ //判定sq對象是否為空,sq表示單選題對象,目前臺沒有選擇單選題時(shí)為空,選擇則不為空 //sq對象中包含了前臺中選擇題目類型,難度,數(shù)量,單個(gè)分值等信息 sq.setType(1); List<Question>sqlist=(List<Question>)service.getDiyList(sq); //將此對象Service中查詢對應(yīng)滿足條件題目列表 if(sqlist==null){ //判定查詢出來集合是否為空 Write("error"); //為空表示數(shù)據(jù)庫犯錯(cuò),并返回error提醒用戶 }elseif(sqlist.size()!=sq.getCount()){ //假如不為空,則判定集合數(shù)量是否是要求數(shù)量,假如不一致則表示題庫數(shù)不夠,返回到前臺提醒用戶 Write("false1"); }else{ //題數(shù)夠 re.setAttribute("sqlist",JSONHelper.toJson(sqlist)); re.setAttribute("sqCount",sq.getCount()); re.setAttribute("sqScore",sq.getScore()); } } if(mq!=null){ //判定多選題...和上述類似 mq.setType(2); List<Question>mqlist=(List<Question>)service.getDiyList(mq); if(mqlist==null){ Write("error"); }elseif(mqlist.size()!=mq.getCount()){ Write("false2"); }else{ re.setAttribute("mqlist",JSONHelper.toJson(mqlist)); re.setAttribute("mqCount",mq.getCount()); re.setAttribute("mqScore",mq.getScore()); } } if(gq!=null){ //判定填空題... gq.setType(3); List<GapFillingQuestion>gqlist=(List<GapFillingQuestion>)service.getDiyList(gq); if(gqlist==null){ Write("error"); }elseif(gqlist.size()!=gq.getCount()){ Write("false3"); }else{ List<GapFillingQuestion>list=newArrayList<>(); for(GapFillingQuestiong:gqlist){ //在前端轉(zhuǎn)json對象時(shí),因?yàn)镹ame中有標(biāo)簽字符,會(huì)造成轉(zhuǎn)換失敗,所以在此值讀取fillName和id list.add(newGapFillingQuestion(g.getId(),g.getFillName())); } re.setAttribute("gqlist",JSONHelper.toJson(list)); re.setAttribute("gqCount",gq.getCount()); re.setAttribute("gqScore",gq.getScore()); } } if(shq!=null){ //判定簡答題... shq.setType(4); List<Question>shqlist=(List<Question>)service.getDiyList(shq); if(shqlist==null){ Write("error"); }elseif(shqlist.size()!=shq.getCount()){ Write("false4"); }else{ re.setAttribute("shqlist",JSONHelper.toJson(shqlist)); re.setAt}/** *diy生成試卷方法 *@return */6.2前端代碼展示6.2.1主界面代碼 <divstyle="width:1085px;height:420px;overflow:hidden"> <iframeframeborder="1"src="jsp/index/turnRun/carousel.html"name="mainFrame"style="height:400px;width:100%;overflow:scroll;"id="mainframe"></iframe> </div> <divstyle="width:100%;height:20px;border:0pxsolid#FFF;"></div> <divstyle="width:100%;height:100px;"> <iframeframeborder="0"src="jsp/index/home/foot.html"name="mainFrame"style="height:100px;width:100%;overflow:scroll;"id="rootframe"></iframe> </div></body></html>6.2.2圖片輪播代碼<body><divstyle="margin:0pxauto;"><!--Inserttoyourwebpagewhereyouwanttodisplaythecarousel--><divid="amazingcarousel-container-1"><divi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024離婚財(cái)產(chǎn)評估及分配程序合同
- 2025年度消防水源與供水設(shè)施建設(shè)施工協(xié)議4篇
- 2025年度智慧交通設(shè)施安裝與維護(hù)服務(wù)合同3篇
- 2024版正規(guī)的居間服務(wù)合同范本
- 2024跨區(qū)域教育資源共享與合作合同
- 2024年裝修工程專項(xiàng)分包協(xié)議3篇
- 2025年度特色餐飲品牌店面租賃合同3篇
- 2025年度甘肅桉樹種植與干旱地區(qū)林業(yè)發(fā)展合同3篇
- 2025年度生態(tài)環(huán)保工程承包人工合同模板4篇
- 2025年度倉儲物流場地租賃合同12篇
- 河南省鄭州外國語高中-【高二】【上期中】【把握現(xiàn)在 蓄力高三】家長會(huì)【課件】
- 天津市武清區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹脂項(xiàng)目環(huán)境影響評價(jià)
- 2025年中煤電力有限公司招聘筆試參考題庫含答案解析
- 企業(yè)內(nèi)部控制與財(cái)務(wù)風(fēng)險(xiǎn)防范
- 高端民用航空復(fù)材智能制造交付中心項(xiàng)目環(huán)評資料環(huán)境影響
- 量子醫(yī)學(xué)成像學(xué)行業(yè)研究報(bào)告
- 胃潴留護(hù)理查房
- 污水處理廠運(yùn)營方案計(jì)劃
- 眼科慢病管理新思路
評論
0/150
提交評論