Скачать .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 |