试卷自动生成系统设计与实现_第1页
试卷自动生成系统设计与实现_第2页
试卷自动生成系统设计与实现_第3页
试卷自动生成系统设计与实现_第4页
试卷自动生成系统设计与实现_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试卷自动生成系统设计与实现试卷自动生成系统设计与实现试卷自动生成系统设计与实现四川师范大学成都学院本科毕业设计试卷自动生成系统的设计与实现学生姓名李锦超学号2012101149所在学院通信工程学院专业名称通信工程班级2012级宽带通信2班指导教师石彬四川师范大学成都学院二○一六年五月试卷自动生成系统的设计与实现学生:李锦超指导教师:石彬内容大纲:试卷自动生成系统,即用户经过自定义选择设置试题的种类、难度、分数、时间等多个因素自动生成考试一试题并恩赐对错考据。随着互联网络的飞速发展、网络教育的不断普及与提升,传统的出题考试方式已经不能够满足全部的需求,混作一谈不“因材施教”的出题方式不利于核查不同样种类的学生,也不满足现代教育的发展需要。因此,此刻已经逐渐开始流行自定义、有难度、时间、种类选择控制的出题方式来迎合当前社会考试所需。试卷自动生成系统的出生油但是生。该设计主要目的是帮助出题者以及试题训练者能够依照不同样人群自定义设置难度、种类生成考试一试题的系统。系统为用户供应用户登录、开始试卷定制、选择题型、选择所占分数比率、最高分数设定、考试时间限制设定、考试难度选择、生成试卷以及答案查察等功能,将用户的需要“因材施教”、“分门别类”地供应,由用户自定义采用,从而达到针对不同样层次的考生的训练和考验。同时,也方便了出题者逐个进行试卷试题的采用,省去了出题者挨个设定的过程,既提升了出题的速度,也提升了出题的整体质量。本次设计主若是以服务出题者、试题训练人等人群方便迅速地完成试题的构造并提升自己所需检测为目的的试卷自动生成系统。整体设计使用的是JAVA语言开发的B/S(阅读器/服务器)应用系统。用户登录该系统后能够依照自己的能力选择生成题目的难度,依照自己的弱项针对题目种类进行生成试题,亦可依照自己的熟练度选择答题时间。本系统的代码框架采用了此刻比较流行的SSH(Spring+Struts+Hibernate)进行设计,在功能模型的实现和页面办理方面严格依照了MVC(Model,View,Controller)的思想系统。配合Javascript以及Xml对页面提取办理。数据库方面采用了中小型的Mysql数据库进行办理,数据库工具使用了当下主流的navicat进行操作,以减少代码量的负担和方便代码编写和功能实现。要点词:试卷自动生成B/SJavaMySQL数据库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系统功能介绍与解析11.1用户登录功能11.2试卷生成及试题判断功能21.3题库保护功能32数据库的设计与开发52.1数据库基础52.2数据库设计需求62.2.1数据库设计思路62.2.2数据库表与字段的设置73试卷自动生成系统流程83.1物理构造流程83.2文件构造流程显现114界面设计124.1界面流程显现124.2界面设计表示图135系统算法设计195.1组卷方法设计195.1.1随机法19回朔法20遗传算法215.2试题难度算法215.3试题分数算法215.4系统算法总结226主要功能代码显现226.1登录功能代码显现22数据库链接22登录功能24主要功能模块276.2前端代码显现30主界面代码30图片轮播代码317总结32参照文件33试卷自动生成系统的设计与实现前言现代教育陪同着互联网、自动化的发展而迅速地进行改革,传统的试卷考试已经远远不能够满足此刻社会急促的步伐,不只这样,传统的试题考试设计相当地耗资出题者的时间与精力,并且没有针对性。这种方式已经不能够满足现代考试紧凑的步伐了。因此,能够迅速并且拥有针对性、为用户供应自定义难度、种类、时间选择的试卷自动生成就显得特别重要了。试卷自动生成系统油但是生。传统的试卷出题方式需要经过人工进行,出题者也许使用者需要依照自己的经验进行题目的设置,这种方式经常需要人力对试题数据的屡次拟定和验算、对题目合理性进行检验等等。拟定题目的难度梯度,以满足不同样层次的学生反应不同样的学习水平。出题者经常还需要将过去的试题与将要出的试题的考点、难度进行比较。由上诉需求能够看出,传统的人工出题方式不只没有将互联网联动的优势运用起来,进行题库的资源共享与使用,也使出题者浪费了大量的研究和设置试题的时间。互联网的时代是个资源共享的时代,现代教育也应该与时俱进,对于优秀的试题、适合学生做的试题能够进行共享并且屡次利用,并且也解决了出题者自我思虑浪费大量时间的问题。本次设计的数据库能够储藏大量物联网所供应的各种试题需求,以满足资源共享与互补互帮的需求。其他,该系统还供应了多种一键选择的功能方便用户建议集成试卷。同时,数据库的使用也使得针对不同样的用户也额外处罚配的个人对题库和试题的编写权限,用户能够自定义题目的难度、种类、分数等等,也能够新增、删除、查阅和编写已有的试题。更加人性化的是,用户在完成试卷答题此后,系统会依照用户均分的情况给出提升也许降低难度的一键生成试卷的选项。从整个试卷的出题到打分结束,整个流程不只与弘大的数据库进行了资源共享,也极大地提升了出题的质量和时间,可谓一举多得!试卷自动生成系统的不断成熟将会逐渐撼动传统出题以及训练方式,随着试卷自动生成系统的不断完满和创新,用户将获取更好的体验。本次设计主要研究试卷自动生成系统的各项功能以及相对传统出题方式所带来的优势。系统功能介绍与解析1.1用户登录功能每一个用户都会有自己对题库和试题不同样的需求,我们供应了Mysql数据库为每个人分配了单独的IP并且开辟了独立的空间。用户在输入帐号密码登录此后能够自由地依照需要管理自己的题库和试题。用户登录系统的设置很好地区分了不同样使用人群对不同环境的试题需求,也方便了使用者个人对特别体型和试题的编写和更正操作。1.2试卷生成及试题判断功能本试卷自动生成系统为用户供应了多项一键生成功能,用户能够依照自己的需要对生成试题的种类、分数、难度、时间、所占比率等等做出相应的设置从而生成出相应的试题。依照用户的作答给出成绩并且供应提升难度和降低难度的一键生成按钮方便用户依照实质情况调整试卷。并且用户能够依照自己的需要,自定义增加、删除、查阅和编写自己的题库和试题。在用户登录该系统此后,用户会到达一其中转的欢迎界面,用户能够选择查察题库对试题进行操作,也能够直接选择在线答题系统对自己所需的试题要求进行设置并且一键生成。试题种类的选择生成一套试题第一得明确这套试题的构造组成,需要几各种类的试题,每种试题、每道题所占的分数比率都决定着这套试卷的合理性。本系统为用户供应了今世考试最流行的几种题目种类:选择题、填空题、问答题。用户能够依照自己的需求合理安排各种题目在整个试卷中所占的数量以及分数的比率,比方单项选择题20道,每道1分;多项选择题10道,每道2分;填空题10道,每道2分,简答题5道,分别为6分、8分、8分、10分,共100分。试题难度的选择作答难度的设定关系这整套试卷的出题质量,如何合理地依照实质情况给出适合难度的试题显得特别重要。本系统为每一道试题都给出了一个难度系数,数据库会依照给定的难度系数自动为您供应您所需要的难度系数的试题供用户选择。难度系数设定在0-1之间,用户只要设定不同样种类的题型的难度系数系统即会自动为该种类进行题型分配。因此,用户在设置难度系数的时候只要要掌握好整套试题的难度梯度即可。其他。该系统还会依照用户的作答情况给出一键自动降低难度和一键自动提升难度的试卷生成功能,很好地帮助用户找到当前阶段适合自己训练的试题难度。考试时间的选择不同样试题难度依照出题者分配,在设置难度的时候需要注意的就是难度和答题时间的合理结合,该系统供应了自定义的答题时间设定,方便使用者依照自己的综合实力在不同样阶段设置需要完成试题的时间。比方当用户第一次做的时候能够将时间设置为两个小时,经过一段时间的训练,用户一是能够经过提升难度来加强能力,同时也能够选择同样难度的其他试题经过减短作答时间的方式来获取提升。本系统供应的时间设定很好地满足了用户的这点需求。总分数的设置用户能够依照试卷的题量和考试需求自定义指定试卷的总分数以此配合题型的所占分数比率,比方在高中学校应用此系统自动生成试题,理综试卷依照传统标准应该设置300分为满分;数学、英语和语文等学科应依照150分给出。在初中也许小学等其他环境中亦可给出120分也许100分甚至80分的满分。自然,分数的给定完满由用户自定义,详细情况以实质需要为主。同时也方便使用者在单独的考试中能够合理地分配分数。生成试卷的功能在完成了上诉的试卷不同样种类试题的难度系数设定、考试总时间的分配、考试总分数的设定此后,自动生成试卷就显得十分简单了,用户只要依照界面提示一键生成即可从数据库中随机提取相应数量并且吻合条件(如种类和难度系数的)的试题,开始答题此后,倒计时开始启动。若作答完题此后用户选择了提升难度也许降低难度,那么系统也会自动依照当前的试题难度系数做出判断,适合地降低也许增加考试难度对数据库进行试题的调取,再采用同样的方式进行试题的自动生成。试题判断功能当用户完成登录选题生成试题并且作答此后,点击提交试卷,系统会依照用户作答情况结合数据库答案对用户的作答进行评分,用户依照得分情况从而选择可否增加难度也许降低难度再次进行作答训练。针对单项选择题、多项选择题、判断题、填空题,经过正则办理过后的Javascript能够自动忽略空格、空白字符等等的搅乱因素以保证空白空格等电脑以为操作带来的误判。对于简答题,数据库会依照早先的要点字提取去抓取用户的答案中的要点字进行比较,只要最要点的要点字符出现,基本能够判断该题得分。要点字的回答正确率也决定了该用户此题的最后得分,经过切割多个要点字以保证系统判断的正确率,极大地减少了误判,也满足了自动判断节约人力比较资源的时间。1.3题库保护功能用户除了从数据库中找寻、提取自动生成出试题以外,有时也需要将自己平时收集的一些优秀的题目录入题库并设定难度系数,增加题库的题目库存以便下一次调用或者自动生成。其他,对于一些易错、难懂的题目我们不需要讲究题目内容的形式,只要要对其重要参数进行更正即可重做以达到多次练习的收效,这样既没有走开题目察看内容的实质,也节约了大量的时间。自然,对于一些用户已经完满掌握的试题,用户可能怕在下一次自动生成试题中再次碰到从而减少了训练量并耽搁自己的训练时间。因此需要将其删掉。也有时,用户想要有针对性地训练,对于某各种类也许自己经常出错的题进行屡次练习,需要在茫茫题库中迅速查找到某一道题。综上所诉,我们为该系统设置了题库的试题增加、删除、查阅与编写功能,以方便用户对题库的各种功能需求。以下为详细功能的详细介绍:增加、删除试题功能系统中的每一道试题都有且只有唯一的一个ID作为主键,在不考虑恢复试题的情况下,本系统采用了删除数据库ID字段的方式直接对其数据进行删除与增加,删除的数据ID数不会被新的数据ID所代替,数据的ID会依次送上升的形式无量排列下去。经过程序界面连接数据库语言,增加采用Mysql增加语句insertintot_user(id,degree(难度),style(种类),content(内容))values(xx,xx,xx,xx)来设置用户自定义的试题;删除则采用

