Скачать .docx  

Курсовая работа: Программирование в VBA

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Курсовая работа

по дисциплине

«ИНФОРМАТИКА»

Задание: 9

Группа:

Студент:

Руководитель:

* *


СОДЕРЖАНИЕ

1. Задание на курсовую работу…………………………………………………..2

2. Описание переменных…………………………………………………………3

3. Блок-схема……………………………………………………………………...6

4. Описание алгоритма…………………………………………………………..10

5. Листинг программы…………………………………………………………...11

6. Описание входных данных и результат вычисления……………………….14


Задание на курсовую работу

В течение 5-ти дней (рабочая неделя) рабочий изготавливает детали 7 различных типов. Известно количество изготовленных им деталей за каждый день и стоимость изготовления одной детали каждого типа (стоимость изготовления детали не меняется).

Написать программу на языке VBA, которая вводит исходные данные,

выполняет расчеты и выводит на экран:

- исходные данные в виде таблицы, где перечислены наименования деталей, стоимость их изготовления, количество деталей, изготовленных за каждый день;

- количество деталей каждого типа, изготовленных за неделю;

- заработок за каждый день;

- заработок за неделю;

- день с наибольшим заработком.


Описание переменных

Исходные данные находятся на листе «Start» (рис. 1) и содержат следующую информацию:

- количество деталей каждого из семи типов, изготовленных за пять рабочих дней.

- стоимость изготовления детали каждого из семи типов.

Результаты работы программы находятся на листе «Result» (рис. 2).

Рис. 1 Лист с начальными данными

Рис.2 Полученные результаты

В программе перменные описаны следующим образом:

1) cost (7) – стоимость изготовления одной единицы каждого изделия, представляет массив дробных чисел

Dim cost(7) As Double

2) amount(7,5) – количество деталей каждого вида, изготовленных в каждый из рабочих дней, представляет двумерный массив целых чисел

Dim amount(7,5) As Integer

3) pay (6) – заработок за каждый день (от 1 до 5) и общий заработок за весь период, представляет массив дробных чисел

Dim pay(6) As Double

4) amount _ n (7) – количество деталей каждого вида за истекший период, представляет массив целых чисел

Dim amount_n(7) As Integer

5) day – порядковый номер дня с наибольшим заработком, представляет целое число

Dim day As Integer

6) sumpay – сумма наибольшего заработка за период, представляет дробное число

Dim sumpay As Double

В программе также были использованы вспомогательные переменные, счетчики циклов m и p , являющиеся целыми числами.

Dim m As Integer, p As Integer

Переменные cost (7), pay (6), sumpay могут быть не целыми числами, поэтому они объявлены как действительные.

Переменные amount (7,5), amount _ n (7), day – целые числа, так как смена рабочего составляет полный день, и он не может изготовить за смену половину детали.


Блок-схема

Блоки используются для обозначения действий, которые производит алгоритм, представленный блок-схемой, а также для внесения дополнительных пояснений по работе алгоритма или улучшения читаемости схемы.

Общая структура курсовой работы имеет вид, показанный на рисунках 3, 4, 5. Существуют некоторые типы блоков:

· квадрат – блок решения

· эллипс – блок используется для обозначения начала и конца алгоритма;

· ромб – блок используется для обозначения условного оператора;

· шестиугольник – блок используется для обозначения оператора цикла;

· стрелками обозначен переход от одного действия к другому.


Рис.3 Блок-схема (начало)


Рис. 4 Блок-схема (продолжение)


Рис.5 Блок-схема (окончание)


Описание алгоритма

Начало программы.

I. Ввод начальных (нулевых) значений для расчетных величин:

· количество изготовленных деталей за неделю;

· зарплата по дням;

· зарплата суммарно;

· день с наибольшим заработком;

· величина максимальной зарплаты.


II. Открытие листа с начальными данными («Start»).

Получение данных в рабочие переменные.

III. Открытие листа с результатами.

Формирование матрицы входных данных.

Два вложенных цикла: по деталям и по дням.

Во внутреннем цикле (по дням, расчет по одному изделию) суммируется количество изготовленных деталей.

После вывода из внутреннего цикла выводится результат по деталям.

Расчет заработной платы организован в этом же внутреннем цикле.

IV. Определение дня с максимальной заработной платой.

Используется алгоритм сравнения.

При равенстве двух и более дневных сумм результативной считается первая сумма.


Листинг программы

Sub Funct()

Dim cost(7) As Double

Dim amount(7, 5) As Integer

Dim pay(6) As Double

Dim amount_n(7) As Integer

Dim day As Integer

Dim sumpay As Double

Dim m As Integer, p As Integer

For m = 1 To 7

amount_n(m) = 0

Next

For p = 1 To 6

pay(p) = 0

Next

sumpay = 0

day = 0

Sheets("Start").Select

For m = 1 To 7

cost(m) = Cells(3 + m, 2)

Next

For m = 1 To 7

For p = 1 To 5

amount(m, p) = Cells(3 + m, 2 + p)

Next p

Next m

Sheets("Results").Select

Cells(1, 1) = "Количество изготовленных деталей"

Cells(2, 1) = "Наименование изделия"

Cells(2, 2) = "Стоимость 1 шт"

Cells(2, 3) = "Изготовлено"

Cells(3, 3) = "1 день"

Cells(3, 4) = "2 день"

Cells(3, 5) = "3 день"

Cells(3, 6) = "4 день"

Cells(3, 7) = "5 день"

Cells(3, 8) = "Всего"

Cells(4, 1) = "HDD"

Cells(5, 1) = "CD ROM"

Cells(6, 1) = "DVD ROM"

Cells(7, 1) = "CARD READER"

Cells(8, 1) = "MOTHERBOARD ASUS"

