Использование языка программирования VBA

Автор: Пользователь скрыл имя, 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

Приложения……………………………………………………………………...

Работа содержит 1 файл

Курсовая по VBA.doc

— 701.00 Кб (Скачать)

2 поля  ввода: Фамилия, имя 

3 раскрывающихся  списка: Работа, Стаж, Рабочий день (час)

  1. Группы по 2 флажка: Кредитная карточка, заграничный паспорт

2 группы  по 2 переключателя: Пол, Семейное  положение

  1. поля ввода со счетчиками: Возраст, Оклад, отпуск

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  
      1. Модель  управления запасами

  

    Вводим  исходные значения, т.е. значения покупки продавцом журналов, продажи этих журналов и возврата в типографию в случае не реализации товара.   Ввод всего этого производится в диалоговом окне, которое создается как 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:J16;1);J11:J16;0)-1)*5 соответствующий оптимальный объем покупок газет. Затем функция CALC выводит эти оптимальные значения в окне сообщений.

    Функция наибольший возвращает К-е  наибольшее значение из множества данных. Эта функция используется для того чтобы выбрать значение по его относительному местоположению. Например, функцию НАИБОЛЬШИЙ можно использовать для того чтобы определить наилучший, второй, третий результат в балах, показанный при тестировании. Синтаксис программы такой:

    НАИБОЛЬШИЙ (массив; К) где Массив – это массив или диапазон ячеек, где определяется наибольшее значение, к – позиция  (начиная с наибольшей) в массиве или диапазоне.

    Все результаты, занесенные в таблицу будут выглядеть следующим образом: 

        П          р          о          д          а         ж          а      
    П   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+2x11+2x12+2x13+x14+x15+3x16+

    +2x18 + 4(x5+x6+x7+x8+x9+2x10+2x11+2x12+2x13+3x14+4x15+4x16+4x17+5ч18+7x19-220)+ 6(...-210)+9(...-350)+

    +11(...-380)

    Отведем диапазон ячеек (i4:i22) под переменные . Введем в диапазон ячеек (j3:m3) левые части ограничений, определенные следующими формулами:

   =СУММПРОИЗВ($I$4:$I$22;B4:B22)

          =СУММПРОИЗВ($I$4:$I$22;c4:c22)

          =СУММПРОИЗВ($I$4:$I$22;d4:d22)

          =СУММПРОИЗВ($I$4:$I$22;e4:e22)

      В ячейку N4 введем функцию цели:

=СУММПРОИЗВ($I$4:$I$22;F4:F22)+B3*(СУММПРОИЗВ($I$4:$I$22;B4:B22)-J3)+C3*(СУММПРОИЗВ($I$4:$I$22;C4:C22)-K3)+D3*(СУММПРОИЗВ($I$4:$I$22;D4:D22)-L3)+E3*(СУММПРОИЗВ($I$4:$I$22;E4:E22)-M3) 

где в  ячейки B3:E3 введены длины, а в ячейки J3:M3 – кол-ва заказанных рулонов

     Выберем команду сервис – Поиск  решения и заполним открывшееся  диалоговое окно Поиск решения (Solver):

    - Установим  целевую ячейку – 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
      1. База данных

Информация о работе Использование языка программирования VBA