Практически закрепить знания и умения использования возможностей среды Delphi для создания тестовых проектов, используя компонентами GroupBox RadioGroup и их свойствами
Ход работы:
Создать в своей папке в папке MyPrograms_Delphi папку ПР№9.
Откройте новый проект.
Создать программу, которая выполняет следующие действия. После запуска программы появляется изображение аналогичное рисунку. Пользователь по своему усмотрению выбирает один из переключателей в группе. В зависимости от правильности ответов появляется одно из сообщений «Неудовлетворительно», «Удовлетворительно», «Хорошо», «Отлично».
Разместить на форме компоненты в соответствии с рисунком и присвоить заголовки меткам и панелям соответствующие названия.
Выполнить следующие действия:
Выделенный объект |
Вкладка окна Object Inspector |
Имя свойства / Имя события |
Значение / Действие |
Labell |
Properties |
Caption |
Первая советская вычислительная машина |
Label2 |
Properties |
Caption |
Основоположник алгебры логики |
Label3 |
Properties |
Caption |
Объем блока начальной загрузки |
Label4 |
Properties |
Caption |
Автор первого счетного устройства |
Label5 |
Properties |
Caption |
энергонезависимая память |
GroupBox1 |
Properties |
Caption |
Питання1 |
RadioButton1 |
Properties |
Caption |
Урал-1 |
RadioButton2 |
Properties |
Caption |
М-20 |
RadioButton3 |
Properties |
Caption |
ЭО |
RadioButton4 |
Properties |
Caption |
МЭСМ |
RadioButton5 |
Properties |
Caption |
БЭСМ |
RadioGroup1 |
Properties |
Caption |
Питання2 |
Columns |
4 |
||
Items |
Ввести 4 строки: Лейбниц Буль |
Нейман Паскаль |
|||
RadioGroup2 |
Properties |
Caption |
Питання3 |
Columns |
4 |
||
Items |
Ввести 4 строки 1024 байт 512 байт 1.5 Кбайт 2 Кбайт |
||
RadioGroup3 |
Properties |
Caption |
Питання4 |
Columns |
5 |
||
Items |
Ввести 4 строки: Бэббидж Паскаль Нейман Лавлейс |
||
RadioGroup4 |
Properties |
Caption |
Питання5 |
Columns |
3 |
||
Items |
Ввести 3 строки: ПЗУ ОЗУ внешняя |
Сохранить проект под именем, например, Unit9.pas и Pr9.dpr.
Для суммирования баллов, набирает пользователь, выполните следующие действия: (RadioButtonN.Caption = ‘МЭСМ «, для объекта в GroupBox и правильный ответ имеет переключатель, у которого RadioGroupN.ItemIndex = M, номер значения переключателя в списке)
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 |
var Form1: TForm1; sum: integer; implementation {$ R * .dfm} procedure TForm1.RadioButton1Click (Sender: TObject); begin sum: = ; if RadioButton1.Caption = 'МЭСМ "then sum = sum + 1; end; procedure TForm1.RadioButton2Click (Sender: TObject); begin if RadioButton2.Caption = 'МЭСМ "then sum = sum + 1; end; procedure TForm1.RadioButton3Click (Sender: TObject); begin if RadioButton3.Caption = 'МЭСМ "then sum = sum + 1; end; procedure TForm1.RadioButton4Click (Sender: TObject); begin if RadioButton4.Caption = 'МЭСМ "then sum = sum + 1; end; procedure TForm1.RadioButton5Click (Sender: TObject); begin if RadioButton5.Caption = 'МЭСМ "then sum = sum + 1; end; procedure TForm1.BitBtn1Click (Sender: TObject); begin close; end; procedure TForm1.RadioGroup5Click (Sender: TObject); begin If RadioGroup5.ItemIndex = 2 Then sum = sum + 1; Case sum of 0..2: Panel1.Caption = НЕУД!'; 3: Panel1.Caption = УДОВЛЕТВОРИТЕЛЬНО!'; 4: Panel1.Caption: = 'ХОРОШО!'; 5: Panel1.Caption: = 'ОТЛИЧНО!'; end; end; end. |
Целочисленную переменную sum необходимо объявить в разделе Var перед разделом implementation.
Вставить в обработчик событий RadioGroup2.OnClick, RadioGroup3.OnClick, RadioGroup4.OnClick по образцу RadioGroup5.OnClick аналогичные коды, с учетом правильных ответов, но без обнуления переменной sum, поскольку оно необходимо только один раз перед началом суммирования.
Чтобы вывести на контрольную панель итоговое сообщение в зависимости от набранной суммы баллов, использовать оператор Case.
Вывести сообщение об окончании тестирования, добавив в обработчик событий RadioGroup5.OnClick код: ShowMessage ( ‘Конец теста’);
.Сохранить проект, запустить и протестировать его.
Задания для самостоятельного выполнения
задания |
Подсказка |
|
1. |
Для контроля правильности работы программы вывести на панель набранную пользователем сумму баллов. |
Заголовке соответствующей панели присвоить значение IntToStr (sum). |
2. |
Запустить программу и убедиться, что верная сумма баллов получается только при последовательном выборе переключателей сначала с GroupBox, затем с RadioGroup1, с RadioGroup2 и так далее. Если порядок нарушен, то результат может быть неверным. Чтобы этого не случилось, вставьте дополнительную кнопку и сделайте подсчет баллов только после ее нажатия |
|
3. |
Ввести дополнительную кнопку Повторить, которая позволяет повторно выполнить задание. |
|
4. |
Для наглядности вывести результат разным цветом. |
У оператора Case при выводе результата задать свойства Font.Color выбранный цвет. Например: Panel1.Font.Color = clRed; |
5. |
Усовершенствовать программу так, чтобы можно было выводить ФИО и группу тестуючогося |
Домашнее задание Создать проект «Тест_Д»
- Назовите Форму «Тест_Д»
- Используя компоненты GroupBox, RadioGroup, RadioButton, Label, Button
оформите Форму по образцу:
Пустое текстовое поле внизу формы предназначено для вывода количества верных ответов, а в надписи рядом будет выводиться комментарий: «Молодец!», «Нормально»,
«Плохо» или «Очень плохо». Эти две надписи при запуске проекта не должны быть видны на Форме.
Для вывода количества верных ответов необходимо описать переменную, которая будет содержать число верных ответов. В разделе Var опишите переменную s и дайте ему начальное значение 0: s: Integer = 0
При нажатии на кнопку, содержит правильный ответ (это кнопки RadioButton3, RadioButton6, RadioButton12) значение переменной s должна увеличиваться на единицу. Опишите данную процедуру для нужных кнопок.
При нажатии на кнопку Результат на Форме должна появляться надпись с количеством верных ответов и комментарии (если правильных ответов 3 то «Молодец!», Если 2 то
«Нормально», если 1 то «Плохо», если 0 то «Очень плохо»). Опишите данную процедуру для кнопки, используя условный оператор.
Сохраните Проект, запустите программу и попробуйте с ней поработать. Видно, что при ответе на вопрос можно несколько раз нажимать разные кнопки. Это может повлиять на подсчет правильных ответов. Для того, чтобы ответ на вопрос состоял из единого щелчка, надо для щелчок по каждой кнопке написать процедуру невозможности щелчок по любой другой кнопке. Пример такой процедуры для кнопки RadioButton1:
RadioButton2.Enabled = false; RadioButton3.Enabled = false; RadioButton4.Enabled = false;
Аналогично опишите процедуры для других кнопок.
Запустите программу и проверьте ее работу. Для того чтобы выполнить тест еще раз кнопки Повторить тест нужно описать процедуру, которая отменила все ограничения для кнопок (свойство Enabled), выключила сами щелчок по кнопкам (свойство Checked), обнулил значение переменной s и сделала невидимыми метки внизу формы. Опишите данную процедуру.
контрольные вопросы
В чем отличие компонентов GroupBox и RadioGroup?
Объясните принцип действия компонента RadioGroup.
Какое свойство компонента RadioGroup отвечает за количество переключателей?
Какое максимальное количество столбцов в компоненте RadioGroup?
Ввод названия к переключателям компонента RadioGroup?
Какую функцию выполняет оператор ShowMessage?