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