Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

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

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

8К открытий9К показов

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

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

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

В файл под именем 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"), чтобы она не закрывалась, пока не будет нажата любая клавиша. Готово! Скачать код программы можно здесь.

Следите за новыми постами
Следите за новыми постами по любимым темам
8К открытий9К показов