这是我参与更文应战的第3天,活动概略检查: 更文应战
1、规划布景
近日有用户提出需求,需求在原网站中结束一套视频学习模块及在线考试模块,在这儿我先介绍以下在线考试模块html标签的规划思路。
完application结一个根本功用的数据库体系的中心是在线考试html是什么意思体系,需求以下几个要素:
1、题库处理【或许需求针对不同html是什么意思的appreciate考试规划不同的题库,比方驾考科目一、道路运送资格证】
2、章节处理【对应的是考试培训资料的章节数据库体系的中心是】
3、考题处理【题库中包含的一切考题】
4、考题选项【每一道题的选择项】
5、精确答案【每一道考题的精确答案】
6、考试处理【在网站上发布最新的考试联接,用户能够经过链接进入考试】
7、数据库原理及使用考试作用检查【结束考试后,实时检查考数据库体系工程师试成果及错题html5】
结束以上功用后,根本上算是一个比较无缺的考试体系了,接下来我们针对这些功用点进行表结构规划。
2、表结构规划
依据以上细化的内容,我们先规划以下数据库,这儿直接贴图了,注释写的很明晰
3、部分功用的结束进程及要害代码片段
代码写的也比较乱,小功用也没考究太多,姑息看吧。
架构环境介绍:全体是基于jfinal_cms开发,以jfinal为根底mvc框架,模板html简略网页代码引擎是beetl,前数据库体系概论第五版课后答案台仍是传统的bootstrap和jquery
3.1题库APP处理
这儿比较简略,没什么逻辑
3.2标题处理
下面是设置正确选项的代码,这儿独自加了多选题的处理逻辑,把精确appearance选项的id用逗号分隔拼接后保存
private void set_right(TbExamAnswapplicationer model,TbExamQuestions questionsMohtmldel) {
if(questionsModel.geapplicationtQuestionsType()!=111)架构图模板 {//单选和判断题精确答案设置
questionsModel.setRightAnswerId(model.getId().toString());
questionsModel.setRightAnswerTitle(model.getAnswerTitle数据库体系工程师());
}else {
List<TbExamAnswer> an数据库规划swerList=TbExamAnswer数据库软件.dao.findByWhere(" where questions_id=? and answer_right=1 order by id asc",questionsModel.gehtml代码tId(appearance));
StringBuffer right_ids=new StringBuffer("");
StringBuffer right_title=new StringBuffer("");
for(int i=0;i<answerList.size();i++) {
TbExamAnswer answjson格局怎样翻开er=answerList.get(i);
right_ids.append(answer.getId().toString());
right_title数据库规划.append(answer.getAnswerTitle(html简略网页代码));
if(i<answerList.sappleize(html简略网页代码)-1) {
righthtml标签特点大全_ids.append(",");
right_title.html标签特点大全append(",")appointment;
}
}
questionsModel.setRightAnswerId(html网页制造right_ids.toString());
questionsModel.setRightAnswerTitle(right_title.toString()json格局);
}
questionsModel.update();
}
3.3 考试发布
这儿是考试发布后的前台页面,架构是什么意思用户能够经过这个联接进入考试页面
考试数据库体系的中心是发布数据库原理及使用操作需求设置根底信息标题总数字段用来操控每一个用户答题试卷的抽题数量,规矩里需求设置每一章节的抽html标签特点大全题数量,以下是抽题部分的代码。
public void index() {
// 数据列表
SysUser user = (SysUser) getjsonSessionUser();
if (user ==json格局 nhtmlull) {
redirect(CommonController.firstPage);
return;html标签
}
int examPublishId = getParaToInt();
TbExamPublish examPublish=TbExamP数据库软件ublish架构图模板.dao.findById(examPublishId);
TbExamPaper paper=new TbExamPaper();
SimpleDateFormat sdf=new Sihtml简略网页代码mpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar nowTime=Calendar.getInstance();
if(examPublish.getExamTimeLen架构是什么意思gth()==null) {
nowTime.add(Calendar.MINUTE, 60);
}else {
nowTime.htmladd(Calendar.MINUTE, examPublJSONish.getExamTimeLength());
}
paper.setUserId(user.getUsejson字符串rid());//用户id
paper.setUseappreciaterName(user.getUserName())数据库原理及使用;//用户称谓
paper.setExamPublishId(examPublish.getId());//考试发布id
paper.setExamName(examPujson格局怎样翻开blish.getExamNa数据库查询语句me());
pa数据库规划per.setExamCode(examPublish.getExamCode());//考试编号
paper.setExamStatus(1);架构图//考试中
paper.setExamStartDate(sdf.format(new Date()));
paper.setExamEndDate(sdf.format(nowTime.getTime()));
paper.save();
List<TbE数据库查询语句xamPublishRule> ruleList =TbExamPublishRule.dao.findByWhere(" where exam_publish_id="+examPublish.getId());
String questionWhere="tb_exam_questions where tk_id=? and chapter_id=? and questions_type=? ORDER BY RHTMLAND() LIMIT ?";
for(int i=0;i<ruleList.size();i++) {
TbExamPublishRule rule=ruleList.get(i);
List<TbExamQuestions> singleChoiceQuestions=TbExamQHTMLuestions.dao.findByWhere(questionWhere, rule.getExamTkId(),rule.getExamChapterId(),109,rule.getSinglejson格局怎样翻开ChoiceCount()数据库有哪几种);//抽取单选题
List&json格局lt;TbExamQues架构图tions> multipleChoiceQuestions=Tbhtml5ExamQuestions.dao.findByWhere(questapplicationionWhere, rule.getExamTkId(),rule.getExamChapterId()数据库软件,111,rule.getMultipleChoiceCount()数据库体系工程师);//抽json取多选题
List<TbExamQuestions> judgeQueappearstions=TbExamQuestion架构是什么意思s.dao.findByWhere(questionW数据库体系概论第五版课后答案here, rule.getExamTkId(),ru架构图le.getExamChapterId(),110,rule.getJudgeCount());//抽取判断题
singleChoiceQuestijson格局ons.addAll(multipleChoiceQuehtml标签特点大全stions);//兼并单选和多选list
for(TbExamQujson文件是干什么的estions q:singlehtml标签特点大全ChoiceQ数据库体系概论第五版课后答案uestions) {
TbExamPaperQuesjson格局转化tions papeapproachrQuestion=new TbExamPaperQuestions()appreciate;
paperQuestion.setPaperId(paper.getId());//试卷id
paperQuestion.setQuestionsId(q.getId());//标题id
phtml个人网页完好代码aper数据库体系概论第五版课后答案Question.setQuestionsTitle(q.getQuestionsTitle());//标题
paperQuestio数据库软件n.setQuestionsType(q.getQuestionsType());//标题类型
paperQuestion.setRightAnswerIdjson格局转化(q.getRightAnswerId());//精确json字符串选项id
paperQuestion.setRightAnswerTitle(q.getRightAnswerTitle());//精确选项标题数据库原理
paperQuestion.save();
List<TbExamAnswer> aAPPnswers=TbExamAnswer.dao.findByWhere(" where q数据库规划uestions_id=? order by id asc", q.getId());//查询选项列表
for(TbExahtml个人网页完好代码mAnswer a:answers) {
TbExamPaperAnswer paperAnswer=new TbExam架构图模板PaperAnswer();
paperAnswer.setPaperId(paper.getId());//试卷id
paperAnswer.setQuestionsId(q.getId());//标题id
paperAnswer.setAnswappointmenterId(a.getId().toString());//选项id
pajson格局转化per架构师薪酬一月多少Answer.setAnswerTitle(a.getAnswerTitle());//选项标题
paperAnswer.setAnswerContent(a.getAnswerContjson格局怎样翻开eAPPnt());//选项内容
paperAnswer.setAnswerRig架构图模板ht(a.getAnsappearancewerRi架构图ght()==null?null:a.getAnswerRight().toSthtml代码ring());//是否正json是什么意思确答案
paperAnswer.save();
}
}
for(TbExamQuestions q:judgeQuestions) {
TbExahtml简略网页代码mPaperQuestionsjson字符串 paperQuestion=new TbAPPExamPaperQuestions()appear;
paperQuestion.setPaperId(paper.getappreciateId());//试卷id
paperQuestion.setQuestionsId(q.getId());//标题id
paperQuestion.setQuestionsT数据库体系的中心是i数据库体系的中心是tle(q.getQuestionsTitle(数据库查询语句))json字符串;//标题
paperQuestion.setQuestionsType(q.get数据库体系概论第五版课后答案QuestionsType());//标题类型
paperQuestion.setRightAnswerId(q.getRightAnswerId());//精确选项id
paperQappointmentuestion.setRightAnswerTitle(q.getRightAnswerTitle());//精确选项标题
paperQuestion.saveapproach();
}
//架构师BeanUAPPtils.copyProperties(q,choiceQuestihtml文件怎样翻开ons.get(0));
//log.info(rule.getExamChapterN数据库体系的中心是ame()+ " 选择题--"+chjson格局怎样翻开oiceQuestions.sappreciateize()+"判断题--"+judgeQuestions.size());
}
redirect("/front/onlineExam/toExam/html简略网页代码"+paper.getId());
rHTMLetur架构师薪酬一月多少n;
}
public void toExam() {
log.infhtmlo("开端考试啦");
Simple数据库DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"数据库管理体系);
SimpleDateFormat sdf1=new Si数据库规划mpleDateFormat("yyyy/MM/dd HH:mmappreciate:ss");
int paperId = getParaToInt();
Tb数据库规划ExamPaper pa架构图用什么软件做pe数据库原理r=TbExamPaper.dao.findById(paperId);//html个人网页完好代码试卷实体
List<TbExamPaperQuestions> questionsList=TbExamPaperQuestions.dao.findByWhere架构图用什么软件做(" where paper_i架构师d=? orapplicationder by questions_type desc", paperId);//查询标题列表架构图模板
Map<Integer,List&html简略网页代码lt;TbExamPaperAnswer>> answerMap=new HashMap<Integer,List<TbExamPaperAnswer>>();json解析//试题选项map
for(TbExamPaperQuestions q:questionsList) {
List<TbExamPaperAnswer> answers=TbExamPaperAnswer.dao.findByWhere(" where paper_id=架构师认证? a数据库nd quejson格局怎样翻开stions_数据库原理id=?", paperId,q.getQuestionsId());
answerMap.put(q.getQuestionsId(), answers);
}
//try {
Date d数据库体系工程师=papproachaper.getExamEndDate();
setAttr("examEjson格局ndDate",sdf1.format(d));
setAttr("pap架构师薪酬一月多少er",paper);
setAttr("questionsList",qujson解析estionsList);
setAttr("answerMap",answerMap);
renderAuto(path + "exam_page.html");
}
以下是考试页面,结束办法首要是遍历所以试题,依据标题类型渲染不同的dom标签。
这个js办法首要是为了在答题进程中,实时保存html答题数据,防止页面改写时丢掉数据
function commitAnswer(paperId,questionsId,questionsType,answerId,domName){
if(questionsType==111)架构图用什么软件做{
var selAns数据库werId="";
$("input:checkbox[name='"+domName+"']:checked").each(funcjson文件是干什么的tion(index) { // 遍历name=test的多选框
sjson是什么意思ize=$("input:checkbox[name='"+domName+"']:checked").length;
if(index==size-1){
selAnswerId+=$(this).vajson数据l(); // 每一个被选中项的值
}else{
selAnswerId+=$(this).val()+","; // 每一个被选中项的值appearance
}
});
answerId=selAnswerId;架构师和程序员的差异
}
var url = '${BASE_PATH }front/online架构师薪酬一月多少Exam/saveAnswer';
$.ajax({数据库管理体系
type:'POST',
dataType:'json',
dahtmlta:{
"paperId":paperId,
"html代码questionsId":questionsId,
"questionsType":questionsType,
"an架构师薪酬一月多少swerId":answerId
},
url:url,
success:function(d架构是什么意思ata){
//$("#chapthtml文件怎样翻开er_id").empty()HTML;
/架构是什么意思/for(var i=0;i<data.length;i++){
// var架构师 item=data[i];
json字符串// $("#chapter_id").append("<oAPPption value='"+item.id+"'>"+item架构图用什么软件做.chapterName+"</option>");
//}
},
error:functioapplen(html){
}
})架构师和程序员的差异;
}
这段代码是承认提交后,核算分数的办法,逻辑很简略,就经过比对答题选项与精确答案选项
public vjson格局oid commitPaper() {
int paperId = getP架构师araToInt();
int score=0;
SimplapplicationeDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TbExamPaper paper=TbExamPaper.dao.findById(paperId);//试卷实体
Lisjson文件是干什么的t<TbExamPaper数据库原理Questions> li数据库体系工程师st=TbExamPaperQuestions.dao.findByWhere(appearance" where paper_id=?",paperId);
for(int i=0;i<list.appearsize();i++) {
TbEx架构师认证amPaperQuestions q=list.get(i);
if(q.getRightAnswerId()==null)continue;
if(q.getRightAnswerhtml标签特点大全Id().equals(q.getUserAnswerId()))score++;
}
int examTimeLength=getBetwehtml简略网页代码enMjson数据inutes(paper.getExamShtml文件怎样翻开tartDate(),new Date());
paper.setExamScore(score);
paper.sethtml5ExamTimeLength(examTimeLength);
paper.setExamEndDate(sdf.formatappear(new Date()));
paper.setExamStatus(-1);//置为交卷状况
paper.update()html是什么意思;
log.info("总分数"+score);
r架构师薪酬一月多少edirect("/front/onlineExam/viewPaperResult/"+paper.getId());
}
这儿是考试作用页面,页面中能够显现答对标题及错题
这儿是处理员检查考试列表json数据的页面,能够完善挑选条件或其他特性功用,这儿只结束了查询功用
至此,根本结束了一套无缺html标签的在线考试体系,但是从规划思路上仍是代码结束上都有APP许多问题,在这儿抛砖架构引玉一下,假定大HTML家有更数据库原理好的思路approve也能够在议论区一同交流。