Интерфейс с пользователем
Поскольку в приложении нет простых вводимых данных, которые относятся ко всей задаче, то на форме нет текстовых полей. Результат также представляет собой не одно значение, а несколько названий, число которых заранее не известно. Поэтому на форме отсутствуют надписи, а командные кнопки сдвинуты вправо, поскольку результат выводится на форму, начиная с левого верхнего угла (рис. 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; просмотров: 338;