Mysql

删除语句

deletefromtablename(

表名)wherexx=xxxandxxx=xxxorxxx=xxx数来进行条件的控制并且进行数据库删除操作数据。自然,数据库初始化的时候办理要点的键以及主键不能以为空以外,其他用户能够选择留空白,只要勾写必定的条件即可完成增加删除功能。查阅试题功能查阅试题的功能主若是为了方便使用者迅速、直接地找到自己所需的试题。迅速找寻要点字的方式能够为前台也许后台来完成。使用后台的方式需要在数据库中间设置一个问题要点字的字段,在其中录入相应的要点字,尔后对其找寻按钮进行办理进行连接盘问数据库得出吻合结果的试题。使用前台的方式需要将要点字全部读取在指定的文件中间,经过Javascript对其进行代码的读取,采用正则和ajax等方式将相应要点字进行提取,尔后在比较input框中输入的数据从而得出吻合条件的试题。考虑到本系统采用了数据库读取的方式,我们便能够在数据库模型搭建的时候很好地展望所需要的字段,方便了全部功能的实现。因此本系统采用与后台数据库结合的方式进行盘问。采用Mysql盘问语句selectid(试题ID),stname(试题名称),keyword(试题要点字)fromDB_name(表名)where(条件设置)degree(难度系数)isnum(数值)的方式在界面得出用户所需要查找的相应内容,自然,select后边根的详细的需要显现出来的字段能够依照用户需要在设计的时候作出调整,我们也能够全出盘问出来,只在界面显现用户需要的部分。Where后边跟的条件自然也能够依照用户的需求来改变设置,用户能够使用多个条件进行条件的定义。最后满足全部条件的试题将会被显现出来,否则题库中没有吻合该条件的试题。编写试题功能对于题库的编写功能的设定主要方便了用户对指定试题的特别要求做保护和更正,经过更正主要参数、内容环境以达到一题多用、贯穿交融。同时也方便了用户纠正指出被忽略的试题错误。进入试题编写页面进行完编写功能后点击保留,程序将执行更正数据库的

