/// <summary> /// 设置题目 /// </summary> /// <param name="item">题目集合</param> /// <param name="idx">题目索引</param> /// <param name="ct">题目总数</param> void SetQustion(question_list item, sbyte idx, sbyte ct) { q_title.Text = ""; q_title.Inlines.Add(string.Format("{0}、", (idx + 1))); string lx = item.qtype == 1 ? "单选题" : (item.qtype == 2 ? "多选题" : "判断题"); q_title.Inlines.Add(new Run(string.Format("({0}) ", lx)) { Foreground = new SolidColorBrush(color), FontWeight = FontWeights.Bold }); item.qcontent = HttpUtility.HtmlDecode(item.qcontent).Replace("??", "\t") .Replace("?(", "(").Replace(")?", ")").Replace("(?", "(").Replace("?)", ")"); // item.qcontent.Replace(" "," ").Replace("<br>","\r\n"); q_title.Inlines.Add(item.qcontent); q_list.Children.Clear(); //清除原有集合 sbyte i = 0; foreach (var qitem in item.qlist) { QuestionItem qq = new QuestionItem() { Margin = new Thickness(0, 20, 0, 0) }; qq.Q_ID = item.id; qq.Q_idx = qidx_arr[i]; qq.Q_title = qitem.anwser.Replace(" ", " "); qq.Q_isCheack = qitem.anright; qq.ckTime = qitem.ckTime; qq.On_dlg_Cheacked += Qq_On_dlg_Cheacked; q_list.Children.Add(qq); i++; } if (idx == 0) { btn_up.Visibility = Visibility.Collapsed; if (IsStartExam) { btn_dwom.Visibility = Visibility.Visible; } } else if (idx > 0 && idx < (ct - 1)) { btn_up.Visibility = Visibility.Visible; btn_dwom.Visibility = Visibility.Visible; } else if (idx == (ct - 1)) { btn_dwom.Visibility = Visibility.Collapsed; btn_up.Visibility = Visibility.Visible; } else if (idx < (ct - 1)) { btn_dwom.Visibility = Visibility.Visible; btn_up.Visibility = Visibility.Collapsed; } }
/// <summary> /// 计算得分 /// </summary> /// <param name="item"></param> bool GetScore(question_list item) { if (IsNewChoseList) { TempScorelist.Clear(); } sbyte idx = 0; var xx = q_list.Children; foreach (QuestionItem qcItem in q_list.Children) { item.qlist[idx].anright = qcItem.Q_isCheack; item.qlist[idx].ckTime = qcItem.ckTime; if (IsNewChoseList) { TempScorelist.Add(new Qlist() { anwser = qcItem.Q_title, anright = qcItem.Q_isCheack, ckTime = qcItem.ckTime }); } else { if (idx < TempScorelist.Count) { TempScorelist[idx] = new Qlist() { anwser = qcItem.Q_title, anright = qcItem.Q_isCheack, ckTime = qcItem.ckTime }; } } idx++; } //控制控件选中答案 单选题,判断题 必须单个选中 if (item.qtype == 1 || item.qtype == 3) { var list = TempScorelist.FindAll(s => s.anright == true); list = list.OrderByDescending(s => s.ckTime).ToList(); for (int i = 1; i < list.Count; i++) { list[i].anright = false; idx = 0; foreach (QuestionItem qcItem in q_list.Children) { if (list[i].ckTime == qcItem.ckTime) { qcItem.Q_isCheack = false; item.qlist[idx].anright = false; break; } idx++; } } } idx = 0; //计算得分 单选题和判断题 if (item.qtype == 1 || item.qtype == 3) { var qitem = item.qlist.Find(s => s.isright.ToLower() == "true"); var tqitem = TempScorelist.Find(s => s.anright == true); if (tqitem == null) { item.score = 0; } else if (qitem.anwser == tqitem.anwser)//如果答对记1分 { item.score = 1; } else { item.score = 0; } } else//多选题 { var qitem = item.qlist.FindAll(s => s.isright.ToLower() == "true"); var tqitem = TempScorelist.FindAll(s => s.anright == true); if (tqitem == null) { item.score = 0; } else if (qitem.Count != tqitem.Count) { item.score = 0; } else if (qitem.Count == tqitem.Count) { idx = 0; sbyte dx = 0; foreach (var tt_item in qitem) { if (tt_item.anwser == tqitem[idx].anwser)//如果答对记1分 { dx++; } idx++; } if (qitem.Count == dx)//多选必须每一道题答对才记一分 { item.score = 1; } else { item.score = 0; } } } IsNewChoseList = false;//加载后不是新题了 if (TempScorelist.Find(s => s.anright == true) == null) { return(false); } return(true); }