Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/57: Рейтинг темы: голосов - 57, средняя оценка - 4.58
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36

Написать программу тестирования

11.03.2013, 20:47. Показов 11771. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я хочу сделать программу тестов, но не знаю с чего начать ,набросал вид программы ...
я бы хотел чтоб после каждого вопроса выходил следующий со своими вариантами ответов и чтоб правильные ответы ,которые ответил пользователь сохранились и в конце вывелся результат сколько правильных он набрал.на
помогите с чего начать ,выложите свои наработки, я буду выкладывать свои
Буду очень благодарен всем кто откликнется на мою просьбу
Миниатюры
Написать программу тестирования  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2013, 20:47
Ответы с готовыми решениями:

Написать программу тестирования знаний в консоли
Написать программу тестирования знаний студентов (в консоли). Вопросы для тестирования должны выбираться из файла случайным образом....

Написать программу тестирования, в которой проверяется использование всех перегруженных операций
Написать программу тестирования, в которой проверяется использование всех перегруженных операций. Класс – время CVector. Дополнительно...

Написать программу тестирования для конкретного XML файла
Есть xml файл <?xml version="1.0"?> <root> <item title = "Математика" /> <quest> <test>Сколько будет 4*5 = ?:</test> ...

45
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
11.03.2013, 21:59  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от dima26072301 Посмотреть сообщение
Vladok1234567, Вам описать формально работу программы или код нужен?
ну формально я понимаю как код должен быть ,но знаний не хватает в некоторых моментах кода чтоб написать его ,помоги если не трудно

Добавлено через 3 минуты
Цитата Сообщение от Anklav Посмотреть сообщение

Не по теме:

Кликните здесь для просмотра всего текста



:facepalm:

есть проблемы ?
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
11.03.2013, 22:05
Советую скачать книгу "Visual C# в задачах и примерах" Никита Культин. Там есть рассмотренный пример "Экзаменатор" , т.е ваша работа.
0
7 / 8 / 0
Регистрация: 15.11.2012
Сообщений: 203
11.03.2013, 22:09
Anklav, что-то в коде не так?

Добавлено через 1 минуту
Vladok1234567, что Вы уже написали?
0
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
11.03.2013, 22:19  [ТС]
Цитата Сообщение от ITL Посмотреть сообщение
Советую скачать книгу "Visual C# в задачах и примерах" Никита Культин. Там есть рассмотренный пример "Экзаменатор" , т.е ваша работа.
хорошо, но как это на форме делать ,я ведь буду не в консольной меню показывать, как менять вопросы на Radiobutton и т.п.

Добавлено через 4 минуты
Цитата Сообщение от dima26072301 Посмотреть сообщение
Anklav, что-то в коде не так?

Добавлено через 1 минуту
Vladok1234567, что Вы уже написали?
как менять вопросы на Radiobutton и сам вопрос если я хочу использовать только 1 форму
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
11.03.2013, 22:21
Цитата Сообщение от Vladok1234567 Посмотреть сообщение
хорошо, но как это на форме делать ,я ведь буду не в консольной меню показывать, как менять вопросы на Radiobutton и т.п.
Если вам говорят скачать какую-то книгу, то не просто так. В этой книге , о боже ВСЕ задачи написаны в ВинФормах.
0
7 / 8 / 0
Регистрация: 15.11.2012
Сообщений: 203
11.03.2013, 22:23
Как я бы сделал:
1.Поместил бы 4 текстбокса на форму.Вывел в них варианты ответа.
Далее пользователь выбрал нужный->по нажатию на кнопку следующий сравнивал с ответом из файла->сделал текстбоксы пустыми->и снова вывел в них следующие варианты ответа, а также поменял вопрос в текстбоксе.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
11.03.2013, 22:24
C#
1
2
3
4
OpenFileDialog openfile = new OpenFileDialog();
openfile.ShowDialog();
InitializeComponent(); // <<<<<
textBox1.Text = System.IO.File.ReadAllText(openfile.FileName);
Вы видели вообще место куда вы этот код вставили?
Вот вставят этот код куда нибудь в кнопку, и будут 2 раза инициализированы компоненты.
Как минимум есть событие загрузки (Load) формы, лучше этот код вставлять туда, и без метода инициализации. Или хотя бы после.. но ни как не вокруг
0
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
11.03.2013, 22:25  [ТС]
Цитата Сообщение от ITL Посмотреть сообщение
Если вам говорят скачать какую-то книгу, то не просто так. В этой книге , о боже ВСЕ задачи написаны в ВинФормах.
я нашел этот пример ,но там вроде бы в консольном меню ,а мне надо связать это с WindowsApplication
0
7 / 8 / 0
Регистрация: 15.11.2012
Сообщений: 203
11.03.2013, 22:25
Anklav, просто из своей проги вырвал код,не обратив внимание на строку.
Буду внимательнее! Ваше замечание учел!
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
11.03.2013, 22:32
Цитата Сообщение от Anklav Посмотреть сообщение
C#
1
2
3
4
OpenFileDialog openfile = new OpenFileDialog();
openfile.ShowDialog();
InitializeComponent(); // <<<<<
textBox1.Text = System.IO.File.ReadAllText(openfile.FileName);
Вы видели вообще место куда вы этот код вставили?
Вот вставят этот код куда нибудь в кнопку, и будут 2 раза инициализированы компоненты.
Как минимум есть событие загрузки (Load) формы, лучше этот код вставлять туда, и без метода инициализации. Или хотя бы после.. но ни как не вокруг