Mysql

语句

updatetablename

(表名)

set

字段=xx,字段=xxwhere(条件设置)

xxx=xxxandxxx=xxx

从而保留更正内容。题库编写功能的实现帮助了用户随时随地自定义地将试题更正成自己所需的条件,对于不同样用户对赞成试题的难度理解的定义、所花时间的需要以及出现的频率的不同样做了很好的区分,每位用户都能够结合自己的实质情况进行试题的核查。数据库的设计与开发2.1数据库基础在整个系统的功能运行流程中间,我们能够很简单地发现一条贯穿整个系统的“线”,那就是数据库,无论是用户的登录系统,还是题目的增加、删除、查阅与编写,再到试卷的生成、试题的保留都离不开数据库。那么接下来,我们就有必要对数据库进行一些基础性质的讲解。我们常说的数据库(Database)平时地来讲就是利用主机空间开辟的一个虚假的对数据构造进行储蓄、管理的一个数据库房。数据库最初出生于1950年,最初可是用于储蓄和管理一些重要的数据,发展到此刻,数据库已经获取了特别宽泛的运用,储藏资源的种类也变得越来越多种多样。用户能够经过不同样种类的代码对数据库进行连接从而对数据进行增加、删除、查阅和更正、显现等等功能。此刻市道上常有的数据库有ORACLE(甲骨文)、DB2、SQLServer、Sybase、Informix、MySQL、VF、Access等等。但是一般基于系统大小、开发速度、开源程度以及成本的考虑,在中小型系统也许网站的开发的时候,我们经常选择Mysql数据库作为主流数据库。Mysql的功能未必是最富强的一个,它有对于ORACLE(甲骨文)、DB2等数据库的功能上来说还略差一截,但就其开源程度以及流传的有名度来说,Mysql因其优秀的开发速度以及可靠性在中小型系统开发中间据有了不能或缺的一席。数据库的宽泛运用使得市道上出现了好多数据库的编写使用工具。比较流行的有phpAdmin、Navicat、SQLyog、SequelPro、MicrosoftSQLServer等等。每一款数据库管理软件都有自己的利害势,无论使用哪一款,目的都是为了简化方便对数据库的管理和操作。phpAdmin是一款基于网页的Mysql开源管理器,它以界面简单、功能齐全而深受广大用户的喜爱。但本系统最后还是采用了Navicat作为数据库管理编写的软件。Navicat是一款跨平台的(于Windows/Mac/Linux)的管理数据工具,有对于页面形式的phpAdmin来说,Navicat在界面优化以及操作办理的运行速度上来说更胜一筹,同时也防备了数据库软件碰到网页阅读器影响的情况。Navicat的完满开源工作其实不复杂,在网上能够轻易地找寻到教程并且在5分钟内搞定。本套试卷自动生成系统使用Mysql数据库,Navicat数据库管理工具进行操作管理。2.2数据库设计需求数据库设计思路在程序制作初始,将数据库所需要用到的表一一排列出来有利于帮助整个程序的设计思路和需求解析。本系统主要用到的数据表适用户表、选择题型表、填空题型表、简答题型表以及一些备用和拓展功能表。用户表主要用于不同样用户登录进行自定义题库操作时候对每个用户的区分和数据保留;选择、填空、简答题型表主要用于用户对试题的更正和提取以及试卷自动生成功能的使用。其他的一些表(可选)可用于数据备份和恢复、考试时间、难度系数算法的判断等等,自然,也能够用纯前端的Javascript来进行算法的关系,数据库的大体设计思路图如图所示。图数据库设计思路表示图用户登录:用户登录第一需要进行用户注册以保证数据库能够鉴别下一次登陆并保留用户对试题的相关操作。第一次登录的用户会获取数据库试题的全部初始数据,此后不同样用户对题库的不同样编写和更正将会依照各自的账户保留为新的数据。试题构造表:试题构造表主若是为了满足试题功能配置而设置的数据表,比方选择题应该有ID、试题编号、题目种类、题目状态、创办时间、创办人、答案id、难度等级等多个字段构造而成。依次成立出选择题、填空题、简答题的数据种类表,为用户在选择难度、试题种类、试题找寻、试题编写等方面供应数据库切入字段,方便Mysql数据库语言调用。2.2.2数据库表与字段的设置用户登录表字段:用户登录表主要记录的字段适用户的id、userName(用户名)、userNum(用户编号)(可选)、passWord(密码)、state(状态)(可选)、cTime(创办时间),表构造如表2.2.2-1所示。表数据库用户登录数据表字段名数据种类主要点字取值说明idvarchar(16)key用户独有IDuserNamevarchar(64)用户名userNumint(32)用户编号passWordvarchar(64)用户密码cTimevarchar(16)创办时间stateInt(8)用户状态选择试题表字段:选择题的字段主要有id、subject(题目)、subNum(题目编号)、type(题目种类)、state(题目状态)(可选)、cTime(创办时间)、cuser(创办人)(可选)、answerId(答案id)、degree(难度系数)等等,表构造如表2.2.2-2所示。表数据库选择题表字段字段名数据种类主要点字取值说明idvarchar(16)key题目IDsubjectvarchar(16)题目subNumint(32)题目编号typevarchar(64)题目种类degreefloat(8)题目难度cuservarchar(64)创办人(可选)cTimevarchar(16)创办时间stateInt(8)题目状态(可选)填空试题表字段:前台系统下达订单后直接更新到后台,用户可对新增订单进行办理操作,表构造如表所示。表数据库填空题表字段字段名数据种类主要点字取值说明idvarchar(16)key题目IDsubjectvarchar(32)题目subNumint(32)题目编号typevarchar(8)题目种类degreefloat(8)题目难度cuservarchar(32)创办人(可选)cTimevarchar(16)创办时间stateInt(8)题目状态(可选)简答试题表字段:用户系统角色的增、删、改以及角色对应系统资源的分配表构造如表所示。表数据库简答题表字段字段名数据种类主要点字取值说明idvarchar(16)key题目IDsubjectvarchar(64)题目subNumint(32)题目编号typevarchar(8)题目种类degreefloat(8)题目难度cuservarchar(32)创办人(可选)cTimevarchar(16)创办时间stateInt(8)题目状态(可选)试卷自动生成系统流程3.1物理构造流程图3.1-1系统整体设计架系统的主要两大块分为“试题办理”和“在线考试”两大板块,无疑两者都与数据库相关辆。使用者经过登录系统进入主界面选择查察试题也许在线考试。图3.1-2查察题库构造表示图查察题库是一个特别弘大的功能构造,进入查察题库的界面此后,用户能够依照需要查察的试题种类选择选择题、填空题以及简答题,并结合数据库对齐进行增加试题、删除试题、查找试题、编写试题等功能。若用户选择增加试题功能,那么用户将进入到新增试题的界面,对其题目、种类、难度以及分数等等数据进行填写,最后保留数据到数据库,新增试题成功。图3.1-3在线答题表示图在线答题作为两大功能模块之一,同样的拥有富强的功能系统。用户选择在线答题选项此后,将会跳转到考试一试题需求选择的界面,用户一次会对选择题、填空题、简答题中需要用到的试题种类的数量、单题分数、难度系数进行设定,系统会自动依照单题分数统计出总分数,帮助使用者合理地判断和安排自己的总分数。最后用户设置完测试时间,即可点击试题生成按钮一键生成满足条件的试题进行试题测试。图3.1-4试题作答表示图在试题测试的过程中我们经常会碰到以下的问题:用户由于特别原因耽搁了时间,也许用户在出完试题答题此后发现自己设定的难度其实不吻合自己水平的要求,又也许某些原因以致用户本次测试没有发挥出自己的理想水平,测试结果其实不能够真实地表现自己的水平,这个时候就需要重新作答也许重新更加合理地制作对应自己适合难度的试题了。用户在试题作答的过程中系统供应了交卷、重新作答、返回选题的功能,很好地帮助用户解决了以上的问题。3.2文件构造流程显现本次系统程序架构主要采用SSH三大框架,使得代码的编写更加简单。系统分层结构以下:图3.2-1系统代码构造从一个项目的文件夹构造能够看出一个项目的整体性可否完满,逻辑思路可否紧密。一个优秀的项目必然有其慎重的文件夹构造。以本系统为例,根目录文件夹以作者名称拼音大写字母命名,下放要点文件夹如上图所示。以下为文件夹构造说明:action文件夹:主若是存放各个实体类之间页面跳转的控制。comms文件夹:主若是存放一些公共的类和实体。entity文件夹:主若是存放各个实体类文件。fiter文件夹:主要用来存放各个过滤器类文件。Service文件夹:主若是存放各个实体类经过Action控制的直接方法。applicationContext.xml:是hibernate的配置文件perties:是连接数据库的配置文件config.xml:是web项目的配置文件initSQL:是数据库初始化数据文件log4j:是项目日志文件persustence.xml:是jap的数据库连接配置struts.xml:是Struts的配置文件界面设计4.1界面流程显现图4.1-1系统界面流程表示图本系统主要由8个主要的界面组成,分别是用户登录界面、系统主界面(幻灯片+导航栏)、查察题库界面、在线答题界面、编写题库界面、新增试题界面、选择试题要求界面以及开始作答界面。用户使用本套试卷自动生成系统此后一次操作的步骤将会如图4.1-1所示进行。4.2界面设计表示图本次系统界面设计主要采用灰色冷色彩进行颜色搭配,蓝色作为辅色,即保证了考试一试题这一严肃的场合情况需求,也保证了色彩的不只一性,满足了用户的视觉交互收效。本试题的界面菜单中加入了Javascript设计用户交互体验,比以下拉菜单,图片轮播等等,同时也解决了传统尸体自动生成系统界面的单调的尴尬情况。图4.2-1系统用户登录界面显现用户使用该试卷自动生成系统,必定先经过注册用户到数据库以开辟属于自己的独立空间,以保留吻合自己需求的自定义试题,完成对需求试题的增删查改以及自定义试卷生成。注册完成后,用户编写额度数据将会被保留到当前用户,下次用户输入帐号密码即可连接到保留的数据。用户也可选择注册多个数据以达到针对性试题分类训练的效果。主界面的功能导航菜单采用了Javascript作为用户交互的延展,主界面主要供应查察题库以及在线答题两大模块。用户可依照自己的需求进行选择。图4.2-2系统功能导航菜单显现在线答题分为了两大块,一块为自主成立,一块为系统生成。自主成立主要用于用户自定义选择试题。系统生成是用户在选择了试题的难度、分数、数量等等一系列条件此后系统在数据库中自动生成满足条件相应的试题。图4.2-3系统试题菜单显现查察题库功能为用户供应了显现数据库题库的功能,用户能够依照种类分别看到数据库中的单项选择题、多项选择题、填空题以及简答题库存以及情况,方便用户进行试题的查找以及试题的编写。图4.2-4系统主页面显现系统登录进去的主界面如图4.2-4所示,左边为功能导航菜单显现,右边为系统展示的幻灯片,供应多套优秀的试题给用户使用,也能够放好多适用的信息。图4.2-5系统试题编写菜单显现系统试题编写菜单界面为用户对试题的编写整理供应了极大的帮助,在这里用户可以自定义每一道题目的增加、删除、查阅与编写功能并保留到数据库中。图4.2-6单项选择题显现列表题目名称能够更具ajax去动向的查数据库已有的单项选择题目,防备重复。题目种类运用了easyUI的combotree插件,能够去调用数据库查找已有的题目种类表,供用户选择,不能够手动输入。图4.2-7依照题目种类来查找表示图图4.2-8编写界面表示图题目名称能够更具ajax去动向的查数据库已有的单项选择题目,防备重复。题目种类运用了easyUI的combotree插件,能够去调用数据库查找已有的题目种类表,供用户选择,不能够手动输入。图4.2-9多项选择题拟定表示图点击导航栏的多项选择题,进入到多项选择题的显现列表,同样显现了该题目的全部信息,此表格能够分页盘问,也能进行题目要点字和类其他精选,点击新建,进入到多项选择题的新建页面,与单项选择题近似,可是在答案便成了能够同时选择多个答案值:点击编写按钮,进入编写页面,并显示当前这条数据的全部信息,能够进行更正,并保留。图4.2-10填空题拟定表示图在导航栏点击填空题,进入到填空题显现列表,其中基本功能都是同样的,可是在题目中,用方框来表示应该填的空格。点击新建,进去填空题新建页面,此页面的题目输入采用了uedit文本编写器插件,此插件能够自定义多种编写样式,在此,只有一个方框的样式,用户需要用方框来表示填空题的空格图4.2-11简答题拟定表示图点击新建,进入到简答题的新建页面。其中需要用答案要点值来保留简答题的答案,要点词能够保留多个,能够点进新增按钮,则和会在表格下新增一行,点击删除按钮,则删除当前要点字。当要点字的个数只有一个后,若是用户连续点击删除,则会弹出提示框,提示用户必定最少保留一个要点字。点击编写按钮,则进入到编写页面,同样可以删除和增加要点字;同一个要点字只能保留一次,若是有两个同样的要点字,则经过利用easyUI的validatebox插件来检测数据,并提示用户此要点字重复。图4.2-12新建题目种类表示图点击编写,则进入到类其他编写页面,入宫将此类其他状态改为停用,则会同时停用此种类下面的全部的题目。系统算法设计试卷自动生成系统中间存在着好多需要计算的算法,比方试卷自动组成中抽取选定条件的试题如何从弘大的数据库中调用抽取,对于易错题它针对个人的难度如何实现合理的颠簸,用户试题得分的计算等等,都离不开各项算法的研究。一套合理的算法不能是能够帮助用户获取更好的使用体验,帮助用户经过试题更好地提升自己需求,同时也慎重了整个系统的逻辑设计,提升了系统设计的科学性。以下我们就来介绍本套试题中设计到的算法研究。5.1组卷方法设计试卷组卷算法是试卷自动生成表现自动化的核心,它要求依照用户所选择的试题难度、分数、数量、种类等等条件此后自动生成吻合条件的试题,那么其中就存在一套能够从吻合众多条件的弘大数据库题库中提取相应试题的算法,并且要尽最大可能防备试题同样的情况。试题组卷的优秀程度是辅助授课的重要缓解,如何保证生成的试卷满足不同样用户需求的不同样指标就显得十分重要了。试卷组卷的方式有好多,常有的主要有随机法、回朔法以及遗传算法。以下我们就来介绍几种比较常用的试卷组题算法。随机法随机法顾名思义就是随机的采用,结合本系统的设定即依照用户设定的各项条件,在满足各项条件指标的情况下随机地从数据库中调取满足需求的题目。简单地说就恰似在关系确认了用户生成哪一各种类的题目此后,依照这种题目的难度系数,结合特定的随机计算方法生成一个在该难度系数试题中随机获取一条,尔后经过这条信息的主键确定一条数据库数据并且读取出来,记录到出题的题目会集中间去。每随机到一道题目对象,就会与已经调用的题目会集进行循环比较,若该值相等的话就不予采用并退出连续调用下一个,若不相等的话即以调用的试题中还未出现过该题,恩赐调用。随机法的优点是简单直接,能够迅速地生成基本满足用户需求的试题,同时较为平均的采用方式也能够防备作弊现象的出现。但是随机法的选题可能其实不是试题选题中的质量最优的算法,由于它并不拥有回朔的性质,逻辑思路略微欠缺一点。回朔法回朔法又称为研究与回朔法,也简称试试法。它是一种一步步依照最优解进行不断调整的优越找寻法。当有好多种选择的时候,回溯系统会对每个选项逐个进行比较,当发现本来的选项不是最优解也许达不到设定目标的时候,就会退回一步做出重新的选择,知道将全部选择全部试试完,退回到原节点,尔后做出最优解,选择前进路线,直至试题全部选出。从上述对回朔法的描述我们不难看出回朔法能够特别精准地给出试卷组装的最优解并且高质量地完成试题的组装,但是这种高成功率的算法是成立在大量牺牲时间的基础上面进行的,经常完成一次回朔法我们已经能够完成N次随机法的随机采用了,并且回朔法占用的内存相当大,程序的构造和逻辑性思路要求比较高,采用的试题又都是最优解缺乏了必然的随机性。所过去往在试题数量要求较小的试题组装过程中,由于技术较小能够忽略那一点随机性并且也不是耗资过多的时间,我们可以考虑选择回朔法。图5.1-2回朔法思路表示图遗传算法遗传算法的由来实质上是从模拟达尔文生物进化论中的自然选择和遗传学机理的生物进化过程的计算模型。它实质上是一种经过模拟生物进化过程中找寻最优解的方法。由后人运用到了神经网络中间去并且获取了显然的收效。但是,仿基因编码的工作相当弘大复杂,我们经常采用二进制编码进行简化,经过“优越劣汰”的方式去判断出“衍生”、“变异”、“交织组合”的利害性质并且做出判断。遗传算法以拟生物学的方式获取了好多学家的认可,同时也能够运用到与“选择”相关的编码中间来,但是由于其原理过于复杂,本文不作详细的研究。5.2试题难度算法试题难度主要经过用户对试题的难度设定,经过文本输入试题难度,正则控制文本输入内容已到达数据库获取正确的试题难度并且保留的目的。本文中提到的试题难度的算法主若是在用户答完试题此后系统自动给出的增加难度和降低难度的算法设定,其原理也较为简单,在这里只做简单的介绍。经过前面对系统的介绍我们知道,在用户生成完试题并且进行完作答此后,系统会统计出该用户此次的试题成绩并且供应增加试题难度和降低试题难度一键再次生成试题的功能。试题的难度增加也许减少都是依照系统试题难度算法做出相应变化调整的。第一,系统会获取到本次试题的出题种类、各个种类的题目数量以及难度系数、考试总分数与总时间,并且获取到相应的数据库字段,其次,用户若选择增加难度,系统会依照N=N+(p/P)*0.2的方式四舍五入保留一至二位小数给出该种类题目的新的难度系数,并且从数据库中提取出满足难度系数条件及种类的相应的试题重新组题。若用户选择降低难度,则公式变为N=N-(p/P)*0.2。其中N代表难度系数,p代表本次得分,P代表总分数。5.3试题分数算法本系统的分数算法主要讲解系统如何对用户得分做出议论。我们知道,系统在用户点击了提交试卷此后会依照用户的作答情况给出相应的分数。再给出分数从前,系统会对用户在文本中的答案与标准答案进行比较,主要原理是采用了经过提取用户作题文本中的数据与数据库答案数据比较的方式进行等值判断,若相等,用户得分追加,若不相等则不作追加得分。有对于选择题、判断题、填空题能够很轻易地判断出对错,但是如何判断简答题呢?在自动化的系统中间自然不会像人工改卷同样,我们会依次读取用户在文本中的答案,并提前在数据库中的答案中给出试题答案的要点字也许要点语句,若用户的答案中间存在与之吻合的要点字,则基本能够判断出用户该题得分。经过一题设置多个要点字的方式有利于提升判断的精准性,也有利于试题的一题多问的设置。比方P=p1*J1+p2*J2+n*num,其中P为总得分,p1、p2为种类题答题正确个数(简答题除外),J为该种类题目单体分数,n为简答题要点词也许语句个体分数,num为简答题要点词也许要点语句正确个数。从而计算出本次试卷考试用户的总分数。5.4系统算法总结本次试卷自动生成系统的试卷组卷方式最后选定了随机法。随机法也是当前最适合运用到试卷作答系统的试卷组卷的方法,有对于回朔法而言有效率快的优点,有对于遗传法有简单、易算的优势。其他,一套试题总量一般不会高出100道,弘大的数据库试题支撑加上对于重复率的判断办理极大化地减少了随机法的缺点。最重要的试卷组题算法确定此后,我们在采用难度系数的算法以及得分算法的时候做的办理就显得略微简单一点。自己其实也用不着成心地去提升这些难度算法的难度,我们只要要做出能够满足用户需求的功能此后,代码和算法其实越简单越好。主要功能代码显现6.1登录功能代码显现数据库链接这是运用Hibernate框架的主要配置文件,其中配置了连接数据库的地址,用户名,密码以及框架中各种连接池、缓存池、对数据库的操作规范,以及在调用数据库时可否在控制台显示sql语句和日志的保留等。<persistencexmlns=""xmlns:xsi=""xsi:schemaLocation=""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"

