Экономико-математическая модель
Комиссионные i—го продавца вычисляются по формуле:
Komi=(p1i+ p2i)*Stoim_r_pi
где p1i- процент доплаты за выручку i—му продавцу;
p2i– процент доплаты за стаж i—му продавцу;
Stoim_r_pi – стоимость реализованной продукции i—го продавца ;
Komi-размер комиссионных i—го продавца.
Далее нужно найти максимальное значение в массиве Kom при i=1,2,...,7.
Алгоритм решения задачи
Решение задачи реализуется в несколько этапов:
ввод сведений о размере выручки и стаже работы каждого продавца;
расчет комиссионных каждого продавца;
поиск максимального значения в массиве комиссионных;
вывод результатов поиска.
Некоторые этапы решения удобнее оформить в виде процедур (Расчет, Поиск, Вывод результата). Укрупненный алгоритм решения задачи представлен на рис 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
Реализация проекта
Для реализации проекта необходимо выполнить такие действия:
Запустить на выполнения VB для создания нового проекта.
Задать заголовок формы и её имя.
Для ввода требуемого значения показателя создать текстовое поле text1 и надпись к нему label1.
Для контейнера данных по дням недели создать рамку frame1 такого размера, чтобы в ней поместился массив текстовых полей из семи элементов.
Выполнение программы и анализ полученных результатов
Рис 8.3. Результат решения задачи расчета комиссионных