Cells(9, 1) = "DDR-3 Gigabyte viseocard"

Cells(10, 1) = "D-Link Switch"

For m = 1 To 7

Cells(3 + i, 2) = cost(m)

For p = 1 To 5

Cells(3 + m, 2 + p) = amount(m, p)

amount_n(m) = amount_n(m) + amount(m, p)

Next p

Cells(3 + m, 8) = amount_n(m)

Next m

Cells(12, 1) = "Количество изготовленных деталей "

Cells(13, 1) = "Наименование изделия "

Cells(13, 2) = "Стоимость 1 шт "

Cells(13, 3) = "Заработано"

Cells(14, 3) = "1 день"

Cells(14, 4) = "2 день"

Cells(14, 5) = "3 день"

Cells(14, 6) = "4 день"

Cells(14, 7) = "5 день"

Cells(14, 8) = "Всего"

Cells(15, 1) = "HDD"

Cells(16, 1) = "CD ROM"

Cells(17, 1) = "DVD ROM"

Cells(18, 1) = "CARD READER"

Cells(19, 1) = "MOTHERBOARD ASUS"

Cells(20, 1) = "DDR-3 Gigabyte viseocard"

Cells(21, 1) = "D-Link Switch"

For m = 1 To 7

For p = 1 To 5

Cells(14 + m, 2 + p) = amount(m, p) * cost(m)

pay(p) = pay(p) + amount(m, p) * cost(m)

pay(6) = pay(6) + amount(m, p) * cost(m)

Next p

Cells(14 + m, 2) = cost(m)

Cells(14 + m, 8) = cost(m) * amount_n(m)

Next m

For p = 1 To 5

Cells(22, 2 + p) = pay(p)

If pay(p) > sumpay Then

sumpay = pay(p)

day = p

End If

Next

Cells(22, 8) = pay(6)

Cells(23, 1) = "Заработок за неделю"

Cells(23, 5) = pay(6)

Cells(24, 1) = "День с максимальным заработком"

Cells(24, 5) = day

Cells(24, 6) = "Заработано"

Cells(24, 8) = sumpay

End Sub


Описание входных данных и результат вычислений

Создание документа MicrosoftExcelс именем inf_course_1.xls

На лист Start вводятся начальные данные в таблицу.

Далее открывается редактор VisualBasic, в котором вводится код программы.

Изменения сохраняются в созданном модуле.

Программа запускается с помощью F5.

Результат помещается на лист Results.

Проводится проверка работы кода с нулевыми и единичными начальными данными.

«Нулевой» результат

Количество изготовленных деталей (нулевой)
Наименование изделия Стоимость 1 шт Изготовлено
1 день 2 день 3 день 4 день 5 день
HDD 0 0 0 0 0 0
CD ROM 0 0 0 0 0 0
DVD ROM 0 0 0 0 0 0
CARD READER 0 0 0 0 0 0
MOTHERBOARD ASUS 0 0 0 0 0 0
DDR-3 Gigabyte viseocard 0 0 0 0 0 0
D-Link Switch 0 0 0 0 0 0

«Единичный» результат

Количество изготовленных деталей (единичный)
Наименование изделия Стоимость 1 шт Изготовлено
1 день 2 день 3 день 4 день 5 день
HDD 1 1 1 1 1 1
CD ROM 1 1 1 1 1 1
DVD ROM 1 1 1 1 1 1
CARD READER 1 1 1 1 1 1
MOTHERBOARD ASUS 1 1 1 1 1 1
DDR-3 Gigabyte viseocard 1 1 1 1 1 1
D-Link Switch 1 1 1 1 1 1

Результат с выбранными данными

Количество изготовленных деталей
Наименование изделия Стоимость 1 шт Изготовлено
1 день 2 день 3 день 4 день 5 день
HDD 100,5 2 1 5 1 4
CD ROM 25 4 3 2 7 9
DVD ROM 30,8 12 2 7 5 4
CARD READER 15,8 6 5 10 8 12
MOTHERBOARD ASUS 237,4 3 13 1 3 5
DDR-3 Gigabyte viseocard 597,3 2 4 2 4 2
D-Link Switch 87,6 1 2 3 2 1

Результат после проведенных вычислений

Количество изготовленных деталей
Наименование изделия Стоимость 1 ш т Изготовлено
1 день 2 день 3 день 4 день 5 день Всего
HDD 100,5 2 1 5 1 4 13
CD ROM 25 4 3 2 7 9 25
DVD ROM 30,8 12 2 7 5 4 30
CARD READER 15,8 6 5 10 8 12 41
MOTHERBOARD ASUS 237,4 3 13 1 3 5 25
DDR-3 Gigabyte viseocard 597,3 2 4 2 4 2 14
D-Link Switch 87,6 1 2 3 2 1 9

Конечный результат

Результат в денежном эквиваленте
Наименование изделия Стоимость 1 шт Заработано
1 день 2 день 3 день 4 день 5 день Всего
HDD 100,5 201 100,5 502,5 100,5 402 1307
CD ROM 25 100 75 50 175 225 625
DVD ROM 30,8 369,6 61,6 215,6 154 123,2 924
CARD READER 15,8 94,8 79 158 126,4 189,6 647,8
MOTHERBOARD ASUS 237,4 712,2 3086,2 237,4 712,2 1187 5935
DDR-3 Gigabyte viseocard 597,3 1194,6 2389,2 1194,6 2389,2 1194,6 8362
D-Link Switch 87,6 87,6 175,2 262,8 175,2 87,6 788,4
ИТОГО 2759,8 5966,7 2620,9 3832,5 3409 18589
Заработок за неделю 18588,9
День с максимальным заработком 2 Заработано 5967