База данных видеокарт

Нижегородский Государственный Технический Университет

База данных видеокарт

Нижний Новгород 2003 г.

Цель работы:

Создание каталога видеокарт. Программа должна уметь: заносить, изменять и удалять видеокарту. Выдавать максимальную и минимальную стоимость видеокарты, в порядке увеличения стоимости.

Программа "База данных видеокарт" (DataBase v.1.02 beta.exe) должна быть написана на языке Visual Basic 6.3.

Составляющие программы:

На рисунке:

-слева – 4 файла программы:

- data.dat – информация о видеокартах (файл Excel (.xls) переименованный в .dat)

- DataBase v.1.02 beta.exe – исполняющий файл программы

- log.dat – история базы данных (файл с произвольным доступом)

- set.ini – файл (с произвольным доступом) для хранения настроек программы

- справа - рабочая папка проекта

Работа с программой:

При первой загрузке сразу создаются файл настроек и истории.

Загружается сплэшскрин:

‘создание новых типов данных

Private Type tune

chekv As String * 1

chekn As String * 16

End Type

Private Type log

vlog As String * 23

vname As String * 17

vdate As String * 12

vtime As String * 10

End Type

‘загрузка формы

Private sub> Form_Load()

Dim chk1 As tune

Dim log1 As log

Open CurDir$ + "\set.ini" For Random As #1 Len = Len(chk1)

Get #1, 1, chk1

If chk1.chekv = "0" Then

Unload Me

Form1.Show

Else

Form1.Check1.Value = 1

End If

Open CurDir$ + "\log.dat" For Random As #2 Len = Len(log1)

End sub>

При нажатии курсором в любую область сплэшскрин выгружается и появляется окно основного меню:

При наведении курсора на любую область в рамке помощь появляется подсказка.

Public excelist As New Excel.Application

‘чек

Private sub> Check1_Click()

Dim chk1 As tune

chk1.chekn = " = Check1.value "

chk1.chekv = Check1.Value

Put #1, 1, chk1.chekv

End sub>

'помощь чек

Private sub> Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1.Caption = "Показывать/нет сплэшскрин (информацию о программе) при загрузке базы данных"

End sub>

‘загрузка формы

Private sub> Form_Load()

Static w As Byte

If w = 0 Then

Set excelist = New Excel.Application

With excelist

Workbooks.Open CurDir$ + "\data.dat"

Visible = False

End With

w = 1

End If

Dim chk1 As tune

chk1.chekn = " = Check1.value "

Get #1, 1, chk1

If chk1.chekv = "0" Then

Check1.Value = 0

Else

Check1.Value = 1

End If

End sub>

‘выход

Private sub> Command6_Click()

Dim chk1 As tune

If MsgBox("Вы действительно желаете выйти ?", vbYesNo, "База данных видеокарт") = vbYes Then

With excelist.ActiveWorkbook

Save

Close

End With

chk1.chekn = " = Check1.value "

If Check1.Value = 1 Then

chk1.chekv = "1"

Put #1, 1, chk1

Else

chk1.chekv = "0"

Put #1, 1, chk1

End If

Close #1

Close #2

End

End If

End sub>

Окно базы данных:

Здесь также имеется область с подсказками. На рисунке, например, при наведении на область об’екта MSFlexgrid появляется информация о кол-ве видеокарт в базе данных.

‘загрузка формы

Private sub> Form_Load()

With MSFlexGrid1

TextMatrix(0, 0) = "Модель"

TextMatrix(0, 1) = "Шина AGP"

TextMatrix(0, 2) = "Частота ядра/памяти"

TextMatrix(0, 3) = "Об'ём памяти"

TextMatrix(0, 4) = "Тип памяти"

TextMatrix(0, 5) = "Цена"

End With

MSFlexGrid1.ColWidth(0) = 3100

MSFlexGrid1.ColWidth(1) = 990

MSFlexGrid1.ColWidth(2) = 1900

MSFlexGrid1.ColWidth(3) = 1300

