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

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

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

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

Нижний Новгород 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. Изучены основные операции функции и процедуры.

«