在线考试系统

点击开始计时答题,出现答题的页面:

<td ><c:if test="${pd.denglu != '否' }"><a href="javascript:;" οnclick="javascript:kaishikaoshi('${pd.zuocaidan}','${var.NANDU}');" class="layui-btn layui-btn-big" >开始计时答题</a></c:if><c:if test="${pd.denglu == '否' }"><a href="javascript:;" class="layui-btn layui-btn-big" οnclick="javascript:denglu();">开始计时答题</a></c:if></td>

  function kaishikaoshi(leixing,nandu){
      layer.open({
        type: 2,
        title: leixing+nandu+'知识测试答题',
        shadeClose: false,
		closeBtn: 0,
        shade: 0.6,
        area: ['1200px', '90%'],
        content:['<%=basePath%>guanli/zhishiceshitiguMx.do?leixingsel='+leixing+'&nandusel='+nandu]//iframe的url
        
        });       
	}	
  function denglu(){
	self.location='<%=basePath%>login_toLogin1?uuu='+document.location;
	}

<form class="layui-form layui-form-pane" action="<%=basePath%>guanli/shitisave.do" name="Form" id="Form" method="post">
					<input type="hidden" name="LEIXING" id="LEIXING" value="${pd.leixingsel}"/>
					<input type="hidden" name="NANDU" id="NANDU" value="${pd.nandusel}"/>
						<div id="zhongxin" style="padding: 10px 0px 10px 0px;">
							<c:choose>
								<c:when test="${not empty shitilist}">
									<c:forEach items="${shitilist}" var="vvar" varStatus="vvs">
										<div class="layui-form-item layui-form-text ">
											<label class="layui-form-label"><strong>${vvs.index+1}. ${vvar.SHITI}</strong></label><input type="hidden" name="ID${vvs.index+1}" id="${vvs.index+1}" value="${vvar.ZHISHICESHITIGU_ID}"/>
											<div class="layui-input-block">
												<c:forEach items="${vvar.daanlist}" var="var" varStatus="vs">
													<c:if test="${vvar.DANDUOXUAN == '单选题'}">
														<input type="radio" name="${vvar.ZHISHICESHITIGU_ID}" value="${var.XUHAO}" title="${var.XUHAO}、${var.XUANXIANG}" lay-skin="primary" />     
													</c:if>
													<c:if test="${vvar.DANDUOXUAN == '多选题'}">
														<input type="checkbox" name="${vvar.ZHISHICESHITIGU_ID}${vs.index+1}" value="${var.XUHAO}" title="${var.XUHAO}、${var.XUANXIANG}" lay-skin="primary" />    
													</c:if>
								                </c:forEach>
											</div>
										</div>
									</c:forEach>
								</c:when>
								<c:otherwise>
									<tr class="main_info">
										<td colspan="100" class="center">没有相关数据</td>
									</tr>
								</c:otherwise>
							</c:choose>
						</div>
						
						<div id="zhongxin1" style="padding-top: 13px;">
							<div class="layui-form-item layui-form-text">
								<div class="layui-input-block">
									<button class="layui-btn" lay-submit lay-filter="formDemo">提交试卷 结束考试</button>
								</div>
							</div>
						</div>
					</form>
点击计时答题出现试题页面的方法:
@RequestMapping(value = "/zhishiceshitiguMx")
	public ModelAndView zhishiceshitiguMx() throws Exception {
		logBefore(logger, "管理-知识测试开始考试");
		ModelAndView mv = this.getModelAndView();
		PageData pd = this.getPageData();
		if (Jurisdiction.getSession().getAttribute(Const.SESSION_USERNAME) == null) {// 判断是否登录,传给页面
			pd.put("denglu", "否");
			return mv;
		}
		pd.put("shitishu", 默认试题数);
		String leixingsel = pd.getString("leixingsel");
		leixingsel = new String(leixingsel.getBytes("iso8859-1"), "utf-8");
		pd.put("leixingsel", leixingsel);
		String nandusel = pd.getString("nandusel");
		nandusel = new String(nandusel.getBytes("iso8859-1"), "utf-8");
		pd.put("nandusel", nandusel);
		List<PageData> shitilist = zhishiceshitiguService.listChouti(pd); // 随机抽题
		if (shitilist != null) {
			for (int i = 0; i < shitilist.size(); i++) {
				PageData pp = shitilist.get(i);
				List<PageData> daanlist = zhishiceshitigumxService.listAll(pp);
				pp.put("daanlist", daanlist);
			}
		}
		pd.put("默认试题数", 默认试题数);// 默认试题数
		pd.put("默认答题时间", 默认答题时间);// 默认答题时间(多少分钟),以后升级可以把这个修改成用户可以灵活设置的
		mv.addObject("shitilist", shitilist);
		pd.put("shangcaidan", "zhishiceshitiguMx");// 导航菜单,需要在shangcaidan.jsp文件对应修改
		mv.setViewName("guanli/ster/xuexi/shiti");// 页面指向
		mv.addObject("pd", pd);
		if (ShijianSingleton.get(Jurisdiction.getUsername()) == null)// 单个用户不能同时进行2个考试
			daojishi(Jurisdiction.getUsername());// 启动定时
		return mv;
	}