/><!--

最小连接数

--><propertyname="c3p0.min_size"value="5"/><!--

最大连接数

--><propertyname="c3p0.max_size"value="30"/><!--最大悠闲时间,60秒内未使用则连接被扔掉。若为0则永不扔掉。Default:0--><propertyname="c3p0.maxIdleTime"value="60"/><!--获取连接的超时时间,若是高出这个时间,会抛出异常,单位毫秒--><propertyname="c3p0.timeout"value="1800"/><!--最大的PreparedStatement的数量--><propertyname="c3p0.max_statements"value="50"/><!--每隔120秒检查连接池里的悠闲连接,单位是秒--><propertyname="c3p0.idle_test_period"value="120"/><!--当连接池里面的连接用完的时候,C3P0一下获取的新的连接数--><propertyname="c3p0.acquire_inscrement"value="1"/><!--可否每次都考据连接可否可用--><propertyname="c3p0.validate"value="false"/></properties></persistence-unit></persistence>登录功能登录功能的实此刻逻辑层上面主要分为了两层,两层之间有着对应调用的关系,一层调用一层第一步进行的是网页层,也叫显示层。显示层将账号密码提交到控制层(也就是Action层),Action层可是起到一个央求转发的作用,它调用Service层,Service层来执行详细的操作,尔后返回Action,Action更具返回跳转,尔后用户就能看到是登陆失败还是成功。显示层<%@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>试卷自动生成系统|LJCSoft</title></head><body>style="background:url(images/login_01.png)repeat-x;height:width:100%"><divid="box"><divclass="login"><formid="loginForm"method="post"action="IndexAction.action">//提交到action<divclass="lg_label"><labelfor="name">用户名:</label><inputtype="text"

