Как пометить в txt правильный ответ для теста? - C#

Узнай цену своей работы

Формулировка задачи:

Ребят делаю тест. Нашел у вас на сайте годный пример все работает но не могу понять как он определяет правильные ответы в упор не пойму.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11. namespace MelodyGuess
  12. {
  13. public partial class fTest : Form
  14. {
  15. int CountOfAsk; //счет вопросов
  16. int CorrectAnswers; //количество правильных ответов
  17. int NotCorrectAnswers; //количество неправильных ответов
  18. string[] mNotCorrectAnswers; //массив вопросов на которые даны неправильные ответы
  19. int NumberCorrectAnswer; //номер правильного ответа
  20. int ChooseAnswer; //номер ответа, выбранный пользователем
  21. StreamReader reader;
  22. public fTest()
  23. {
  24. InitializeComponent();
  25. }
  26. private void fTest_Load(object sender, EventArgs e)
  27. {
  28. button1.Text = "Next ask";
  29. button2.Text = "Exit";
  30. //подписка на событие "ChangeStatus" RadioButton
  31. radioButton1.CheckedChanged += new EventHandler(ChangeStatus);
  32. radioButton2.CheckedChanged += new EventHandler(ChangeStatus);
  33. radioButton3.CheckedChanged += new EventHandler(ChangeStatus);
  34. radioButton4.CheckedChanged += new EventHandler(ChangeStatus);
  35. //начало теста
  36. BeginTest();
  37. }
  38. private void BeginTest()
  39. {
  40. var coding = Encoding.GetEncoding(1251);
  41. try
  42. {
  43. //создание экземпляра StreamReader для чтение из файла
  44. reader = new StreamReader(@"C:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
  45. // reader = new StreamReader(Directory.GetCurrentDirectory() + @"E:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
  46. // string text = File.ReadAllText(@"C:\MelodyGuess\MelodyGuess\Resources\test.txt");
  47. Text = reader.ReadLine(); //название предмета
  48. //обнуление всех счетчиков
  49. CountOfAsk = 0; CorrectAnswers = 0; NotCorrectAnswers = 0;
  50. //задаем размер массива для неправильных ответов
  51. mNotCorrectAnswers = new string[100];
  52. }
  53. catch (Exception ex)
  54. {
  55. //отчет о всех ошибках
  56. MessageBox.Show(ex.Message, "Error",
  57. MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  58. }
  59. ReadNextAsk();
  60. }
  61. private void ReadNextAsk()
  62. {
  63. //считывание вопроса
  64. label1.Text = reader.ReadLine();
  65. //считывание вариантов ответов
  66. radioButton1.Text = reader.ReadLine();
  67. radioButton2.Text = reader.ReadLine();
  68. radioButton3.Text = reader.ReadLine();
  69. radioButton4.Text = reader.ReadLine();
  70. //выясняем какой ответ правильный
  71. //NumberCorrectAnswer = int.Parse(reader.ReadLine());
  72. //переводим все переключатели в состояние "выключено"
  73. radioButton1.Checked = false;
  74. radioButton2.Checked = false;
  75. radioButton3.Checked = false;
  76. radioButton4.Checked = false;
  77. //первую кнопку задаем неактивной пока студент не выберет вариант ответа
  78. button1.Enabled = false;
  79. //подсчитываем количество вопросов
  80. CountOfAsk = CountOfAsk + 1;
  81. //проверяем не конец ли файла
  82. if (reader.EndOfStream == true) button1.Text = "Finish";
  83. }
  84.  
  85. private void ChangeStatus(object sender, EventArgs e)
  86. {
  87. //кнопка "Next ask" становиться активной и ей передаем фокус
  88. button1.Enabled = true;
  89. button1.Focus();
  90. RadioButton perek = (RadioButton)sender;
  91. var temp = perek.Name;
  92. //выясняем номер ответа, выбранный студентом
  93. ChooseAnswer = int.Parse(temp.Substring(11));
  94. }
  95. private void button1_Click(object sender, EventArgs e)
  96. {
  97. //счет правильных ответов
  98. if (ChooseAnswer == NumberCorrectAnswer) CorrectAnswers += 1;
  99. //
  100. if (ChooseAnswer != NumberCorrectAnswer)
  101. {
  102. NotCorrectAnswers += 1;
  103. //запоминаем вопросы с неправильными ответами
  104. mNotCorrectAnswers[NotCorrectAnswers] = label1.Text;
  105. }
  106. if (button1.Text == "Start test begin")
  107. {
  108. button1.Text = "Next ask";
  109. //Переключатели становятся видимыми, доступными для выбора
  110. radioButton1.Visible = true;
  111. radioButton2.Visible = true;
  112. radioButton3.Visible = true;
  113. radioButton4.Visible = true;
  114. //переходим к началу файла
  115. BeginTest();
  116. return;
  117. }
  118. if (button1.Text == "Finish")
  119. {
  120. //закрываем текстовый файл
  121. reader.Close();
  122. //переключатели делаем невидимыми
  123. radioButton1.Visible = false;
  124. radioButton2.Visible = false;
  125. radioButton3.Visible = false;
  126. radioButton4.Visible = false;
  127. //формируем оценку за тест
  128. label1.Text = String.Format("Testing completed.\n" +
  129. "Правильных ответов {0} из {1}.\n"
  130. + "Оценка в пятибалльной системе: {2:F2}.", CorrectAnswers, CountOfAsk,
  131. (CorrectAnswers * 5.0F) / CountOfAsk);
  132. button1.Text = "Start test begin";
  133. //вывод вопросов на которые вы дали неправильный ответ
  134. var str = "Список вопросов, на которые вы дали " + "неправильный ответ: \n\n";
  135. for (int i = 1; i <= NotCorrectAnswers; i++)
  136. {
  137. str = str + mNotCorrectAnswers[i] + "\n";
  138. }
  139. //если есть неправильные то вывести их через MessageBox
  140. if (NotCorrectAnswers != 0)
  141. MessageBox.Show(str, "Testing completed");
  142.  
  143. }
  144. if (button1.Text == "Next ask") ReadNextAsk();
  145. }
  146. private void button2_Click(object sender, EventArgs e)
  147. {
  148. Close();
  149. }
  150. }
  151. }
А и вот эта строчка не работает
Листинг программы
  1. reader = new StreamReader(Directory.GetCurrentDirectory() + @"E:\MelodyGuess\MelodyGuess\Resources\test.txt", coding);
Работает норм если исключить метод
Листинг программы
  1. Directory.GetCurrentDirectory()
Листинг программы
  1. //выясняем какой ответ правильный
  2. //NumberCorrectAnswer = int.Parse(reader.ReadLine());
Собственно вот тут тоже встала проблема где и как переменной через это
Листинг программы
  1. int.Parse(reader.ReadLine())
присвоить значение???

Решение задачи: «Как пометить в txt правильный ответ для теста?»

textual
Листинг программы
  1. <Test>
  2.     <Problem>
  3.         <Question>Ce familie poarta decanul facultatii FCIM ?</Question>
  4.         <Options>
  5.             <Option valid="true">Balmus</Option>
  6.             <Option>Melnic</Option>
  7.             <Option>Pavlov</Option>
  8.             <Option>Vasilache</Option>
  9.         </Options>
  10.     </Problem>
  11.     <Problem>
  12.         <Question>Cum se numeste raionul in care este situat blocul 3 al UTM ?</Question>
  13.         <Options>
  14.             <Option>Venus</Option>
  15.             <Option>Centru</Option>
  16.             <Option valid="true">Riscani</Option>
  17.             <Option>Ciocana</Option>
  18.         </Options>
  19.     </Problem>
  20.     <Problem>
  21.         <Question>Pentru ce ne trebuie sa terminam universitatea ?</Question>
  22.         <Options>
  23.             <Option>Sa devenim oameni de succes</Option>
  24.             <Option>Sa irososim timpul degeaba</Option>
  25.             <Option valid="true">Pentru a obtine o diploma</Option>
  26.             <Option>Pentru a capata cunostinte</Option>
  27.         </Options>
  28.     </Problem>
  29. </Test>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы