Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ТРПО (отдать).DOC
Скачиваний:
11
Добавлен:
17.08.2019
Размер:
4.36 Mб
Скачать

Лабораторная работа 8. Разработка проекта «Тест по физике»

Постановка задачи

Создать программу, выполняющую следующие действия.

После запуска программы появляется изображение, аналогичное рис. 16. Пользователь, перемещаясь с помощью клавиш-стрелок по списку «Физическая величина», выбирает любое слово, нажав клавишу Enter. Затем он переходит в список «Название величины» и выбирает соответствующие название выбранной физической величины. Если выбрано правильное название величины, то под словом «Оценка» появляется одобрительная реплика «Правильно», если неправильное слово, то – «Ошибка». Правильные названия ищутся до тех пор, пока не будет получено соответствие всех физических величин и их названий.

Пояснение. Новым в этой работе является обеспечение взаимодействия двух списков ListBox на основе свойств Items и ItemIndex и создание многострочных надписей в объекте Label.

План разработки программы

  1. Открыть новый проект.

  2. Разместить на форме объекты в соответствии с рис. 17 и присвоить заголовки меток «Физическая величина» и «Название величины» состоят из двух строк и отцентрированы.

Рис. 16. Рис. 17.

Для вывода многострочных надписей в объектах Label выполните следующие действия:

Выделенный

объект

Вкладка окна

Object Inspector

Имя свойства

Действие

Label 1

Properties

AutoSize (изменение размера

в зависимости от текста в Caption)

Установка значения False

WordWrab (разрыв строки)

Установка значения True

Height

Width

Установка подходящих размеров

Alignment (выравнивание текста)

Установка значения taCenter

  1. Установить кнопку выхода из программы и выполнить следующие действия:

    Выделенный объект

    Вкладка окна

    Object Inspector

    Имя свойства / имя события

    Действие

    BitBtn1

    Properties

    Caption

    Установка заголовка кнопки: «Выход»

    Kind

    BkCancel

    Events

    BitBtn1Click

    Close;

  2. Сохранить код программы и проэкт под именами, например, unit8.pas и pr.8.dpr.

  3. Запкстить программу, затем закрыть окно проэкта, щелкнув на кнопке «Выход».

  4. Выделить объект ListBox1, справа от свойства Items щелкнуть на кнопке с тремя точками. В появившемся окне встроенного редактора ввести физические величины, каждую на новой строке: «Ватт», «Ом», «Вольт», «Ампер».

Сохранить набранный текст под именем fiz1.txt. Для этого щелкнуть правой кнопкой мыши и выбрать режим Save. Для выхода из встроенного редактора щелкнуть на кнопке OK.

  1. Выделить объект Listbox2 и проделать с ним аналогичную работу, введя названия физических величин: «Напряжение», «Сопротивление», «Сила тока», «Мощность».

Сохранить набранный текст под именем fiz2.txt.

  1. Выполнить следующие действия:

Выделенный объект

Вкладка окна

Object Inspector

Имя

события

Действие

ListBox1

Events

OnKeyPress

If key = # 13 then

Num: = ListBox1. ItemIndex;

ListBox2

Events

OnKeyPress

If key = # 13 then begin

Case ListBox2. ItemIndex of

O: Num2: = 2;

1: Num2: = 1;

2: Num2: = 3;

3: Num2: = 0;

end;

if Num1 = Num2 then

begin

Label4. Caption: = ‘Правильно’;

CountR: = CountR + 1

end

Else Label4. Caption: = ‘Ошибка’;

If CountR = 5 then

ShowMessage (‘Текст обычен’)

В разделе Var переменные Num1, Num2 и CountR объявить как целочисленные.

9. Сохранить проэкт, запустить и протестировать его.

Задание для самостоятельного выполнения

  1. Списки ListBox1 и ListBox2 сделать поочередно доступными после нажатия клавиши Enter.

Подсказка. Установить значение False свойства Enabled объекта ListBox2, а в процедуру KeyPressed, относящуюся к ListBox1, включить строки:

ListBox2. Enabled: = True;

ListBox1. Enabled: = False;

Form1. ActiveControl: = ListBox2;

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

Подсказка. В процедуру KeyPressed, относящуюся к ListBox2, включить:

ListBox1. Items. Delete (Num1);

ListBox1. Items. Insert (Num1, ’’);

  1. Увеличить количество величин до 10.

  2. вывести сообщение о количестве правильных ответов и оценке за тест.

Листинг программы

unit Unit8;

interfase

. . .

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

COUNTR, REZ, num1, num2: integer;

Implementation

{SR * . DFM}

procedure TForm1. BitBtnClick (Sender: TObject);

begin

Close

end;

procedure Tform1. ListBox1KeyPress (Cender: TObject; var Key: Char);

begin

If (Key = # 13) and (Form1. ListBox1. Items. Strings

[Form1.ListBox1. ItemIndex] <> ’ ’) Then

begin

num1 : = form1. listbox1. itemindex;

form1. ListBox1.Enabled: = False;

form1.ListBox2. Enabled: = True;

form1. ActiveControl: = ListBox2

end

end;

procedure TForm1. ListBox2KeyPress (Sender: TObject; var Key: Char);

begin

if key = # 13 then begin

case form1. ListBox2. ItemIndex of

0: num2: = 2;

1: num2: = 4;

2: num2: = 7;

3: num2: = 0;

4: num2: = 3;

5: num2: = 1;

6: num2: = 6;

7: num2: = 8;

8: num2: = 5;

9: num2: = 9;

end;

if num1 = num2 then begin

form1. Label4. Caption: = ‘Верно!’;

REZ: = REZ + 1

end

else form1. Label4. Caption: = ‘Ошибка!’;

COUNTR: = COUNTR + 1

form1. ListBox1. Items. Delete (num1);

form1. ListBox1. Items. Insert (num1,’ ’ );

if c = 10 then showmessage (‘Тест окончен. Оценка:‘ +

inttostr (REZ div 2 + ord(REZ div 2 < 1)) + ’ (правильных ответов:‘

+ inttostr (REZ) + ’)’);

form1. ListBox1. Enabled: = 0;

form1. ListBox2. Enabled: = 0;

form1. ActiveControl: = listbox1

end

end;

procedure TForm1. BitBtn2Click (Sender: TObject);

begin

COUNTR: = 0;

REZ: = 0;

num1: = -1;

num2: = -1;

form1. ListBox1. Items. LoadFormFile (‘fize. txt’);

end;

end.

34