504

Разработка приложений в среде VBA IDE

Отчет о прохождении практики

Информатика, кибернетика и программирование

Составление программы обработки табличных данных. Программа может работать по принципу меню. Меню может содержать следующие пункты: ввод данных, корректировка данных, расчет таблицы, запись данных на магнитный диск, чтение данных с магнитного диска, построение диаграммы, выход.

Русский

2013-01-06

155.5 KB

17 чел.

Федеральное государственное образовательное учреждение высшего профессионального образования

Московская сельскохозяйственная академия имени К.А. Тимирязева
(ФГОУ ВПО МСХА им. К.А. Тимирязева)

Экономический факультет

Кафедра прикладной информатики

ОТЧЕТ О ВЫПОЛНЕННОЙ РАБОТЕ

по учебной практике для студентов 1 курса
специальности 351400 «Прикладная информатика в экономике АПК»

«Разработка приложений в среде VBA IDE»

Выполнил:       Макаров Н.С.

        группа ПИ-110

Руководитель: преп. Барамидзе Н.Н.

Отметка о защите:________________

Москва, 2005


Задание
2

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

Текст программы. 4

Процедура расчета 4

Процедура ввода данных 6

Процедура корректировки 9

Процедура корректировки текста 9

Процедура корректировки чисел 9

Процедура построения диаграммы 10

Процедура ввода данных из файла 11

Процедура сохранения в файл 14

Процедура выхода из приложения 14

Инструкция по использованию программного продукта 15

Достоинства и недостатки программы 17

Список используемой  литературы 18


Задание 

Вариант Т-19

Составить программу обработки табличных данных. Программа должна работать по принципу меню. Меню должно содержать следующие пункты: ввод данных, корректировка данных, расчет таблицы, запись данных на магнитный диск, чтение данных с магнитного диска, построение диаграммы, выход. Форма таблицы (число строк до 10):

№ п/п

Фамилия

шофера

Расход горючего -всего, кг

Пробег, км

Расход горючего на 1 км, кг

Итого

Наименьший расход горючего ____ кг/км ________ у шофера ___________

Разработка алгоритма.

В основе программы лежит метод получения данных от объекта Microsoft Office (в данном случае листа), в среду VBA IDE. После того как программа получит исходные данные она может осуществлять такие операции как коректирвка, сохранение, расчет, построение диаграммы. Также программа может данные с внешнего носителя.

Описание программного продукта.

Назначение:автоматизация расчетов.

Блок ввода данных предназначен для ввода исходных данных для обработки. Ввод данных может быть как ручным – пользователь сам  вводит данные для обработки с клавиатуры , либо пользователь может ввести данные с помощью кнопки «Чтение из файла» вписав в окно диалога путь к указанному файлу. При ручном вводе данных пользователь предварительно вводит число строк.  

Корректировка исходной информации может быть осуществлена только в диапазоне ячеек содержащем данные введенные пользователем. Диапазоны ячеек, содержащие заголовки полей, расчетные данные, итоговую строку  пользователь не может. Для корректировки ячейки содержащей данные пользователь должен выделить ячейку с данными, которые требуется изменить. При нажатии кнопки «Корректировка» появляется форма для ввода нового значения.   

Процедура расчета производиться по нажатию кнопки «Расчет». Производиться расчет относительного показателя (расхода топлива, кг/км), суммирование итогов и выбор записи с наименьшим расходом топлива на пробег и ее вывод на лист.

Далее пользователь может сохранить данные или построить диаграмму. Порядок выполнения действий неважен. Сохранение данных происходит в текстовый файл(filename.txt), по указанному пользователем пути. Чтение из файла можно произвести с помощью кнопки «Чтение из файла».

Построение диаграммы происходит по нажатию кнопки «Построение диаграмм». Диаграмма, типа гистограмма, строиться по столбцу «Расход топлива 1кг, км».   

Структура базы данных представляет собой таблицу из 3 столбцов и n строк (количество строк определяется пользователем). Общая (принципиальная) блок-схема программы представлена на рис.1  

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

