Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/89: Рейтинг темы: голосов - 89, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 29.09.2016
Сообщений: 2

Самый простой тест на С#

01.10.2016, 14:09. Показов 16864. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите новичку, есть код примитивного теста на C# c вопросом (label) и 3 ответами (radio.button), которые выводятся на форме, вопросы берутся из .txtшника, но если вопрос или ответ слишком длинный он выходит за форму, необходим перенос строки на новую. Приношу извинения за глупый вопрос. Искал ответ на форумах так и не нашел. В идеале, конечно, кому будет нетяжело подсказать, чтобы из txt при выводить вопросы в случайном порядке, при нажатии на "начать тестирование"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 public partial class Form1 : Form
    {
        // Внешние переменные:
        int СчетВопросов; // Счет вопросов
        int ПравилОтветов;  // Количество правильных ответов
        int НеПравилОтветов; // Количество не правильных ответов
        // Массив вопросов, на которые даны неправильные ответы:
        String[] НеПравилОтветы; // Размерность этого массива зададим позже
        int НомерПравОтвета;  // Номер правильного ответа
        int ВыбранОтвет;  // Номер ответа, выбранный студентом
        System.IO.StreamReader Читатель;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "Следующий вопрос";
            button2.Text = "Выход";
            // Подписка на событие изменение состояния
            // переключателей RadioButton:
            radioButton1.CheckedChanged += new EventHandler(ИзмСостПерекл);
            radioButton2.CheckedChanged += new EventHandler(ИзмСостПерекл);
            radioButton3.CheckedChanged += new EventHandler(ИзмСостПерекл);
            НачалоТеста();
        }
        void НачалоТеста()
        {
            var Кодировка = System.Text.Encoding.GetEncoding(1251);
            try
            {
                // Создание экземпляра StreamReader для чтения из файла
                Читатель = new System.IO.StreamReader(
                System.IO.Directory.GetCurrentDirectory() +
                                               @"\test.txt", Кодировка);
                this.Text = Читатель.ReadLine(); // Название предмета
                // Обнуление всех счетчиков:
                СчетВопросов = 0; ПравилОтветов = 0; НеПравилОтветов = 0;
                // Задаем размер массива для НеПравилОтветы:
                НеПравилОтветы = new String[100];
            }
            catch (Exception Ситуация)
            {   // Отчет о всех ошибках:
                MessageBox.Show(Ситуация.Message, "Ошибка",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            ЧитатьСледВопрос();
        }
        void ЧитатьСледВопрос()
        {
            label1.Text = Читатель.ReadLine();
            // Считывание вариантов ответа:
            radioButton1.Text = Читатель.ReadLine();
            AutoSize = true;
            radioButton2.Text = Читатель.ReadLine();
            AutoSize = true;
            radioButton3.Text = Читатель.ReadLine();
            AutoSize = true;
         // Выясняем, какой ответ - правильный:
            НомерПравОтвета = int.Parse(Читатель.ReadLine());
            // Переводим все переключатели в состояние "выключено":
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            // Первую кнопку задаем не активной, пока студент не выберет
            // вариант ответа
            button1.Enabled = false;
            СчетВопросов = СчетВопросов + 1;
            // Проверка, конец ли файла:
            if (Читатель.EndOfStream == true) button1.Text = "Завершить";
        }
        void ИзмСостПерекл(Object sender, EventArgs e)
        {
            // Кнопка "Следующий вопрос" становится активной, и ей
            // передаем фокус:
            button1.Enabled = true; button1.Focus();
            RadioButton Переключатель = (RadioButton)sender;
            var tmp = Переключатель.Name;
            // Выясняем номер ответа, выбранный студентом:
            ВыбранОтвет = int.Parse(tmp.Substring(11));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // Щелчок на кнопке
            // "Следующий вопрос/Завершить/Начать тестирование снач"
            // Счет правильных ответов:
            if (ВыбранОтвет == НомерПравОтвета) ПравилОтветов =
                                                ПравилОтветов + 1;
            if (ВыбранОтвет != НомерПравОтвета)
            {
                // Счет неправильных ответов:
                НеПравилОтветов = НеПравилОтветов + 1;
                // Запоминаем вопросы с неправильными ответами:
                НеПравилОтветы[НеПравилОтветов] = label1.Text;
            }
            if (button1.Text == "Начать тестирование сначала")
            {
                button1.Text = "Следующий вопрос";
                // Переключатели становятся видимыми, доступными для выбора:
                radioButton1.Visible = true;
                radioButton2.Visible = true;
                radioButton3.Visible = true;
                // Переход к началу файла:
                НачалоТеста(); return;
            }
            if (button1.Text == "Завершить")
            {
                // Закрываем текстовый файл:
                Читатель.Close();
                // Переключатели делаем невидимыми:
                radioButton1.Visible = false;
                radioButton2.Visible = false;
                radioButton3.Visible = false;
                // Формируем оценку за тест:
                label1.Text = String.Format("Тестирование завершено.\n" +
                    "Правильных ответов: {0} из {1}.\n" +
                    "Оценка в пятибальной системе: {2:F2}.", ПравилОтветов,
                    СчетВопросов, (ПравилОтветов * 5.0F) / СчетВопросов);
                // 5F - это максимальная оценка
                button1.Text = "Начать тестирование сначала";
                // Вывод вопросов, на которые "Вы дали неправильный ответ":
                var Str = "СПИСОК ВОПРОСОВ, НА КОТОРЫЕ ВЫ ДАЛИ " +
                          "НЕПРАВИЛЬНЫЙ ОТВЕТ:\n\n";
                for (int i = 1; i <= НеПравилОтветов; i++)
                    Str = Str + НеПравилОтветы[i] + "\n";
 
                // Если есть неправильные ответы, то вывести через
                // MessageBox список соответствующих вопросов:
                if (НеПравилОтветов != 0) MessageBox.Show(
                                          Str, "Тестирование завершено");
            } // Конец условия if (button1.Text == "Завершить")
            if (button1.Text == "Следующий вопрос") ЧитатьСледВопрос();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            // Щелчок на кнопке "Выход"
            this.Close();
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2016, 14:09
Ответы с готовыми решениями:

Самый самый самый простой пример рекурсии
приведите самый прост пример рекурсии)))void main(int k) { int n=10; k=n; k++; n=k; if(n!=20)main(n); ...

Самый-самый простой калькулятор на JS
6) Даны два вещественных положительных числа х и у. арифметические действия над ними пронумерованы (сложение – 1, вычитание – 2,...

Самый простой подсчет+
К сожалению так и не смог освоить js. Вопрос такой. Есть у меня три импута текста. В каждом числовые значения. Первый задан, допустим 2,...

2
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
01.10.2016, 18:21
исправил exam, теперь работает
Вложения
Тип файла: rar exam.rar (59.6 Кб, 677 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2016, 18:21
Помогаю со студенческими работами здесь

Самый простой запрос в бд
Добрый день. Обыскал всё. Это всё очень сложное. Задача: Есть 2 кнопки. Как сделать чтобы при нажатии на зеленую кнопку увеличивалось...

Тетрис (самый простой)
Написать простенький Тетрис на FASM

Самый простой компилятор
В чём ошибка? Компилятор выдаёт ошибку. #include &lt;iostream&gt; using namespace std; using std:cout; using std::cin; ...

Самый простой предел
\lim{n}^{\frac{4}{n}} n\rightarrow ∞ Не могу понять, можно написать, что предел равен 1, так как 4/ббв=0, и {n}^{0}=1? ...

Самый простой сайт
Здравствуйте. Задали сделать сайт в универе, а я все лекции пропустила :( Говорят ничего сложного, но я совсем не разбираюсь. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru