Смекни!
smekni.com

Программирование в VBA (стр. 1 из 2)

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

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

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

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

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

Задание: 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

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