Курсовая работа: Разработка программы с помощью языка программирования Delphi

Рисунок 2.1 –
Внешний вид формы FormAvto
Для вывода вопросов, ввода ответов пользователя
предусмотрим отдельную форму FormTest. Список объектов, используемых в форме
приведен в таблице 2.2, а внешний вид приведен на рисунке 2.2.
Таблица 2.2 – Объекты экранной формы FormTest
Имя |
Тип |
Назначение |
Label1 |
TLabel |
надпись «Текущий
вопрос» |
LbNom |
TLabel |
надпись, в которой
будет выводиться номер текущего вопроса |
StaticText1 |
TStaticText |
поле, в котором будет
выводиться очередной вопрос |
RGroup1 |
TRadioGroup |
поля для вывода
вариантов ответов и их указания студентом |
BitBtn1 |
TBitBtn |
кнопка «Принять ответ»
для анализа ответа и перехода к следующему вопросу |
BNewTest |
TButton |
кнопка для закрытия
формы тестов и перехода на форму авторизации (для новой попытки тестирования) |
При построении формы предполагалось, что база
вопросов будет построєна таким образом, чтобы ответ предполагал выбор только
одного из перечисленных четырех вариантов ответов. То есть, база не должна
содержать вопросов с множественным выбором, либо вариантов без правильного
ответа. Также не должно быть вопросов, требующих ввода ответа в текстовом виде
(например, ответ вычисленной формулы или правильное написание ключевого слова).

Рисунок 2.2 – Внешний вид формы FormTest
Во избежание
кратковременного завершения теста скроем системное меню окна, установив
параметр формы FormTest. BorderIcons biSystemMenu равным false. Также в алгоритме
следует предусмотреть, что в начале тестирования кнопка с надписью «Начать
заново» должна быть невидимой, и должна появляться только после ответа на все
вопросы и вывода итоговой оценки.
Анализируя все вышеизложенные предположения и
разработанные формы, можем составить словесные алгоритмы приложения.
1.
Запустить
экранную форму авторизации FormAvto
2.
При
нажатии на кнопку «Начать» следует выполнить действия:
2.1
Сгенерировать
базу вопросов, и перемешать их случайным образом;
2.2
Сформировать
имя файла из имени студента и его группы и открыть файл для записи;
2.3
Обнулить
количество правильных ответов;
2.4
Установить
номер текущего вопроса на первый вопрос;
2.5
Скрыть
форму FormAvto и показать форму с тестами FormTest;
2.6
Показать
первый вопрос и варианты его ответов на форме FormTest;
2.7
Ожидать
нажатия на кнопку «Принять ответ».
3.
При
нажатии на кнопку «Принять ответ» следует выполнить действия:
3.1
Проанализировать
выбранный вариант ответа и сравнить его с правильным, и если ответ правильный,
то нарастить количество правильных ответов на 1;
3.2
Записать
в файл протокола текущий вопрос и вариант, который выбрал пользователь в
качестве ответа;
3.3
Если
номер текущего вопроса меньше общего количества вопросов в базе, то нарастить
номер на 1, вывести очередной вопрос на форму и перейти к началу пункта 3.
3.4
Если
номер текущего вопроса равен количеству вопросов в базе, то:
3.4.1. подсчитать оценку пропорционально
количеству правильных ответов;
3.4.2. показать сообщение с оценкой;
3.4.3. сделать кнопку «Начать заново» видимой
4.
При
нажатии кнопки «Начать заново» закрыть форму с тестами FormTest и показать
форму авторизации FormAvto.
Анализируя требования к функциям разрабатываемого
приложения под разработанные экранные формы и словесный алгоритм, можно
выделить следующие программные модули:
1)
Генерация
базы вопросов;
2)
Перемешивание
базы вопросов случайным образом;
3)
Анализ
текущего ответа и переход на следующий вопрос, если вопрос не последний либо
вывод результатов тестирования при достижении последнего вопроса;
4)
Модули
перехода между экранными формами авторизации и тестирования.
Каждый из вышеприведенных модулей реализуем при
помощи процедуры. Модуль 1 целесообразно запускать один раз при создании формы
с тестами. Модуль 2 следует запускать каждый раз при начале нового теста, то
есть при активизации формы с тестами. Модель 3 должен запускаться каждый раз
при нажатии на кнопку «Принять ответ». Модули 4 должны быть обработчиками
нажатий на кнопку «Начать» экранной формы авторизации и кнопку «Начать заново»
экранной формы тестирования.
Составим алгоритм приложения, который представлен
в приложении на рисунке A.1. На алгоритме приведены основные события экранных
форм. В этом алгоритме:
Блок №4 реализован процедурой FormAvto, BitBtnStartClick,
блок №5 – процедурой FormTest. FormCreate,
блок №6 – процедурой FormTest. FormActivate,
блок №7 – процедурой FormTest BNewTestClick,
блок №8 реализован процедурой FormTest.
BitBtn1Click.
Детальное описание разработанной программы,
алгоритмов и их программной реализации приведено в последующих разделах.
3. Описание
программных модулей
3.1 Описание переменных и объектов
В программе используется переменная FormAvto,
которая представляет собой экранную форму. Объекты экранной формы были
приведены в таблице 2.1. У формы имеется лишь один обработчик нажатия на кнопку
BitBtnStart. Текст обработчика приведен в строках 26–32 листинга из приложения
Б. В теле обработчика происходит считывание введенных имени и фамилии учащегося
и его группы в переменные, после чего исходная форма скрывается и
активизируется форма тестирования.
Переменная FormTest, представляет собой
экранную форму, объекты которой приведены в таблице 2.2.
В разделе var опишем переменные, приведенные в
таблице 3.1
Таблица 3.1 – Переменные программы
Наименование |
Тип |
Назначение |
SFam, SGr |
String |
хранение фамилии и группы учащегося |
fName |
String |
имя текстового файла для записи протокола |
f |
TextFile |
переменная для работы с текстовым файлом |
BasaV |
CVoprosi |
класс, хранящий базу вопросов и ответы |
CurN |
byte |
номер текущего вопроса из базы |
Ratio |
byte |
количество правильных ответов |
Для хранения базы вопросов разработаем
пользовательский класс CVoprosi. В классе содержится одно поле и два метода.
Поле test – это динамический массив, в котором хранятся вопросы и
ответы. При это каждый тест храниться в виде записи типа TTest со
следующими полями:
Страницы: 1, 2, 3, 4, 5 |