Не по теме:

ахаха жесть, только сейчас заметил. dima26072301 жжет :rofl:

просто из своей проги вырвал код,не обратив внимание на строку.
представляю, что там за "прога"
1
7 / 8 / 0
Регистрация: 15.11.2012
Сообщений: 203
11.03.2013, 22:34
Winhttp22, не считаю твое замечание конструктивным...и смотри,чтобы тебя не выжег...
0
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
11.03.2013, 22:41  [ТС]
dima26072301, давай я завтра напишу как я понимаю и выложу, а ты проверишь правильно ли я думаю
0
7 / 8 / 0
Регистрация: 15.11.2012
Сообщений: 203
12.03.2013, 05:43
Vladok1234567, хорошо,жду
1
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
12.03.2013, 21:18  [ТС]
можете в cs файле прокомментировать что каждая строка значит?
Вложения
Тип файла: rar тест.rar (45.7 Кб, 138 просмотров)
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
12.03.2013, 21:25
Цитата Сообщение от Vladok1234567 Посмотреть сообщение
давай я завтра напишу как я понимаю и выложу, а ты проверишь правильно ли я думаю
Цитата Сообщение от Vladok1234567 Посмотреть сообщение
можете в cs файле прокомментировать что каждая строка значит?


Я тут тоже пишу эту прогу, но там посложнее чем выложенный вариант, поэтому чуть недописал, но чувствую толку сюда выкладывать не будет. Или выложить, когда/если доделаю?
0
-1 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 36
12.03.2013, 21:28  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение


Я тут тоже пишу эту прогу, но там посложнее чем выложенный вариант, поэтому чуть недописал, но чувствую толку сюда выкладывать не будет. Или выложить, когда/если доделаю?
выкладывай я просто только начал учить C# )
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
13.03.2013, 16:10
Короче, я написал так: При запуске создаётся тест (если не существует) и начинается тестирование по этому тесту. Как все вопросы закончились и все ответы выбраны, то появляется окно сообщающее сколько верных ответов. И потом после закрытия окна запускается этот же тест по новой. Так сделал, потому что не знаю где ты будешь хранить тесты, что собираешься делать после тестирования, грузить сразу много тестов или по одному выбирать, короче вообще не знаю что и как, поэтому тупо по кругу один тест гоняю .

В TestingFramework есть ещё наверное не понятные оценки за каждый вопрос, это я делал для таких тестов, где надо набрать определённое кол-во очков, скажем, если набрал от:10-ти до 45-ти, то покажут тебе один текст, если набрал от 46-ти до 90, то покажут другой. Но и для обычных тестов эта библиотека тоже подходит.

>>> В этом проекте есть редактор для создания тестов на WPF, проект dll TestingFramework и простенькая прожка для тестирования на Windows Forms.

Вот код с главного окна, это далеко не весь код и думаю далеко не основной, так хоть для какой-то наглядности:
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using TestingFramework;
 
namespace WinForms_Test
{
    public partial class MainForm : Form
    {
        private TestingLogic _testLogic;
        private Answer _currentAnswer;
 
        public MainForm()
        {
            InitializeComponent();
 
            StartPosition = FormStartPosition.CenterScreen;
        }
 
        #region Обработчики событий TestingLogic
 
        //Происходит, когда выбран новый тест
        private void TestLogic_TestSelected(object sender, EventArgs e)
        {
            ClearQuestion();
            _testLogic.NextQuestion();
        }
 
