Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебная практика по VBA.doc
Скачиваний:
2
Добавлен:
21.08.2019
Размер:
614.4 Кб
Скачать

8. Практическое занятие № 8. Файлы с произвольным доступом

Задача.

Ваша группа хранит данные о результатах экзамена в файле с произвольным (прямым) доступом.

  • Создайте произвольный файл по учёту результатов экзаменов. Храните в этом файле фамилию, год рождения, группу и оценку за экзамен. Для образца составьте файл на двадцать человек.

  • Выведите на форму фамилии тех студентов, оценка за экзамен которых «4» и «5»

Файлы произвольного доступа – это провозвестники файлов баз данных. В этих типах файлов применяется особая структура данных – пользовательский тип данных. Он содержит компоненты разного типа данных.

Структуру данных (пользовательский тип данных) называют записью, а компоненты этой структуры – полями записи.

База данных – это множество единообразных записей.

Для открытия файла используется оператор:

Open ИмяФайла For Random As #ДискрипторФайла Len=ДлинаЗаписи

Запись в файл:

Put # ДискрипторФайла, НомерЗаписи, ИмяПеременной

Чтение из файла:

Get # ДискрипторФайла, НомерЗаписи, ИмяПеременной

  • Откройте приложение MS Excel.

  • Выполните команду СервисàМакросРедактор Visual Basic или нажмите <Alt+F11>.

  • Добавьте форму (команда Insert UserForm).

  • Для изменения размеров формы используйте указатель мыши помещённый в правый нижний угол окна Формы(UserForm).

  • Разработайте пользовательский интерфейс, расположив на форме с помощью панели инструментов управления (ViewToolBox), следующие объекты управления: Label (Метка), TextBox (Текстовое поле), CommandButton (Командная кнопка), ListBox (Список).

  • В окне Properties (Свойства) для каждого объекта управления установить свойства, приведённые в таблице 7.

Таблица 7

Элемент управления

Свойства

Значения

UserForm

Caption

Произвольный доступ

Label1

Caption

В группе

Label2

Name

lblKolichestvoZapisei

Label3

Caption

Фамилия И О

ListBox1

Name

lstFIO

Label4

Caption

Группа

ListBox1

Name

lstGroup

Label5

Caption

Оценка

ListBox1

Name

lstOtsenka

CommandButton1

Name

cmdVvodSpiskaStudentov

Caption

Ввод

CommandButton2

Name

cmdChtenieIzFaila

Caption

Чтение из файла

  • Примерный интерфейс программы может выглядеть так:

База данных содержит всего одну таблицу – сведения о студентах. Каждая строка этой таблицы представляется собой упорядоченный набор следующих значений:

  • Фамилия И.О. – строка (тип String) до 20 символов.

  • ДатаРождения – данное типа String до 4.

  • Группа – строка длиной до 5 символов.

  • Оценка – 1 символ.

Каждая запись будет состоять из 30 символов.

Создадим свой тип данных.

  • Код программы:

Private Type Dannye

FIO As String * 20

GodRozhdenija As String * 4

Group As String * 5

Otsenka As Byte

End Type

Dim Student As Dannye

Dim DlinaZapisi As Integer

Dim KolichestvoZapisei As Integer

Private Sub Form_Load()

DlinaZapisi = Len(Student)

Open "Database.dbf" For Random As #1 Len = Len(Student)

KolichestvoZapisei = LOF(1) \ DlinaZapisi

lblKolichestvoZapisei = Str(KolichestvoZapisei) + " записей"

Close #1

End Sub

Private Sub cmdVvodSpiskaStudentov_Click()

Dim i As Integer

Dim Kolichestvo As Integer

DlinaZapisi = Len(Student)

Open "Database.dbf" For Random As #1 Len = Len(Student)

KolichestvoZapisei = LOF(1) \ DlinaZapisi

Kolichestvo = InputBox("Введите количество записей", "Ввод числа", 0)

If Kolichestvo = 0 Then Exit Sub

For i% = 1 To Kolichestvo

Student.FIO = InputBox("Введите фамилию студента", "Ввод данных о студенте")

Student.GodRozhdenija = InputBox("Введите год рождения студента", "Ввод данных о студенте")

Student.Group = InputBox("Введите группу студента", "Ввод данных о студенте")

Student.Otsenka = InputBox("Введите оценку студента", "Ввод данных о студенте")

Put #1, i + KolichestvoZapisei, Student

Next

Close #1

End Sub

Private Sub cmdChtenieIzFaila_Click()

Dim i As Integer

lstFIO.Clear

lstGroup.Clear

lstOtsenka.Clear

DlinaZapisi = Len(Student)

Open "Database.dbf" For Random As #1 Len = DlinaZapisi

KolichestvoZapisei = LOF(1) \ DlinaZapisi

i = 1

Do While i <= KolichestvoZapisei

Get #1, i, Student

lstFIO.AddItem Student.FIO

lstGroup.AddItem Student.Group

lstOtsenka.AddItem Student.Otsenka

i = i + 1

Loop

Close #1

End Sub

  • Перед запуском программы сохраните файл под именем «Прямой доступ».

  • Составьте список из 20 фамилий студентов вашей группы.

  • Измените код программы так, чтобы на форму выводились фамилии студентов, сдавших экзамен на «4» и «5».