private void saveButton_Click_1(object sender, EventArgs e) { int count = mainQuestionPanelList.Count; JArray jProblemArray = new JArray(); JArray jAnswerArray = new JArray(); int num = 0; for (int i = 0; i < count; i++) { List <SubQuestionPanel> subQuestionPanelList = mainQuestionPanelList[i].SubQuestionPanelsList; int cnt = subQuestionPanelList.Count; JObject mainJObject = new JObject(); JArray subArray = new JArray(); if (mainQuestionPanelList[i].MainQuestionLabel.Text == "") { MessageBox.Show((i + 1).ToString() + "번 페이지의 문제 유형을 적어주세요.", "출제 오류", MessageBoxButtons.OK, MessageBoxIcon.Warning); examPageNavigationPanel.NowPageTextBox.Text = (i + 1).ToString(); return; } mainJObject.Add("question", mainQuestionPanelList[i].MainQuestionLabel.Text); for (int j = 0; j < cnt; j++) { int type = subQuestionPanelList[j].Type; JObject jObject = new JObject(); jObject.Add("type", type); jObject.Add("num", num + 1); jObject.Add("score", int.Parse(subQuestionPanelList[j].ExamScorePanel.ScoreTextBox.Text)); JObject answerJObject = new JObject(); answerJObject.Add("num", num + 1); answerJObject.Add("score", int.Parse(subQuestionPanelList[j].ExamScorePanel.ScoreTextBox.Text)); if (subQuestionPanelList[j].QuestionLabel.Text == "") { MessageBox.Show("문제를 작성해주세요. (" + (num + 1).ToString() + "번 문제)", "출제 오류", MessageBoxButtons.OK, MessageBoxIcon.Warning); shortCutButtonList[num].PerformClick(); return; } jObject.Add("question", subQuestionPanelList[j].QuestionLabel.Text); if (type == 0) { OXPanel oxPanel = (OXPanel)subQuestionPanelList[j]; answerJObject.Add("answer", oxPanel.Answer); answerJObject.Add("type", "Choice"); } else if (type == 1) { ShortAnswerQuestionPanel shortAnswerQuestionPanel = (ShortAnswerQuestionPanel)subQuestionPanelList[j]; answerJObject.Add("answer", shortAnswerQuestionPanel.AnswerPanel.AnswerLabel.Text); answerJObject.Add("type", "Text"); } else if (type == 2) { EssayQuestionPanel essayQuestionPanel = (EssayQuestionPanel)subQuestionPanelList[j]; answerJObject.Add("answer", essayQuestionPanel.AnswerPanel.AnswerLabel.Text); answerJObject.Add("type", "Essay"); jObject.Add("maxLength", int.Parse(essayQuestionPanel.AnswerPanel.MaxLengthTextBox.Text)); } else { MultipleChoiceQuestionPanel multipleChoiceQuestionPanel = (MultipleChoiceQuestionPanel)subQuestionPanelList[j]; List <MultipleChoicePanel> multipleChoicePanelList = multipleChoiceQuestionPanel.ChoicePaneList; int len = multipleChoicePanelList.Count; if (len == 0) { MessageBox.Show("객관식 문제는 보기가 반드시 필요합니다. (" + (num + 1).ToString() + "번 문제)", "출제 오류", MessageBoxButtons.OK, MessageBoxIcon.Warning); shortCutButtonList[num].PerformClick(); return; } else if (multipleChoiceQuestionPanel.Answer == -1) { MessageBox.Show("객관식 문제의 정답은 반드시 필요합니다. (" + (num + 1).ToString() + "번 문제)", "출제 오류", MessageBoxButtons.OK, MessageBoxIcon.Warning); shortCutButtonList[num].PerformClick(); return; } JArray examples = new JArray(); for (int t = 0; t < len; t++) { JObject example = new JObject(); example.Add("example", multipleChoicePanelList[t].ExampleLabel.Text); examples.Add(example); } jObject.Add("examples", examples); answerJObject.Add("answer", multipleChoiceQuestionPanel.Answer); answerJObject.Add("type", "Choice"); } subArray.Add(jObject); jAnswerArray.Add(answerJObject); num++; } mainJObject.Add("subQuestions", subArray); if (cnt > 0) { jProblemArray.Add(mainJObject); } } if (num == 0) { MessageBox.Show("하나 이상의 문제를 출제하셔야 합니다.", "출제 오류", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //Console.WriteLine(jProblemArray); //Console.WriteLine(jAnswerArray); makeExam(jProblemArray, jAnswerArray); }
private void setSavedQuestions(JArray questions, JArray answers) { int index = 0; int cnt = questions.Count; for (int i = 0; i < cnt; i++) { string mainQuestion = (string)questions[i]["question"]; this.examPageNavigationPanel.AddPageButton.PerformClick(); mainQuestionPanelList[i].MainQuestionLabel.Text = mainQuestion; mainQuestionPanelList[i].MainQuestionTextBox.Text = mainQuestion; mainQuestionPanelList[i].MainQuestionLabel.Visible = true; mainQuestionPanelList[i].MainQuestionTextBox.Visible = false; JArray subQuestions = (JArray)questions[i]["subQuestions"]; int subCnt = (int)subQuestions.Count; for (int j = 0; j < subCnt; j++) { int type = (int)subQuestions[j]["type"]; int score = (int)answers[index]["score"]; string answer = (string)answers[index]["answer"]; string subQuestion = (string)subQuestions[j]["question"]; mainQuestionPanelList[i].QuestionKind.QuestionKindComboBox.SelectedIndex = type; mainQuestionPanelList[i].AddQuestionButton.PerformClick(); SubQuestionPanel subQuestionPanel = mainQuestionPanelList[i].SubQuestionPanelsList[j]; subQuestionPanel.QuestionLabel.Text = subQuestion; subQuestionPanel.QuestionTextBox.Text = subQuestion; subQuestionPanel.QuestionLabel.Visible = true; subQuestionPanel.QuestionTextBox.Visible = false; subQuestionPanel.ExamScorePanel.ScoreTextBox.Text = score.ToString(); if (type == 0) { OXPanel oxPanel = (OXPanel)subQuestionPanel; if (answer == "1") { oxPanel.OButton.PerformClick(); } else { oxPanel.XButton.PerformClick(); } oxPanel.setLayout(); } else if (type == 1) { ShortAnswerQuestionPanel shortAnswerQuestionPanel = (ShortAnswerQuestionPanel)subQuestionPanel; shortAnswerQuestionPanel.AnswerPanel.AnswerLabel.Text = answer; shortAnswerQuestionPanel.AnswerPanel.AnswerTextBox.Text = answer; if (!answer.Equals("")) { shortAnswerQuestionPanel.AnswerPanel.AnswerLabel.Visible = true; shortAnswerQuestionPanel.AnswerPanel.AnswerTextBox.Visible = false; } shortAnswerQuestionPanel.setLayout(); } else if (type == 2) { EssayQuestionPanel essayQuestionPanel = (EssayQuestionPanel)subQuestionPanel; int maxLength = (int)subQuestions[j]["maxLength"]; essayQuestionPanel.AnswerPanel.AnswerTextBox.MaxLength = maxLength; essayQuestionPanel.AnswerPanel.MaxLengthTextBox.Text = maxLength.ToString(); essayQuestionPanel.AnswerPanel.AnswerLabel.Text = answer; essayQuestionPanel.AnswerPanel.AnswerTextBox.Text = answer; if (!answer.Equals("")) { essayQuestionPanel.AnswerPanel.AnswerLabel.Visible = true; essayQuestionPanel.AnswerPanel.AnswerTextBox.Visible = false; } essayQuestionPanel.setLayout(); } else { MultipleChoiceQuestionPanel multipleChoiceQuestionPanel = (MultipleChoiceQuestionPanel)subQuestionPanel; JArray examples = (JArray)subQuestions[j]["examples"]; int len = examples.Count; for (int t = 0; t < len; t++) { string example = (string)examples[t]["example"]; multipleChoiceQuestionPanel.AddButton.PerformClick(); multipleChoiceQuestionPanel.ChoicePaneList[t].ExampleLabel.Text = example; multipleChoiceQuestionPanel.ChoicePaneList[t].ExampleTextBox.Text = example; multipleChoiceQuestionPanel.ChoicePaneList[t].ExampleLabel.Visible = true; multipleChoiceQuestionPanel.ChoicePaneList[t].ExampleTextBox.Visible = false; } multipleChoiceQuestionPanel.ChoicePaneList[int.Parse(answer)].ExampleRadioButton.PerformClick(); multipleChoiceQuestionPanel.setLayout(); } index++; } } }