Example #1
0
        public string AutoAddTestPaper(TestPaper testPaper, double percent)
        {
            using (DbContextTransaction transaction = _myDbContext.Database.BeginTransaction())
            {
                try
                {
                    testPaper.IsFinish = true;
                    _myDbContext.TestPaper.Add(testPaper);
                    _myDbContext.SaveChanges();
                    int QuestionTypenumber = (int)((percent * 10) / 2);

                    List <QuestionType> questionType = new List <QuestionType>();
                    foreach (var qi in _myDbContext.QuestionType.Include(c => c.ExaminationQuestions).ToArray())
                    {
                        if (qi.ExaminationQuestions.Count() > 0)
                        {
                            questionType.Add(qi);
                        }
                    }
                    int    percentNum = questionType.Count();
                    Random rd         = new Random();
                    List <ExaminationQuestion> examinationQuestions = _myDbContext.ExaminationQuestion.Where(c => c.SubjectId == testPaper.SubjectId).ToList();
                    if (examinationQuestions.Count() == 0)
                    {
                        return("该科目题库没有题目");
                    }
                    for (int i = 0; i < 3; i++)
                    {
                        int questionTypeNumber = rd.Next(0, 3);
                        PaperQuestionType paperQuestionType = new PaperQuestionType()
                        {
                            PaperQuestionTitle = questionType[questionTypeNumber].QuestionTypeName,
                            QuestionTypeId     = questionType[questionTypeNumber].Id,
                            TestPaperId        = testPaper.Id
                        };
                        _myDbContext.PaperQuestionType.Add(paperQuestionType);
                        _myDbContext.SaveChanges();
                        for (int j = 0; j < 5; j++)
                        {
                            ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType[questionTypeNumber].Id, percentNum);
                            _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType()
                            {
                                PaperQuestionTypeId   = paperQuestionType.Id,
                                ExaminationQuestionId = examinationQuestion.Id
                            });
                        }
                    }
                    _myDbContext.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                }
            }
            return("生成成功");
        }
Example #2
0
        public bool DeleteExaminationQuestion(int id)
        {
            ExaminationQuestion dbExaminationQuestion = _myDbContext.ExaminationQuestion.FirstOrDefault(c => c.Id == id);

            if (dbExaminationQuestion == null)
            {
                return(false);
            }
            _myDbContext.ExaminationQuestion.Remove(dbExaminationQuestion);
            _myDbContext.SaveChangesAsync();
            return(true);
        }
Example #3
0
 public void SaveExaminationQuestion()
 {
     if (_quetionBankBusiness.SaveExaminationQuestion(ExaminationQuestion))
     {
         PUMessageBox.ShowDialog("保存成功");
         ExaminationQuestion = new ExaminationQuestion();
     }
     else
     {
         PUMessageBox.ShowDialog("保存失败");
     }
     Init();
 }
Example #4
0
 public void DeleteExaminationQuestion()
 {
     if (_quetionBankBusiness.DeleteExaminationQuestion(ExaminationQuestion.Id))
     {
         PUMessageBox.ShowDialog("保存成功");
         ExaminationQuestion = new ExaminationQuestion();
     }
     else
     {
         PUMessageBox.ShowDialog("保存失败");
     }
     ExaminationQuestion = new ExaminationQuestion();
     Init();
 }
        public void Set(ExaminationQuestion examinationQuestion)
        {
            QuestionNumber = examinationQuestion.QuestionNumber.ToString();
            AnswerAndScore = "答案是:" + String.Join("|", examinationQuestion.Answer) + " ,分数是:" + examinationQuestion.Score;//"答案是 A ,分数是 4";
            StringBuilder sb = new StringBuilder();

            foreach (var v in examinationQuestion.Statistics)
            {
                sb.Append(v.Key);
                sb.Append("/");
                sb.Append(v.Value);
                sb.Append(",  ");
            }
            Statistics = sb.ToString();
        }
