Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и вывод

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

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

ИДО ГОУ МГИУ











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

По дисциплине «Информатика»







                        Задание:№  38

                  		      Группа: № П09Б22п

     Студент: Булдыгина Н.В.

                		                   Руководитель: Иванов М.Н.









Москва 2010


Содержание

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

	2. Описание переменных	4

	3. Блок схема	6

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

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

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

	7. Список использованной литературы	19

 




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



	Магазин велосипедов продал за год разное количество велосипедов (10 наименований) по цене, устанавливаемой в начале каждого месяца.

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

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

	доход от каждого вида велосипеда за год;

	доход от всех велосипедов за каждый месяц;

общий доход от всех велосипедов за год; 

наименование велосипеда, принесшего наибольший доход за год.


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

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

	Количество велосипедов каждого из 10 типов, изготовленных за год (12 месяцев).

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

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





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



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

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

	1)	cena(10) — деньги, вырученные от продажи одного велосипеда,
представляет массив дробных чисел

Dim cena(10) As Double

	2)	koll(10,12) — количество велосипедов каждого вида, проданных за каждый месяц, представляет двумерный массив целых чисел

Dim koll(10,12) As Integer

	3)	zar(13) — заработок за каждый месяц (от января до декабря) и общий заработок за год представляет массив дробных чисел

Dim zar(13) As Double

	4)	koll_n(12) — количество проданных велосипедов каждой модели за год представляет массив целых чисел

Dim kol_n(12) As Integer

	5)	num— порядковый номер модели велосипеда, принесшей наибольший доход, представляет целое число

Dim den As Integer

В программе также были использованы вспомогательные переменные, счетчики циклов, i и j, являющиеся целыми числами.

Dim i As Integer, j As Integer

Переменные cena(10), zar(13), могут быть и не целыми числами, поэтому они объявлены как действительные. Переменные koll(10,12) koll_n(12), den — целые числа, так как мы считаем, что расчетный период составляет полный месяц, и производители могут продать только полностью собранный велосипед.

	

3. Блок схема



Рис.3. Блок-схема




Рис.3. Блок-схема (продолжение)













Рис.3. Блок-схема (продолжение)





Рис.3. Блок-схемаРис.3. Блок-схема (окончание)



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



          Начало программы.

           Ввод начальных (нулевых) значений для расчетных величин (количество проданных велосипедов за месяц, выручка по месяцам и за год, день с наибольшим заработком и величина максимальной выручки).

Открытие листа с начальными данными («Лист1») и получение этих данных в рабочие переменные (массивы сеnа(10) и kоll(12, 10)).

Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (по каждой модели велосипеда и месяцу). Во внутреннем цикле (по месяцам, расчет по одной модели) суммируется количество проданных велосипедов, после выхода из внутреннего цикла выводится результат по модели.

Расчет величины выручки от продажи велосипедов за каждый месяц, количество проданных велосипедов и вывод результатов. Организуется два вложенных цикла: внешний по моделям, внутренний по месяцам. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вычисление выручки от продажи  i-ого велосипеда в j-й месяц с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) — вывод стоимости одного велосипеда и по всем велосипедам. Расчет выручки за каждый месяц организован в этом же внутреннем цикле.

Определение наименования велосипеда, принесшего наибольший доход за год. Используется алгоритм сравнения, при равенстве двух и более годовых доходов результативным считается последний доход.


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

Private Sub CommandButton1_Click()

'Сначала объявляем переменные, используемые в программе.

'счетчики циклов

Dim i, j As Integer

'количество проданных велосипедов (по месяцам)

Dim koll(10, 12) As Integer

'выручка за месяц

Dim zar(13) As Double

'количество проданных велосипедов (за год)

Dim koll_n(12) As Integer

'велосипед, принесший наибольший доход за год

Dim num As Integer

'стоимость велосипеда

Dim cena(10) As Double

'переменные, нужные для предварительных расчетов

Dim zarpl As Double

Dim pic As Double

Dim comb(10) As Double

‘Далее всем переменным присваивается нулевое значение.

For i = 1 To 10

koll_n(i) = 0

comb(i) = 0

Next



For j = 1 To 13

zar(j) = 0

Next



pic = 0

zarpl = 0

num = 0



'В этом фрагменте кода происходит считывание начальных данных с листа «Лист1», и в каждую ячейку массива cena(10) записывается стоимость каждой марки велосипеда, а в ячейках двумерного массива koll(10,12) теперь находится количество велосипедов  каждого вида, проданных в каждый месяц.

Sheets("Лист1").Select



For i = 1 To 10

cena(i) = Cells(3 + i, 2)

Next



For i = 1 To 10

For j = 1 To 12

koll(i, j) = Cells(3 + i, 2 + j)

         Next j

Next i



'Далее на листе «Лист2» в ячейку с определенным номером вводится ее название.

Sheets("Лист2").Cells(2, 1) = "Модель"

Sheets("Лист2").Cells(2, 2) = "Стоимость 1 шт."

Sheets("Лист2").Cells(2, 3) = "Продано"

Sheets("Лист2").Cells(3, 3) = "Январь"

Sheets("Лист2").Cells(3, 4) = "Февраль"

Sheets("Лист2").Cells(3, 5) = "Март"

Sheets("Лист2").Cells(3, 6) = "Апрель"

Sheets("Лист2").Cells(3, 7) = "Май"

Sheets("Лист2").Cells(3, 8) = "Июнь"

Sheets("Лист2").Cells(3, 9) = "Июль"