MSFlexGrid1.ColWidth(4) = 1100

MSFlexGrid1.ColWidth(5) = 1360

Dim i As Integer

Dim zpust As Integer

Dim k As Integer

k = 1

zpust = Form1.zerocell

For i = 1 To zpust

With Form1.excelist.ActiveWorkbook.ActiveSheet

MSFlexGrid1.TextMatrix(k, 0) = .Cells(i, 1)

MSFlexGrid1.TextMatrix(k, 1) = .Cells(i, 2)

MSFlexGrid1.TextMatrix(k, 2) = .Cells(i, 3)

MSFlexGrid1.TextMatrix(k, 3) = .Cells(i, 4)

MSFlexGrid1.TextMatrix(k, 4) = .Cells(i, 5)

MSFlexGrid1.TextMatrix(k, 5) = .Cells(i, 6)

k = k + 1

End With

Next i

With MSFlexGrid1

Rows = zpust + 1

Col = 0

Sort = 1

Rows = 70

End With

End sub>

‘кол-во видеокарт

Private sub> MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim zpust As Integer

zpust = Form1.zerocell

Label1.Caption = "Всего в базе данных - " & zpust & " видеокарт"

End sub>

Как уже говорилось ранее в программе предусмотрено ведение истории:

При нажатии на клавишу очистки содержимое файла истории обнуляется.

‘загрузка формы

Private sub> Form_Load()

With MSFlexGrid1

TextMatrix(0, 0) = "Действие"

TextMatrix(0, 1) = "Модель видеокарты"

TextMatrix(0, 2) = "Дата"

TextMatrix(0, 3) = "Время"

End With

MSFlexGrid1.ColWidth(0) = 3500

MSFlexGrid1.ColWidth(1) = 3500

MSFlexGrid1.ColWidth(2) = 1385

MSFlexGrid1.ColWidth(3) = 1390

Dim chk1 As tune

Dim log1 As log

Dim X As Integer

Dim Y As Integer

Get #1, 3, chk1.chekv

X = Val(chk1.chekv)

For Y = 1 To X

Get #2, Y, log1

MSFlexGrid1.TextMatrix(Y, 0) = log1.vlog

MSFlexGrid1.TextMatrix(Y, 1) = log1.vname

MSFlexGrid1.TextMatrix(Y, 2) = log1.vdate

MSFlexGrid1.TextMatrix(Y, 3) = log1.vtime

Next Y

End sub>

'очистка лога

Private sub> Command1_Click()

Dim chk1 As tune

Dim log1 As log

Dim s As Integer

Dim r As Integer

Get #1, 3, chk1.chekn

s = Val(chk1.chekn)

For r = 1 To s

Put #2, r, log1

Next r

chk1.chekn = 0

Put #1, 3, chk1.chekn

With MSFlexGrid1

Clear

TextMatrix(0, 0) = "Действие"

TextMatrix(0, 1) = "Модель видеокарты"

TextMatrix(0, 2) = "Дата"

TextMatrix(0, 3) = "Время"

End With

End sub>

Добавление в базу данных:

Добавление происходит с помощью 4 – х элементов combobox и одного textbox. Если в форму ничего не введено то появляется окно "Введите модель видеокарты".

‘добавление

Private sub> Command1_Click()

If Combo1.Text <> Empty Then

Dim zpust As Byte

zpust = Form1.zerocell

With Form1.excelist.ActiveWorkbook.ActiveSheet

Cells(zpust + 1, 1) = Combo1.Text

Cells(zpust + 1, 2) = Combo2.Text

Cells(zpust + 1, 3) = Combo3.Text

Cells(zpust + 1, 4) = Combo4.Text

Cells(zpust + 1, 5) = Combo5.Text

Cells(zpust + 1, 6) = Text1.Text

End With

Beep

Dim log1 As log

Dim u As Integer

Dim chk1 As tune

log1.vlog = "Добавлена видеокарта "

log1.vdate = Date$

log1.vname = Combo1.Text

log1.vtime = Time$

