点击开始计时答题,出现答题的页面:
<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);
}