Dim driver() As String – массив тектсовых данных, типа String , хранит поле «фамилия шофера»  

Dim fuel() As Single  - числовой массив, типа Single, предназначен для хранения данных о расходе топлива  

Dim way() As Single – числовой массив, типа Single, предназначен для хранения данных о пробеге

Dim fuelway() As Single – числовой массив, типа Single, предназанчен для хранения расчетных данных

Dim xxx As Integer  - целочисленная переменная, типа Integer, предназначена для хранения числа строк матрицы исходных данных.

Входная информация представляет собой записи базы данных содержащие три поля: фамилия шофера, пробег, расход топлива.

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


Текст программы. 

Процедура расчета

Sub calculating() – процедура расчета

Application.Caption = "MINOS SUMMER IT PRACTICE"

ActiveSheet.Unprotect

' снимаем защиту с листа

xxx = Sheets("a").Range("s23")

Dim driver() As String

Dim fuel() As Single

Dim way() As Single

Dim fuelway() As Single

'объявляем массивы данных для обсчета

ReDim driver(xxx)

ReDim fuel(xxx)

ReDim way(xxx)

ReDim fuelway(xxx)

' присваиваем массивам данных другую размерность

For i = 1 To xxx

fuel(i) = Sheets("a").Cells(2 + i, 3)

' считываем элемент массива из ячейки

x = x + fuel(i)

' суммируем расход топлива

way(i) = Sheets("a").Cells(2 + i, 4)

' считываем элемент массива из ячейки

y = y + way(i)

' суммируем пробег

fuelway(i) = fuel(i) / way(i)

'рассчитываем относительный показатель

z = z + fuelway(i)

' суммируем относительный показатель

Sheets("a").Cells(2 + i, 5) = fuelway(i)

' выводим значения относительного показвателя на лист

driver(i) = Sheets("a").Cells(2 + i, 2)

' считываем фамилии шоферов

Next i

' выводим итоги

Sheets("a").Cells(3 + xxx, 3) = x

Sheets("a").Cells(3 + xxx, 4) = y

Sheets("a").Cells(3 + xxx, 5) = z

' поиск минимума

k = fuelway(1)

ck = 1

For i = 1 To xxx

If k > fuelway(i) Then

k = fuelway(i)

ck = i

End If

Next i

' объединяем ячейки под таблицей и пишем се, что надо

Sheets("a").Range(Cells(5 + xxx, 1), Cells(5 + xxx, 2)).Select

With Selection

       .HorizontalAlignment = xlCenter

       .VerticalAlignment = xlBottom

       .WrapText = False

       .Orientation = 0

       .AddIndent = False

       .ShrinkToFit = False

       .MergeCells = False

   End With

   Selection.Merge

   Selection.Value = "Наименьший расход топлива"

   Sheets("a").Cells(5 + xxx, 3) = fuel(ck)

Sheets("a").Cells(5 + xxx, 3).Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   Selection.Borders(xlEdgeLeft).LineStyle = xlNone

   Selection.Borders(xlEdgeTop).LineStyle = xlNone

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Selection.Borders(xlEdgeRight).LineStyle = xlNone

Sheets("a").Cells(5 + xxx, 4) = " кг/км "

Sheets("a").Cells(5 + xxx, 5) = way(ck)

Sheets("a").Cells(5 + xxx, 5).Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   Selection.Borders(xlEdgeLeft).LineStyle = xlNone

   Selection.Borders(xlEdgeTop).LineStyle = xlNone

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Selection.Borders(xlEdgeRight).LineStyle = xlNone

Sheets("a").Cells(5 + xxx, 6) = "у шофера"

Sheets("a").Cells(5 + xxx, 7) = driver(ck)

Sheets("a").Cells(5 + xxx, 7).Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   Selection.Borders(xlEdgeLeft).LineStyle = xlNone

   Selection.Borders(xlEdgeTop).LineStyle = xlNone

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Selection.Borders(xlEdgeRight).LineStyle = xlNone

ActiveSheet.Protect

End Sub

Процедура ввода данных

Sub zaboi()

Application.Caption = "MINOS SUMMER IT PRACTICE"