        //Происходит при выборе следующего вопроса
        private void TestLogic_NextQuestionSelected(object sender, TestingFramework.QuestionEventArgs e)
        {
            ShowQuestion(e.Question);
        }
 
        //Происходит, когда кончаются вопросы в тесте
        private void TestLogic_TestEnded(object sender, EventArgs e)
        {
            TestingLogic tLogic = (TestingLogic) sender;
            ShowResults(tLogic.CorrectResponses, tLogic.QuantityQuestions);
            tLogic.ResetStatsOfCurrentTest();
            tLogic.ChooseTest(LoadTest(Global.TestFile));
        }
        #endregion
 
        #region Обработчики событий окна и контролов MainForm
 
        //Происходит при первой прорисовке окна
        private void MainForm_Shown(object sender, EventArgs e)
        {
            //это просто для удобства, а так конечно же надо переписать логику
            //загрузки тестов (скажем целого списка тестов).
            if (!File.Exists(Global.TestFile)) 
                CreateTestFile();
            
            _testLogic = new TestingLogic(LoadTest(Global.TestFile));
            _testLogic.NextQuestionSelected += new EventHandler<TestingFramework.QuestionEventArgs>(TestLogic_NextQuestionSelected);
            _testLogic.TestEnded += new EventHandler(TestLogic_TestEnded);
            _testLogic.TestSelected += new EventHandler(TestLogic_TestSelected);
            _testLogic.NextQuestion();
        }
 
        //Происходит при нажатии на кнопку
        private void NextQuestionButton_Click(object sender, EventArgs e)
        {
            _testLogic.AcceptAnswer(_currentAnswer);
            _testLogic.NextQuestion();
        }
 
        //Происходит при выборе одного из RadioButton
        private void AnswersRadBtn_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton radioButton = (RadioButton)sender;
            nextQestionButton.Enabled = radioButton.Checked;
            Answer answer = radioButton.Tag as Answer;
            if (answer != null)
            {
                _currentAnswer = answer;
            }
        }
        #endregion
 
        #region Методы
 
        private Test LoadTest(string path)
        {
            if (path == null)
                throw new ArgumentNullException("path");
            if (string.IsNullOrWhiteSpace(path))
                throw new ArgumentException("path");
            if (!File.Exists(path))
                throw new FileNotFoundException("path");
 
            IDataInteraction di = new TxtDataInteraction();
            return di.LoadTest(path);
        }
 
        //Я тут неподумав сделал для радиокнопок, которые уже есть в GroupBox, 
        //а можно наполнять сам GroupBox в зависимости от кол-ва ответов. Короче, так пока сойдёт.
        private void ShowQuestion(Question question)
        {
            questionLabel.Text = question.Text;
            List<RadioButton> radButtons = new List<RadioButton>(answersGroupBox.Controls.Count);
            foreach (var control in answersGroupBox.Controls)
                if (control is RadioButton)
                {
                    radButtons.Add(control as RadioButton);
                    (control as RadioButton).Checked = false;
                    (control as RadioButton).Visible = true;
                }
 
            int quantityIterations = question.Answers.Count > radButtons.Count
                                         ? radButtons.Count
                                         : question.Answers.Count;
            Random rand = new Random();
            for (int i = 0; i < quantityIterations; i++)
            {
                int index = rand.Next(0, radButtons.Count);
                radButtons[index].Text = question.Answers[i].Text;
                radButtons[index].Tag = question.Answers[i];
                radButtons.RemoveAt(index);
            }
        }
 
        private void ClearQuestion()
        {
            questionLabel.Text = string.Empty;
            foreach (var control in answersGroupBox.Controls)
                if (control is RadioButton)
                {
                    RadioButton rb = control as RadioButton;
                    rb.Checked = false;
                    rb.Text = string.Empty;
                    rb.Tag = null;
                    rb.Visible = false;
                }
        }
 
        private void ShowResults(uint correctResponses, int quantityQuestions)
        {
            string text = string.Format("Правильных ответов: {0} из {1} вопросов", correctResponses, quantityQuestions);
            MessageBox.Show(this, text, Application.ProductName);
 
        }
 
        #endregion
 
        #region Просто для примера
 
