Пишем программу для тестирования на С++
Рассказываем, как написать программу тестирования для проверки работы или знаний человека. В качестве языка программирования используем С++.
8К открытий10К показов
В современном мире эффективным способом проверки знаний считается тестирование. Тесты применяются практически во всех сферах: аттестация, образование, сертификация, психология, подбор персонала и т.д. Тестирование позволяет за короткий срок проверить знания человека и оценить его. Чтобы автоматизировать тестирование, разработчики создают специальное программное обеспечение.
Подготовительная работа
Для написания прототипа простого приложения для тестирования на языке программирования С++ мы создадим два текстовых файла.
В файл под именем test.txt запишем вопросы к тесту. Каждый вопрос в файле находится на двух строчках и состоит из вопроса и вариантов ответа.
При сохранении файла, выбираем пункт меню — Cохранить как, и устанавливаем кодировку символов ANSI для корректного отображения текста в консоли.
Во втором файле, назовём его answer.txt, в каждой строчке пропишем ответ на вопрос файла test.txt, выполняя заранее установленную последовательность.
При сохранении файла, как и ранее, выбираем пункт меню — Cохранить как, и устанавливаем кодировку символов ANSI, для корректного отображения текста в консоли.
Начинаем проектировать
В коде программы используем заголовочные файлы: iostream (обеспечивает ввод — вывод в консоль), fstream (предоставляет интерфейс для чтения или записи данных в файл), string (организовывает работу со строками). Команда using namespace std
сообщает компилятору, что мы хотим использовать всё, что находится в пространстве имен std.
Функция void test()
Функция 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 в консоль выводится номер вопроса и запрос на ввод ответа.
После ввода ответа увеличиваем значение переменной z на единицу и очищаем консоль функцией system("cls")
.
Записываем ответ объектом out <
по аналогии вывода данных в консоль инструкцией cout.
По окончании работы цикла while закрываем текстовые файлы f.close(); out.close();
Функция void result()
Функция result() открывает файлы answer.txt и myanswer.txt, сравнивает ответы пользователя с правильными ответами в файле answer.txt и выводит результат на экран.
В коде функции создаём целочисленные переменные для подсчёта правильных ответов — переменная p и ошибочная переменная n.
Для работы с правильными ответами и ответами пользователя используем строковые переменные str и otv.
С помощью классов ifstream f1(«answer.txt»), ifstream f2(«myanswer.txt») открываем файлы для чтения.
if (f1.is_open() && f2.is_open())
— проверяем, что все файлы открылись без ошибок, в ином случае покидаем функцию и сообщаем об ошибке
В параметрах цикла while, используя функцию getline, читаем правильные ответы и ответы пользователя в строковых переменных str и otv.
В конструкции if (str == otv)
сравниваем ответы и, если они совпадают, выводим ответ с указанием верного в консоль, а также увеличиваем значение переменной p на единицу, если это не так. Сообщаем, что ответ ошибочный и увеличиваем значение переменной n на единицу.
По окончании работы цикла while не забываем закрыть файлы f1.close(); f2.close();.
В конце работы выводим количество правильных и ошибочных ответов и выходим из тела функции.
Функция int main()
В функции main() с помощью функции system("chcp 1251>nul")
устанавливаем используемый шрифт — кириллица.
Функция system(«color 1f») устанавливает цвет фона синий, а цвет букв — ярко белый.
Запускаем выполнение функций test() и result(). Устанавливаем паузу в консоли system("pause")
, чтобы она не закрывалась, пока не будет нажата любая клавиша. Готово! Скачать код программы можно здесь.
8К открытий10К показов