Example #6
0
        public bool SaveExaminationQuestion(ExaminationQuestion examinationQuestion)
        {
            ExaminationQuestion dbExaminationQuestion = _myDbContext.ExaminationQuestion.FirstOrDefault(c => c.Id == examinationQuestion.Id);

            if (dbExaminationQuestion == null)
            {
                return(false);
            }
            dbExaminationQuestion.KnowledgePointId = examinationQuestion.Id;
            dbExaminationQuestion.SubjectId        = examinationQuestion.SubjectId;
            dbExaminationQuestion.Content          = examinationQuestion.Content;
            dbExaminationQuestion.Score            = examinationQuestion.Score;
            dbExaminationQuestion.QuestionTypeId   = examinationQuestion.QuestionTypeId;
            _myDbContext.SaveChangesAsync();
            return(true);
        }
Example #7
0
        public string AutoAddTemplateTestPaper(TestPaper testPaper, double percent)
        {
            using (DbContextTransaction transaction = _myDbContext.Database.BeginTransaction())
            {
                try
                {
                    testPaper.IsFinish = true;
                    _myDbContext.TestPaper.Add(testPaper);
                    _myDbContext.SaveChanges();
                    int percentNum = (int)((percent * 10));
                    List <QuestionType> questionTypes = new List <QuestionType>();
                    foreach (var qt in _myDbContext.QuestionType.Include(c => c.ExaminationQuestions).ToList())
                    {
                        int count = qt.ExaminationQuestions.Where(c => c.SubjectId == testPaper.SubjectId).Count();
                        if (count >= 10)
                        {
                            questionTypes.Add(qt);
                        }
                    }
                    ;


                    if (questionTypes.Count() < 3)
                    {
                        return("题目类型不足");
                    }

                    List <ExaminationQuestion> examinationQuestions = _myDbContext.ExaminationQuestion.Where(c => c.SubjectId == testPaper.SubjectId).ToList();

                    #region 添加非选择题
                    QuestionType questionType2 = questionTypes.FirstOrDefault(c => !c.HasOption);
                    if (questionType2 == null)
                    {
                        transaction.Rollback();
                        return("题目类型不足");
                    }
                    else
                    {
                        questionTypes.Remove(questionType2);
                    }
                    PaperQuestionType paperQuestionType2 = new PaperQuestionType()
                    {
                        PaperQuestionTitle = questionType2.QuestionTypeName,
                        QuestionTypeId     = questionType2.Id,
                        TestPaperId        = testPaper.Id
                    };
                    _myDbContext.PaperQuestionType.Add(paperQuestionType2);
                    _myDbContext.SaveChanges();
                    for (int j = 0; j < 10; j++)
                    {
                        ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType2.Id, percentNum);
                        if (examinationQuestion == null)
                        {
                            transaction.Rollback();
                            return("该科目题库题目数量不足");
                        }
                        examinationQuestions.Remove(examinationQuestion);
                        _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType()
                        {
                            PaperQuestionTypeId   = paperQuestionType2.Id,
                            ExaminationQuestionId = examinationQuestion.Id
                        });
                    }

                    #endregion
                    #region 添加非选择题
                    QuestionType questionType3 = questionTypes.FirstOrDefault(c => !c.HasOption);
                    if (questionType3 == null)
                    {
                        transaction.Rollback();
                        return("题目类型不足");
                    }
                    else
                    {
                        questionTypes.Remove(questionType3);
                    }
                    PaperQuestionType paperQuestionType3 = new PaperQuestionType()
                    {
                        PaperQuestionTitle = questionType3.QuestionTypeName,
                        QuestionTypeId     = questionType3.Id,
                        TestPaperId        = testPaper.Id
                    };
                    _myDbContext.PaperQuestionType.Add(paperQuestionType3);
                    _myDbContext.SaveChanges();
                    for (int j = 0; j < 5; j++)
                    {
                        ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType3.Id, percentNum);
                        if (examinationQuestion == null)
                        {
                            transaction.Rollback();
                            return("该科目题库题目数量不足");
                        }
                        examinationQuestions.Remove(examinationQuestion);
                        _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType()
                        {
                            PaperQuestionTypeId   = paperQuestionType3.Id,
                            ExaminationQuestionId = examinationQuestion.Id
                        });
                    }

                    #endregion

                    #region 添加选择题
                    QuestionType questionType = questionTypes.FirstOrDefault(c => c.HasOption);
                    if (questionType == null)
                    {
                        return("题目类型不足");
                    }
                    else
                    {
                        questionTypes.Remove(questionType);
                    }
                    if (examinationQuestions.Count() == 0)
                    {
                        return("该科目题库没有题目");
                    }
                    if (examinationQuestions.Count() < 20)
                    {
                        return("该科目题库题目数量不足");
                    }
                    PaperQuestionType paperQuestionType = new PaperQuestionType()
                    {
                        PaperQuestionTitle = questionType.QuestionTypeName,
                        QuestionTypeId     = questionType.Id,
                        TestPaperId        = testPaper.Id
                    };
                    _myDbContext.PaperQuestionType.Add(paperQuestionType);
                    _myDbContext.SaveChanges();
                    for (int j = 0; j < 10; j++)
                    {
                        ExaminationQuestion examinationQuestion = GetRandomExaminationQuestion(examinationQuestions, questionType.Id, percentNum);
                        if (examinationQuestion == null)
                        {
                            transaction.Rollback();
                            return("该科目题库题目数量不足");
                        }
                        examinationQuestions.Remove(examinationQuestion);
                        _myDbContext.ExaminationQuestionPaperType.Add(new ExaminationQuestionPaperType()
                        {
                            PaperQuestionTypeId   = paperQuestionType.Id,
                            ExaminationQuestionId = examinationQuestion.Id
                        });
                    }

                    #endregion
                    _myDbContext.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    return(e.Message);
                }
            }
            return("生成成功");
        }