Get #1, 3, chk1.chekn

u = Val(chk1.chekn) + 1

chk1.chekn = u

Put #1, 3, chk1.chekn

Put #2, u, log1

Combo1.Text = ""

Combo2.Text = ""

Combo3.Text = ""

Combo4.Text = ""

Combo5.Text = ""

Text1.Text = ""

Else

MsgBox "Введите модель видеокарты"

End If

End sub>

Удаление видеокарты из базы данных:

Форма снабжена элементом checkbox. При установленном флажке, при нажатии на клавишу Удалить появляется окно "Вы действительно желаете удалить данную видеокарту?".

‘удаление

Private sub> Command1_Click()

Dim lab1 As Label

Dim lab2 As Label

If Check1.Value = 1 Then

If MsgBox("Вы действительно желаете удалить данную видеокарту ?", vbYesNo, "База данных видеокарт") = vbYes Then

GoTo lab1

Else: GoTo lab2

End If

Else

GoTo lab1

End If

lab1:

Dim i As Byte

Dim zpust As Byte

zpust = Form1.zerocell

For i = 1 To zpust

If Form1.excelist.ActiveWorkbook.ActiveSheet.Cells(i, 1) = Combo1.Text Then

Form1.excelist.ActiveWorkbook.ActiveSheet.Rows(i).Delete

Beep

Dim log1 As log

Dim u As Integer

Dim chk1 As tune

log1.vlog = "Удалена видеокарта "

log1.vdate = Date$

log1.vname = Combo1.Text

log1.vtime = Time$

Get #1, 3, chk1.chekn

u = Val(chk1.chekn) + 1

chk1.chekn = u

Put #1, 3, chk1.chekn

Put #2, u, log1

GoTo lab2

End If

Next i

MsgBox "Модель не найдена"

lab2:

Combo1.Text = ""

End sub>

Изменение видеокарты происходит с помощью поиска модели видеокарты, если видеокарта не найдена появляется окно "Модель не найдена". Как и в форме добавления есть защита от пустого ввода.

‘изменение

Private sub> Command1_Click()

If Combo1.Text <> Empty Then

Dim o As Byte

Dim f As Label

Dim zpust As Byte

zpust = Form1.zerocell

For o = 1 To zpust

If Form1.excelist.ActiveWorkbook.ActiveSheet.Cells(o, 1) = Combo1.Text Then

Form1.excelist.ActiveWorkbook.ActiveSheet.Rows(o).Delete

With Form1.excelist.ActiveWorkbook.ActiveSheet

Cells(o, 1) = Combo1.Text

Cells(o, 2) = Combo2.Text

Cells(o, 3) = Combo3.Text

Cells(o, 4) = Combo4.Text

Cells(o, 5) = Combo5.Text

Cells(o, 6) = Text1.Text

End With

Dim log1 As log

Dim u As Integer

Dim chk1 As tune

log1.vlog = "Изменена видеокарта "

log1.vdate = Date$

log1.vname = Combo1.Text

log1.vtime = Time$

Get #1, 3, chk1.chekn

u = Val(chk1.chekn) + 1

chk1.chekn = u

Put #1, 3, chk1.chekn

Put #2, u, log1

Beep

GoTo f

End If

Next o

Else

MsgBox "Введите модель"

GoTo f

End If

MsgBox "Модель не найдена"

f:

Combo1.Text = ""

Combo2.Text = ""

Combo3.Text = ""

Combo4.Text = ""

Combo5.Text = ""

Text1.Text = ""

End sub>

Поиск и сортировка:

Осуществляются в одном окне, с помощью элементов optionbutton. Поиск:

Поиск происходит по модели и по цене, в т.ч. в диапазоне цен "от … до", "от … ", "до …". Автоматически происходит сортировка найденных элементов по цене в сторону увеличения.

Сортировка:

Можно выбрать любой параметр сортировки. Она будет произведена в сторону увеличения.

‘загрузка формы

Private sub> Form_Load()

With MSFlexGrid1

