Диаграммы в Visual Basic
Введение
Развитие современной техники идёт по пути все большего усложнения конструкции вновь создаваемых изделий. При их создании используются все более сложные технологии и технологические процессы. Процесс проектирования новых изделий требует привлечения и использования новых нестандартных решений. Помимо этого, потоки информации, циркулирующие в мире, который нас окружает, огромны и имеют тенденцию к увеличению. Поэтому, настоящее время характеризуется массированным внедрением информационных технологий во все сферы жизни и деятельности человека, изменением роли и места персональных компьютеров в современном обществе. Из предмета профессиональной деятельности достаточно узкого круга специалистов в области точных наук они превратились в инструмент, используемый во всех отраслях производства, науке, быту и общественной жизни. Человек, умело и эффективно владеющий технологиями и информацией, имеет другой, новый стиль мышления, иначе подходит к оценке возникшей проблемы, к организации своей деятельности. Владение информационными технологиями ставится в современном мире в один ряд с такими качествами, как знание языков и умение рассуждать.
Возрастающая роль компьютерных технологий предоставляет пользователю новые возможности, которые способны повлиять на его образование, мировоззрение, количество и качество информации, с которой он имеет дело. Для руководителей, информационные технологии влияют на качество принимаемых решений и эффективность управления.
Следствием повышения производительности вычислительной техники является и усложнение программного обеспечения, которое ведет, в свою очередь, к повышению удобства и эффективности его использования.
Благодаря последним разработкам в области программных продуктов, обрабатывать большие объемы информации становится гораздо проще. Эргономика этих программных продуктов позволяет не тратить много времени на работу с данными, различные визуальные средства их представления дают возможность составить мнение, буквально, окинув данные взглядом.
Одним из таких визуальных средств являются диаграммы – графическое представление данных, позволяющее быстро оценить соотношение нескольких величин, представляющее собой геометрическое символьное изображение информации с применением различных приёмов техники визуализации.
О них и их создании с помощью программных средств и пойдет речь в настоящей работе.
1. Выбор среды разработки
Мы живем в удивительное время, и никогда еще оно не было более благоприятным для программистов на Visual Basic. Visual Basic всегда позволял упростить процесс написания программ для системы Windows, но на его превращение в настоящий язык профессиональной разработки программ и создание среды разработки потребовались годы. С помощью Visual Basic можно по-прежнему быстро писать программы для системы Windows, но, помимо этого, теперь можно также создавать приложения типа клиент / сервер и надежные приложения управления базами данных. В последней версии Visual Basic есть некоторые усовершенствования, которые значительно расширяют возможности программистов, разрабатывающих приложения для баз данных. Даже этого было бы достаточно для рекламы Visual Basic, но последние версии предоставляют гораздо более широкие возможности.
Для написания программного продукта будет использоваться наиболее популярная версия продукта – Visual Basic 6. Данный язык подходи как новичкам в программировании, так и для подготовленных пользователей, которые могут использовать стандартные компоненты Windows, элементы управления Active X, ADO, RDO и др. В данную версию продукта так же включены различные средства работы с графическим интерфейсом пользователя и графического представления информации (в том числе и, необходимые нам, средства для работы с диаграммами). Исходя из всех этих достоинств, считаю выбор среды Visual Basic 6 оптимальным для поставленной задачи.
2. Выбор аппаратных средств
Для функционирования разрабатываемого программного продукта необходим компьютер, работающий под управлением операционной системы из семейства Windows. Начиная с Windows XP, минимальными системными требованиями являются:
– процессор с частотой от 233 МГц
– оперативная память объемом от 64 Мб
– видеоадаптер с поддержкой Super VGA (разрешение экрана 800х600, глубина цвета – 16 бит)
– жесткий диск объемом от 5 Гб
– клавиатура / мышь
Рекомендуемые системные требования для функционирования Windows XP, под которую разрабатывается программный продукт:
– процессор с частотой от 300 МГц
– оперативная память объемом от 128 Мб
– видеоадаптер с поддержкой Super VGA (разрешение экрана 800х600, глубина цвета – 16 бит)
– жесткий диск объемом от 5 Гб
– клавиатура / мышь.
3. Описание интерфейса пользователя и возможностей программы
Разрабатываемый в ходе данной курсовой работы программный продукт предназначен для демонстрации возможностей Visual Basic по работе с диаграммами.
Общий вид главной формы программы приведен на рисунке 1.
При запуске программы, компонент MSFlexGrid заполняется списком товаров и случайными значениями цены на эти товары.
На форме присутствуют четыре кнопки, предназначенные для различных операций с этим списком товаров, а также кнопка закрытия формы и сохранения полученной диаграммы.
Рисунок 1. Общий вид главной формы программы
Кнопка «Случайные цены», как следует из названия, заполняет таблицу случайными значениями стоимости.
Кнопка «Упорядочить» приводит к упорядочиванию списка товаров по цене (пример на рисунке 2).
Нажатие на кнопку «Итого» приведет к подсчету суммы стоимостей всех товаров. Данная сумма будет отображаться в строке «Всего» таблицы.
Двойной клик мыши на любую ячейку стоимости товара приведет к открытию окна редактирования стоимости (см. рисунок 3).
Данный диалог также предусматривает проверку правильности ввода. Если будет введено нечисловое значение, оно будет преобразовано в ноль. Если значение не будет введено или будет тем же, то никаких изменений не произойдет.
Рисунок 2. Список товаров, упорядоченный по цене
После нажатия на кнопку «Диаграмма», данные из таблицы отобразятся в компоненте MSChart в виде диаграммы с соответствующими данными.
С помощью переключателей можно выбирать тип диаграммы:
– Плоская гистограмма (рисунок 4)
– Плоский график (рисунок 5)
– Объемная гистограмма (рисунок 6)
– Объемный график (рисунок 7)
Рисунок 3. Окно редактирования стоимости товара
Рисунок 4. Плоская гистограмма
Полученную диаграмму мы можем сохранить, нажав кнопку «Сохранить диаграмму». В открывшемся окне (приведено на рисунке 8), мы видим еще один пример диаграммы. Данная круговая диаграмма отображает количество занятого и свободного пространства на выбранном диске.
При выборе диска из выпадающего списка, обновляется информация в диаграмме, а также информация в подписи к диаграмме, содержащая точный объем свободного пространства на диске, в списке каталогов отображается существующая структура папок на этом диске.
Рисунок 5. Плоский график
Рисунок 6. Объемная гистограмма
После выбора нужного диска, двойным щелчком мыши выбирается нужная папка.
Нажатие на кнопку «Ок» запускает процедуру сохранения изображения, в которой подбирается имя для файла диаграммы. Если на диске достаточно места и подобрано имя для файла, он будет сохранен в выбранную папку, после чего будет выдано сообщение об успешном сохранении.
В случае, когда из выпадающего списка выбран неверный диск (например, дисковод без диска), будет выдано сообщение о том, что диск недоступен (см. рисунок 9).
Рисунок 7. Объемный график
Если в данном окне нажать кнопку «Отмена», то оно закроется, и диаграмма сохранена не будет.
На главной форме также присутствует кнопка «Закрыть», которая закрывает приложение.
4. Исходный код основных модулей программы
Ниже представлен код модуля, содержащего все процедуры, используемые в программе:
Option Explicit
' импортированные функции
Private Declare Function PathFileExists Lib «shlwapi.dll» Alias «PathFileExistsA» _
(ByVal pszPath As String) As Long
' переменные уровня проекта
Public Price(8) As Currency ' Массив цен на продукты
Public Name_Tovar(8) As String ' Массив названий продуктов
Public sub> Summa()
' сумма элементов списка
Dim i As Integer
Dim Sum As Currency
Sum = 0
' цикл подсчета суммы стоимости всех товаров
For i = 0 To 7
Form1.MSFlexGrid1. Col = 1
Form1.MSFlexGrid1. Row = i + 1
Price(i) = Val (Form1.MSFlexGrid1. Text)
Form1.MSFlexGrid1. Text = Format$(Price(i), «#0.00»)
Sum = Sum + Price(i)
Next i
' вывод суммы в строку «Всего»
Form1.MSFlexGrid1. Col = 1
Form1.MSFlexGrid1. Row = 9
Form1.MSFlexGrid1. Text = Format$(Sum, «#0.00»)
End sub>
Public sub> Column_Name()
' процедура заполняет таблицу информацией о продуктах
Dim i As Integer
Dim a As Variant ' переменная для хранения списка названий
a = Array («Торт Пражский», «Крупа гречневая», «Кофе ЧИБО», «Вафли шоколадные», «Бананы», «Яблоки», «Конфеты Коркунов», «Сосиски молочные», «Всего»)
' настройки таблицы
Form1.MSFlexGrid1. ColWidth(0) = 4200
Form1.MSFlexGrid1. ColWidth(1) = 3000
Form1.MSFlexGrid1. Col = 0
Form1.MSFlexGrid1. Row = 0
Form1.MSFlexGrid1. Text = «Товар»
Form1.MSFlexGrid1. Col = 1
Form1.MSFlexGrid1. Text = «Стоимость, руб.»
' заполнение данными
For i = 0 To 8
Form1.MSFlexGrid1. Col = 0
Form1.MSFlexGrid1. Row = i + 1
Form1.MSFlexGrid1. Text = a(i)
Name_Tovar(i) = a(i)
Next i
' настройка диаграммы
Form1.MSChart1. Title = «Диаграмма стоимости товаров»
Form1.MSChart1. Plot. Axis(0).AxisTitle. Text = «Товары»
Form1.MSChart1. Plot. Axis(1).AxisTitle. Text = «Цена»
End sub>
Public sub> Column_Data()
' процедура заполняет графу цен случайными значениями
Dim i As Integer
Dim k As Integer
Form1.MSFlexGrid1. Col = 1
Randomize
For i = 1 To 8
k = Rnd(1) * 100
Form1.MSFlexGrid1. Row = i
Form1.MSFlexGrid1. Text = Format$(k, «#0.00»)
Next i
End sub>
Public sub> Sort()
' сортировка списка по-возрастанию цены
Dim i, k As Integer
Dim R As String ' временная переменная для хранения названия товара
Dim P As Currency ' временная переменная для хранения цены товара
For i = 0 To 7
Form1.MSFlexGrid1. Col = 1
Form1.MSFlexGrid1. Row = i + 1
Price(i) = Val (Form1.MSFlexGrid1. Text)
Next i
' сортировка
For k = 0 To 7
For i = 0 To 6
If Price(i) > Price (i + 1) Then
R = Name_Tovar(i)
P = Price(i)
Price(i) = Price (i + 1)
Name_Tovar(i) = Name_Tovar (i + 1)
Name_Tovar (i + 1) = R
Price (i + 1) = P
End If
Next i
Next k
' перезаполнение таблицы
For i = 0 To 7
Form1.MSFlexGrid1. Col = 0
Form1.MSFlexGrid1. Row = i + 1
Form1.MSFlexGrid1. Text = Name_Tovar(i)
Form1.MSFlexGrid1. Col = 1
Form1.MSFlexGrid1. Text = Format$(Price(i), «#0.00»)
Next i
End sub>
Public sub> MyChart()
' процедура отображения табличной информации на диаграмме
Dim i As Integer
Form1.MSChart1. ColumnCount = 1
Form1.MSChart1. RowCount = 8
For i = 1 To 8
Form1.MSChart1. Row = i
Form1.MSChart1. Data = Price (i – 1)
Form1.MSChart1. RowLabel = Name_Tovar (i – 1)
Next i
End sub>
Public sub> EditGridData()
' окно редактирования стоимости товара
Dim s As String
If Form1.MSFlexGrid1. Col = 1 Then
s = InputBox («Введите новую стоимость для товара» + Name_Tovar (Form1.MSFlexGrid1. Row – 1), «Изменение стоимости», Form1.MSFlexGrid1. Text)
If (s <> Form1.MSFlexGrid1. Text) And (Len(s) <> 0) Then
Form1.MSFlexGrid1. Text = s
End If
End If
End sub>
Public sub> UpdateChart()
' процедура выводит информацию о свободном месте на диске в mschart1
' создаем объекты файловой системы для получения информации о дисках
Dim fso As Object
Dim dr As Object
Set fso = CreateObject («Scripting. FileSystemObject»)
Set dr = fso. GetDrive (Mid(Dialog. Drive1. Drive, 1, 1))
' заполняем массив, который послужит источником данных для диаграммы
Dim arrData (0, 1 To 3)
arrData (0, 1) = «Диск» & Dialog. Drive1. Drive
arrData (0, 2) = dr. FreeSpace
arrData (0, 3) = dr. TotalSize – dr. FreeSpace
Dialog.MSChart1. ChartData = arrData
Dialog.lFreeSpace. Caption = «Свободно:» + Format$(dr. FreeSpace / 1048576, «#0.00») +» МБ»
End sub>
Public sub> SaveChart()
' сохраняем диаграмму в папку, выбранную пользователем
Dim i As Integer
Dim s As String
i = 0
Do
i = i + 1
s = Dialog. Dir1. Path + «\» + Format(i) +».bmp»
Loop While PathFileExists(s) = 1
Form1.MSChart1. EditCopy
SavePicture (Clipboard. GetData, s)
MsgBox («Диаграмма сохранена в файл:» + s)
End sub>
Процедуры и функции из вышеописанного модуля вызываются по следующим событиям формы:
Private sub> Command1_Click()
' подсчитываем стоимость всех товаров
Summa
End sub>
Private sub> Command2_Click()
' упорядочиваем список товаров по стоимости
Sort
End sub>
Private sub> Command3_Click()
' отображаем таблицу в диаграмме
MyChart
Command5. Enabled = True
End sub>
Private sub> Command4_Click()
' генерируем случайные цены
Column_Data
End sub>
Private sub> Command5_Click()
' показываем диалог сохранения диаграммы
Dialog. Show 1
End sub>
Private sub> Command6_Click()
' завершаем работу приложения
End
End sub>
Private sub> Form_Load()
' заполняем таблицу и выравниваем форму по центру экрана
Dim w, h As Integer
Column_Name
Column_Data
h = Screen. Height
w = Screen. Width
Form1. Left = (w – Form1. Width) / 2
If Form1. Left < 0 Then Form1. Left = 0
Form1. Top = (h – Form1. Height) / 2
If Form1. Top < 0 Then Form1. Top = 0
End sub>
Private sub> MSFlexGrid1_DblClick()
' открываем окно редактирования стоимости выбранного продукта
EditGridData
End sub>
Private sub> Option1_Click()
' изменяем тип диаграммы на 2D Bar
MSChart1.chartType = VtChChartType2dBar
End sub>
Private sub> Option2_Click()
' изменяем тип диаграммы на 2D Line
MSChart1.chartType = VtChChartType2dLine
End sub>
Private sub> Option3_Click()
' изменяем тип диаграммы на 3D Line
MSChart1.chartType = VtChChartType3dLine
End sub>
Private sub> Option4_Click()
' изменяем тип диаграммы на 3D Bar
MSChart1.chartType = VtChChartType3dBar
End sub>
Помимо главной формы, в проекте представлена диалоговая форма сохранения диаграммы. Исходный код модуля имеет следующий вид:
Option Explicit
Private sub> CancelButton_Click()
' закрываем диалоговую форму
Me. Hide
End sub>
Private sub> Drive1_Change()
' при изменении диска, обновляем диаграмму и директорию в Dir1
On Error GoTo errmsg
Dir1. Path = Drive1. Drive
UpdateChart
Exit sub>
errmsg:
MsgBox («В данный момент выбранный диск недоступен»)
End sub>
Private sub> Form_Load()
' выравниваем форму по центру экрана
Dim w, h As Integer
h = Screen. Height
w = Screen. Width
Dialog. Left = (w – Dialog. Width) / 2
If Dialog. Left < 0 Then Dialog. Left = 0
Dialog. Top = (h – Dialog. Height) / 2
If Dialog. Top < 0 Then Dialog. Top = 0
UpdateChart
End sub>
Private sub> OKButton_Click()
' сохраняем изображение в выбранной папке
SaveChart
Me. Hide
End sub>
Заключение
диаграмма программный язык интерфейс
В данной работе была создана программа, демонстрирующая основные возможности диаграмм. Для ее написания был использована среда разработки Visual Basic 6.0. В ходе работы были продемонстрированы основные возможности диаграмм, а также средства Visual Basic для их реализации. Была подтверждена простота и удобство создания приложений в среде Visual Basic.
Способ, которым информация представляется в диаграммах, позволяет быстро работать с большими объемами данных. Например, главная форма программы, представляет таблицу товаров и их стоимостей. Если бы человек искал товар с наибольшей стоимостью, ему пришлось бы перебирать весь список и сравнивать цены. В диаграмме же достаточно одного взгляда, чтобы выявить товар с наибольшей ценой и выделить его из списка. Если эту функцию может выполнить упорядочивание товаров по цене, то оценка разброса значений – критерий субъективный и диаграмма позволяет пользователю сделать этот вывод, всего лишь окинув ее взглядом.
Диаграмма на диалоговой форме сохранения изображения позволяет пользователю визуально оценить наличие свободного пространства на диске и решить куда сохранять файл.
Задача данного курсового проекта выполнена. Доказана польза и удобство использования диаграмм, представлены способы их реализации средствами Visual Basic.
Список использованной литературы
1. Браун С. Visual Basic 5 c самого начала – СПб: Питер, 1998
2. Иванов М.Н., Суворов С.В. Информатика Часть 2. Программирование. Учебно-методическое пособие – М.; МГИУ, 2004
3. Использование Visual Basic 6.: Пер. с англ. – К.; М.; СПб.: Издательский дом «Вильямс», 1999. – 608 с.
4. Материалы сайта www.visual2000.ru
5. Материалы сайта www.compress.ru
6. Visual Basic 6. Руководство разработчика: В 2 т.: Пер с англ. – К.: Издательская группа BHV, 2000. – Т 2 – 560 с.