public void TestAnswer()
        {
            var ans = "{\"Sanw\":\"123456\",\"Type\":6,\"SbId\":15,\"Rtar\":0,\"SCon\":0,\"RCon\":0,\"Kdge\":15,\"IsRt\":false}";

            StudentAnswerBase baseModel = JsonConvert.DeserializeObject <StuFreeAnswer>(ans); //

            BaseAssertObj(baseModel);

            List <int> li = new List <int>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9
            };
            var li2 = li.RandomSortList();

            int i = 0;
        }
Пример #2
0
        public Tuple <StudentAnswerBase, Yw_SubjectContent, Yw_Subject, Yw_StudentWrongSubject> GetWorngSubjectVm(int studentId, int wrongSubjectId)
        {
            Yw_StudentWrongSubject wrongSubject = StudentWrongSubjectRepository.Get(wrongSubjectId);

            if (wrongSubject == null || wrongSubject.Yws_StudentId != studentId)
            {
                wrongSubject = null;
            }
            if (wrongSubject != null)
            {
                StudentAnswerBase answer         = (wrongSubject as Yw_StudentWrongSubjectExt).Yws_Answer_Obj;
                Yw_SubjectContent subjectContent = SubjectBll.GetSubjectContent(wrongSubject.Yws_WrongSubjectId);
                Yw_Subject        subject        = SubjectBll.GetSubject(wrongSubject.Yws_WrongSubjectId);
                return(new Tuple <StudentAnswerBase, Yw_SubjectContent, Yw_Subject, Yw_StudentWrongSubject>(answer, subjectContent, subject, wrongSubject));
            }
            return(null);
        }
        public ActionResult GetSubjectsToPractice(int taskId, int pageIndex)
        {
            StudentReportBll bll = new StudentReportBll();
            var answer           = bll.GetReportSubject(GetCurrentUser().StudentId, taskId, pageIndex);

            List <ReportVm> vms = new List <ReportVm>();

            for (int i = 0; i < answer.Item1.Count; i++)
            {
                StudentAnswerBase answerobj = answer.Item1[i];
                if (answer.Item2.ContainsKey(answerobj.SubjectId) && answer.Item3.ContainsKey(answerobj.SubjectId))
                {
                    vms.Add(SubjectReportVmFactory.Create(answer.Item2[answerobj.SubjectId], answer.Item1[i], answer.Item3[answerobj.SubjectId]));
                }
            }
            return(Json(new PageJsonResponse <List <ReportVm> >()
            {
                Data = vms, PageSize = answer.Item4, TotalCount = answer.Item5
            }, JsonRequestBehavior.AllowGet));
        }
Пример #4
0
        private bool CheckAnswerNeedRecordWorng(StudentAnswerBase answer)
        {
            bool res = false;

            try
            {
                SubjectTypeEnum type = (SubjectTypeEnum)answer.Type;
                switch (type)
                {
                case SubjectTypeEnum.择题:
                case SubjectTypeEnum.判断题:
                    res = !answer.IsRight;
                    break;

                case SubjectTypeEnum.填空题:
                case SubjectTypeEnum.择填空:
                case SubjectTypeEnum.连线题:
                case SubjectTypeEnum.主观题:
                    res = answer.ResultStars <= 2;
                    break;

                case SubjectTypeEnum.圈点批注标色:
                case SubjectTypeEnum.圈点批注断句:
                    res = false;
                    break;

                default:
                    res = false;
                    break;
                }
            }
            catch (Exception ex)
            {
            }
            return(res);
        }