' объявляем массивы данных

Dim driver() As String

Dim fuel() As Single

Dim way() As Single

Dim fuelway() As Single

Dim xxx As Integer

ActiveSheet.Unprotect

' снимаем защиту с листа

xxx = InputBox(" введите количество строк")

xx1 = Sheets("a").Range("s23")

If IsEmpty(xx1) Then xx1 = 20

Sheets("a").Range("s23") = xxx

For i = 1 To xx1 + 5

For j = 1 To 7

Sheets("a").Cells(2 + i, j).Select

   Selection.ClearContents

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   Selection.Borders(xlEdgeLeft).LineStyle = xlNone

   Selection.Borders(xlEdgeTop).LineStyle = xlNone

   Selection.Borders(xlEdgeBottom).LineStyle = xlNone

   Selection.Borders(xlEdgeRight).LineStyle = xlNone

   Selection.Borders(xlInsideVertical).LineStyle = xlNone

   Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

   If Selection.MergeCells = True Then

   With Selection

       .HorizontalAlignment = xlLeft

       .VerticalAlignment = xlBottom

       .WrapText = False

       .Orientation = 0

       .AddIndent = False

       .IndentLevel = 0

       .ShrinkToFit = False

       .MergeCells = False

   End With

   End If

   Next j

   Next i

' начинаем рисовать клетки

For i = 1 To xxx

For j = 1 To 5

Sheets("a").Cells(2 + i, j).Select

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Sheets("a").Cells(2 + i, 1) = i

   Next j

   Next i

   k = i + 2

   ' объединяем ячейки и пишем надпись Итого

   Sheets("a").Range(Cells(k, 1), Cells(k, 2)).Select

   With Selection

       .HorizontalAlignment = xlCenter

       .VerticalAlignment = xlBottom

       .WrapText = False

       .Orientation = 0

       .AddIndent = False

       .ShrinkToFit = False

       .MergeCells = False

   End With

   Selection.Merge

   

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Sheets("a").Cells(k, 1) = " ИТОГО "

   ' дорисовываем оставшиеся ячейки в строке итого

   For j = 3 To 5

   Sheets("a").Cells(k, j).Select

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Next j

   

   

' рисование закончено, далее идет собственно забой

ReDim driver(xxx)

ReDim fuel(xxx)

ReDim way(xxx)

ReDim fuelway(xxx)

For i = 1 To xxx

driver(i) = InputBox("Введите фамилию" & " " & CStr(i) & "-го шофера")

Sheets("a").Cells(2 + i, 2) = driver(i)

Next i

'ввод расхода топлива

For i = 1 To xxx

fuel(i) = InputBox("Введите расход топлива" & " " & CStr(i) & "-го шофера")

Sheets("a").Cells(2 + i, 3) = fuel(i)

Next i

'ввод пробега

For i = 1 To xxx

way(i) = InputBox("Введите пробег" & " " & CStr(i) & "-го шофера")

Sheets("a").Cells(2 + i, 4) = way(i)

Next i

ActiveSheet.Protect

End Sub

Процедура корректировки 

Sub corraq()

Dim o As Range

' объявляем объект типа ячейка

Application.Caption = "MINOS SUMMER IT PRACTICE"

ActiveCell.Select

xxx = Sheets("a").Range("s23")

Set userdata = Sheets("a").Range(Cells(3, 2), Cells(2 + xxx, 4)) ' устанавливаем разрешенный диапазон изменяемых ячеек

For Each o In userdata

If ActiveCell.Address(rowabsolute:=False, columnabsolute:=False) = o.Address(rowabsolute:=False, columnabsolute:=False) Then k = k + 1 ' и если активная ячейка в диапазоне то мы ее изменяем

Next

If k <> 1 Then

' а если наша ячейка не в диапазоне то выводим сообщеие пользоваелю и прекращаем выпонение процедуры

MsgBox "нельзя корректировать эту ячейку!!!"

Range("b3").Select

Exit Sub

End If

a = Selection.Value

If IsNumeric(a) = False Then textcorr ' в зависимости от типа изменяемых данных вызываем ту или иную процедуру корректирвки

