Нижегородский Государственный Технический Университет
База данных видеокарт
Нижний Новгород 2003 г.
Цель работы:
Создание каталога видеокарт. Программа должна уметь: заносить, изменять и удалять видеокарту. Выдавать максимальную и минимальную стоимость видеокарты, в порядке увеличения стоимости.
Программа "База данных видеокарт" (DataBasev.1.02 beta.exe) должна быть написана на языке Visual Basic 6.3.
Составляющие программы:
На рисунке:
-слева – 4 файла программы:
- data.dat – информация о видеокартах (файл Excel (.xls) переименованный в .dat)
- DataBasev.1.02 beta.exe – исполняющий файл программы
- log.dat – история базы данных (файл с произвольным доступом)
- set.ini – файл (с произвольным доступом) для хранения настроек программы
- справа - рабочая папка проекта
Работа с программой:
При первой загрузке сразу создаются файл настроек и истории.
Загружается сплэшскрин:
‘создание новых типов данных
PrivateTypetune
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. Если в форму ничего не введено то появляется окно "Введите модель видеокарты".
‘добавление
PrivateSubCommand1_Click()
IfCombo1.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
Изменение видеокарты происходит с помощью поиска модели видеокарты, если видеокарта не найдена появляется окно "Модель не найдена". Как и в форме добавления есть защита от пустого ввода.
‘изменение
PrivateSubCommand1_Click()
IfCombo1.Text <> EmptyThen
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 "Введите модель"
GoTof
EndIf
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) = "Частотаядра/памяти"