
- •Крещенко л.Ф. Проектування баз даних
- •6.050102 “Економічна кібернетика”
- •Тема 1. Файлові системи баз даних (4 години) Лабораторні роботи № 1,2. Робота з базою даних як з файлами прямого доступу (4 години).
- •Тема 2. Реляційна алгебра (4 години)
- •Виконання роботи
- •Додаток а. Текст програми мовою vba для роботи з файлами прямого доступу
- •InputBox("Введіть номер запису абонента", _
- •If Читати_Абонента(dhcFile, Абонент) Then
- •Додаток б. Форма та текст програми мовою vb .Net для роботи з файлами прямого доступу
- •Список літератури
- •Тема 1. Файлові системи баз даних (4 години) 3
- •Тема 2. Реляційна алгебра (4 години) 6
InputBox("Введіть номер запису абонента", _
"Номер абонента", 1)
If Номер_Для_Пошуку > 0 Then
Абонент.Номер = Номер_Для_Пошуку
Else
MsgBox "Номер запису абонента повинен бути позитивним"
Exit Sub
End If
If Читати_Абонента(dhcFile, Абонент) Then
' Якщо необхідно внести зміни даних для абонента,
' це можна зробити нижче на зразок:
' Абонент.Телефон = "22-33-44"
' Абонент.Адреса = "вул.Шевченка,78"
' ..........
' а потім записати зміни у файл:
' Call Записати_Зміни(dhcFile, Абонент)
' Далі просто віведемо дані ждя знайденого абонента
Debug.Print Абонент.Номер, Абонент.ПрізвищеІБ, _
Абонент.Адреса, Абонент.Телефон
Else
Debug.Print "Запис не знайдено"
End If
End Sub
'---------------------------------------------------------------------------------- Процедура для створення файлу з базою даних абонентів
' Складається з трьох записів і використовується у подальшому
' для роботи з файлом як простою базою даних (вибірка, зміни,
' додавання тощо)
'----------------------------------------------------------------------------------
Sub Створити_Новий_Файл()
Dim Абонент As Запис_Абонента, Номер_Для_Пошуку As Integer
Const dhcFile = "C:\Temp\Абоненти.DB"
' Створити запис для першого абонета
With Абонент
.Номер = 1
.ПрізвищеІБ = "Петренко В.М."
.Адреса = "вул.Жовтнева,34"
.Телефон = "11-12-13"
End With
' Записати запис для першого абонета у файл
Call Записати_Зміни(dhcFile, Абонент)
' Створити запис для другого абонета
With Абонент
.Номер = 2
.ПрізвищеІБ = "Власенко К.О."
.Адреса = "вул.Фрунзе,21"
.Телефон = "15-16-17"
End With
' Записати запис для другого абонента у файл
Call Записати_Зміни(dhcFile, Абонент)
' Створити запис для третього абонента
With Абонент
.Номер = 3
.ПрізвищеІБ = "Усенко В.Н."
.Адреса = "вул.Пушкіна,56"
.Телефон = "25-26-27"
End With
' Записати запис для третього абонента у файл
Call Записати_Зміни(dhcFile, Абонент)
End Sub
Додаток б. Форма та текст програми мовою vb .Net для роботи з файлами прямого доступу
Public Class Form1
Inherits System.Windows.Forms.Form
'---------------------------------------------------------------------------------- ' Оголосити нову структуру даних
Structure Абонент
Dim Номер As Single ' Номер запису абонента
Dim ПрізвищеІБ As String ' Прізвище абонента
Dim Адреса As String ' Адреса абонента
Dim Телефон As String ' Телефон абонента
End Structure
'----------------------------------------------------------------------------------Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim BW As BinaryWriter
Dim FS As FileStream
' Створити новий файловий потік
FS = New FileStream("C:\Temp\NetTelephon.dat", _
System.IO.FileMode.OpenOrCreate, _
System.IO.FileAccess.Write)
' Створити новий об'єкт записувача у поток
BW = New BinaryWriter(FS)
' Позиціонувати покажчик на початок файлу
BW.BaseStream.Seek(0, SeekOrigin.Begin)
' Внести дані у структуру для першого абонента
Dim p As New Абонент
p.Номер = 1
p.ПрізвищеІБ = "Петренко В.І."
p.Адреса = "вул.Пушкіна,22"
p.Телефон = "11-22-33"
' Записати дані у файл
SaveRecord(BW, p)
' Внести дані у структуру для другого абонента
p = New Абонент
p.Номер = 2
p.ПрізвищеІБ = "Власенко М.П."
p.Адреса = "вул.Фрунзе,12"
p.Телефон = "22-33-44"
' Записати дані у файл
SaveRecord(BW, p)
' Внести дані у структуру для третього абонента
p = New Абонент
p.Номер = 3
p.ПрізвищеІБ = "Перечитайло Д.О."
p.Адреса = "вул.Половка,56"
p.Телефон = "21-32-43"
' Записати дані у файл
SaveRecord(BW, p)
BW.Close() ' Закрити записувач
FS.Close() ' Закрити потік
FS = Nothing
MsgBox("Записи збережено")
' Зробити кнопку "Показати" доступною
Button2.Enabled = True
End Sub
'----------------------------------------------------------------------------------
' Процедура збереження даних структури у файл
Sub SaveRecord(ByVal writer As BinaryWriter, _
ByVal record As Абонент)
writer.Write(record.Номер)
writer.Write(record.ПрізвищеІБ)
writer.Write(record.Адреса)
writer.Write(record.Телефон)
End Sub
'---------------------------------------------------------------------------------- Процедура відображення даних структури у полі форми
Sub ShowRecord(ByVal record As Абонент)
TextBox1.AppendText(vbCrLf)
TextBox1.AppendText(record.Номер.ToString & vbCrLf)
TextBox1.AppendText(record.ПрізвищеІБ & vbCrLf)
TextBox1.AppendText(record.Адреса & vbCrLf)
TextBox1.AppendText(record.Телефон & vbCrLf)
TextBox1.AppendText("----------------------" & vbCrLf)
End Sub
'---------------------------------------------------------------------------------- Оброблення події натискання на кнопку "Прочитати записи"
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim BR As BinaryReader
Dim FS As FileStream
' Створити новий файловий потік
FS = New Syіtem.IO.FileStream("C:\Temp\NetTelephon.dat", _
FileMode.Open, _
FileAccess.Read)
' Створити новий об'єкт читача з потоку
BR = New System.IO.BinaryReader(FS)
' Позиціонувати покажчик на початок файлу
BR.BaseStream.Seek(0, SeekOrigin.Begin)
Dim p As New Абонент
' Очистимо текстове поле для відображення даних
TextBox1.Clear()
Dim c As Integer
c = BR.PeekChar
While FS.Position < FS.Length
Console.WriteLine(c)
p = Nothing
' Читаємо поля з файлу та заповнюємо структуру
p.Номер = BR.ReadSingle
p.ПрізвищеІБ = BR.ReadString
p.Адреса = BR.ReadString
p.Телефон = BR.ReadString
' Показати структуру
ShowRecord(p)
c = BR.PeekChar
End While
BR.Close()
FS.Close()
End Sub
End Class
'----------------------------------------------------------------------------------