If IsNumeric(a) = True Then numericcorr

If IsEmpty(a) = True Then '  а если ячейка пуста, то заставляем пользоваетля ввести в нее что-нибудь

While IsEmpty(m) = True

m = InputBox("Внимание!Ячейка пуста, пожалуйста введите значение в ячейку", "Внимание пустая ячейка")

Wend

ActiveCell.Value = m

End If

End Sub

Процедура корректировки текста  

Sub textcorr()

UserForm2.Show

End Sub

Процедура корректировки чисел

Sub numericcorr()  - процедура корректировки чисел

UserForm3.Show

End Sub

   .

Рис.2 Экранные формы корректировки чисел и текста.

Процедура построения диаграммы

Sub graph()Application.Caption = "MINOS SUMMER IT PRACTICE"

xxx = Sheets("a").Range("s23")

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

For i = 1 To xxx

If IsEmpty(Sheets("a").Cells(2 + i, 2)) = True Or IsEmpty(Sheets("a").Cells(2 + i, 5)) = True Then k = k + 1

Next i

If k > (xxx / 2) Then

MsgBox ("ячейки с данными пусты пусты. пожалуйста введите данные заново и нажмите кнопку расчет")

Exit Sub

End If

' и если оно удовлетворяет нашим потребностям то мы начинаем строить график

xxx = Sheets("a").Range("s23")

  Sheets("a").Range("e3", Cells(2 + xxx, 5)).Select

  With Selection

   Charts.Add

   ActiveChart.ChartType = xlColumnClustered

   r1 = Sheets("a").Cells(3, 2).Address(rowabsolute:=False, columnabsolute:=False)

   c1 = Sheets("a").Cells(2 + xxx, 2).Address(rowabsolute:=False, columnabsolute:=False)

   ActiveChart.SeriesCollection(1).XValues = Sheets("a").Range(r1, c1)

   ActiveChart.Location Where:=xlLocationAsNewSheet

   End With

   With ActiveChart

   .HasLegend = False

       .HasTitle = True

       .ChartTitle.Characters.Text = "расход горючего кг/км"

       .Axes(xlCategory, xlPrimary).HasTitle = True

       .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "фамлия шофера"

       .Axes(xlValue, xlPrimary).HasTitle = True

       .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "расход"

   End With

End Sub


Процедура ввода данных из файла 

Sub vvod()

Application.Caption = "MINOS SUMMER IT PRACTICE"

'вводим путь к файлу

Path = InputBox("введите путь к файлу", "чтение из файла")

ActiveSheet.Unprotect

'снимаем защиту с листа

Dim TextLine As String

'объявляем тектовую переменную

Open CStr(Path) For Input As #1 ' Открывает файл.

Do While Not EOF(1)

'  и пока не кончиться файл

Line Input #1, TextLine

l = l + 1

' считаем строки в файле

Loop

Close #1

xxx = l / 3

xx1 = Sheets("a").Range("s23")

If xx1 >= xxx Then

a = xx1

Else

a = xxx

End If

' устраиваем зачистку содержимого и границ

For i = 1 To a + 5

For j = 1 To 7

Sheets("a").Cells(2 + i, j).Select

   Selection.ClearContents

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   Selection.Borders(xlEdgeLeft).LineStyle = xlNone

   Selection.Borders(xlEdgeTop).LineStyle = xlNone

   Selection.Borders(xlEdgeBottom).LineStyle = xlNone

   Selection.Borders(xlEdgeRight).LineStyle = xlNone

   Selection.Borders(xlInsideVertical).LineStyle = xlNone

   Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

   If Selection.MergeCells = True Then

   With Selection

       .HorizontalAlignment = xlLeft

       .VerticalAlignment = xlBottom

       .WrapText = False

       .Orientation = 0

       .AddIndent = False

       .IndentLevel = 0

       .ShrinkToFit = False

       .MergeCells = False

   End With

   End If

   Next j

   Next i

   

   ' ввод значений из файла

Open CStr(Path) For Input As #1

