Аватарка пользователя Искусство разработки игр на С++
Искусство разработки игр на С++

Пишем программу для тестирования на С++

Рассказываем, как написать программу тестирования для проверки работы или знаний человека. В качестве языка программирования используем С++.

4967

В современном мире эффективным способом проверки знаний считается тестирование. Тесты применяются практически во всех сферах: аттестация, образование, сертификация, психология, подбор персонала и т.д. Тестирование позволяет за короткий срок проверить знания человека и оценить его. Чтобы автоматизировать тестирование, разработчики создают специальное программное обеспечение.

Подготовительная работа

Для написания прототипа простого приложения для тестирования на языке программирования С++ мы создадим два текстовых файла.

В файл под именем test.txt запишем вопросы к тесту. Каждый вопрос в файле находится на двух строчках и состоит из вопроса и вариантов ответа.

При сохранении файла, выбираем пункт меню — Cохранить как, и устанавливаем кодировку символов ANSI для корректного отображения текста в консоли.

Пишем программу для тестирования на С++ 1
Пишем программу для тестирования на С++ 2

Во втором файле, назовём его answer.txt, в каждой строчке пропишем ответ на вопрос файла test.txt, выполняя заранее установленную последовательность.

При сохранении файла, как и ранее, выбираем пункт меню — Cохранить как, и устанавливаем кодировку символов ANSI, для корректного отображения текста в консоли.

Пишем программу для тестирования на С++ 3
Пишем программу для тестирования на С++ 4

Начинаем проектировать

Пишем программу для тестирования на С++ 5

В коде программы используем заголовочные файлы: iostream (обеспечивает ввод — вывод в консоль), fstream (предоставляет интерфейс для чтения или записи данных в файл), string (организовывает работу со строками). Команда using namespace std сообщает компилятору, что мы хотим использовать всё, что находится в пространстве имен std.

Функция void test()

Пишем программу для тестирования на С++ 6

Функция void test() читает из файла test.txt вопросы к тесту и выводит их в консоль. Открывает новый файл myanswer.txt и записывает в него ответы пользователя. По окончанию тестирования закрывает оба файла.

ifstream f — объекты класса ifstream предоставляют возможность для чтения файлов.

f.open("test.txt") — с помощью данного объекта, используя метод open, открываем файл test.txt.

ofstream out —  объекты класса оfstream позволяют нам открывать файлы для записи данных.

out.open("myanswer.txt") — для открытия файла myanswer.txt используется метод open.

Для работы с прочитанными данными из файла test.txt, используем переменную строкового типа str, ответы пользователя будем сохранять в переменную строкового типа otv.

Каждый вопрос теста нумеруем целочисленной переменной z.

Перед началом работы с данными файлов проверяем, что все рабочие файлы открылись корректно — if (f && out) —, в ином случае выводим сообщение об ошибке и покидаем тело функции:

cout << «Ошибка открытия файла !!!»;return;

При каждой итерации цикла while, с помощью функции getline, читаем построчно данные с файла test.txt. Цикл while будет работать, пока не будут прочитаны все строки файла test.txt.

При каждой итерации цикла while в консоль выводится номер вопроса и запрос на ввод ответа.

Пишем программу для тестирования на С++ 7
Пишем программу для тестирования на С++ 8

После ввода ответа увеличиваем значение переменной z на единицу и очищаем консоль функцией system("cls").

Записываем ответ объектом out < по аналогии вывода данных в консоль инструкцией cout.

По окончании работы цикла while закрываем текстовые файлы f.close(); out.close();

Функция void result()

Пишем программу для тестирования на С++ 9

Функция result() открывает файлы answer.txt и myanswer.txt, сравнивает ответы пользователя с правильными ответами в файле answer.txt и выводит результат на экран.

Пишем программу для тестирования на С++ 10

В коде функции создаём целочисленные переменные для подсчёта правильных ответов — переменная p и ошибочная переменная n.

Для работы с правильными ответами и ответами пользователя используем строковые переменные str и otv.

С помощью классов ifstream f1(«answer.txt»), ifstream f2(«myanswer.txt») открываем файлы для чтения.

if (f1.is_open() && f2.is_open()) — проверяем, что все файлы открылись без ошибок, в ином случае покидаем функцию и сообщаем об ошибке

			cout << «Ошибка открытия файла !!!»;
return;
		

В параметрах цикла while, используя функцию getline, читаем правильные ответы и ответы пользователя в строковых переменных str и otv.

В конструкции if (str == otv) сравниваем ответы и, если они совпадают, выводим ответ с указанием верного в консоль, а также увеличиваем значение переменной p на единицу, если это не так. Сообщаем, что ответ ошибочный и увеличиваем значение переменной n на единицу.

По окончании работы цикла while не забываем закрыть файлы f1.close(); f2.close();.

В конце работы выводим количество правильных и ошибочных ответов и выходим из тела функции.

Пишем программу для тестирования на С++ 11

Функция int main()

Пишем программу для тестирования на С++ 12

В функции main() с помощью функции system("chcp 1251>nul") устанавливаем используемый шрифт — кириллица.

Функция system(«color 1f») устанавливает цвет фона синий, а цвет букв — ярко белый.

Запускаем выполнение функций test() и result(). Устанавливаем паузу в консоли system("pause"), чтобы она не закрывалась, пока не будет нажата любая клавиша. Готово! Скачать код программы можно здесь.

4967