Loaded:=n;
while not Eof(f) and (n<Nmax) do
begin
inc(n);
read(f, BGTU^[n]);
if IoResult<>0 then
begin
write('Ошибка ввода...');
gotoXY(4, 7);
n:= Loaded;
break;
end;
end;
Loaded:=n-Loaded;
if not eof(f) then write('База данных заполнена...');
close(f);
gotoXY(4, 9);
write('Загружено записей: ', Loaded);
end;
{$I+}
PressKey;
ClrScr;
PrintMainFraime(2, 2, 78, 15);
PrintMainMenu(1);
end;
procedure InputData(var n: Word; BGTU: BasePointer); {III Пункт меню}
begin
ClrScr;
gotoXY(32, 1);
write('Добавление записи');
PrintMainFraime(2, 2, 78, 15);
gotoXY(4, 3);
writeln('Ввод записи номер ', n+1);
gotoXY(4,5);
with BGTU^[n+1] do
begin
write('Фамилия: '); Name:=SafeRead(20, 1, 0);
gotoXY(4,6);
write('Год Рождения: '); BirthYear:=SafeRead(4, 1, 1);
gotoXY(4, 7);
write('Дом. адрес: '); Address:=SafeRead(50, 1, 0);
gotoXY(4, 8);
write('Телефон: '); Phone:=SafeRead(20, 1, 0);
gotoXY(4, 9);
write('Факультет: '); Facultet:=SafeRead(1, 1, 0);
gotoXY(4, 10);
write('Группа: '); Group:=SafeRead(3, 1, 0);
end;
inc(n);
gotoXY(4, 12);
write('Ввод успешно завершен.');
PressKey;
ClrScr;
PrintMainFraime(2, 2, 78, 11);
PrintMainMenu(1);
end;
procedure OutputData(n: Word; BGTU: BasePointer); {IV пункт меню}
var Start, Finish: Word;
Quit: Boolean;
Ch: Char;
procedure PrintPart(Start, Finish: Word);
var zicl, zicl2: Word;
begin
GotoXY(4,3);
for zicl:=Start to Finish do
begin
write('[');
if zicl<100 then write('0');
if zicl<10 then write('0');
write(zicl,']');
with BGTU^[zicl] do
begin
gotoXY(10,WhereY); write(Name);
for zicl2:=1 to 20-Length(Name) do write(' ');
gotoXY(35, WhereY); write(Facultet);
gotoXY(36, WhereY); write(Group);
for zicl2:=1 to 3-Length(Group) do write(' ');
gotoXY(44, WhereY); write(Phone);
for zicl2:=1 to 20-Length(Phone) do write(' ');
gotoXY(4, WhereY+1);
end;
end;
gotoXY(1, 25);
end;
begin {OutputData}
ClrScr;
gotoXY(23, 1);
write('Вывод сведений о всех сотрудниках');
PrintMainFraime(2, 2, 78, 23);
if n=0 then
begin
gotoXY(4, 4);
write('База данных пуста...');
PressKey;
end
else
begin
Quit:=False;
Start:=1;
if n>20 then Finish:=20 else Finish:=n;
PrintPart(Start, Finish);
repeat
Ch:=ReadKey;
case Ord(Ch) of
27: Quit:=True;
80: if Finish<n then begin Inc(Start); Inc(Finish); PrintPart(Start, Finish);End;
72: if Start>1 then begin Dec(Start); Dec(Finish); PrintPart(Start, Finish); End;
end;
until Quit;
end;
ClrScr;
PrintMainFraime(2, 2, 78, 11);
PrintMainMenu(1);
end;
procedure FindData(n: Word; BGTU: BasePointer); {V Пункт меню}
var Search: Person;
Quit, QuitAll: Boolean;
Ch: Char;
zicl: Integer;
procedure PrintAllData(poz: Integer);
begin
Clear(18, 14, 70, 19);
with BGTU^[zicl] do
begin
gotoXY(4, 13); write('Фамилия: ',Name);
gotoXY(4, 14); write('Год рождения: ',BirthYear);
gotoXY(4, 15); write('Адрес: ',Address);
gotoXY(4, 16); write('Телефон: ',Phone);
gotoXY(4, 17); write('Факультет: ',Facultet);
gotoXY(4, 18); write('Группа: ',Group);
end;
end;
begin {FindData}
ClrScr;
gotoXY(38, 1);
write('Поиск');
PrintMainFraime(2, 2, 78, 22);
gotoXY(4,4);
if n=0 then
begin
write('База данных пуста...');
PressKey;
end
else
begin
write('Фамилия: '); Search.Name:=SafeRead(20, 0, 0);
gotoXY(4,5);
write('Год Рождения: '); Search.BirthYear:=SafeRead(4, 0, 1);
gotoXY(4, 6);
write('Дом. адрес: '); Search.Address:=SafeRead(50, 0, 0);
gotoXY(4, 7);
write('Телефон: '); Search.Phone:=SafeRead(20, 0, 0);
gotoXY(4, 8);
write('Факультет: '); Search.Facultet:=SafeRead(1, 0, 0);
gotoXY(4, 9);
write('Группа: '); Search.Group:=SafeRead(5, 0, 0);
gotoXY(4, 11); write('Результаты поиска:');
gotoXY(4, 20); write('Чтобы выйти из Поиска, нажмите Esc');
gotoXY(4, 21); write('Чтобы продолжить Поиск, нажмите Enter');
zicl:=1;
Quit:=False;
QuitAll:=False;
while (zicl<=n) and not QuitAll do
begin
if (Search.Name<>'') and (BGTU^[zicl].Name=Search.Name) or
(Search.BirthYear<>'') and (BGTU^[zicl].BirthYear=Search.BirthYear) or
(Search.Address<>'') and (BGTU^[zicl].Address=Search.Address) or
(Search.Phone<>'') and (BGTU^[zicl].Phone=Search.Phone) or
(Search.Facultet<>'') and (BGTU^[zicl].Facultet=Search.Facultet) or
(Search.Group<>'') and (BGTU^[zicl].Group=Search.Group) then
begin
PrintAllData(zicl);
repeat
Ch:=ReadKey;
case Ord(ch) of
27: begin Quit:=True; QuitAll:=True; end;
13: begin inc(zicl); Quit:=True; end;
end;
until Quit;
end else inc(zicl);
end;
end;
if not QuitAll then PressKey;
ClrScr;
PrintMainFraime(2, 2, 78, 11);
PrintMainMenu(1);
end;
procedure ChangeData(n: Word; BGTU: BasePointer); {VI пункт меню}
var ChangeName: String;
zicl, poz: Integer;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.