Do While Not EOF(1)

   For i = 1 To xxx

   For j = 1 To 3

   Line Input #1, TextLine

   Sheets("a").Cells(2 + i, 1 + j) = TextLine

   Sheets("a").Cells(2 + i, 1) = i

   Next j

   Next i

Loop

Close #1

'  обрисовка клеток

For i = 1 To xxx

For j = 1 To 5

Sheets("a").Cells(2 + i, j).Select

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Next j

   Next i

   k = i + 2

   ' объединяем ячейки и пишем надпись Итого

   Sheets("a").Range(Cells(k, 1), Cells(k, 2)).Select

   With Selection

       .HorizontalAlignment = xlCenter

       .VerticalAlignment = xlBottom

       .WrapText = False

       .Orientation = 0

       .AddIndent = False

       .ShrinkToFit = False

       .MergeCells = False

   End With

   Selection.Merge

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Sheets("a").Cells(k, 1) = " ИТОГО "

' дорисуем отсавлшиеся клетки в строке итого

   For j = 3 To 5

   Sheets("a").Cells(k, j).Select

   Selection.Borders(xlDiagonalDown).LineStyle = xlNone

   Selection.Borders(xlDiagonalUp).LineStyle = xlNone

   With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeTop)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeBottom)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   With Selection.Borders(xlEdgeRight)

       .LineStyle = xlContinuous

       .Weight = xlThin

       .ColorIndex = xlAutomatic

   End With

   Next j

   

   Sheets("a").Range("s23") = xxx

   ' вернем защиту на лист

ActiveSheet.Protect

End Sub

Процедура сохранения в файл 

Sub output()Application.Caption = "MINOS SUMMER IT PRACTICE"

'объявляем массивы

Dim fuel() As Single 'расход топлива

Dim way() As Single 'пробег

Dim driver() As String ' фамилия шофера

xxx = Sheets("a").Range("s23")

' переприсваиваем размерностии массивам

ReDim driver(xxx)

ReDim fuel(xxx)

ReDim way(xxx)

Path = InputBox("введите путь к файлу", "сохранение в файл", "c:\data.txt") ' вводим путь к файлу

Open CStr(Path) For Output As #1

For i = 1 To xxx

' выводим в файл значения массивов

driver(i) = Sheets("a").Cells(2 + i, 2)

fuel(i) = Sheets("a").Cells(2 + i, 3)

way(i) = Sheets("a").Cells(2 + i, 4)

Print #1, driver(i)

Print #1, fuel(i)

Print #1, way(i)

Next i

Close #1 ' закрываем файл

MsgBox ("данные помещены в файл" & " " & Path & ". Для чтения даных нажмите кнопку Чтение из файла")

End Sub

Процедура выхода из приложения 

Sub outdoor()Application.Caption = "MINOS SUMMER IT PRACTICE"

If Not (ActiveWorkbook.Saved) Then

ActiveWorkbook.SAVE

End If

Application.Quit

End Sub


Инструкция по использованию программного продукта

Первым этапом работы с программой является ввод данных. Ввод данных можно осуществить как вручную, так и из файла. Для ввода данных вручную ребуется нажать кнопку «Ввод данных» и в появляющихся диалоговых окнах вводить данные. Ввод данных вручную происходит по столбцам. Для  ввода данных из тектового файла тебцуется навжать кнопку «Чтение из файла» и в появившемся диалоговом окне указать путь к файлу, в котором находяться данные. Внимание – программа читает данные из тектовых файлов и сохраняет также в тектовые файлы!!! Образец указания пути  - «C:\directory\file.txt».

Далее, если во введеных данных есть ошибка то ее можно исправить, выделив ячейку в которой требуется произвести исправления и нажать унопку «Корректировка». А экране отобразиться форма, в тектовом поле которой следует ввести новое значение для изменяемой ячейки и нажать кнопку «Заменить».

После необходимой корректировки данных  наступает этап расчета данных. Для осуществления этой операции следует нажать кнопку «Расчет». Далее программа автоматически рассчитает столбец с относительным показателем, подведет итоги и выберет запись с наименьшим расходом топлива на 1 километр пробега.

