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 Общая блок-схема программы  


 

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

30554. Радиоэлектронные каналы утечки информации 18.65 KB
  Радиоэлектронный канал относится к наиболее информативным каналам утечки в силу следующих его особенностей: независимость функционирования канала от времени суток и года существенно меньшая зависимость его параметров по сравнению с другими каналами от метеоусловий; высокая достоверность добываемой информации особенно при перехвате ее в функциональных каналах связи за исключением случаев дезинформации; большой объем добываемой информации; оперативность получения информации вплоть до реального масштаба времени; скрытность перехвата...
30555. Акустические каналы утечки информации 701.6 KB
  Часть III дополнительно Оценка громкости звука Уровень звука дБ Источник звука Очень тихий 0 10 Усредненный порог чувствительности уха Тихий шепот 1. Порог слышимости соответствует мощности звука 1012 Вт или звуковому давлению на барабанную перепонку уха человека 2105 Па Абсолютный порог минимальное значение воздействующего раздражителя при котором возникает ощущение. Под воздействием звука Рак = 70 дБ кирпичная стена толщиной 05 м совершает вибрационные колебания с ускорением а≈3·105g.
30556. Задачи и принципы инженерно-технической защиты информации 50.5 KB
  Задачи Инженернотехническая защита информации одна из основных составляющих комплекса мер по защите информации составляющей государственную коммерческую и личную тайну. Этот комплекс включает нормативноправовые документы организационные и технические меры направленные на обеспечение безопасности секретной и конфиденциальной информации. Инженернотехническая защита информации включает комплекс организационных и технических мер по обеспечению информационной безопасности техническими средствами и решает следующие задачи:...
30557. Способы и средства инженерной защиты и технической охраны объектов 20.37 KB
  Проникновение злоумышленника может быть скрытным с механическим разрушением инженерных конструкций и средств охраны с помощью инструмента или взрыва и в редких случаях в виде вооруженного нападения с нейтрализацией охранников. Люди и средства ИЗТОО образуют систему охраны. В общем случае структура системы охраны объектов.
30558. Теорема о среднем для действительных функций одного действительного переменного. Теорема Ферма; теорема Ролля, теорема Лагранжа. Примеры, показывающие существенность каждого условия в теореме Ролля: теоретическая интерпретация 91.81 KB
  Все вышеперечисленные теоремы являются основными теоремами дифференциального исчисления поэтому сначала введем понятие дифференцируемости функции. Понятие дифференцируемости функции. Выражение ∆x называется дифференциалом функции fx в точке x0 соответствующим приращению аргумента ∆x и обозначается символом dy или dfx0. При этом приращение функции ∆y определяется главным образом первым слагаемым т.
30559. Первообразная и неопределенный ∫. Опр. первообразной. Опр. неопределенного ∫, свойства. Опр. по Риману. Необходимое и достаточное условие интегрируемости. Ньютон-Лейбниц 23.61 KB
  Функция Fx называется первообразной для функции fx на интервале b если в любой точке х из интервала b функция Fx дифференцируема и имеет производную F’x=fx. Совокупность всех первообразных функций для данной функции fx на интервале b называется неопределенным интегралом от функции fx на этом интервале и обозначается где fxdx – подынтегральное выражение fx – подынтегральная функция x – переменная интегрирования. Операцию нахождения первообразной восстановление функции по ее производной называют интегрированием...
30560. Непрерывные функции в Rn . Дифференцируемые функции в Rn .. Необходимые и достаточные условия дифференцируемости функции в точке. Полный дифференциал функции нескольких переменных 60.52 KB
  Дифференцируемые функции в Rn . Необходимые и достаточные условия дифференцируемости функции в точке. Полный дифференциал функции нескольких переменных.
30561. Теорема о дифференцируемости сложной функции. Правила дифференцирования. Производная по направлению. Градиент 65.41 KB
  Требования доктрины информационной безопасности РФ и ее реализация в существующих системах информационной безопасности. Доктрина информационной безопасности Российской Федерации. Понятие и назначение доктрины информационной безопасности. 9 сентября 2000 года президент РФ Владимир Путин утвердил Доктрину информационной безопасности РФ.
30562. Локальный экстремум функции многих переменных. Достаточные условия экстремума 45.86 KB
  ТочкаM0x0;y0 внутренняя точка области D. Если в D присутствует такая окрестность UM0 точки M0 что для всех точек то точка M0 называется точкой локального максимума. А если же для всех точек то точка M0 называется точкой локального минимума функции zxy. поясняется геометрический смысл локального максимума: M0 точка максимума так как на поверхности z =z xy соответствующая ей точка C0 находится выше любой соседней точки C в этом локальность максимума.