Informatika / 3. Учебник по языку Паскаль
.pdf
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 Основная программа |
|
|||
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 Удаление записи |
||
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 Функция меню запроса |