Рассчитав показатели, можно построить график, нажав кнопку «Построить график». На отдельном листе, рядом с листом программы, появиться гистограмма построенная по расчетому столбцу, и подпишет фамилия шоферов.

Сохранение данных производиться в текстовый файл, по умолчанию маска пути сохраняемого файла такова “C:\data.txt”. Пользователь может указать любой путь, в т.ч. накопители на гибких магнитных дисках и flash-накопители.

Кнопка «Выход» закрывает приложение и сохраняет находящиеся в нем данные а данном рабочем листе.            

Приведем пример. Дан введенный массив исходных данных:

  Табл.1  Исходные данные введеные пользоваетелем

№ п/п

Фамилия шофера

Расход горючего всего, кг

Пробег, км

Расход горючего на 1 км, кг

 

1

2

3

4

1

иванов

122,00

250,00

2

петров

101,00

201,00

3

сидоров

102,00

202,00

4

веточкин

103,00

203,00

5

прохоров

104,00

204,00

6

клочков

222,00

205,00

7

мурошниченко

106,00

206,00

8

хромов

107,00

207,00

9

петухов

108,00

208,00

10

иващенков

109,00

209,00

По нажатию кнопки расчет, призойдёт расчет четвертой колонки и подведеие итогов.


Табл.2 Результат расчета по исходным данным

№ п/п

Фамилия шофера

Расход горючего всего, кг

Пробег, км

 

1

2

3

4

1

иванов

122,00

250,00

0,49

2

петров

101,00

201,00

0,50

3

сидоров

102,00

202,00

0,50

4

веточкин

103,00

203,00

0,51

5

прохоров

104,00

204,00

0,51

6

клочков

222,00

205,00

7

мурошниченко

106,00

206,00

0,51

8

хромов

107,00

207,00

0,52

9

петухов

108,00

208,00

0,52

10

иващенков

109,00

209,00

0,52

ИТОГО

1184,00

2095,00

5,67

Наименьший расход топлива

122

кг/км

250

у шофера

иванов

После расчета данных построим график. Нажмеме кнопку «Построить график»

Рис.3 Образец построенной диаграммы.

Для сохранения данных следует нажать кнопку «сохранение в файл» и в поле ввести путь к файлу.

Рис.4 Даилоговое окно сохранения в файл


Достоинства и недостатки программы 

Табл. 3. Достоинства и недостатки программы

Достоинства

Недостатки

Простота расчетов

Полная зависимость от пакета MS Office 

Простота интерфейса

Совместимость с любой версией MS Office

Неограниченное число записей для обработки


Список используемой  литературы 

  1.  Аляев Ю.А. Козлов О.А. Pascal, C++, Visual Basic. -  М.: Финансы и статистика, 2002
  2.  Биллиг В.А., Дехтярь М.И.. VBA и Office 97. Офисное программирование.- М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1998.- 720 с.:ил.
  3.  Гарнаев А.Ю. Самоучитель VBA. 2-е издание, переработанное и дополненное. СПб.: BHV —Санкт-Петербург, 2004. ISBN 5-94157-410-Х
  4.  Кузьменко В.Г. Базы данных в Visual Basic и Visual Basic for Applications. Самоучитель. – М.: ооо «Бином-Пресс», 2004. ISBN 5-9518-0049-8


НАЧАЛО

