Лабораторная работа № 4.
Разработка программы "Конвертер величин" в C++ Builder

Цель работы

Написать программу для перевода единиц измерения длины.

Для создания формы использовать компоненты: 
Label – для подписей
Edit – для ввода и вывода
ComboBox– для выбора единиц измерения исходной и результирующей величины
Button – для инициирования вычислений
Рекомендуемая компоновка формы программы представлена на рисунке 1.
 Рисунок 1. Рекомендуемая компоновка формы

Рекомендации для выполнения лабораторной работы:
    1) Запустить C++ Builder.  При запуске автоматически создается новый проект. Для создания нового проекта, в случае если он не создался автоматически или вы его закрыли, выполнить команду меню File / New /Application.
    2) Сохранить проект в свою рабочую папку, выполнив команду меню File / Save Project As. Будет сохранено несколько файлов проекта.
    3) На панели компонентов выбрать вкладку Standard, выбрать компонент Label  и щелкнуть левой кнопкой мыши по форме. На этой же вкладке выбрать компонент Edit ,  Button  и ComboBox .  Расположить 3 объекта Label, 2 объекта Edit, 1 объект Button и 2 объекта ComboBox на форму как показано на рисунке 1.
    4) Изменить подпись формы. Для этого выбрать форму (щелкнуть по заголовку формы) и в окне свойств объекта во вкладке Properties изменить значение свойства Caption. Вместо подписи Form1 ввести «Конвертер».
 Рисунок 2. Свойство формы Caption (подпись)

    5) Изменить подписи объектов Label1- Label3 в соответствии с рисунком 1. Для этого выбрать каждый объект Label и в окне свойств объекта во вкладке Properties изменить значение свойства Caption.
    6) Убрать текст из объектов Edit1 и Edit2. Для этого выбрать каждый объект Edit и в окне свойств объекта во вкладке Properties очистить значение свойства Text.
    7) Поскольку объект Edit2 мы будем использовать для вывода результата (то есть заполняться он будет по нажатию на кнопку, а не вручную), нужно изменить его свойство ReadOnly  на значение true (то есть сделать объект Edit4 только для чтения).
    8) Настроить объекты ComboBox1 и ComboBox2. Эти объекты представляют собой выпадающие списки и будут использоваться для выбора единиц измерения длины. Для заполнения списков необходимо в окне свойств объекта во вкладке Properties найти свойство Items и щелкнуть левой кнопкой мыши на кнопке с тремя точками (рисунок 3).
 Рисунок 3. Список свойств объекта ComboBox1

В появившемся окне (рис. 4) перечислить единицы измерения.
 
Рисунок 4. Окно редактора списка 

Для программного выбора варианта из списка в объекте ComboBox используется свойство ItemIndex. Это же свойство позволяет отслеживать выбранный вариант. Так для выбора первого варианта (единица измерения мм) нужно задать значение свойства ItemIndex = 0 (рис. 3).
Для задания стиля объекта используется свойство Style. По умолчанию значением свойства Style является csDropDown. При таком стиле пользователь может не только выбирать значения из списка, но и осуществлять ввод в окно объекта ComboBox. Поскольку программа будет работать только с заранее заданным набором единиц измерения необходимо запретить редактирование полей ComboBox1 и ComboBox2. Для этого нужно поменять значение свойства Style на csDropDownList. Объект ComboBox со значением свойства Style равным csDropDownList не допускает редактирования и, значит, пользователь просто не сможет указать неправильные данные.
    9) Изменить подпись кнопки Button1. Для этого выбрать объект Button1 и в окне свойств объекта во вкладке Properties изменить значение свойства Caption на «Расчет».
    10) Объект Edit1 предназначен для ввода числовых данных, предназначенных для перевода в другие единицы измерения. Для того чтобы пользователь не смог ввести буквы или другие символы, которые могу вызвать ошибку при расчетах, необходимо сделать обработчик нажатий клавиш на клавиатуре. Для этого необходимо выбрать объект Edit1 и в окне свойств объекта открыть вкладку Events («События») . В появившемся списке найти событие OnKeyPress («по нажатию клавиши») и сделать двойной щелчок левой кнопкой мыши по пустому полю. В появившейся заготовке функции написать код обработки нажатия клавиш:
Этим самым мы отфильтровали все клавиши на клавиатуре кроме цифровых от 0 до 9, запятой и BackSpase (Код клавиши 8). Теперь нажатие ненужных нам клавиш будет игнорироваться.
    11) Для перевода длины из одной единицы измерения в другую нужно перевести величину в базовую единицу измерения (например, метры), а потом уже в требуемую. Например, необходимо перевести 5 миль в ярды. Переводим мили в метры: 5миль=8045м, а затем из метров переводим в ярды: 8045м=8801,969365426696 ярдов.

Таблица соотношений единиц измерений длин с метрами
 1мм=0,001м  1км=1000м  1фут=0,305м
 1см=0,01м  1миля=1609м  1ярд=0,914м
Для реализации расчета в программе необходимо добавить обработчик нажатия кнопки Button1. Для этого дважды щелкнуть по объекту Button1 и в появившейся заготовке функции написать программный код перевода единиц измерения.
По тексту программного кода даны комментарии, пошагово описывающие последовательность действий. 
    12) Сохранить проект нажатием кнопки  на панели инструментов.
    13) Провести отладку и тестирование программы

Для защиты программы необходимо:
    1) Иметь рабочий вариант программы
    2) Знать основные свойства компонентов Label, Edit, ComboBox, Button и уметь их использовать.
    3) Ориентироваться в программном коде и знать все операторы, используемые в программе.

Задача для самостоятельной работы №4

Задание: Написать программу расчета количества секунд между двумя моментами времени. 

Компоновка формы:
Спецификация программы:
    1) Заполнить вручную списки объектов ComboBox (часы от 0 до 23, минуты и секунды от 0 до 59);
    2) Поле «Прошло секунд» должно быть только для чтения;
    3) Показать программу преподавателю
    4) Модифицировать программу. Реализовать программное заполнение списков часов, минут и секунд во время запуска программы.
    5) Защитить программу.

Пояснение к пункту 4:
Чтобы списки ComboBox1-ComboBox6 заполнялись автоматически при запуске программы необходимо использовать функцию-конструктор формы TForm1(TComponent* Owner). Заготовка этой функции вставляется в программный модуль автоматически при создании проекта. В заготовке функции необходимо написать программный код:
При выполнении выше указаннного кода будет очищаться содержимое объектов ComboBox1- ComboBox6. Далее циклом заполниться объект ComboBox1. Поскольку объекты ComboBox1 и ComboBox4 имеют одинаковое содержимое (часы), то можно произвести копирование списка из объекта ComboBox1 в ComboBox4. После копирования циклом заполняется список объекта ComboBox2 (минуты). Поскольку минуты и секунды изменяются от 0 до 59, то можно произвести копирование списка объекта ComboBox2 в объекты ComboBox3, ComboBox5 и ComboBox6.
После того, как все объекты ComboBox заполнены необходимо программным путем выбрать первый элемент в списках этих объектов. Для этого используется свойство ItemIndex.
Comments