ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Курсовая работа
по дисциплине
«ИНФОРМАТИКА»
Задание: 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
|
|