        private static void CreateTestFile()
        {
            Test test = new Test();
            test.Description.Title = "Тестовый тест :)";
            test.Description.AdditionalInformation = "Дополнительная информация должна быть здесь";
 
            Question q1 = new Question("Чему равен 1 байт?");
            q1.Answers.Add(new Answer("10 бит", 0u, false));
            q1.Answers.Add(new Answer("10 Кбайт", 0u, false));
            q1.Answers.Add(new Answer("1 бот", 0u, false));
            q1.Answers.Add(new Answer("8 бит", 1u, true));
 
            Question q2 = new Question("23 февраля это какой праздник?");
            q2.Answers.Add(new Answer("День программиста", 0u, false));
            q2.Answers.Add(new Answer("Масленница", 0u, false));
            q2.Answers.Add(new Answer("Новый год", 0u, false));
            q2.Answers.Add(new Answer("День защитника отечества", 1u, true));
 
            Question q3 = new Question("1 января это какой праздник?");
            q3.Answers.Add(new Answer("Это не праздник", 0u, false));
            q3.Answers.Add(new Answer("День защитника отечества", 0u, false));
            q3.Answers.Add(new Answer("День знаний", 0u, false));
            q3.Answers.Add(new Answer("Новый год", 1u, true));
 
            test.Questions.Add(q1);
            test.Questions.Add(q2);
            test.Questions.Add(q3);
 
            IDataInteraction di = new TxtDataInteraction();
            di.SaveTest(test, Global.TestFile);
        }
        #endregion
    }
}
Ну и я хотел ещё дописать сбор статистики по всем тестам, что прогонялись отдельно от статистики по текущему тесту, но чёт реально стало лень . Именно поэтому один из методов класса TestingLogic называется именно так: ResetStatsOfCurrentTest.
Вложения
Тип файла: zip WinForms_Test.zip (285.0 Кб, 274 просмотров)
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
13.03.2013, 16:54
я бы сделал след. образом - отдельную утилиту бы написал, для формирвания файла теста - 5 текстбоксов, в которые забиваешь вопрос и варианты ответа, 4 радиобокса, где выбираешь - какой вариант верный, ну и кнопка, уоторая записывала бы данные в файл. файл имел бы след. структуру -
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1. Вопрос :
1.  вариант
2. вариант
3. вариант
4. вариант
3 \\ правильный вариант ответа
2. Вопрос :
1.  вариант
2. вариант
3. вариант
4. вариант
1 
3. Вопрос :
1.  вариант
2. вариант
3. вариант
4. вариант
4
файл шифруется, чтобы пользователь не смог глянуть правильные варианты ответа.
ну и сам тестировщик - читает данные из файла, и пишет каждую строку в List<string>, далее запускаем обыкновенный цикл и выводим вопросы, и варианты, если ответ правильный - то засчитываем правильный ответ.

это был бы "универсальный тестировщик", к которому можно разные тесты придумывать. если еще подумать - то можно еще чет прикрутить
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
13.03.2013, 16:58
Цитата Сообщение от Winhttp22 Посмотреть сообщение
я бы сделал след. образом - отдельную утилиту бы написал, для формирвания файла теста
Ну дык я и написал такую утилиту. В принципе там чуть подправить сам проект выводящий тесты и всё будет гуд. Поправить так, чтобы он работал с множеством тестов по определённым условиям, которых я не знаю. Поэтому работает с одним тестом, гоняя его по кругу . Короче, это всё мелочи, которые дописываются достаточно легко и просто.
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
13.03.2013, 16:59
Winhttp22, Проще создать Serializable класс Вопрос с полями Текст вопроса, вырианты ответа, правильный ответ или как то так. И записывать его в файл и читать оттуда.
http://code-inside.net/serialization/
http://msdn.microsoft.com/ru-r... 33843.aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2013, 16:59

Написать программу тестирования
Нужна готовая программа - тестер. Кто может киньте пожалуйста. Можете кидать все что есть. Мне нужна программа &quot;Тестер&quot; в...

Написать программу тестирования
всем доброго времени суток! нужна помощь в описании процедуры при нажатии кнопки дальше. программа заключается в следующем: даны 20...

Написать программу тестирования
Подскажите, как сделать тест в паскале типа: вопрос, ответ( если правильно, то следующий вопрос, если неправильно, то подсказка, затем...

Написать программу тестирования
на днях надо сдать программу, а я никак не могу ее написать((( мне нужен тест на языке вб нет! на тему создание информационной системы

Написать программу тестирования
Всем привет.Задумал написать программу для тестирования , хотел бы кое-что узнать: -Есть ли какие-нибудь гайды,faq или прочее? -С чего...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru