Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic for Applications. Учебный практикум.doc
Скачиваний:
144
Добавлен:
02.05.2014
Размер:
827.9 Кб
Скачать

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

Задача.

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

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

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

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

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

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

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

OpenИмяФайлаForRandomAs#ДискрипторФайла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»