Esempio n. 1
0
 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;
        }
Esempio n. 3
0
        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"));
        }
Esempio n. 4
0
        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);
        }