504

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

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

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

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

Русский

2013-01-06

155.5 KB

15 чел.

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

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

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

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

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

по учебной практике для студентов 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 Общая блок-схема программы  


 

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

74203. Сылақ және майлау жұмыстарына арналған машиналар 717.44 KB
  Сылақ станциялары мен агрегаттары және қол ысқылауыштарының атқаратын қызметі негізгі параметрлері және қолданылу облысы. Жылжымалы сылау агрегаттары. Еден асты негіздерін дайындауға және шатыр мен гидроизоляциялауға арналған машиналар құрылымы мен жұмысы Жоспар: Сылақ станциялары мен агрегаттары және қол ысқылауыштарының атқаратын қызметі.
74204. Жер жұмыстарына арналған машиналар туралы жалпы мағлұматтар 147.63 KB
  Жұмысшы органдары мен топырақпен өзара әсерлесуі. Топырақтардың физикамеханикалық сипаттамасы Жоспар: Жер жұмыстарына арналған машиналар туралы жалпы мағлұматтар. Жұмысшы органдары мен топырақпен өзара әсерлесуі. Топырақтардың физикамеханикалық сипаттамасы.
74205. Жер қазу-тасымалдау машиналары. Қызметі, қолданылу облысы. Негізгі техника-экономикалық көрсеткіштері 659.49 KB
  Жер қазутасымалдау машиналары ЖҚТМ деп топырақты массивтен тарту күші арқылы ажыратып оны түсіру орнына өз жүрісімен жеткізетін құрылыс машиналарын атайды. Негізгі атқаратын жұмысшы операциялары: топырақты қабаттап өңдеу оны тасымалдау құрылыс объектісі негізіне төсеу немесе төгу топырақ беттерін жоспарлау. Негізгі қызметі: топырақты жер бетімен сүргіш органы арқылы азғана арақашықтыққа 150м жылжыту арқылы қабаттап өңдеу. Мына жағдайларда қолданылады: құрылыс алаңын дайындау барысында топырақтың беткі құнарлы қабатын алу;...
74206. Экскаваторлар. Жіктелуі, қолданылу облысы. Жұмысшы органының негізгі түрлері, параметрлері және құрылыс экскаваторларының индексациясы 885.5 KB
  Біршөмішті экскаватордың жұмыс циклі рет-ретімен орындалатын топырақ қазу, оны шөмішпен төсеу орнына тасымалдау, топырақты үйме мен көлік құралына аудару арқылы шөмішті босату және келесі циклді бастау үшін шөміштің алғашқы позициясына қайтып оралу операцияларынан тұрады
74207. Бұрғылау машиналары және жабдықтары. Бұрғылау құралы. Шпурлар бұрғылауға арналған машиналар. Бұрғылау-кранды машиналар 1.45 MB
  Бұрғылау – бұл топырақ массивінде қирау заттарын сыртқа шығара отырып, цилиндрлік жазықтықтар түзу арқылы топырақты қирату процесі. Егер диаметрі 75 мм дейін және тереңдігі 9 м болса жазықтықтар шпурлар деп, ал өлшемдері үлкен болса бұрғы деп аталынады.
74208. Тиеп-түсіру машиналары. Тиегіштер түрлері. Жұмыс процесі 455.42 KB
  Жұмысшы жабдық нұсқаларының көптігі және жұмыс органдарының ауыспалылығы құрылыс тиегіштерінің жұмыс жасау облысын кеңейтіп оларды құрылыс тасымалының барлық этаптарында қолданылатын универсалды машинаға айналдырады. БФПТтердің жұмысшы жабдығы жебе коромысло тартқыш гидроцилиндрлер құратын рычагты механизмнен тұрады. Сонымен қатар түсіру биіктігін ондаған сантиметрге жоғарылатытын машинаның универсалдылығын арттыратын жақты шөміштер де қолданылады бірақ олар жұмысшы жабдықтың күрделенуіне қосымша гидравликалық контурлар орнату...
74209. Машиналардың ұсақтау типтері жәнеұсақталатын материал беріктігі мен ұсақталу дәрежесіне қарай оларды таңд. 1.43 MB
  Грохоттардың қолданылуы принциптік схемалары жұмыс процестері негізгі параметрлері мен жұмыс өнімділігі Жоспар: Машиналардың ұсақтау типтері және ұсақталатын материал беріктігі мен ұсақталу дәрежесіне қарай оларды таңдап алу. Тас жыныстарды бұзу мен уатудың механикалық процесі ұсақтау деп аталады және тас ұсақтағыш машиналар –тас ұсақтағыштарды қолдана отырып ұсақтау жаншу сындыру және үйкеу көмегімен жүзеге асырылады. Ұсақтау машиналарында ұсақталатын жыныстың қасиеттеріне және ірілігіне қарай әртүрлі әдістер бірге қолданылады.
74210. Бетон қоспалары мен сылақтарын дайындауға арналған машиналар мен жабдықтар. Араластырғыш машиналардың қызметі мен құрамы. Араластырғыш машиналардың жіктелуі 1.46 MB
  Бетон араластырғыштар мен циклді және үздіксіз жұмыс жасайтын сылақ араластырғыштардың типтері негізгі параметрлері мен конструктивтік схемалары. Бетон қоспаларын тығыздау қажеттіліктері мен тәсілдері Жоспар: Араластырғыш машиналардың қызметі мен құрамы. Бетон араластырғыштар мен циклді және үздіксіз жұмыс жасайтын сылақ араластырғыштардың типтері негізгі параметрлері мен конструктивтік схемалары.
74211. Топырақ тығыздағыш машналар. Топырақты домалату, таптау және вибротаптау арқылы тығыздау 930.22 KB
  Топырақты домалату таптау және вибротаптау арқылы тығыздау. Жұмыс процесі негізгі параметрлері техникалық және эксплуатациялық көрсеткіштері Жоспар: Топырақ тығыздағыш машиналар. Топырақты домалату таптау және вибротаптау арқылы тығыздау.