Пример #1
0
        /// <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("&nbsp;"," ").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("&nbsp;", " ");
                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;
            }
        }
Пример #2
0
        /// <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);
        }