Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-2012 / 1-семестр / Методика / Lab6(массивы).doc
Скачиваний:
12
Добавлен:
26.03.2015
Размер:
784.38 Кб
Скачать

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

Реквизит

Имя

Предназначение

N

i

k

Названиеі

Ценаі

Ценаn

N

i

k

Nazv(i)

Cena(i)

C

Количество всех товаров

Номер текущего товара

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

Название i-го товара

Цена i-го товара

Цена, по которой надо отобрать товары

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

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

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

Рис 7.1. Алгоритм выбора товаров с заданной ценой.

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

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

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

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

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

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

Dim Nazv(N) As String

Dim Cena(N) As Currency

Ввoд входных данных

Подпрограмма для ввода данных

____Private Sub cmbВведение_данных_Click ( )_______

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

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

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

Cls

Ввод данных

For i = 1 To N

Nazv(i) = (Input Box (“Введите название товара”, Str (i) + “-й товар”))

Next i

End Sub

Подпрограмма поиска товаров с заданной ценой

______Private sub cmdПоиск_Click ( )_____________

Dim С As Currency, i As Integer, k As Integer

‘ Ввод заданной цены

С = Ccur (InputBox (“Ввод заданной цены”, “Цена товара”))

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

Print “Товары с ценой” & Format (С, “0.00 грн.”)& “:”

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

просмотр и вывод названий товаров сзаданной ценной

For i = 1 To N

If Cena (i) = C Then Print Nazv(i)

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

End If

Next i

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

Print “----------------------------------”

End Sub

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

Для реализации проекта необходимо:

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

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

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

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

Option Basel

Const N =5

Dim Nazv (N) As String, Cena(N) As Currency

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

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

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

В коде приложения строго придерживается дисциплина явного описания переменных. Она обеспечивается наличием оператора OptionExplicitв разделе общих описаний. Тут же расположено описание массивов данныхNazvиCena, поскольку эти массивы употребляются в обeих процедурах.

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

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

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

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

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

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

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

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

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

Выполнение программы и анализ полученных результатов

Результаты решения задачи приведены на рис. 7.3. При этом были использованы данные из табл. 7.2.

Рис. 7.3. Результаты поиска товаров с необходимыми ценами.

Соседние файлы в папке Методика