Sheets("Лист2").Cells(3, 10) = "Август"

Sheets("Лист2").Cells(3, 11) = "Сентябрь"

Sheets("Лист2").Cells(3, 12) = "Октябрь"

Sheets("Лист2").Cells(3, 13) = "Ноябрь"

Sheets("Лист2").Cells(3, 14) = "Декабрь"

Sheets("Лист2").Cells(3, 15) = "Всего"

Sheets("Лист2").Cells(4, 1) = "Школьник"

Sheets("Лист2").Cells(5, 1) = "Дружба"

Sheets("Лист2").Cells(6, 1) = "Аист"

Sheets("Лист2").Cells(7, 1) = "Самара"

Sheets("Лист2").Cells(8, 1) = "Next"

Sheets("Лист2").Cells(9, 1) = "Honda"

Sheets("Лист2").Cells(10, 1) = "Урал"

Sheets("Лист2").Cells(11, 1) = "Салют"

Sheets("Лист2").Cells(12, 1) = "Орленок"

Sheets("Лист2").Cells(13, 1) = "Forward"



'В этом фрагменте происходит вывод на рабочий лист выручку по моделям за месяц и количество проданных велосипедов за год.



For i = 1 To 10

Sheets("Лист2").Cells(3 + i, 2) = cena(i)



For j = 1 To 12

Sheets("Лист2").Cells(3 + i, 2 + j) = koll(i, j)

koll_n(i) = koll_n(i) + koll(i, j)

Next j

 Sheets("Лист2").Cells(3 + i, 15) = koll_n(i)

Next i





'Ниже происходит ввод названий соответствующих столбцов и строк.

Sheets("Лист2").Select

Sheets("Лист2").Cells(17, 1) = "Модель"

Sheets("Лист2").Cells(17, 2) = "Стоимость 1 шт."

Sheets("Лист2").Cells(17, 3) = "Заработано"

Sheets("Лист2").Cells(18, 3) = "Январь"

Sheets("Лист2").Cells(18, 4) = "Февраль"

Sheets("Лист2").Cells(18, 5) = "Март"

Sheets("Лист2").Cells(18, 6) = "Апрель"

Sheets("Лист2").Cells(18, 7) = "Май"

Sheets("Лист2").Cells(18, 8) = "Июнь"

Sheets("Лист2").Cells(18, 9) = "Июль"

Sheets("Лист2").Cells(18, 10) = "Август"

Sheets("Лист2").Cells(18, 11) = "Сентябрь"

Sheets("Лист2").Cells(18, 12) = "Октябрь"

Sheets("Лист2").Cells(18, 13) = "Ноябрь"

Sheets("Лист2").Cells(18, 14) = "Декабрь"

Sheets("Лист2").Cells(18, 15) = "Всего"

Sheets("Лист2").Cells(19, 1) = "Школьник"

Sheets("Лист2").Cells(20, 1) = "Дружба"

Sheets("Лист2").Cells(21, 1) = "Аист"

Sheets("Лист2").Cells(22, 1) = "Самара"

Sheets("Лист2").Cells(23, 1) = "Next"

Sheets("Лист2").Cells(24, 1) = "Honda"

Sheets("Лист2").Cells(25, 1) = "Урал"

Sheets("Лист2").Cells(26, 1) = "Салют"

Sheets("Лист2").Cells(27, 1) = "Орленок"

Sheets("Лист2").Cells(28, 1) = "Forward"

Sheets("Лист2").Cells(29, 1) = "ИТОГО"



'Во внутреннем цикле происходит вычисление выручки по i-му велосипеду в j-й месяц с выводом результата, а во внешнем цикле (после получения результатов внутреннего цикла) происходит вывод стоимости одного велосипеда и по всем велосипедам. Расчет выручки за каждый месяц организован в этом же внутреннем цикле.

For i = 1 To 10

For j = 1 To 12

Sheets("Лист2").Cells(18 + i, 2 + j) = koll(i, j) * cena(i)

zar(j) = zar(j) + koll(i, j) * cena(i)



zar(13) = zar(13) + koll(i, j) * cena(i)

 Next j

Sheets("Лист2").Cells(18 + i, 2) = cena(i)

Sheets("Лист2").Cells(18 + i, 15) = cena(i) * koll_n(i)

Next i



'Здесь описан алгоритм сравнения выручки и выявления наиболее выгодной для продажи модели.

For j = 1 To 12

Sheets("Лист2").Cells(29, 2 + j) = zar(j)

If zar(j) > zarpl Then zarpl = zar(j)

Next

‘ выявление максимальной выручки за год одной мдели

For i = 1 To 10

comb(i) = Sheets("Лист2").Cells(18 + i, 15)

If pic < comb(i) Then pic = comb(i) Else pic = pic

Next

‘выявление этой модели

For i = 1 To 10

If Sheets("Лист2").Cells(18 + i, 15) = pic Then num = i

Next



'Ниже выводится на лист с результатом работы программы наименование наиболее выгодной модели велосипеда и годовой доход.

Sheets("Лист2").Select

Sheets("Лист2").Cells(29, 15) = zar(13)

Sheets("Лист2").Cells(31, 1) = "Годовой доход:"

Sheets("Лист2").Cells(31, 2) = zar(13)

Sheets("Лист2").Cells(32, 1) = "Прибыльная модель:"

Sheets("Лист2").Cells(32, 2) = Sheets("Лист2").Cells(18 + num, 1)



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