Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_dlya_stud.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
548.35 Кб
Скачать

Задачи для самостоятельного решения

Напишите программу (рисунок 3.2) вычисления размера страховой премии (рисунок 3.3), подлежащей уплате по договору обязательного страхования гражданской ответственности.

St = Bs * Kr * Ks * Kl * Km * Kp;

Если CheckBox1 нажат то 1, иначе 1,5

ComboBox1

Учитывающий регион

Коэффициент (Kr)

Алматы

1,8

Астана

1,6

Караганда

1,8

Алматинская обл.

1,2

Актау

1

Рисунок 3.2 – Окно программы

Рисунок 3.3 – Результат расчета

ComboBox2

Водительский стаж

Коэффициент (Ks)

до 22 лет вкючительно, стаж до 2 лет

1,3

до 22 лет вкючительно, стаж свыше 2 лет

1,2

от 22 лет и старше, стаж до 2 лет

1,15

от 22 лет и старше,стаж свыше 2 лет

1,0

ComboBox3

Мощность двигателя

Коэффициент (Km)

до 50 включительно

0,5

свыше 50 до 70 включительно

0,7

свыше 70 до 95 включительно

1,0

свыше 95 до 120 включительно

1,3

свыше 120 до 160 включительно

1,5

свыше 160 до 200 включительно

1,7

свыше 200

1,9

ComboBox4

Период использования ТС

Коэффициент (Kp)

6 месяцев

0,7

7 месяцев

0,8

8 месяцев

0,9

9 месяцев

0,95

более 9 месяцев

1,0

Лабораторная работа № 4 Тема: Работа с компонентами tTimer, tРrogressBar, tStatusBar

Цель работы: научиться работать с компонентами TTimer, TРrogressBar, TStatusBar.

Краткая теоретическая часть

TTimer – задает счетчик времени. Свойство Enabled управляет запуском и остановкой таймера. Свойство Interval задает промежуток времени, через который возникает событие OnTimer. При использовании обработчика события OnTimer следует учитывать, что после возникновения события OnTimer новое событие не возникает, пока не выполняется все команды обработчика. Как только все команды обработчика завершены, событие возникает не позднее, чем через интервал времени, заданной в свойстве Interval.

TStatusBar – создает строку панелей состояния (обычно выравниваемую по нижней границе формы) для отображения статусной информации, выдаваемой при работе программы.

Каждая панель представлена в списке свойства Panels. Панели нумеруются слева-направо, начиная с индекса 0. Окно редактора панелей открывается кнопкой в графе значений этого свойства. Свойство SimplePanel используется для переключения вида отображения строки состояния (одно- или много- панельная).

В окне Редактора кода выделена единственная инструкция обработчика события OnMoiiseMovc', возникающего при перемещении мыши по форме и вызывающего вывод координатор курсора в панель Panels->Item[l] объекта StatusBarl компоненты строки состояния.

Чтобы изменить вид шкалы, используйте свойства TickStyle и TickMarks. Значения свойств SelStart и SelEnd устанавливают границы разрешенных перемещений регулятора.

TProgressBar – создает индикатор, который отслеживает процесс выполнения некоторой процедуры в вашей программе. По мере выполнения процедуры, прямоугольный индикатор постепенно окрашивается слева направо заданным цветом. Свойства Min и Мах устанавливают интервал значений индикатора. Свойство Step задает шаг изменения значения свойства Position всякий раз, когда позиция индикатора меняется.

Программа «Угадай число» демонстрирует использование компонента StatusBar. В панелях строки состояния отображается количество попыток угадать число и время, оставшееся на решение поставленной задачи (рис. 4.1).

Рис.4.1. Форма программы «Угадай число»

#include <math.hpp> // для доступа к Randomize и RandomRange

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

#define TR 60 // время, отведенное на решение задачи

int pw; // "секретное" число

int rem = TR; // остаток времени на выполнения задания

int p = 0; // количество попыток

// Начало работы программы

void __fastcall TForm1::FormActivate(TObject *Sender)

{

// загадать число

Randomize();

pw = RandomRange(100,999); // "секретное" число

// настроить и запустить таймер

Timer1->Interval = 1000;

Timer1->Enabled = true;

// отобразить информацию в панели состояния

StatusBar1->Panels->Items[0]->Text =

" Попыток: 0";

StatusBar1->Panels->Items[1]->Text =

" Осталось: " + IntToStr(rem) + " сек"; }

// Нажатие клавиши в поле редактирования

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

if ( ( Edit1->Text.Length() < 3) && ((Key >= '0') && (Key <= '9')))

return;

if (( Key == VK_RETURN) && (Edit1->Text.Length() == 3))

{

// проверить, правильное ли число ввел пользователь

if ( StrToInt(Edit1->Text) == pw )

{ Timer1->Enabled = false;

Edit1->Enabled = false;

ShowMessage("Поздравляю!\nВы угадали число за " +

IntToStr(TR - rem)+ " сек"); }

else {

// увеличить счетчик попыток

p++;

StatusBar1->Panels->Items[0]->Text =

" Попыток: " + IntToStr(p); }

return; }

if ( Key == VK_BACK) return;

// остальные символы запрещены

Key = 0;}

// сигнал от таймера

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{ rem--;

StatusBar1->Panels->Items[1]->Text = " Осталось: " + IntToStr(rem) + " сек";

if (rem == 0 )

{

// время, отведенное на решение задачи истекло

Timer1->Enabled = false;

Edit1->Enabled = false;

ShowMessage("К сожалению, Вы не справились с поставленной задачей\n"

"\"Секретное\" число: " + IntToStr(pw) ); } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]