Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Informatika / 3. Учебник по языку Паскаль

.pdf
Скачиваний:
50
Добавлен:
14.03.2016
Размер:
3.17 Mб
Скачать

9. Записной тип данных. СУБД

231

9.3 Пример программы реализующей файлы записей

Если ранее описывался пример работы с массивом записей, то теперь есть смысл рассмотреть аналогичную задачу с использованием файлов записного типа. Сам текст несколько усложним. Итак,

ЗАДАЧА

Создать систему управления базой данных (СУБД) в которой предусмотреть следующие режимы: создание БД, вывод БД, добавление записей в БД, удаление записей из БД, корректировка сведений в БД, печать сведений из базы по запросу, выход из БД. Все режимы должны представлены в виде функционального меню. Режим печати по запросу должен предусматривать подменю выбора запросов. Тестирование СУБД осуществить на БД регистрации новорожденных.

Вбюро ведется учет всех регистраций новорожденных. О каждом новорожденном имеются следующие сведения: фамилия, имя, отчество, дата рождения, место рождения, дата регистрации, номер записи в книге регистрации, сведения о родителях: отце и матери (фамилия, имя, отчество, национальность), дата выдачи и номер свидетельства о рождении.

ВСУБД предусмотреть следующие запросы:

-список новорожденных, отсортированный по датам рождения;

-список новорожденных, зарегистрированных в определенный день;

-данные о ребенке по данным о родителях.

Структура записи «Новорожденный» (Trec) изображена на Рисунок 9.6.

Рисунок 9.6 Структура записи "Новорожденный"

232 9.3 Пример программы реализующей файлы записей

Без подробных комментариев, напишем программу, которая является одним из решений описанной задачи. Решение, конечно, не самое оптимальное и не самое красивое. Просто цель у приведенного алгоритма и кода на языке Pascal состоит в демонстрации принципиальной возможности осуществить выполнение задания средствами компонентных файлов.

Здесь мы используем функциональное меню, которое активно взаимодействует с человеком работающим с нашей базой. Реализация интерфейса «Пользователь-СУБД» зависит от конкретной ситуации, от возможностей операционной системы и от типа среды разработки. Поскольку реализация велась для Turbo Pascal 7.0, то и взаимодействие происходит в режиме доступном для TP 7.0, т.е. либо в MS DOS, либо в режиме эмуляции MS DOS в ОС Windows. Основной особенностью написанной ниже программы является активное использование средств стандартной библиотеки CRT для работы с экраном. Потому гарантии того, что приведенный код будет работать без доработок в иной, отличной от TP 7.0 среде, нет. Все комментарии к программе выполнены в тексте в фигурных скобках («{}») согласно синтаксису языка Turbo Pascal 7.0. Блок-схемы для получившейся программы показаны на рисунках 8.7–8.17.

 

9. Записной тип данных. СУБД

 

233

 

Начало

 

 

 

 

 

assign(F, ‘data.db’)

 

 

 

 

TitulnyList

 

 

 

 

 

TitulnyList

 

 

 

 

 

D:= Menu (X, Y)

 

 

 

 

D

 

 

 

 

1

2

3

4

5

6

VV (F)

AddRecords(F)

CorrectRecords(F)

 

 

PrintBase(F)

DeleteRecords(F)

 

Z0(F)

 

D = ND

 

 

 

 

 

Конец

 

 

 

 

 

Рисунок 9.7 Основная программа

 

234 9.3 Пример программы реализующей файлы записей

procedure TitulnyList

 

procedure IFF(var R:Trec)

 

Вывод

 

Ввод

 

Титульного листа,

 

R.f1

 

NAME, GROUP

 

 

 

Выход

а)

Выход

б)

 

 

 

procedure InputDate(Var D:TDate)

 

Ввод d.d, d.m, d.y

 

Procedure CF(Var F:TDB)

Выход

в)

 

 

 

IFF(R)

 

procedure

 

 

 

 

InputRecord(Var R:TREC)

R.F1≠ OutCod

 

Ввод d.d, d.m, d.y

 

 

InputRecord(R)

 

InputDate(R.f2)

 

 

F←R

 

Ввод R.F3

 

 

IFF(R)

 

InputDate(R.f4)

 

 

 

 

Ввод

 

 

R.F5,R.F6,R.F7

Выход

г)

д)

 

 

 

Выход

Рисунок 9.8 а) – титульный лист; б) – вывод заголовка при вводе записи; в) – ввод даты; г) – вызов ввода записи и сохранение ее в файл; д) – ввод записи

 

 

 

 

 

9. Записной тип данных. СУБД

235

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 9.9 а) – создание файла и вызов его заполнения б) – чтение файла и вывод базы на экран; в) – добавление записи в файл; г) – вывод экземпляра записи; д) – логическая функция сравнения полей пары переменных

236 9.3 Пример программы реализующей файлы записей

procedure DeleteRecords(var F: TDB)

 

 

 

 

 

Шаг 1-2 удаление

 

 

 

 

 

 

 

 

 

reset(F)

 

компоненты в файле

 

 

 

 

 

 

 

 

Ввод N, M

I := filePos(F) - 1

 

Not EOF(F)

Not EOF(F)

 

R←F

R←F

 

PrintRecord(R)

seek(F, filePos(F)-2)

 

‘Удалить 1-Да’

F←R

 

Ввод C

seek(F, filePos(F)+1)

 

C=1

seek(F, fileSize(F)-1)

1

 

Алгоритм удаления

 

компоненты в файле

truncate(F)

2

 

 

seek(F, I)

close(F)

 

Выход

 

Рисунок 9.10 Удаление записи

9. Записной тип данных. СУБД

237

procedure CorrectRecords(var F: TDB)

reset(F)

procedure SetLineColor(NP, NS: byte)

 

C=’1’

Not EOF(F)

 

 

textBackGround

textBackGround

 

(COLOR1)

(COLOR2)

R←F

textColor

textColor

 

(COLOR2)

(COLOR1)

PrintRecord(R)

 

 

‘Корректировать?

 

Выход

1-Да’

 

 

а)

 

Ввод C

 

 

 

 

C=’1’

 

IFF(R)

 

 

InputRecord(R)

 

seek(F, filePos(F)-1)

 

F←R

 

 

 

close(F)

 

 

б)

 

 

Выход

Рисунок 9.11 а) – установка цвета пункта меню; б) – корректировка записи

238 9.3 Пример программы реализующей файлы записей

function MenuZ(x,y: byte):byte

k:=1

 

i := 1 , NZ

 

Вывод Z[ i ]

 

Ввод C

 

ord(C)

72

80

k=1

k=NM

k:=NZ

k:=k - 1

 

k:=k + 1

 

k:=1

 

ord(C)=13

 

MenuZ := k

 

Выход

 

Рисунок 9.12 Функция меню запроса

 

 

9. Записной тип данных. СУБД

239

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 9.13 Сортировка файла

240 9.3 Пример программы реализующей файлы записей

procedure Z1(var F: TDB)

procedure Z3(var F: TDB)

 

reset(F)

assign(G, ’G.db’)

rewrite(G)

NOT EOF(F)

r← F

G ← r

SortFile(G)

PrintBase(G)

Выход

 

InputBase(S)

 

 

reset(F)

 

 

NOT EOF(F)

 

 

R← F

 

 

R.f6 = S

 

 

PrintRecord(R)

 

 

close(F)

 

а)

Выход

б)

 

Рисунок 9.14 а) – формирование нового файла; б) – вывод записей из файла по запросу