Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

Добавление записи в файл

Новые записи, как правило, дописываются в конец файла. Этот режим часто называют расширением файла. Для реализации этого режима файл открывается с помощью процедур Assign и Reset. Далее определяется количество компонент в файле с помощью процедуры FILESIZE и указатель файла смещается с помощью процедуры Seek за последний компонент файла (на метку EOF). Далее осуществляется ввод информации в новую запись, которая помещается в файл с помощью процедуры WRITE. После записи последней компоненты файл закрывается с помощью процедуры Close.

Пример 10. Требуется разработать программу, обеспечивающую добавление новых записей в файл STUDENTS.DAT. В служебное поле DATE каждой новой записи следует автоматически (то есть, используя таймер компьютера) помещать дату создания этой записи в немецком формате.

PROGRAM PR10;

USES CRT, DOS;

Type STUDENT = record

tab : Longint;

Fio : String[15];

Data : String[8];

Grup : String[7];

Stepa: Real;

DEL: BYTE;

DATE: STRING[8]

end; {RECORD}

Var S:STUDENT; St: String; CH, CH1:CHAR;

Fs, Fi: File of STUDENT; NZ:WORD;

FUNCTION NOW: STRING; { Формирование даты }

VAR YEAR, MONTH, DAY, DAYOFWEEK: WORD;

GG,MM,DD: STRING[2]; ST: STRING[4];

BEGIN

GETDATE(YEAR, MONTH, DAY, DAYOFWEEK);

STR(YEAR:4, ST); GG := ST[3] + ST[4];

STR(MONTH:2, MM); STR(DAY:2, DD);

IF MONTH < 10 THEN MM[1] := '0';

IF DAY < 10 THEN DD[1] := '0';

NOW := DD + '.' + MM + '.' + GG; { Немецкий формат }

END; {Конец функции NOW}

Begin

Writeln('Введите имя основного файла: '); Readln(St);

Assign (Fs,St); Reset(Fs); {Открытие основного файла}

Seek(Fs, FILESIZE(FS)); {Установка указателя на конец файла}

While TRUE {Просмотр основного файла}

Do begin

Writeln('Enter - ввод сведений о студенте, ESC - конец: ');

CH := READKEY; {Ожидание нажатия клавиши}

IF ORD(CH) = 0

THEN CH1:=READKEY;{КЛАВИШИ ВТОРОЙ ГРУППЫ}

IF ORD(CH) = 27 THEN break;

WRITE('Номер зачетки => '); READLN(S.TAB);

WRITE('Фамилия => '); READLN(S.FIO);

WRITE('Дата рождения => '); READLN(S.Data);

WRITE('Группа => '); READLN(S.Grup);

WRITE('Размер стипендии, руб. => '); READLN(S.STEPA);

S.DATE := NOW;

WRITE(Fs, S)

end;

Close(Fs);

END.

С помощью этой программы добавим к 20 записям о студентах (см. табл. 3.1) еще три приведенные ниже:

100021

ПАВЛИНОВ

01.02.91

ПИ-11

350.00

100020

НЕКРАСОВА

13.09.90

ИС-11

350.00

100023

ФОМИН

13.09.89

ИС-11

850.00

3.7 Информационное взаимодействие текстовых файлов и файлов записей

При работе с базами данных часто возникает необходимость скопировать информацию из базы данных в текстовый файл. Текстовый файл может быть просмотрен и подкорректирован с помощью любого текстового редактора, в том числе и встроенным редактором интегрированной среды BORLAND PASCAL. Напомним, что любая система программирования работает с текстовыми файлами, поэтому сброс информации в текстовый файл это первый шаг. Второй шаг это копирование информации из текстового файла в базу данных.