Ввод данных (вручную или из файла

Корректировка

асчет

Построение диаграммы

Сохранение в файл

КОНЕЦ

Рис.1 Общая блок-схема программы  


 

А также другие работы, которые могут Вас заинтересовать

51558. У чому виявляється милосердя 13.67 MB
  Мета уроку. Навчити учнів пояснювати поняття милосердя альтруїзм егоїзм; наводити приклади милосердя у вчинках висловлювати власне розуміння милосердя та співчуття характеризувати прояви егоїзму у власній поведінці та поведінці інших; формувати навички проявів альтруїзму; розвивати потреби гуманістичної спрямованості; виховувати гуманізм. Засоби мультимедіа вислови про милосердя ілюстрації до теми. Проблемні питання запис на дошці: Що таке милосердя Кого називають альтруїстом а кого ―...
51560. Призначення і функції програми оболонки MS DOS Norton Commander. Запуск програми. Отримання допомоги. Вказівки для роботи з файлами та каталогами 2.34 MB
  У рядку міністатусу панелі що не є поточною виводиться інформація про той файл або підкаталог який стає виділеним після натискання на клавішу Tb. Щоб зробити поточною іншу панель слід натиснути на клавішу табуляції позначену Tb . Якщо натиснути і утримувати клавішу Сtrl то ви побачите що команди на рядочку статуса змінюються тобто їх стане ще десять а якщо натиснути і утримувати клавішу Аlt то ви спостерігатимете ще зміни тобто команд стане ще десять. ВИХІД З NС Для виходу з NС потрібно натиснути клавішу F10.
51561. Следствие ведут первоклашки или прощание с первым классом 73 KB
  Оборудование: Папки первоклассников портфолио Красочный конверт Цветиксемицветик с загадками Звёзды с задачами Красивый мешочек с песком Телеграмма для Бабы Яги Канат Табличка Лесная налоговая инспекция Счёты для Кощея Ларец со смертью Кощея в мягкую игрушку зайца зашить игрушку утку а неё зашить зубочистку Сейф Разрезанное на буквы слово КАНИКУЛЫ Школьный звонок Плакат Кафе Ура каникулы Угощение для детей Костюмы для персонажей Действующие лица: Василиса Прекрасная Звездочет Баба Яга...
51562. Турбота про здоров’я. Особиста гігієна 50 KB
  Виховати санітарну культуру прагнення зберегти своє здоровя. Формувати стійкі мотиваційні установки на здоровий спосіб життя. Хід виховного заходу Вступне слово вчителя: Зрозуміло всім відомо що приємно бути здоровим.
51563. Праздник «До свидания, 1-й класс! Здравствуй, лето! 133.86 KB
  Поспешите угадать Что в ней и откуда передает корзину учителю Дети да это же приходил сам дядя Степа. Кто из взрослых помнит продолжение этой любимой детской книжки многих поколений По фамилии Степанов И по имени Степан Из районных великанов Самый главный великан От ворот и до ворот знал в районе весь народ Где работает Степанов Где прописан где живет Потому что всех быстрее Без особенных трудов Он снимал ребятам змеев С телеграфных проводов. Но нам надо определить: что в корзине и откуда. Но я нечаянно перепутал...
51564. Методичні поради з розвитку мовленнєвих компетентностей учнів 1 класу 80 KB
  Недостатнє поверхове оволодіння основами рідної мови низька культура усного і писемного мовлення незадовільна читацька навичка і розуміння змісту прочитаного серйозно гальмують загальний розвиток дітей не дають їм змоги успішно вчитись засвоювати основи знань що дає школа. Тому у навчальних планах та програмах на чільне місце ставиться навчання рідної мови. Державний стандарт загальної початкової мовної освіти зорієнтовано на всі чотири види мовленнєвої діяльності на уроках української мови: аудіювання слухання і розуміння;...
51565. Откуда берутся шоколад и мед 60 KB
  Задачи: познакомить детей с производством хорошо известныхсладостей шоколад изюм мёд показать их природноепроисхождение. А вы хотите узнать откуда берется изюм мед шоколад. В первой баночке шоколад во второй изюм а в третьей мед.
51566. Обєми многогранників та тіл обертання 10.46 MB
  Спіймати на гарячому ювеліра Архімеду допоміг відкритий ним у ванні евристичний закон: обєм зануреного у воду тіла можна знайти по витісненому тілом обєму води див. щоб знайти обєм циліндра використовували метод апроксимації для обємів подібних тіл принцип Кавальєрі для зрізання формули Сімпсона; д. Додаткове питання вчитель Що необхідно щоб виміряти обєм геометричного тіла Знайти число яке визначає скільки одиничних кубів міститься у даному геометричному тілі. Знайти обєм повітря в кабінеті відповісти на питання:...