试题保存

@RequestMapping(value = "/shitisave", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public Object shitisave() throws Exception {
		logBefore(logger, "管理-知识测试-试题提交保存");
		PageData pd = this.getPageData();
		Map<String, Object> map = new HashMap<String, Object>();
		if (Jurisdiction.getSession().getAttribute(Const.SESSION_USERNAME) == null) {// 判断是否登录,传给页面
			pd.put("denglu", "否");
		}
		int miao = 0;
		Object shenyutime = ShijianSingleton.get(Jurisdiction.getUsername());
		if (shenyutime == null) {
			if ("已经结束".equals(ShijianSingleton.get("shijian"
					+ Jurisdiction.getUsername()))) {
				miao = 默认答题时间 * 60;
			}
		} else {
			int time = (Integer) shenyutime;
			miao = 默认答题时间 * 60 - time;
		}
		ShijianSingleton.remove(Jurisdiction.getUsername());// 考试结束,停止计时线程
		PageData kaoshi = new PageData();
		kaoshi.put("ZHISHICESHI_ID", this.get32UUID());
		kaoshi.put("REN", Jurisdiction.getUsername());
		kaoshi.put("SHIJIAN", Tools.date2Str(new Date()));
		kaoshi.put("LEIXING", pd.getString("LEIXING") + pd.getString("NANDU"));
		kaoshi.put("YONGSHI", miao);
		int fenshu = 0, manfen = 0, timushu = 0, duitishu = 0;
		for (int i = 1; i <= 默认试题数; i++) {
			String tiid = pd.getString("ID" + i);
			if (!(tiid == null || "".equals(tiid))) {
				PageData dati = new PageData();
				dati.put("ZHISHICESHITIGU_ID", tiid);
				dati = zhishiceshitiguService.findById(dati);
				dati.put("ZHISHICESHIMX_ID", this.get32UUID());
				dati.put("ZHISHICESHI_ID", kaoshi.get("ZHISHICESHI_ID"));
				// 获得用户答题判对错
				StringBuffer dd = new StringBuffer();
				StringBuffer daansb = new StringBuffer();
				StringBuffer datisb = new StringBuffer();
				String danduoxuan = dati.getString("DANDUOXUAN");
				if ("多选题".equals(danduoxuan)) {
					for (int index = 1; index < 27; index++) {// 最多26个答案
						String xuanxiang = pd.getString(tiid + index);
						if (xuanxiang != null) {
							dati.put("XUHAO", xuanxiang);
							datisb.append(xuanxiang);
							datisb.append('、');
							datisb.append(zhishiceshitigumxService.findXuanxiangById(dati).get("XUANXIANG"));
							datisb.append(' ');
							dd.append(xuanxiang);
							dd.append(",");
						}
					}
					String[] daanarr = dati.getString("DAAN").split(",");
					for (int j = 0; j < daanarr.length; j++) {
						dati.put("XUHAO", daanarr[j]);
						daansb.append(daanarr[j]);
						daansb.append('、');
						daansb.append(zhishiceshitigumxService.findXuanxiangById(dati).get("XUANXIANG"));
						daansb.append(' ');
					}
				} else if ("单选题".equals(danduoxuan)) {
					String xuanxiang = pd.getString(tiid);
					if (xuanxiang != null) {
						dati.put("XUHAO", xuanxiang);
						datisb.append(xuanxiang);
						datisb.append('、');
						datisb.append(zhishiceshitigumxService.findXuanxiangById(dati).get("XUANXIANG"));
						dd.append(xuanxiang);
					}
					String daan = dati.getString("DAAN");
					dati.put("XUHAO", daan);
					daansb.append(daan);
					daansb.append('、');
					daansb.append(zhishiceshitigumxService.findXuanxiangById(dati).get("XUANXIANG"));
				}
				String yonghudaan = dd.toString();
				if (yonghudaan.endsWith(",")) {
					yonghudaan = yonghudaan.substring(0,yonghudaan.length() - 1);
				}
				boolean duicuo = dati.getString("DAAN").equals(yonghudaan);
				dati.put("DUICUO", duicuo ? "对" : "错");
				dati.put("SHIJIAN", i);
				dati.put("DAAN", daansb.toString());
				dati.put("DATI", datisb.toString());
				zhishiceshimxService.save(dati);
				if (duicuo) {
					fenshu += (Integer) dati.get("FENZHI");
					duitishu++;
				}
				manfen += (Integer) dati.get("FENZHI");
				timushu++;
			}
		}
		kaoshi.put("FENSHU", fenshu);
		kaoshi.put("MANFEN", manfen);
		kaoshi.put("TIMUSHU", timushu);
		zhishiceshiService.save(kaoshi);
		map.put("result", "chenggong");
		map.put("FENSHU", fenshu);
		map.put("MANFEN", manfen);
		map.put("TIMUSHU", timushu);
		map.put("DUITISHU", duitishu);
		return AppUtil.returnObject(pd, map);
	}


  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值