Основы программирования на языке Visual Basic, страница 6

Аналогично результат решения задачи, содержащий выходные данные вместе с пояснительным текстом, представляется на форме в виде надписи с именем lblРезультат.

 


Рис. 3.1. Алгоритм решения задачи

Используемые в программе данные приведены в следующей таблице.

Таблица

Используемые данные

Реквизит

Имя

Назначение

Начало

txtНачало

Начало периода

Окончание

lblрзтОкончание

Окончание периода

КД

КД

Количество дней

Ставка НДС

СтавкаНДС

Ставка налога на добавленную стоимость

Цена

txtЦена

Цена производителя

Ценандс

curЦенаНДС

Цена с учетом НДС

Стоимость

curСтоимость

Стоимость товара

Результат

lblРезультат

Результат решения задачи

Интерфейс с пользователем

Решение задачи производится с помощью формы, приведенной на рис. 3.2.

На форме слова "Начало", "Цена" и "Количество" представляются надписями и соответствующие исходные данные вводятся в текстовые поля, расположенные справа от них.

Слово "Окончание" и соответствующее вычисленное значение представляются надписями. Результат решения задачи выводится в область под кнопкой «Вычислить». Эта область также представляется надписью.

Рис. 3.2. Форма для вычисления стоимости товара с учетом НДС

Взаимодействие пользователя с формой осуществляется следующим образом. При запуске программы на выполнение (событие Загрузка формы) в текстовом поле Начало выводится текущая дата, а в поле надписи Окончание – та же дата, увеличенная на КД дней (в нашем случае на 7 дней).

Дату, выведенную в текстовом поле Начало можно изменить. При этом после перехода к другому элементу управления (событие Потеря фокуса) автоматически пересчитывается дата окончания периода.

После ввода цены и количества нужно щелкнуть на кнопке «Вычислить» (событие Щелчок). Происходит вычисление стоимости и вывод результата в соответствующую область.

Код программы

Для реализации задачи в коде нужно предусмотреть обработку следующих трех событий:

1) загрузка формы;

2) потеря фокуса текстовым полем Начало;

3) щелчок на кнопке «Вычислить».

Тексты соответствующих процедур представлены ниже.

Option Explicit 'Обязательное описание переменных

Const КД = 7    'Количество дней в периоде

'Вычисление стоимости товара

Private Sub cmdВычислить_Click()

Const СтавкаНДС = 20

'Описание переменных

Dim curЦенаНДС As Currency, _

       curСтоимость As Currency

'Вычисление цены с учетом НДС

curЦенаНДС = CCur(txtЦена) + CCur(txtЦена) * СтавкаНДС / 100

'Вычисление стоимости

curСтоимость = curЦенаНДС * CInt(txtКоличество)

'Формирование результата

lblРезультат = "Стоимость товара  с учетом НДС составляет " & _

            Format(curСтоимость, "0.00") & " грн." & vbCrLf & _

            "Цена действует на период с " & txtНачало & _

            " до " & lblрзтОкончание

End Sub

'Задание текущего значения даты начала периода

'и вычисление даты его окончания

Private Sub Form_Load()

txtНачало = Date

lblрзтОкончание = Date + КД

End Sub

'Вычисление даты окончания периода

'при изменении его начала

Private Sub txtНачало_LostFocus()

lblрзтОкончание = CDate(txtНачало) + КД

End Sub

Реализация проекта

1. Запустить на выполнение VB для создания нового проекта.

2. Построить форму согласно проекту.

3. Дважды щелкнуть на форме и в открывшемся окне кода в заготовку процедуры Form_Load ввести ее тело, т.е. операторы:

txtНачало = Date

lblрзтОкончание = Date + КД

4. В окне кода в поле со списком Object выбрать элемент General, чтобы перейти в раздел общих описаний формы и там ввести описание константы КД (Const КД =7).

5. В окне кода в поле со списком Object выбрать элемент txtНачало, а в поле со списком Procedure – событие LostFocus и в заготовку процедуры txtНачало_LostFocus ввести ее тело, т.е., оператор:

lblрзтОкончание =СDate(txtНачало)+ КД

6. В окне кода в поле со списком Object выбрать элемент управления с именем сmdВычислить, а в поле со списком Procedure – событие Click и в заготовку процедуры сmdВычислить_Click ввести ее тело.

Анализ проекта

Каждое событие обрабатывается отдельной процедурой, причем каждое событие вызывает разные действия. Поэтому код приложения состоит из трех процедур.

В двух процедурах Form_Load и txtНачало_LostFocus используется константа КД. Для того чтобы она была доступна в обеих процедурах, константу помещают в общей части кода формы (перед всеми процедурами).

В коде приложения применяется принцип явного описания переменных. Для того чтобы система VB следила за обязательностью явного описания каждой используемой переменной, в начале кода стоит оператор Option Explicit.

В процедуре Form_Load использована встроенная функция Date, с помощью которой определяется текущая дата.

Процедура txtНачало_LostFocus предназначена для определения даты окончания периода в случае изменения начальной даты. Поскольку начальная дата содержится в текстовом поле txtНачало (строковый тип), то для преобразования в тип дата/время применяется функция CDate.

Процедура cmdВычислить_Click предназначена для вычисления стоимости товара с учетом НДС и вывода результата.

Для выполнения расчетов используется постоянная величина ставки НДС (20 %). Она применяется только в этой процедуре. Поэтому НДС объявлена внутри процедуры как константа.

Цена товара с учетом НДС и соответствующая стоимость являются переменными величинами, поскольку они вычисляются на основе введенных пользователем значений цены производителя и количества товара. Поэтому в коде цена товара с учетом НДС и стоимость описаны как переменные в операторе Dim.