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("生成成功"); }
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); }
public void SaveExaminationQuestion() { if (_quetionBankBusiness.SaveExaminationQuestion(ExaminationQuestion)) { PUMessageBox.ShowDialog("保存成功"); ExaminationQuestion = new ExaminationQuestion(); } else { PUMessageBox.ShowDialog("保存失败"); } Init(); }
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(); }
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); }
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("生成成功"); }
public bool AddExaminationQuestion(ExaminationQuestion examinationQuestion) { _myDbContext.ExaminationQuestion.Add(examinationQuestion); _myDbContext.SaveChanges(); return(true); }
/// <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)); }