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

Экономико-математическая модель

Комиссионные i—го продавца вычисляются по формуле:

Komi=(p1i+ p2i)*Stoim_r_pi

где p1i- процент доплаты за выручку i—му продавцу;

p2i– процент доплаты за стаж i—му продавцу;

Stoim_r_pi – стоимость реализованной продукции i—го продавца ;

Komi-размер комиссионных i—го продавца.

Далее нужно найти максимальное значение в массиве Kom при i=1,2,...,7.

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

Решение задачи реализуется в несколько этапов:

  1. ввод сведений о размере выручки и стаже работы каждого продавца;

  2. расчет комиссионных каждого продавца;

  3. поиск максимального значения в массиве комиссионных;

  4. вывод результатов поиска.

Некоторые этапы решения удобнее оформить в виде процедур (Расчет, Поиск, Вывод результата). Укрупненный алгоритм решения задачи представлен на рис 8.1.

Структура данных

Известно, что продавцов 7, поэтому количество исходных данных фиксировано. Для ввода исходных данных используем массив надписей Label1 (для записи ФИО продавцов) и два массива текстовых полей Text1 (размер выручки) и Text2 (стаж работы).

Рис. 7.1. Схема алгоритма решения задачи

Результат вычислений «Максимальные комиссионные» выводится на форму в виде надписи c именем Label2.

Для организации циклических вычислений используется целая переменная і (номер продавца) типа байт т.к. известно, что 1<= і <= 7. Kom(i) -размер комиссионных i—го продавца - целая переменная типа Integer; p1(i) - процент доплаты за выручку i—му продавцу - переменная типа Single; p2(i) – процент доплаты за стаж i—му продавцу - переменная типа Single; Stoim_r_p(i) – стоимости реализованной продукции (выручка) i—го продавца - переменная типа Single; величина max представляет собой текущее максимальное значение комиссионных. Переменные, использованные в приложении представлены в табл. 8.1.

Таблица 8.1. Используемые переменные

Реквизит

Имя

Назначение

Stoim_r_p(i)

Text1(i)

стоимости реализованной продукции i—го продавца (выручка)

Стажi

Text2(i)

стаж работы i—го продавца

Komi

Kom(i)

размер комиссионных i—го продавца

p1i

P1(i)

процент доплаты за выручку i—му продавцу

P2i

P2(i)

процент доплаты за стаж i—му продавцу;

Max

Max

наибольший размер комиссионных

i

i

номер продавца

Результат

Label2

Числовая информация о результате сравнения

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

Задачу решают с помощью формы, которая содержит массив надписейlabel1 и массивы текстовых полей text1, text2 (рис. 8.2.). В эти текстовые поля вводят соответствующие входные данные. В результате расчётов строка соответствующая продавцу с максимальными комиссионными подсвечивается красным цветом.

Рис 8.2. Форма для решения задачи расчета комиссионных

Код проекта.

Информационно этапы решения задачи связаны так: на первом этапе для каждого продавца начисляются комиссионные с учетом суммы выручки и стажа работы. Для этой цели используется функция Function r_kom (prodaga, staj) As Single с параметрами prodaga - сумма выручки, staj - стаж работы. Комиссионные каждого продавца заносятся в массив Kom. Массив является фактическим параметром для процедуры Poisk_Max(N, F1(), Max As Single, L) находящей максимальное значение массива. Параметр N – количество элементов массива, величина максимального значения возвращается через параметр Max, номер элемента массива с максимальным значением возвращается через параметр L. Процедура Vivod(J) выделяет красным цветом элементы с номером (J-1) в массивах текстовых полей Text1, Text2.

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

Function r_kom(prodaga, staj) As Single

If (staj >= 5) And (prodaga >= 10000) Then r_kom = 0.025 * prodaga

If (staj < 5) And (prodaga >= 10000) Then r_kom = 0.02 * prodaga

If (staj >= 5) And (prodaga < 10000) Then r_kom = 0.015 * prodaga

If (staj < 5) And (prodaga < 10000) Then r_kom = 0.01 * prodaga

End Function

Private Sub poisk_max(N, f1(), max As Single, l)

Dim j As Byte

max = f1(1)

l = 1

For j = 2 To N

If f1(j) > max Then max = f1(j): l = j

Next j

End Sub

Private Sub vivod(j)

For i = 1 To 7

Text1(i - 1).BackColor = vbWhite

Text2(i - 1).BackColor = vbWhite

Next i

Text1(j - 1).BackColor = vbRed

Text2(j - 1).BackColor = vbRed

End Sub

Private Sub Command1_Click()

Dim i, k, l As Byte

Dim kom(1 To 3)

Dim p1, p2 As Single

Dim max As Single

Cls

For i = 1 To 3

kom(i) = r_kom(CSng(Text1(i - 1)), CSng(Text2(i - 1)))

Next i

k = 3

poisk_max 3, kom, max, l

vivod l

Label4.Caption = "Макс. комиссионные " + Str(max)

End Sub

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

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

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

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

  3. Для ввода требуемого значения показателя создать текстовое поле text1 и надпись к нему label1.

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

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

Рис 8.3. Результат решения задачи расчета комиссионных

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