Программирование в VBA

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

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





















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

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

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















Задание: 9

Группа: 

Студент: 

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







* *






СОДЕРЖАНИЕ



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

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

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

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

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

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


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



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

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

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

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

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

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

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

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


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



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

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

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

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

















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





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





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



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

Dim cost(7) As Double

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


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



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

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

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

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

Программа запускается с помощью 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











- 1 -