Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

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



 

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-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.