100%;name="j_username"id="txtUserName"value="admin"/></div><divclass="lg_label">type="password"

<labelfor="code">密码:name="j_password"id="code"value="1"/></div><divclass="lg_btn"><inputtype="submit"value="

</label><input"class="btn"onfocus="this.blur( )"/></div></form><divid="tip"class="tip"${Feq1?'style="display:block"':'style="display:none"'}><divstyle="position:absolute;top:-1px;right:-4px;cursor:pointer"><imgsrc="images/login_06.png"width="13"onclick="closetip( )"height="13"></div><pclass="tip_atr">密码也许用户名错误!</p><pclass="tpi_ass"><ahref="#">忘记密码?</a></p></div></div></div></body></html>Service层packagecom.xxsoft.service;importjavax.persistence.EntityManager;importorg.springframework.stereotype.Service;ms.database.QueryBuilder;ms.database.Restrictions;importcom.xxsoft.entity.EmployeeInfo;/**登陆Service@authorLJC*/@Service("LoginService")publicclassLoginServiceextendsBaseService{restrictions.eq("username",info.getUsername( ));restrictions.eq("userpwd",info.getUserpwd( ));restrictions.isNull("failuredate");restrictions.isNull("quitdate");returnrestrictions;find(EmployeeInfo.class,newQueryBuilder( ){@OverridepublicRestrictionscreateRestrictions(Class<?>clazz,EntityManagerentityManager){Restrictionsrestrictions=Restrictions.forClass(clazz,publicEmployeeInfoloign(finalEmployeeInfoinfo){try{returnentityManager);}});}catch(Exceptione){e.printStackTrace( );returnnull;}}}主要功能模块Action方法/***diy