Пример #5
0
        public static ReportVm Create(Yw_SubjectContent content, StudentAnswerBase studentAnswer, Yw_Subject subject)
        {
            DtoSubjectContent subjectContent = SubjectContentDtoBuilder.Create(content, subject);

            ReportVm        vm          = null;
            SubjectTypeEnum subjectType = (SubjectTypeEnum)studentAnswer.Type;

            switch (subjectType)
            {    //选择、选择填空、连线
            case SubjectTypeEnum.择题:
                StuSelectAnswer         selectAnswer  = studentAnswer as StuSelectAnswer;
                DtoSelectSubjectContent selectContent = subjectContent as DtoSelectSubjectContent;
                vm = new MultipleChoiceReportVm
                {
                    SubjectId   = selectAnswer.SubjectId,
                    Stem        = selectContent.Stem,
                    StemType    = (int)selectContent.StemType,
                    Answer      = selectContent.Answer,
                    Options     = selectContent.Options.OrderBy(s => Array.IndexOf(selectAnswer.OptionSequences.ToArray(), s.Key)).ToList(),
                    OptionType  = (int)selectContent.OptionType,
                    SubjectType = (int)selectContent.SubjectType,
                    Analysis    = selectContent.Analysis,

                    StudentAnswer = selectAnswer.Answers,
                    ResultStars   = selectAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.判断题:
                StuTrueFalseAnswer         trueFalseAns = studentAnswer as StuTrueFalseAnswer;
                DtoTrueFalseSubjectContent trueFalseCon = subjectContent as DtoTrueFalseSubjectContent;
                vm = new TrueFalseReportVm
                {
                    SubjectId   = trueFalseAns.SubjectId,
                    Stem        = trueFalseCon.Stem,
                    StemType    = (int)trueFalseCon.StemType,
                    Answer      = trueFalseCon.Answer,
                    SubjectType = (int)trueFalseCon.SubjectType,
                    Analysis    = trueFalseCon.Analysis,

                    StudentAnswer = trueFalseAns.Answer,
                    ResultStars   = trueFalseAns.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.填空题:
                StuBlankAnswer blankAnswer = studentAnswer as StuBlankAnswer;
                DtoFillInBlankSubjectContent fillInBlank = subjectContent as DtoFillInBlankSubjectContent;
                vm = new FillInBlankReportVm
                {
                    SubjectId   = blankAnswer.SubjectId,
                    Stem        = fillInBlank.Stem,
                    StemType    = (int)fillInBlank.StemType,
                    Answer      = fillInBlank.Answer,
                    SubjectType = (int)fillInBlank.SubjectType,
                    Analysis    = fillInBlank.Analysis,

                    StudentAnswer = blankAnswer.Answers,
                    ResultStars   = blankAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.择填空:
                StuSelectBlankAnswer selectBlankAnswer = studentAnswer as StuSelectBlankAnswer;

                DtoSelectFillInBlankSubjectContent multipleChoiceFillInBlank = subjectContent as DtoSelectFillInBlankSubjectContent;

                vm = new MultipleChoiceFillInBlankReportVm
                {
                    SubjectId   = selectBlankAnswer.SubjectId,
                    Stem        = multipleChoiceFillInBlank.Stem,
                    StemType    = (int)multipleChoiceFillInBlank.StemType,
                    Answer      = multipleChoiceFillInBlank.Answer,
                    Options     = multipleChoiceFillInBlank.Options.OrderBy(s => Array.IndexOf(selectBlankAnswer.OptionSequences.ToArray(), s.Key)).ToList(),
                    OptionType  = (int)multipleChoiceFillInBlank.OptionType,
                    SubjectType = (int)multipleChoiceFillInBlank.SubjectType,
                    Analysis    = multipleChoiceFillInBlank.Analysis,

                    StudentAnswer = selectBlankAnswer.Answers,
                    ResultStars   = selectBlankAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.连线题:
                StuMatchAnswer matchAnswer = studentAnswer as StuMatchAnswer;

                DtoMatchSubjectContent match = subjectContent as DtoMatchSubjectContent;

                vm = new MatchReportVm
                {
                    SubjectId       = matchAnswer.SubjectId,
                    Stem            = match.Stem,
                    StemType        = (int)match.StemType,
                    Answer          = match.Answer,
                    SubjectType     = (int)match.SubjectType,
                    LeftOptions     = match.LeftOptions.OrderBy(s => Array.IndexOf(matchAnswer.LeftOptionSequences.ToArray(), s.Key)).ToList(),
                    RightOptions    = match.RightOptions.OrderBy(s => Array.IndexOf(matchAnswer.RightOptionSequences.ToArray(), s.Key)).ToList(),
                    LeftOptionType  = (int)match.LeftOptionType,
                    RightOptionType = (int)match.RightOptionType,
                    Analysis        = match.Analysis,

                    StudentAnswer = matchAnswer.Answers,
                    ResultStars   = matchAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.主观题:
                StuFreeAnswer         freeAnswer = studentAnswer as StuFreeAnswer;
                DtoFreeSubjectContent free       = subjectContent as DtoFreeSubjectContent;

                vm = new FreeReportVm
                {
                    SubjectId   = freeAnswer.SubjectId,
                    Stem        = free.Stem,
                    StemType    = (int)free.StemType,
                    Answer      = free.Answer,
                    SubjectType = (int)free.SubjectType,
                    Analysis    = free.Analysis,
                    Standard    = free.Standard,

                    StudentAnswer = freeAnswer.Answer,
                    ResultStars   = freeAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.圈点批注标色:
                StuMarkColorAnswer    markColorAnswer = studentAnswer as StuMarkColorAnswer;
                DtoMarkSubjectContent mark            = subjectContent as DtoMarkSubjectContent;

                vm = new MarkReportVm
                {
                    SubjectId   = markColorAnswer.SubjectId,
                    Stem        = mark.Stem,
                    StemType    = (int)mark.StemType,
                    Answer      = mark.Answer,
                    SubjectType = (int)mark.SubjectType,
                    Analysis    = mark.Analysis,
                    Content     = mark.Content,
                    Color       = mark.Color,

                    StudentAnswer = markColorAnswer.Answers,
                    ResultStars   = markColorAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            case SubjectTypeEnum.圈点批注断句:
                StuMarkCutAnswer       markCutAnswer = studentAnswer as StuMarkCutAnswer;
                DtoMark2SubjectContent mark2         = subjectContent as DtoMark2SubjectContent;

                vm = new Mark2ReportVm
                {
                    SubjectId   = markCutAnswer.SubjectId,
                    Stem        = mark2.Stem,
                    StemType    = (int)mark2.StemType,
                    Answer      = mark2.Answer,
                    SubjectType = (int)mark2.SubjectType,
                    Analysis    = mark2.Analysis,
                    Content     = mark2.Content,
                    Color       = mark2.Color,

                    StudentAnswer = markCutAnswer.Answers,
                    ResultStars   = markCutAnswer.ResultStars,
                    Difficulty    = subject.Ysj_Difficulty
                };
                break;

            default:
                break;
            }
            return(vm);
        }
        /// <summary>
        /// 将字符串转换成学生答题结果对象
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        private StudentAnswerBase TranslateAnswer(string json)
        {
            JObject           o    = JsonConvert.DeserializeObject(json) as JObject;
            StudentAnswerBase data = null;

            switch ((SubjectTypeEnum)Convert.ToInt32(o["type"]))
            {
            case SubjectTypeEnum.择题:
                data = new StuSelectAnswer()
                {
                    Type            = (int)SubjectTypeEnum.择题,
                    Answers         = JsonConvert.DeserializeObject <List <int> >(o["sanw"].ToString()),
                    OptionSequences = JsonConvert.DeserializeObject <List <int> >(o["sops"].ToString())
                };
                break;

            case SubjectTypeEnum.判断题:
                data = new StuTrueFalseAnswer()
                {
                    Type   = (int)SubjectTypeEnum.判断题,
                    Answer = Convert.ToInt32(o["sanw"])
                };
                break;

            case SubjectTypeEnum.填空题:
                data = new StuBlankAnswer()
                {
                    Type    = (int)SubjectTypeEnum.填空题,
                    Answers = JsonConvert.DeserializeObject <List <BlankAnswerItem> >(o["sanw"].ToString())
                };
                break;

            case SubjectTypeEnum.择填空:
                data = new StuSelectBlankAnswer()
                {
                    Type            = (int)SubjectTypeEnum.择填空,
                    Answers         = JsonConvert.DeserializeObject <List <int[]> >(o["sanw"].ToString()),
                    OptionSequences = JsonConvert.DeserializeObject <List <int> >(o["sops"].ToString())
                };
                break;

            case SubjectTypeEnum.连线题:
                data = new StuMatchAnswer()
                {
                    Type                 = (int)SubjectTypeEnum.连线题,
                    Answers              = JsonConvert.DeserializeObject <List <int[]> >(o["sanw"].ToString()),
                    LeftOptionSequences  = JsonConvert.DeserializeObject <List <int> >(o["slos"].ToString()),
                    RightOptionSequences = JsonConvert.DeserializeObject <List <int> >(o["sros"].ToString())
                };
                break;

            case SubjectTypeEnum.主观题:
                data = new StuFreeAnswer()
                {
                    Type   = (int)SubjectTypeEnum.主观题,
                    Answer = o["sanw"].ToString()
                };
                break;

            case SubjectTypeEnum.圈点批注标色:
                data = new StuMarkColorAnswer()
                {
                    Type    = (int)SubjectTypeEnum.圈点批注标色,
                    Answers = JsonConvert.DeserializeObject <List <int[]> >(o["sanw"].ToString())
                };
                break;

            case SubjectTypeEnum.圈点批注断句:
                data = new StuMarkCutAnswer()
                {
                    Type    = (int)SubjectTypeEnum.圈点批注断句,
                    Answers = JsonConvert.DeserializeObject <List <int> >(o["sanw"].ToString())
                };
                break;
            }
            if (data != null)
            {
                data.SubjectId    = Convert.ToInt32(o["sbId"]);
                data.ResultStars  = Convert.ToInt32(o["rtar"]);
                data.SubjectCoins = Convert.ToInt32(o["scon"]);
                data.ResultCoins  = Convert.ToInt32(o["rcon"]);
                data.KnowledgeId  = Convert.ToInt32(o["kdge"]);
            }
            return(data);
        }