Курсовая работа: Программирование в VBA
Название: Программирование в 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. Проводится проверка работы кода с нулевыми и единичными начальными данными. «Нулевой» результат
«Единичный» результат
Результат с выбранными данными
Результат после проведенных вычислений
Конечный результат
|