Порядок замены содержимого записи

 

1. Связать файловую переменную с именем файла (Assign).

2. Открыть существующий файл (Reset)

3. Установить указатель файла перед компонентом с нужным номером Seek(файловая_переменная,номер_компоненты)

4. Прочитать компоненту из файла (Read)

5. Установить указатель файла перед компонентом с нужным номером Seek(файловая_переменная,номер_компоненты)

6. Записать компонент в файл (Write)

7. Закрыть файл (Close).

 

Пример. Создать файл записей, содержащих сведения о сдаче студентами сессии. Структура записи: фамилии студента, номер группы, результаты сдачи трех экзаменов. Распечатать список студентов, получающих стипендию. Условие получения стипендии – средний балл больше 5. Предусмотреть все виды корректировки файла.

Program Zapisi;

Uses Crt;

Const

FileName:String[10]=’Stud.dat’; {имя Файла}

Type Sved=record

Fio:String[50]; {Фамилия}

Nom:String[10]; {Номер группы}

b1,b2,b3:0..10; {Результаты сдачи экзаменов}

sb:Real; {Средний балл}

end;

Var

Fv,Fv1:File of Sved;

Rv: Sved;

i,N:Byte;

{Создание файла записей}

Procedure Vvod;

Begin

Assign (Fv,FileName);

Rewrite(Fv);

While True do

With Rv do

Begin

Clrscr;

Write ('ФИО (признак окончания ввод ***)-->');

ReadLn(Fio);

If Fio=’***’ then

Begin

Close(Fv);

Exit;

end;

Write ('Группа -->');

ReadLn(Nom);

Write ('Оценки -->');

ReadLn(b1,b2,b3);

sb:=(b1+b2+b3)/3;

Write(Fv,Rv);

End

end;

{Вывод исходного файла записей}

Procedure Vivod;

Begin

clrscr;

WriteLn ('Сведения о студентах:');

WriteLn ('Фамилия Группа Оценки Средний балл');

Assign (Fv,FileName);

Reset(Fv);

While not EOF(Fv) do

With Rv do

Begin

Read(Fv,Rv);

WriteLn (Fio:10,Nom:10,b1:2,b2:2,b3:2,sb:5:1);

end;

Close (Fv);

Repeat Until KeyPressed;

end;

{Вывод списка студентов, получающих стипендию}

Procedure Obr;

Begin

clrscr;

WriteLn ('Сведения о студентах:');

WriteLn ('Фамилия Группа Оценки Средний балл');

Assign (Fv,FileName);

Reset(Fv);

While not EOF(Fv) do

With Rv do

Begin

Read(Fv,Rv);

If sb>5 then

WriteLn(Fio:10,Nom:10,b1:2,b2:2,b3:2,sb:5:1);

end;

Close (Fv);

Repeat Until KeyPressed;

end;

{Расширение файла за счет внесения новых компонент}

Procedure Rasch;

Begin

Assign (Fv,FileName);

Reset(Fv);

Seek(Fv,FileSize(Fv));

While True do

With Rv do

Begin

Clrscr;

Write ('ФИО (признак окончания ввод ***)-->');

ReadLn(Fio);

If Fio=’***’ then

Begin

Close(Fv);

Exit;

end;

Write ('Группа -->');

ReadLn(Nom);

Write ('Оценки -->');

ReadLn(b1,b2,b3);

sb:=(b1+b2+b3)/3;

Write(Fv,Rv);

End

end;

{Замена содержимого записи}

Procedure Zam_zapisi;

Begin

Clrscr;

Assign (Fv,FileName);

Reset(Fv);

Write (’Введите номер заменяемой записи N=’);

ReadLn (N);

Seek(Fv,N-1);

Read(Fv,Rv);

Write ('ФИО: ',Fio,'-->');

ReadLn(Fio);

Write ('Группа: ',Nom,' -->');

ReadLn(Nom);

Write ('Оценки: ',b1:2,b2:2,b3:2,' -->');

ReadLn(b1,b2,b3);

sb:=(b1+b2+b3)/3;

Seek(Fv,N-1);

Write(Fv,Rv);

Close(Fv);

end;

{Удаление записи из файла}

Procedure Udal_zapisi;

Begin

Clrscr;

Assign (Fv,FileName);

Reset(Fv);

Write (’Введите номер удаляемой записи N=’);

ReadLn (N);

Assign (Fv1,’Temp.dat’); {создаем промежуточный файл}

Rewrite(Fv1); {открываем его для записи}

 

For i:=1 to N-1 do{считываем из исходного файла и записываем в промежуточный файл все компоненты до удаляемой}

Begin

Read(Fv,Rv);

Write(Fv1,Rv);

end;

Read(Fv,Rv); {считываем удаляемую компоненту}

{ но не записываем}

While not EOF(Fv) do{считываем все остальные}

{компоненты до конца файла}

Begin

Read(Fv,Rv);

Write(Fv1,Rv);

end;

Close(Fv);

Close(Fv1);

{переписываем данные из промежуточного файла в исходный}

Assign (Fv,FileName);

Rewrite(Fv);

Assign (Fv1,’Temp.dat’);

Reset(Fv1);

While not EOF(Fv1) do

Begin

Read(Fv1,Rv);

Write(Fv,Rv);

end;

Close(Fv);

Close(Fv1);

end;

{Основная программа}

Begin

Vvod;

Vivod;

Obr;

Rasch;

Zam_zapisi;

Udal_zapisi;

End.








Дата добавления: 2015-04-15; просмотров: 711;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.028 сек.