Автор: Пользователь скрыл имя, 09 Февраля 2011 в 15:34, курсовая работа
Цель исследования. Выявить и обосновать характеристики и особенности методов применения объектно-ориентированного языка программирования VBA при организации проектной деятельности учащихся старших классов.
Объект исследования. Процесс учебной проектной деятельности учеников старших классов общеобразовательной школы.
Предмет исследования. Применение объектно-ориентированного языка программирования VBA в проектной деятельности учащихся-старшеклассников.
Введение …………………………………………………………………………..3
Описание языка VBA и системы программирования в Office…………….5
1.1.Типы данных………………………………………………………………….5
Описание переменных………………………………………………………6
Описание массивов…………………………………………………………..8
Операторы языка и управляющие конструкции…………………………..9
Операторы языка и управляющие конструкции…………………………..11
2. Решение задачи-теста для написания и отладки программы…………….14
3. Анализ полученных результатов……………………………………………17
4. Инструкция пользователю и описание программы………………………18
Описание переменных…………………………………………………….18
Входные и выходные данные…………………………………………….19
Подробное описание задач……………………………………………….20
4.3.1.Составление ведомости расчета прибыли от товара………………….21
Модель управления запасами ………………………………………….21
Задание на нахождение оптимального раскроя………………………22
База данных………………………………………………………………24
4.4.Описание интерфейса………………………………………………………27
Функция пользователя……………………………………………………28
Переменные и постоянные……………………………………………….30
Стандартные функции пользователя для работы с массивами и матрицами……………………………………………………………………….30
Объекты, свойства и методы VBA………………………………………..31
Операторы цикла………………………………………………………….32
Заключение………………………………………………………………………32
Список литературы…………………………………………………………….34
Приложения……………………………………………………………………...
2 поля ввода: Фамилия, имя
3 раскрывающихся списка: Работа, Стаж, Рабочий день (час)
2 группы по 2 переключателя: Пол, Семейное положение
4.3. Подробное описание задач
4.3.1.Составление ведомости расчета прибыли от товара
Заполняем таблицу значениями, как указано в условии, т.е. 5 разновидностей комплектующих расположенных в ячейках B2:F2, и 9 вариантов стоимостей комплектующих в ячейках A3:A11. В ячейках B3:F12 будет располагаться значения стоимостей комплектующих и стоимости работы до комплектации.
В ячейках G3 по формуле =СУММ(B3:F3) считается общая стоимость всех комплектующих, растягиваем маркер ячейки G3 до ячейки G11, и получаем стоимость всех комплектующих для всех вариантов стоимостей.
В программе определяется какая деталь в каком месте самая дешевая, если не учитывать транспортные затраты и задаться целью купить детали по минимальным ценам. Для этого в программе определяются минимальные стоимости по 5-ти деталям.
Полученная ведомость будет выглядеть следующим образом:
Варианты | В и д ы к о м п л е к т у ю щ и х | MIN / MAX | |||||
Стоимости | 1-я деталь | 2-я деталь | 3-я деталь | 4-я деталь | 5-я деталь | Всего | |
1-й | 20 | 90 | 5 | 50 | 60 | 225 | |
2-й | 19 | 85 | 4 | 55 | 50 | 213 | |
3-й | 20 | 81 | 4 | 50 | 56 | 211 | Миним. Цена на товар |
4-й | 25 | 87 | 8 | 57 | 58 | 235 | |
5-й | 29 | 87 | 5 | 55 | 60 | 236 | |
6-й | 18 | 88 | 4 | 40 | 61 | 211 | |
7-й | 30 | 99 | 9 | 66 | 60 | 264 | |
8-й | 30 | 99 | 9 | 66 | 64 | 268 | Макс. Цена на товар |
9-й | 21 | 90 | 6 | 54 | 55 | 226 | |
До комплектации | 15 | 75 | 3 | 40 | 50 | 183 |
Вводим
исходные значения, т.е. значения покупки
продавцом журналов, продажи этих журналов
и возврата в типографию в случае не реализации
товара. Ввод всего этого производится
в диалоговом окне, которое создается
как UserForm со специальными кнопками и полями
ввода покупки журналов, продажи, и возврата
к типографию. Окно ввода выглядит в соответствии
с рисунком 1.
Рисунок
1 – Окно «Ввод данных»
Составляем таблицу состоящую из объема реализации, числа событий, и вероятности этих событий, первые два нам даны по условию а вероятность этих событий нужно посчитать. Вводим в ячейку D7 следующую формулу вычисления вероятностей {=D6/СУММ($D$5:$I$5)}и растягиваем маркер до ячейки I7.
В ячейках C10:H15 с помощью функции пользователя CALC Вычисляем финансовые исходы при всевозможных вариантах событий покупки журналов и их реализации
Function CALC(buy As Variant) As Variant
Dim Цена_продажи, Цена_покупки, Цена_возврата, NRows, i, j As Integer, Result() As Integer
NRows = buy.Rows.Count
Цена_продажы = Range("a2").Value
Цена_покупки = Range("b2").Value
Цена_возврата = Range("c2").Value
ReDim Result(NRows, NRows)
For i = 1 To NRows
For j = 1 To NRows
If i <= j Then Result(i, j) = buy(i) * (Цена_продажы - Цена_покупки)
If i > j Then Result(i, j) = buy(j) * (Цена_продажы - Цена_покупки) - (buy(i) - buy(j)) * (Цена_покупки - Цена_возврата)
Next j
Next i
CALC = Result
End Function
В
ячейках J11:J16 с помощью формулы {=МУМНОЖ(C10:H15;ТРАНСП(D7:I7)
В ячейке F16 с помощью формулы = НАИБОЛЬШИЙ (J11:J16;1) вычисляем максимальную прибыль. Ее также можно найти воспользовавшись функцией МАКС, находящей максимальный элемент из списка =Макс(J11:J16).
В ячейке F17 по формуле
=(ПОИСКПОЗ(НАИБОЛЬШИЙ(J11:
Функция наибольший возвращает К-е наибольшее значение из множества данных. Эта функция используется для того чтобы выбрать значение по его относительному местоположению. Например, функцию НАИБОЛЬШИЙ можно использовать для того чтобы определить наилучший, второй, третий результат в балах, показанный при тестировании. Синтаксис программы такой:
НАИБОЛЬШИЙ (массив; К) где Массив – это массив или диапазон ячеек, где определяется наибольшее значение, к – позиция (начиная с наибольшей) в массиве или диапазоне.
Все
результаты, занесенные в таблицу будут
выглядеть следующим образом:
П р о д а ж а | |||||||||
П | 0 | 4 | 8 | 12 | 14 | 18 | |||
о | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Покупка | Прибыль |
к | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - р. |
у | 8 | 0 | -20 | 16 | 16 | 16 | 16 | 4 | - р. |
п | 12 | 0 | -40 | -4 | 32 | 32 | 32 | 8 | 12,94р. |
к | 14 | 0 | -60 | -24 | 12 | 48 | 48 | 12 | 16,88р. |
а | 18 | 0 | -70 | -34 | 2 | 38 | 56 | 14 | 9,00р. |
Максимальная прибыль | 16,88р. | 18 | 0,28р. | ||||||
Оптимальный объем | 15 |
4.3.4.Задание на нахождение оптимального раскроя
Составляем таблицу, в которой будут приведены остатки от раскроя на заказ при различных вариантах раскроя.
Например, по условию в соответствии с вариантом стандартная длина раскроя равна 28 метров, т.е. первый вариант раскроя будет составлять 0 рулон длиной 4 м, 0 рулонов длиной 6м и 4 рулона длиной 9 м, рулонов длиной 11 м. не будет, что в сумме даст 27, следовательно, отходы будут составлять 1 метр. Второй вариант, когда 1 рулон по 6 м и два по 11 м, в этом случае остатков не будет и т.д. Всего получается 19 вариантов раскроя.
В
программе это будет выглядеть
таким образом:
l = 28
a1 = 4: a2 = 6
a3 = 9: a4 = 11
r = 4
m = Application.Min(a1, a2, a3, a4)
t = Application.Floor(l / m, 1)
For i1 = 0 To t
For i2 = 0 To t
For i3 = 0 To t
For i4 = 0 To t
s = 28 - a1 * i1 - a2 * i2 - a3 * i3 - a4 * i4
If s >= 0 And s < m Then
Cells(r, 1).Value = r - 3
Cells(r, 2).Value = i1
Cells(r, 3).Value = i2
Cells(r, 4).Value = i3
Cells(r, 5).Value = i4
Cells(r, 6).Value = s
r = r + 1
End If
Next i4
Next i3
Next i2
Next
i1
На
листе это будет выглядеть
так:
Д
л и н ы р у
л о н о в
н а з а к а з | |||||
Варианты | Остаток | ||||
раскройки | 4 | 6 | 9 | 11 | от раскроя |
1 | 0 | 0 | 3 | 0 | 1 |
2 | 0 | 1 | 0 | 2 | 0 |
3 | 0 | 1 | 1 | 1 | 2 |
4 | 0 | 3 | 1 | 0 | 1 |
5 | 1 | 0 | 0 | 2 | 2 |
6 | 1 | 1 | 2 | 0 | 0 |
7 | 1 | 2 | 0 | 1 | 1 |
8 | 1 | 2 | 1 | 0 | 3 |
9 | 1 | 4 | 0 | 0 | 0 |
10 | 2 | 0 | 1 | 1 | 0 |
11 | 2 | 0 | 2 | 0 | 2 |
12 | 2 | 1 | 0 | 1 | 3 |
13 | 2 | 3 | 0 | 0 | 2 |
14 | 3 | 1 | 1 | 0 | 1 |
15 | 4 | 0 | 0 | 1 | 1 |
16 | 4 | 0 | 1 | 0 | 3 |
17 | 4 | 2 | 0 | 0 | 0 |
18 | 5 | 1 | 0 | 0 | 2 |
19 | 7 | 0 | 0 | 0 | 0 |
Пусть Xj – кол-во стандартных рулонов, разрезанных по варианту j, где j[1..19]. Ограничения налагаемые на переменные Xj связаны с требованием обеспечить изготовление заказанного кол-ва нестандартных рулонов. Функция цели учитывает суммарные отходы, получаемые при выполнении заказа. Таким образом имеем следующую мат. модель:
Минимизировать:
Z=x1+2x3+x4+2x5+x7+3x8+
+2x18
+ 4(x5+x6+x7+x8+x9+2x10+2x11+
+11(...-380)
Отведем диапазон ячеек (i4:i22) под переменные . Введем в диапазон ячеек (j3:m3) левые части ограничений, определенные следующими формулами:
=СУММПРОИЗВ($I$4:$I$22;B4:
=СУММПРОИЗВ($I$4:$I$22;
=СУММПРОИЗВ($I$4:$I$22;
=СУММПРОИЗВ($I$4:$I$22;e4:e22)
В ячейку N4 введем функцию цели:
=СУММПРОИЗВ($I$4:$I$22;F4:F22)
где в ячейки B3:E3 введены длины, а в ячейки J3:M3 – кол-ва заказанных рулонов
Выберем команду сервис –
- Установим целевую ячейку – N4
- Изменяя ячейки I4:I22
- Ограничения $I$4:$I$22=целое
$I$4:$I$22>=0
$j$4:$m$4>=$j$3:$m$3
- Функция = минимизация
К о л - в о з а к а з а н н ы х р у л о н о в | ||||
220 | 210 | 350 | 380 | Отходы |
220 | 210 | 350 | 380 | 49,99996 |
Информация о работе Использование языка программирования VBA