Блок-схемы
Курсовая работа, 11 Июня 2013, автор: пользователь скрыл имя
Описание работы
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:
• исходные данные в виде таблицы, где перечислены потребители, количество товара (в тоннах), взятого ими с каждого склада, и расстояние от каждого склада до каждого потребителя (в км);
• объём перевозок в тонно-километрах, выполненных каждым складом;
• объём перевозок в тонно-километрах для каждого потребителя;
• общий объём перевозок для всех складов;
• склад с наименьшим значением объёма перевозок.
Содержание работы
1. Задание на курсовую работу 3
2. Описание переменных 4
3. Блок схема 7
4. Описание алгоритма 10
5. Листинг программы 11
6. Описание входных данных и результат вычислений 15
7. Список использованной литературы 16
Файлы: 1 файл
Informatika-roslyakova-kr1.doc
— 2.66 Мб (Скачать файл)
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ИДО ГОУ МГИУ
Курсовая работа
По дисциплине «Информатика»
Задание:№ 26
Группа: № Сх10Ф22п
Студент: Рослякова Е.А.
Руководитель: Дедехина О.В.
Москва 2011
Содержание
1. Задание на курсовую работу
Имеется 5 складов. В течение недели с каждого склада 7-и потребителям доставили груз (тонны). Известно расстояние от каждого склада до каждого потребителя.
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:
• исходные данные в виде таблицы, где перечислены потребители, количество товара (в тоннах), взятого ими с каждого склада, и расстояние от каждого склада до каждого потребителя (в км);
• объём перевозок в тонно-километрах, выполненных каждым складом;
• объём перевозок в тонно-километрах для каждого потребителя;
• общий объём перевозок для всех складов;
• склад с наименьшим значением объёма перевозок.
2. Описание переменных
Исходные данные находятся на листе «Нач_д» (рис. 1) и содержат следующую информацию:
- Количество товара (в тоннах), взятого ими с каждого склада.
- Расстояние от каждого склада до каждого потребителя (в км).
Результаты работы программы оформляются на листе «Результат» (рис. 2).
Рис.1. Лист с начальными данными
Рис.2. Полученные результаты
В программе переменные описаны следующим образом:
1) cena(7) — стоимость изготовления
одной единицы каждого изделия
представляет массив дробных чисел
Dim cena(7) As Double
2) koll(7,5) — количество деталей каждого
вида, изготовленных в каж
дый из рабочих дней, представляет двумерный
массив целых чисел
Dim koll(7,5) As Integer
3) zar(6) — заработок за каждый
день (от 1 до 5) и общий заработок за
весь период представляет массив дробных
чисел
Dim zar(6) As Double
4) koll_n(7) — количество деталей каджого
вида за истекший период
представляет массив целых чисел
Dim kol_n(7) As Integer
5) den — порядковый номер дня с
наибольшим заработком представляет
целое число
Dim den As Integer
6) zarpl — сумма наибольшего заработка
за период представляет дроб
ное число
Dim zarpl As Double
В программе также были использованы вспомогательные переменные, счетчики циклов, i и j, являющиеся целыми числами.
Dim i As Integer, j As Integer
Переменные cena(7), zar(6), zarpl могут быть и не целыми числами, поэтому они объявлены как действительные. Переменные koll(7,5) koll_n(7), den — целые числа, так как мы считаем, что смена рабочего составляет полный день, и он не может изготовить за смену половину детали.
3. Блок схема
Рис.3. Блок-схема (продолжение)
Рис.3. Блок-схема (окончание)
4. Описание алгоритма
Начало программы.
Ввод начальных (нулевых) значений для расчетных величин (количество изготовленных деталей за неделю, зарплата по дням и общая, день с наибольшим заработком и величина максимальной зарплаты).
Открытие листа с начальными данными («Нач_д») и получение этих данных в рабочие переменные (массивы сеnа(7) и kоll(7, 5)).
Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (по каждой детали и дню). Во внутреннем цикле (по дням, расчет по одному изделию) суммируется количество изготовленных деталей, после выхода из внутреннего цикла выводится результат по детали.
Расчет сумм заработков по изделиям за каждый день, количество изготовленных деталей и вывод результатов. Организуется два вложенных цикла: внешний по изделиям, внутренний по дням. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вычисление суммы заработка по i-му изделию в j-й день с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) — вывод стоимости одной детали и по всем деталям. Расчет заработной платы за каждый день организован в этом же внутреннем цикле.
Определение дня с максимальной заработной платой. Используется алгоритм сравнения, при равенстве двух и более дневных сумм результативной считается первая сумма.
5. Листинг программы
Sub Function()
'Сначала объявляем переменные, используемые в программе.
'стоимость детали
Dim cena(7) Аs Double
'количество (по дням)
Dim koll(7,5) As Integer
'зарплата в день
Dim zar(6) As Double
'количество деталей за неделю
Dim koll_n(7) As Integer
'день с наибольшей з/пл.
Dim den As Integer
'сумма наибольшей з/пл.
Dim zarpl As Double
'счетчики циклов
Dim i As Integer, j As Integer
‘Далее всем переменным присваивается нулевое значение.
For i = 1 То 7
kol_n(i) = 0
Next
For j=1 То 6 zar(j) = 0
Nехt
zarpl = 0 den = 0
'В
этом фрагменте кода
Sheets(''Нач_д " ).Select
For i = 1 То 7
сеnа(i) = Cells(3 + i, 2)
Next
For i = 1 Тo 7
For j = 1 Тo 5
koll(i, j) = Cells(3 + i, 2 + j)
Next j
Next i
'Далее
на листе «Результат» в ячейку
с определенным номером
Sheets(«Результат»).Select
Sheets("Результат").Cells(1, 1) = "Количество изготовленных деталей"
Sheets("Результат").Cells(2, 1) = "Наименование изделия"
Sheets("Результат").Cells(2, 2) = "Стоимость 1 шт."
Sheets("Результат").Cells(2, 3) = "Изготовлено"
Sheets("Результат").Cells(3, 3) = "1-й день"
Sheets("Результат").Cells(3, 4) = "2-й день"
Sheets("Результат").Cells(3, 5) = "3-й день"
Sheets("Результат").Cells(3, 6) = "4-й день"
Sheets("Результат").Cells(3, 7) = "5-й день"
Sheets("Результат").Cells(3, 8) = "Всего"
Sheets("Результат").Cells(4, 1) = "болт"
Sheets("Результат").Cells(5, 1) = "винт"
Sheets("Результат").Cells(6, 1) = "гайка"
Sheets("Результат").Cells(7, 1) = "шайба"
Sheets("Результат").Cells(8, 1) = "шуруп"
Sheets("Результат").Cells(9, 1) = "гвоздь"
Sheets("Результат").Cells(10, 1) = "скрепка"
'В
этом фрагменте происходит
For i = 1 То 7
Sheets("Результат").Сеlls(3 + i, 2) = cena(i)
For j = 1 То 5
Sheets("Результат").Сеlls(3 + i, 2 + j) = koll(i, j)
koll_n (i) = koll_n (i) + koll(i, j)
Next j
Sheets("Результат").Сеlls(3 + i, 8) = koll_n(i)
Next i
'Ниже
происходит ввод названий
Sheets("Результат").Сеlls(12,
Sheets("Результат").Сеlls(13,
Sheets("Результат").Сеlls(13,
Sheets("Результат").Сеlls(13,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(14,
Sheets("Результат").Сеlls(15,
Sheets("Результат").Сеlls(16,
Sheets("Результат").Сеlls(17,
Sheets("Результат").Сеlls(18,
Sheets("Результат").Сеlls(19,
Sheets("Результат").Сеlls(20,
Sheets("Результат").Сеlls(21,
Sheets("Результат").Сеlls(22,
'Во
внутреннем цикле происходит
вычисление суммы заработка по
For i = 1 То 7 For j = 1 То 5
Sheets("Результат").Сеlls(14 + i, 2 + j) = koll(i, j) * сеna(i)
zar(j) = zar(j) + koll(i, j) * сеna(i)
zar(6) = zar(6) + koll(i, j) * сеnа(i)
Next j
Sheets("Результат").Сеlls(14 + i, 2) = сеnа(i)
Sheets("Результат").Сеlls(14 + i, 8) = сеnа(i) * koll_n (i)
Next i
'Здесь описан
алгоритм сравнения некоторой
заработной платы с заработной
платой, полученной в один из
пяти рабочих дней. Если рассматриваемая
больше другой, то сумме наибольшего
заработка присваивается текуще
For j = 1 То 5
Sheets("Результат").Сеlls(22, 2 + j) = zar(j)
If zar(j) > zarpl Then
zarpl = zar(j)
den = j
End If
Next
'Ниже выводится на лист с результатом работы программы заработок рабочего за неделю, день максимального заработка и сколько он заработал в этот день.
Sheets("Результат").Сеlls(22,
Sheets("Результат").Сеlls(23,
Sheets("Результат").Сеlls(23,
Sheets("Результат").Сеlls(24,
Sheets("Результат").Сеlls(24,
Sheets("Результат").Сеlls(24,
Sheets("Результат").Сеlls(24,
End Sub
6. Описание входных данных и результат вычислений
Проверка программы на всех единицах:
Проверка на всех нулях:
Проверка на произвольных данных:
Исходные данные для задания № представлены на Рис.№1., решение – на Рис.2..
7. Список использованной литературы
- MS Office XP, 2003 Word, Excel, Access, Outlook, PowerPoint, FrontPage, MS Project/ А. К. Гультяев: Корона-Век, 2006
- VBA. Практическое программирование/ Туркин Олег: Солон-пресс,2007
- VBA/ Кузьменко В.Г.: Бином,2008.
- Измерение, управление и регулирование с помощью макросов VBA в Word и Excel/ Берндт Г.-Й.: КОРОНА-Век, 2008
- Информатика. Методические указания по выполнению практических работ в компьютерном классе (Access, Internet) / Гришин М.П., Юрасов А.Б. М.: МГИУ, 2003.
- Информатика. Методическое пособие по выполнению практических работ в компьютерном классе (Word, Excel) / Гришин М.П. М.: МГИУ, 2005.
- Информатика. Часть 1. Введение в информатику: учебное пособие / Гришин М.П., Иванов М.Н., Носова Т.К., Суворов С.В. М.: МГИУ, 2008.
- Информатика. Часть 2. Программирование: Учебно-методическое пособие / Иванов М.Н., Суворов С.В. М.: МГИУ. 2006.
- Моделирование с помощью Microsoft Excel и VBA. Разработка систем поддержки принятия решений/ Кристиан Олбрайт: Вильямс, 2005
- Профессиональная разработка приложений Excel/ Стивен Буллен, Роб Боуви, Джон Грин: Вильямс, 2005
- Самоучитель VBA/ Андрей Гарнаев: БХВ-Петербург,2004
- Самоучитель программирования на VBA в Microsoft Office/В. Д. Хореев: Юниор, 2001
- Электронные таблицы Microsoft Excel. Проблемы и решения/ Лори Анн Ульрих: Эком, 2002