Автор работы: Пользователь скрыл имя, 25 Декабря 2013 в 16:29, курсовая работа
Задание на курсовую работу
На складе бумажной фабрики находится 5 сортов бумаги. За
каждый рабочий день (6 дней) отгружалось получателям некоторое
количество бумаги каждого вида. Цена менялась каждый день.
Написать программу на языке VBA, которая вводит исходные
данные, выполняет расчеты и выводит на экран:
исходные данные в виде таблицы, где перечислены наименования
• сорта бумаги, его цена (за 1 рулон), расход каждого сорта бумаги за
день (количество рулонов);
• количество отгруженных получателям рулонов бумаги каждого
сорта за первые 3 дня;
• общее количество, отгруженных рулонов бумаги всех сортов за
каждый день;
• общая стоимость всех отгруженных рулонов бумаги за 6 дней;
наименование сорта бумаги, которого было отгружено наименьшее
количество в 4 день.
1. Задание на курсовую работу 3
2. Описание переменных 4
3. Блок схема 6
4. Описание алгоритма 9
5. Листинг программы 10
6. Описание входных данных и результат вычислений 14
7. Список использованной литературы 17
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ИДО ГОУ МГИУ
Курсовая работа
По дисциплине «Информатика»
Москва 2011
Содержание
На складе бумажной фабрики находится 5 сортов бумаги. За
каждый рабочий день (6 дней) отгружалось получателям некоторое
количество бумаги каждого вида. Цена менялась каждый день.
Написать программу на языке VBA, которая вводит исходные
данные, выполняет расчеты и выводит на экран:
исходные данные в виде таблицы, где перечислены наименования
день (количество рулонов);
сорта за первые 3 дня;
каждый день;
наименование сорта бумаги, которого было отгружено наименьшее
количество
в 4 день.
Исходные данные находятся на листе «Initial_data» (рис. 1) и содержат следующую информацию:
Результаты работы программы оформляются на листе «Result» (рис. 2).
Рис.2. Полученные результаты
В программе переменные описаны следующим образом:
1) type_nime(5) — наименование сортов бумаги,отгружаемых со склада бумажной фабрики
Dim type_nime(5) As String
2) price(5) — стоимость единицы каждого сорта бумаги, представляет массив дробных чисел
Dim price(5) As Double
3) koll(5,6) —количество бумаги каждого сорта за истекший период представляет массив целых чисел
Dim koll(5,6) As Integer
4) total_koll_3den (5)— общее количество бумаги отгруженного со склада за первых 3 дня
Dim total_koll_3den(5) As Integer
5) total_koll_6 den(6) — общее количество бумаги отгруженного со склада за 6 дней
6) total_price— общая стоимость бумаги отгруженной со склада бумажной фабрики за истекший период
Dim total_price As Double
7)less_del— количество меньше всего отгруженного сорта бумаги в 4-й день
8)less_del_type— сорт бумаги, которого меньше всего было отгружено в 4-й день
В программе также были использованы вспомогательные переменные, счетчики циклов, i и j, являющиеся целыми числами.
Dim i As Integer, j As Integer
Переменные price(5),total_price могут быть и не целыми числами, поэтому они объявлены как действительные. Переменные koll(5,6), total_koll_3den (5), total_koll_6 den(6),less_del — целые числа, так как мы считаем, что фабрика не может поставлят по половине рулона бумаги.
Рис.3. Блок-схема (продолжение)
Нет
Начало программы.
Ввод начальных (нулевых) значений для расчетных величин (количество отгруженной получателям рулонов бумаги каждого сорта за первые 3 дня и за 6 дней, общая стоимость поставленной бумаги, количество меньше всего поставленного сорта бумаги и сорт бумаги, который меньше всего поставили получателям за 4-й день).
Открытие листа с начальными данными («Initial_data») и получение этих данных в рабочие переменные (массивы type_name(5),price(5) и kоll(5,6)).
Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (по каждому сорту бумаги и дню). Во внутреннем цикле (по первым 3 дням) суммируется количество поставленной бумаги получателю, после выхода из внутреннего цикла выводится результат по дням.
Расчет суммы общей стоимости всей поставленной бумаги за истекший период и вывод результатов. Организуется два вложенных цикла: внешний по сортам, внутренний по дням. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вычисление общей стоимости по i-му сорту в j-й день, во внешнем цикле (после получения результатов внутреннего цикла) — вывод по всем деталям.
Определение сорта бумаги, которой меньше всего поставили в 4-й день. Используется алгоритм сравнения, при равенстве двух и более количеств поставок результативной считается первое количество.
Sub Function()
'Сначала объявляем переменные, используемые в программе.
Dim i As Integer, j As Integer 'внутренние переменные
Dim type_name(5) As String 'сорта бумаги
Dim price(5) As Double 'цена за единицу
Dim koll(5, 6) As Integer 'количество (по дням)
Dim total_koll_3den(5) As Integer 'количество отгруженной бумаги за 3 дна(по сортам)
Dim total_koll_6den(6) As Integer 'количество отгруженной бумаги за 6 дней( по дням)
Dim total_price As Double 'общая стоимость
Dim less_del As Integer 'наименьшее количество поставленной бумаги
Dim less_del_type As Integer 'сорт бумаги, которой меньше всего поставили
‘Далее всем переменным присваивается нулевое значение
For i = 1 To 5
total_koll_3den(i) = 0
Next
For i = 1 To 6
total_koll_6den(i) = 0
Next
total_price = 0
less_del = 0
less_del_type = 0
'Выбираем лист начальных данных
Sheets("Initial_data").Select
'Выбираем сорта бумаги
For i = 1 To 5
type_name(i) = Cells(3 + i, 1)
Next
'Вводим цену
For i = 1 To 5
price(i) = Cells(3 + i, 2)
Next
'Вводим количество
For i = 1 To 5
For j = 1 To 6
koll (i, j) = Cells(3 + i, 2 + j)
Next j
Next i
'Далее на листе “Result” в ячейку с определенными данными вводится ее название
Sheets("Result").Cells(1, 1) = "Поставка бумаги"
Sheets("Result").Cells(2, 1) = "Сорт бумаги"
Sheets("Result").Cells(2, 2) = "Стоимость"
Sheets("Result").Cells(2, 3) = "Поставки"
Sheets("Result").Cells(3, 3) = "1-й день
Sheets("Result").Cells(3, 4) = "2-й день"
Sheets("Result").Cells(3, 5) = "3-й день"
Sheets("Result").Cells(3, 6) = "Всегоl"
Sheets("Result").Cells(4, 1) = "Сорт бумаги 1"
Sheets("Result").Cells(5, 1) = "Сорт бумаги 2"
Sheets("Result").Cells(6, 1) = "Сорт бумаги 3"
Sheets("Result").Cells(7, 1) = "Сорт бумаги 4"
Sheets("Result").Cells(8, 1) = "Сорт бумаги 5"
'Поставки первые 3 дня
For i = 1 To 5
Sheets("Result").Cells(3 + i, 2) = price(i)
For j = 1 To 3
Sheets("Result").Cells(3 + i, 2 + j) =koll (i, j)
total_koll_3den(i) = total_koll_3den(i) + koll(i, j)
Next j
Sheets("Result").Cells(3 + i, 6) = total_koll_3den(i)
Next i
'Всего поставок по дням
Sheets("Result").Select
Sheets("Result").Cells(10, 1) = "Всего поставок"
Sheets("Result").Cells(11, 3) = " 1-й день"
Sheets("Result").Cells(11, 4) = "2-й день"
Sheets("Result").Cells(11, 5) = "3-й день"
Sheets("Result").Cells(11, 6) = "4-й день"
Sheets("Result").Cells(11, 7) = "5-й день"
Sheets("Result").Cells(11, 8) = "6-й день"
For i = 1 To 6
For j = 1 To 5
total_koll_6den(i) = total_koll_6den(i) + koll(j, i)
total_price = total_price + price(j) * koll(j, i)
Next j
Sheets("Result").Cells(12, i + 2) = total_koll_6den(i)
Next i
'Общая стоимость поставляемой бумаги
Sheets("Result").Cells(14, 1) = "Общая стоимость"
Sheets("Result").Cells(14, 5) = total_price
'Сорт бумаги, которого
было отгружено наименьшее
less_del = koll(1, 4)
For j = 1 To 5
If koll(j, 4) < less_del Then
less_del = koll(j, 4)
less_del_type = j
End If
Next
Sheets("Result").Cells(16, 1) = "В
4-й день меньше всего
Sheets("Result").Cells(16, 5) = type_name(less_del_type)
End Sub
6. Описание входных данных и результат вычислений
Проверка программы на всех единицах:
Проверка на всех нулях:
Проверка на произвольных данных:
Исходные данные для задания № 9 представлены на Рис.№1., решение – на Рис.2..