public VM_ExamDetail(M_UserInfo mu, M_Exam_Sys_Papers paperMod, HttpRequestBase Request) { this.mu = mu; this.paperMod = paperMod; Action = (Request.QueryString["action"] ?? "").ToLower(); FlowID = Request.QueryString["FlowID"] ?? ""; QuestDT = questBll.SelByIDSForExam(paperMod.QIDS, paperMod.id);//获取问题,自动组卷则筛选合适的IDS QuestDT.DefaultView.RowFilter = ""; QuestDT_Hid = JsonConvert.SerializeObject(QuestDT.DefaultView.ToTable(false, "p_id,p_title,p_type,p_defaultScores,istoshare,pid".Split(','))); typeDT = answerBll.GetTypeDT(QuestDT); ExTime = DataConverter.CLng(paperMod.p_UseTime); if (Action.Equals("view"))//显示答案 { AnswerDT = answerBll.SelByPid(mu.UserID, paperMod.id, FlowID); if (AnswerDT.Rows.Count < 1) { function.WriteErrMsg("你尚未完成答卷"); } AnswerDT.DefaultView.RowFilter = ""; Answer_Hid = JsonConvert.SerializeObject(AnswerDT.DefaultView.ToTable(true, "ID,QID,QType,QTitle,Answer,IsRight,Remark".Split(','))); answerMod = answerBll.SelMainModel(FlowID); //-----显示得分 //MySchool_T.Enabled = false; //MyClass_T.Enabled = false; //UName_T.Enabled = false; useTime = "用时 " + (answerMod.CDate - answerMod.StartDate).TotalMinutes.ToString("f0") + " 分钟"; totalScore = "得分:" + DataConverter.CLng(AnswerDT.Select("Remind=1")[0]["TotalScore"]); } }
public void ExamDetail_Submit() { string Qids = Request.QueryString["qids"] ?? ""; JArray arr = JsonConvert.DeserializeObject <JArray>(Request["QuestDT_Hid"]); M_UserInfo mu = tuserBll.GetLogin(); M_Exam_Sys_Papers paperMod = paperBll.SelReturnModel(Mid); M_Exam_Answer firstMod = new M_Exam_Answer(); List <M_Exam_Answer> answerList = new List <M_Exam_Answer>(); bool isfrist = true; //首条记录用于存储批注信息,预估得分,人工批阅后才是真正得分 int totalscore = 0; // string flowid = DateTime.Now.ToString("yyyyMMddHHmmssfff"); foreach (JObject obj in arr) { M_Exam_Answer answerMod = new M_Exam_Answer(); answerMod.UserID = mu.UserID; answerMod.UserName = mu.UserName; answerMod.QID = DataConverter.CLng(obj["p_id"].ToString()); answerMod.QTitle = obj["p_title"].ToString(); answerMod.QType = obj["p_Type"].ToString(); answerMod.Score = DataConverter.CLng(obj["p_defaultScores"].ToString()); answerMod.Answer = obj["answer"] == null ? "" : obj["answer"].ToString(); answerMod.PaperID = Mid; answerMod.PaperName = paperMod != null ? paperMod.p_name : "临时组卷"; answerMod.FlowID = flowid; answerMod = CheckIsRight(answerMod); answerMod.Remind = "0"; answerMod.pid = DataConverter.CLng(obj["pid"].ToString()); if (answerMod.IsRight == RIGHT) { totalscore += answerMod.Score; } if (isfrist) { answerMod.Remind = "1"; isfrist = false; firstMod = answerMod; firstMod.UserName = Request.Form["UName_T"]; if (string.IsNullOrEmpty(firstMod.UserName)) { firstMod.UserName = mu.UserName; } firstMod.MySchool = Request.Form["MySchool_T"]; firstMod.MyClass = Request.Form["MyClass_T"]; } answerList.Add(answerMod); } firstMod.TotalScore = totalscore; foreach (M_Exam_Answer model in answerList) { model.StartDate = DateTime.Now.AddSeconds(-DataConverter.CLng(Request.Form["QuestTime_Hid"]));//开始答题时间 answerBll.Insert(model); } string url = "ExamDetail?action=view&FlowID=" + flowid; url += Mid < 1 ? "" : "&ID=" + Mid; url += string.IsNullOrEmpty(Qids) ? "" : "&qids=" + Qids; function.WriteSuccessMsg("提交答案成功", url); return; }
public IActionResult ExamDetail_Submit() { string FlowID = RequestEx["FlowID"] ?? ""; JArray arr = JsonConvert.DeserializeObject <JArray>(RequestEx["Answer_Hid"]); foreach (JObject obj in arr) { M_Exam_Answer answerMod = ansBll.SelReturnModel(Convert.ToInt32(obj["ID"].ToString())); answerMod.TechID = mu.UserID; answerMod.TechName = mu.UserName; answerMod.IsRight = Convert.ToInt32(obj["IsRight"].ToString()); answerMod.Score = DataConverter.CLng(obj["Score"]); answerMod.Remark = obj["Remark"].ToString(); answerMod.RDate = DateTime.Now; ansBll.UpdateByID(answerMod); } ansBll.SumScore(FlowID); return(RedirectToAction("ToScore")); }
public void ExamDetail_Submit() { string FlowID = Request.QueryString["FlowID"] ?? ""; JArray arr = JsonConvert.DeserializeObject <JArray>(Request.Form["Answer_Hid"]); M_UserInfo userinfo = buser.GetLogin(); foreach (JObject obj in arr) { M_Exam_Answer answerMod = ansBll.SelReturnModel(Convert.ToInt32(obj["ID"].ToString())); answerMod.TechID = userinfo.UserID; answerMod.TechName = userinfo.UserName; answerMod.IsRight = Convert.ToInt32(obj["IsRight"].ToString()); answerMod.Score = DataConverter.CLng(obj["Score"]); answerMod.Remark = obj["Remark"].ToString(); answerMod.RDate = DateTime.Now; ansBll.UpdateByID(answerMod); } ansBll.SumScore(FlowID); Response.Redirect("ToScore"); }
//自动校验答案 private M_Exam_Answer CheckIsRight(M_Exam_Answer answerMod) { M_Exam_Sys_Questions questMod = questBll.GetSelect(answerMod.QID); if (string.IsNullOrEmpty(questMod.p_Answer)) { answerMod.IsRight = NOAUDIT; return(answerMod); } switch (questMod.MyQType) { case M_Exam_Sys_Questions.QType.Radio: answerMod.IsRight = answerMod.Answer.Equals(questMod.p_Answer) ? RIGHT : ERROR; break; case M_Exam_Sys_Questions.QType.Multi: //检测是否包含指定选项,数量不能有差异,顺序可以不计 { answerMod.Answer = answerMod.Answer.TrimEnd(','); string[] answerArr = answerMod.Answer.Split(','); string[] rightArr = questMod.p_Answer.Split('|'); if (answerArr.Length != rightArr.Length) { answerMod.IsRight = ERROR; break; } foreach (string answer in answerArr) { if (!rightArr.Contains(answer)) { answerMod.IsRight = ERROR; break; } } answerMod.IsRight = RIGHT; } break; case M_Exam_Sys_Questions.QType.FillBlank: { //检测是否包含指定选项,数量不能有差异,需要按顺序 answerMod.Answer = answerMod.Answer.TrimEnd("|".ToCharArray()); string[] answerArr = Regex.Split(answerMod.Answer, Regex.Escape("|||")); string[] rightArr = questMod.p_Answer.Split('|'); if (answerArr.Length != rightArr.Length) { answerMod.IsRight = ERROR; break; } for (int i = 0; i < answerArr.Length; i++) { if (answerArr[i] != rightArr[i]) { answerMod.IsRight = ERROR; break; } } answerMod.IsRight = RIGHT; } break; case M_Exam_Sys_Questions.QType.Answer: { //解析题如果答案相符则计对,否则人工审核 answerMod.Answer = answerMod.Answer.Trim().TrimStart("解:".ToCharArray()); answerMod.IsRight = answerMod.Answer.Equals(questMod.p_Answer) ? RIGHT : NOAUDIT; } break; } return(answerMod); }