Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка лабораторные.doc
Скачиваний:
8
Добавлен:
09.11.2018
Размер:
466.43 Кб
Скачать

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

'----------------------------------------------------------------------------------