TextMatrix(0, 0) = "Модель"

TextMatrix(0, 1) = "Шина AGP"

TextMatrix(0, 2) = "Частота ядра/памяти"

TextMatrix(0, 3) = "Об'ём памяти"

TextMatrix(0, 4) = "Тип памяти"

TextMatrix(0, 5) = "Цена"

End With

MSFlexGrid1.ColWidth(0) = 3100

MSFlexGrid1.ColWidth(1) = 990

MSFlexGrid1.ColWidth(2) = 1900

MSFlexGrid1.ColWidth(3) = 1300

MSFlexGrid1.ColWidth(4) = 1100

MSFlexGrid1.ColWidth(5) = 1360

Dim i As Integer

Dim zpust As Integer

k = 1

zpust = Form1.zerocell

For i = 1 To zpust

With Form1.excelist.ActiveWorkbook.ActiveSheet

MSFlexGrid1.TextMatrix(k, 0) = .Cells(i, 1)

MSFlexGrid1.TextMatrix(k, 1) = .Cells(i, 2)

MSFlexGrid1.TextMatrix(k, 2) = .Cells(i, 3)

MSFlexGrid1.TextMatrix(k, 3) = .Cells(i, 4)

MSFlexGrid1.TextMatrix(k, 4) = .Cells(i, 5)

MSFlexGrid1.TextMatrix(k, 5) = .Cells(i, 6)

k = k + 1

End With

Next i

MSFlexGrid1.Rows = zpust + 1

MSFlexGrid1.Sort = 1

MSFlexGrid1.Rows = 70

End sub>

‘поиск / сортировка

Private sub> Command3_Click()

If e = True Then

Dim zpust As Integer

zpust = Form1.zerocell

Select Case r

Case Is < 6

Dim i As Integer

k = 1

For i = 1 To zpust

With Form1.excelist.ActiveWorkbook.ActiveSheet

MSFlexGrid1.TextMatrix(k, 0) = .Cells(i, 1)

MSFlexGrid1.TextMatrix(k, 1) = .Cells(i, 2)

MSFlexGrid1.TextMatrix(k, 2) = .Cells(i, 3)

MSFlexGrid1.TextMatrix(k, 3) = .Cells(i, 4)

MSFlexGrid1.TextMatrix(k, 4) = .Cells(i, 5)

MSFlexGrid1.TextMatrix(k, 5) = .Cells(i, 6)

k = k + 1

MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1

End With

Next i

With MSFlexGrid1

Rows = zpust + 1

Col = r

Sort = 1

Rows = 70

End With

Case 6

If Combo1.Text <> Empty Then

Dim u As Byte

zpust = Form1.zerocell

k = 1

MSFlexGrid1.Clear

With MSFlexGrid1

TextMatrix(0, 0) = "Модель"

TextMatrix(0, 1) = "Шина AGP"

TextMatrix(0, 2) = "Частота ядра/памяти"

TextMatrix(0, 3) = "Об'ём памяти"

TextMatrix(0, 4) = "Тип памяти"

TextMatrix(0, 5) = "Цена"

End With

For u = 1 To zpust

If Form1.excelist.ActiveWorkbook.ActiveSheet.Cells(u, 1) = Combo1.Text Then

With Form1.excelist.ActiveWorkbook.ActiveSheet

MSFlexGrid1.TextMatrix(k, 0) = .Cells(u, 1)

MSFlexGrid1.TextMatrix(k, 1) = .Cells(u, 2)

MSFlexGrid1.TextMatrix(k, 2) = .Cells(u, 3)

MSFlexGrid1.TextMatrix(k, 3) = .Cells(u, 4)

MSFlexGrid1.TextMatrix(k, 4) = .Cells(u, 5)

MSFlexGrid1.TextMatrix(k, 5) = .Cells(u, 6)

k = k + 1

MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1

End With

End If

Next u

If k = 1 Then MsgBox "Модель не найдена"

Else

MsgBox "Введите модель"

End If

Case 7

