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


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

Решение задачи согласно алгоритму состоит из двух этапов, для активизации каждого из которых служат командные кнопки «Ввод данных» и «Поиск».

 

Рис. 7.2. Форма для решения задачи

 

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

Процедуры, которые служат для обработки событий "Щелчок на кнопках «Ввод данных» и «Поиск»", представлены ниже

 

Option Explicit 'Явное описание переменных

Option Base 1 'Нумерация элементов массива с 1

 

Const N = 5 'Количество всех товаров

'Описание массивов для всех процедур формы

Dim strНазвание(N) As String, _

curЦена(N) As Currency

'Ввод исходных данных

Private Sub cmdВвод_данных_Click()

Dim i As Integer 'Номер текущего элемента массива

 

'Очистка формы от предыдущих данных,

'выведенных оператором Print

Cls

 

'Ввод данных

For i = 1 To N

strНазвание(i) = InputBox("Введите название товара", _

Str(i) + "-й товар")

curЦена(i) = CCur(InputBox("Введите цену товара", _

Str(i) + "-й товар"))

Next i

End Sub

 

'Поиск товаров с нужной ценой

Private Sub cmdПоиск_Click()

Dim curНужная_Цена As Currency, _

i As Integer, _

k As Integer

 

'Ввод нужной цены

curНужная_Цена = CCur(InputBox("Введите нужную цену ", _

"Цена товара"))

 

'Вывод заголовка результата

Print "Товары с ценой " & Format(curНужная_Цена, "0.00 грн.") & ":"

 

k = 0 'Количество найденных товаров

 

'Просмотр и вывод названий с нужной ценой

For i = 1 To N

If curЦена(i) = curНужная_Цена Then

Print strНазвание(i)

k = k + 1 'Подсчет числа найденных товаров

End If

Next i

If k = 0 Then Print "Отсутствуют"

Print "--------------------------"

End Sub

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

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

2. Задать заголовок и имя формы.

3. На форме создать две кнопки «Ввод данных» и «Поиск».

4. В окне кода в разделе общих описаний (General Declaration) ввести операторы

 

Option Base1

Const N=5

Dim strНазвание(N) As String, _

curЦена (N) As Currency

 

5. В окне формы дважды щелкнуть на кнопке «Ввод данных» и ввести тело кода процедуры обработки события щелчка на этой кнопке, а затем выполнить аналогичные действия для кнопки «Поиск».

6. Сохранить форму и проект в папке на диске D:.

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

В коде приложения строго соблюдается дисциплина явного описания переменных. Она обеспечивается наличием оператора

 

Option Explicit

 

в разделе общих описаний. Здесь же помещено описание массивов данных strНазвание и curЦена, поскольку эти массивы используются в обеих процедурах.

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

 

Const N=5

 

помещен в разделе общих описаний.

Для того чтобы нумерация элементов массивов начиналась не с нуля, а с единицы, в разделе общих описаний записан оператор

 

Option Base1

 

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

Для ввода массивов данных названий товаров и их цен в процедуре обработки события "Щелчок на кнопке «Ввод данных»" используется функция InputBox. Эта же функция применяется для ввода значения цены, по которой отбираются товары из прайс-листа в процедуре обработки события "Щелчок на кнопке «Поиск»".

В этой процедуре имеется цикл для просмотра всех цен и сравнения с нужной ценой. Если значение цены товара совпадает с нужной ценой, то сразу же выводится название этого товара на форму.

Сравнение цен производится оператором If, а вывод – оператором Print, который записан в ветви Then. Здесь же увеличивается значение счетчика количества найденных товаров k. Перед началом просмотра (перед циклом) k равно нулю.

Если после окончания просмотра списка цен окажется, что К по-прежнему равно нулю, то это означает, что товары с заданной ценой отсутствуют в списке. Об этом выдается соответствующее сообщение в конце процедуры.

Таким образом, после щелчка на кнопке «Поиск» на форму выводится определенная информация. Если еще раз щелкнуть на этой же кнопке и задать другое значение нужной цены, то ниже будут выведены результаты второго поиска и т.д.

Если же потребуется произвести новый поиск с новым прайс-листом, предварительно не закрывая форму, то желательно, чтобы результаты поиска по новому списку выводились на очищенную от результатов прежних поисков форму. Такая очистка обеспечивается оператором Cls в процедуре cmdВвод_данных_Click перед вводом информации из нового прайс-листа.

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



Дата добавления: 2020-10-14; просмотров: 345;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.