Линейный связанный список. Создание базы данных для отдела кадров, страница 4

var Change, Temp: Link;

StrData: String;

begin

ClrScr;

GotoXY(32, 1);

Write('Изменение записи');

PrintMainFraime(2, 2, 78, 23);

GotoXY(4, 4);

if n=0 then

Write('База данных пуста...')

else

    begin

New(Change);

Write('Введите фамилию: '); Change^.Name:=SafeRead(20, 1, 0);

with Change^ do

begin

BirthYear:='';

Address:='';

Phone:='';

Facultet:='';

Group:='';

end;

Temp:=BGTU;

SpSearch(Temp, Change);

if Temp=Nil then

begin

GotoXY(4,6);

Write('Запись отсутствует в базе...');

end

      else

        begin

with Temp^ do

begin

GotoXY(4,6); Write('Фамилия:      ', Name);

GotoXY(4,7); Write('Год рождения: ', BirthYear);

GotoXY(4,8); Write('Адрес:        ', Address);

GotoXY(4,9); Write('Телефон:      ', Phone);

GotoXY(4,10); Write('Факультет:    ', Facultet);

GotoXY(4,11); Write('Группа:       ', Group);

Change^.BirthYear:=BirthYear;

Change^.Address:=Address;

Change^.Phone:=Phone;

Change^.Facultet:=Facultet;

Change^.Group:=Group;

end;

GotoXY(4, 13);

Write('Введите новые данные:');

GotoXY(4,15);

with Change^ do

begin

Write('Фамилия:      ');

StrData:=SafeRead(20, 0, 0);

if StrData='' then Write('<не изменено>') else Name:=StrData;

GotoXY(4,16); Write('Год Рождения: ');

StrData:=SafeRead(4, 0, 1);

if StrData='' then Write('<не изменено>') else BirthYear:=StrData;

GotoXY(4, 17); Write('Дом. адрес:   ');

StrData:=SafeRead(50, 0, 0);

if StrData='' then Write('<не изменено>') else Address:=StrData;

GotoXY(4, 18); Write('Телефон:      ');

StrData:=SafeRead(20, 0, 0);

if StrData='' then Write('<не изменено>') else Phone:=StrData;

GotoXY(4, 19); Write('Факультет:    ');

StrData:=SafeRead(1, 0, 0);

if StrData='' then Write('<не изменено>') else Facultet:=StrData;

GotoXY(4, 20); Write('Группа:       ');

StrData:=SafeRead(3, 0, 0);

if StrData='' then Write('<не изменено>') else Group:=StrData;

GotoXY(4, 22);

end;

SpDelete(BGTU, Temp);

SpInsert(BGTU, Change);

Write('Данные успешно изменены...');

end;

    end;

PressKey;

end;

procedure DeleteData(var n: Integer; var BGTU: Link); {VI пункт меню}

var Delete, Temp: Link;

Ch: Char;

begin

ClrScr;

GotoXY(32, 1);

Write('Удаление записи');

PrintMainFraime(2, 2, 78, 23);

GotoXY(4, 4);

if n=0 then

Write('База данных пуста...')

else

begin

New(Delete);

Write('Введите фамилию: '); Delete^.Name:=SafeRead(20, 1, 0);

with Delete^ do

begin

BirthYear:='';

Address:='';

Phone:='';

Facultet:='';

Group:='';

end;

Temp:=BGTU;

SpSearch(Temp, Delete);

if Temp=Nil then

begin

GotoXY(4,6);

Write('Запись отсутствует в базе...');

end

      else

        begin

with Temp^ do

begin

GotoXY(4,6); Write('Фамилия:      ', Name);

GotoXY(4,7); Write('Год рождения: ', BirthYear);

GotoXY(4,8); Write('Адрес:        ', Address);

GotoXY(4,9); Write('Телефон:      ', Phone);

GotoXY(4,10); Write('Факультет:    ', Facultet);

GotoXY(4,11); Write('Группа:       ', Group);

end;

GotoXY(4, 13);

Write('Удалять? [y/n]: ');

repeat

Ch:=ReadKey;

until Ch in ['Y', 'y', 'N', 'n'];

Write(Ch);

if (Ch='Y') or (Ch='y') then SpDelete(BGTU, Temp);

Dec(n);

Dispose(Delete);

GotoXY(4, 15);

Write('Запись успешно удалена...');

end;

    end;

PressKey;

end;

procedure SaveData(n: Integer; BGTU: Link); {VII Пункт меню}

var f: Text;

Path: String;

begin

ClrScr;

GotoXY(27, 1);

Write('Сохранение в текст. файла');

PrintMainFraime(2, 2, 78, 15);

GotoXY(4, 4);

if n=0 then Write('База данных пуста...')

else

    begin

Write('Введите имя файла: ');

Path:=SafeRead(50,1,0);

GotoXY(4, 6);

Assign(f, Path);

{$I-}

Rewrite(f);

{$I+}

if IoResult<>0 then

Write('Ошибка открытия файла...')

else

        begin

while BGTU<>Nil do

begin

with BGTU^ do

begin

Writeln(f, Name);

Writeln(f, BirthYear);

Writeln(f, Address);

Writeln(f, Phone);

Writeln(f, Facultet);

Writeln(f, Group);

end;

BGTU:=BGTU^.Next;

end;

Close(f);

GotoXY(4, 8);

Write('Данные успешно сохранены...');

end;

end;

PressKey;

end;

procedure About; {VIII пункт меню}

begin

ClrScr;

PrintMainFraime(10, 6, 60, 15);

GotoXY(24, 7); Write('Кафедра Вычислительной Техники');

GotoXY(21, 9); Write('Лабораторная работа по информатике №5');

GotoXY(13, 11); Write('ТЕМА:      Типизированные и текстовые файлы');

GotoXY(13, 12); Write('ВЫПОЛНИЛ:  Суханов Александр');

GotoXY(13, 13); Write('ГРУППА:    И433');

GotoXY(32, 15); Write('Данные о системе:');

GotoXY(13, 16); Write('Кол-во загруженных записей:   ', n);

GotoXY(13, 17); Write('Максимальное кол-во записей:  ', n + MaxAvail div SizeOf(Person)-2);

GotoXY(13, 18); Write('Свободно ресурсов:            ', MemAvail,' Bait');

PressKey;

end;

end.