If Val(Combo2.Text) < Val(Combo3.Text) Then

MSFlexGrid1.Clear

With MSFlexGrid1

TextMatrix(0, 0) = "Модель"

TextMatrix(0, 1) = "Шина AGP"

TextMatrix(0, 2) = "Частота ядра/памяти"

TextMatrix(0, 3) = "Об'ём памяти"

TextMatrix(0, 4) = "Тип памяти"

TextMatrix(0, 5) = "Цена"

End With

Dim j As Integer

k = 1

For j = 1 To zpust

If Val(Form1.excelist.ActiveWorkbook.ActiveSheet.Cells(j, 6)) >= Val(Combo2.Text) And Val(Form1.excelist.ActiveWorkbook.ActiveSheet.Cells(j, 6)) <= Val(Combo3.Text) Then

With Form1.excelist.ActiveWorkbook.ActiveSheet

MSFlexGrid1.TextMatrix(k, 0) = .Cells(j, 1)

MSFlexGrid1.TextMatrix(k, 1) = .Cells(j, 2)

MSFlexGrid1.TextMatrix(k, 2) = .Cells(j, 3)

MSFlexGrid1.TextMatrix(k, 3) = .Cells(j, 4)

MSFlexGrid1.TextMatrix(k, 4) = .Cells(j, 5)

MSFlexGrid1.TextMatrix(k, 5) = .Cells(j, 6)

k = k + 1

End With

End If

Next j

With MSFlexGrid1

Rows = k

Col = 5

Sort = 1

Rows = 70

End With

Else

MsgBox "Неверно задан диапазон"

End If

Case Else

MsgBox "Неудача"

End Select

Option1.Enabled = True

Option2.Enabled = True

Option3.Enabled = True

Option4.Enabled = True

Option5.Enabled = True

Option6.Enabled = True

Option7.Enabled = True

Option8.Enabled = True

Combo1.Enabled = True

Combo2.Enabled = True

Combo3.Enabled = True

Option1.Value = False

Option2.Value = False

Option3.Value = False

Option4.Value = False

Option5.Value = False

Option6.Value = False

Option7.Value = False

Option8.Value = False

Combo1.Text = ""

Combo2.Text = ""

Combo3.Text = ""

Else

MsgBox "Выберите действие"

End If

e = False

End sub>

В любой момент можно просмотреть информацию о программе:

При нажатии клавиши выход появляется окно "Вы действительно желаете выйти?", при утвердительном ответе программа сохраняет все изменения и закрывается.

Заключение:

Использованные ресурсы:

Программа использует следующее компоненты:

- Microsoft Flex Grid Control 6.0 (SP3)

- Microsoft Windows Common Controls 6.0 (SP4)

и библиотеки:

- Visual Basic for Applications

- Visual Basic runtime objects and procedures

- Visual Basic objects and procedures

- Microsoft Excel 10.0 Object Library

Отличительные особенности программы:

- Практически все формы программы снабжены помощью, т.е. областями в которых появляется информация об объекте, на который наведен курсор. Например в форме поиска при движении курсора по объекту MSFlexGrid появляется информация о количестве найденных видеокарт.

- База данных имеет кроме файла с информацией о видеокартах (.dat) файлы с произвольным доступом. Файл настроек хранит информацию о положении флажков и количестве действий в истории. Файл истории хранит все сведения истории.

- В программе ведется история добавления, удаления, изменения видеокарт (а также очистки) с точностью до секунд. Её можно просмотреть в любой момент и очистить, если возникнет необходимость.

- Поиск по базе данных ведется по количеству введенных символов. Например если вы ввели "GeF" результатом будут все видеокарты GeForce …

- Существует функция поиска в диапазоне цен:

от …

до …

и от … до …

- Использованы защиты от неверных действий. При выходе, удалении, очистки истории появляется окно подтверждения.

- При оформлении программы использованы изображения реальных видеокарт.

В процессе написания программы мною были освоены азы программирования на VB 6.5. Изучены основные операции функции и процедуры.