生成试卷方法*@return*/publicvoiddiyPaper( ){HttpSessionre=getSession( );//

获取

session

域对象re.removeAttribute("sqlist");//

session

域前一次四个题目变量删除re.removeAttribute("sqCount");//

将session

域前一次四个题目变量删除re.removeAttribute("sqScore");//将session域前一次四个题目变量删除re.removeAttribute("mqlist");re.removeAttribute("mqCount");//将session域前一次四个题目变量删除re.removeAttribute("mqScore");//将session域前一次四个题目变量删除re.removeAttribute("gqlist");re.removeAttribute("gqCount");//将session域前一次四个题目变量删除re.removeAttribute("gqScore");//将session域前一次四个题目变量删除re.removeAttribute("shqlist");re.removeAttribute("shqCount");//将session域前一次四个题目变量删除re.removeAttribute("shqScore");//将session域前一次四个题目变量删除re.setAttribute("paperName",getString("paperName"));//从前台获取试卷题目re.setAttribute("paperTime",getString("paperTime"));

//获取试卷时间re.setAttribute("paperTotal",getString("paperTotal"));//

获取试卷总分re.setAttribute("paperUser",loginUser.getEmployeename( ));//

获取答题人if(sq!=null){//判断sq对象可否为空,sq表示单项选择题对象,当前台没有选择单项选择题时为空,选择则不为空//sq对象中包括了前台中选择的题目种类,难度,数量,单个分值等信息sq.setType(1);List<Question>sqlist=(List<Question>)service.getDiyList(sq);将此对象Service中盘问相应满足条件的题目列表if(sqlist==null){//判断盘问出来的会集可否为空Write("error");//为空表示数据库出错,并返回

error

提示用户}elseif(sqlist.size( )!=sq.getCount( )){//若是不为空,则判断会集数量是否是要求的数量,若是不一致则表示题库数不够,返回到前台提示用户Write("false1");}else{//题数够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){//在前端转json对象时,由于Name中有标签字符,会以致变换失败,因此在此值读取fillName和idlist.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前端代码显现主界面代码<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>片播代<body><divstyle="margin:0pxauto;"><!--Inserttoyourwebpa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论