Example #8
0
 public bool AddExaminationQuestion(ExaminationQuestion examinationQuestion)
 {
     _myDbContext.ExaminationQuestion.Add(examinationQuestion);
     _myDbContext.SaveChanges();
     return(true);
 }
Example #9
0
        /// <summary>
        /// 通过题目类型更改题目
        /// </summary>
        /// <param name="type">题目类型</param>
        /// <param name="id">题目Id</param>
        /// <param name="examid">考试Id</param>
        /// <param name="stem">题目题干</param>
        /// <param name="parameters">题目参数</param>
        /// <returns>更改成功与否</returns>
        public bool UpdateExamQuestion(ExamQuestion.QuestionType type, int id, int examid, string stem, object[] parameters)
        {
            if (parameters == null)
            {
                return(false);
            }
            ExaminationQuestion question = null;

            switch (type)
            {
            case ExamQuestion.QuestionType.ChoiceQuestion:
                if (parameters.Length == 2)
                {
                    List <string> ops = Newtonsoft.Json.JsonConvert.DeserializeObject <List <string> >(parameters[1].ToString());
                    question = new ChoiceQuestion(Convert.ToInt32(parameters[0].ToString()), ops.ToArray(), stem);
                }
                else
                {
                    return(false);
                }
                break;

            case ExamQuestion.QuestionType.GapFillingQuestion:
                if (parameters.Length == 1)
                {
                    question = new GapFillingQuestion(parameters[0].ToString(), stem);
                }
                else
                {
                    return(false);
                }
                break;

            case ExamQuestion.QuestionType.ShortAnswerQuestion:
                if (parameters.Length == 1)
                {
                    question = new ShortAnswerQuestion(parameters[0].ToString(), stem);
                }
                else
                {
                    return(false);
                }
                break;

            case ExamQuestion.QuestionType.TrueOrFalseQuestion:
                if (parameters.Length == 1)
                {
                    question = new TrueOrFalseQuestion(Convert.ToBoolean(parameters[0].ToString()), stem);
                }
                else
                {
                    return(false);
                }
                break;
            }
            if (question == null)
            {
                return(false);
            }
            ExamQuestion examQuestion = new ExamQuestion(id, examid, question);

            return(UpdateExaminationQuestion(examQuestion));
        }