Uses Crt;
Type
Stchact=string[20];
Stv=string[10];
Stgc=string[20];
Stnaz=string[20];
Stctrana=string[20];
RecBook=record
chact:Stchact;
vta:Stv;
gc:Stgc;
naz:Stnaz;
ctrana:stctrana;
End;
Var
BookFile:file of RecBook;
Work:RecBook;
Vid:byte;
End_Menu:boolean;
Name:String[12];
Procedure Name_File; {Ввод имени файла данных}
Begin
Write('Введите имя файла: ');
Readln(Name);
End;
Procedure AddRec; {Добавление записи в файл}
Begin
Writeln('Ввод записи № ', FilePos(BookFile)+1);
With Work do
Begin
Writeln('Введите названте: ');
Readln(naz);
Write('‚Введите высоту: ');
Readln(vta);
Write('Введите горную систему: ');
Readln(gc);
Write('Введите часть света: ');
Readln(chact);
Write('Введите страну: ');
Readln(ctrana);
Write(BookFile,Work);
End;
End;
Procedure Create;
Var
i,n:integer;
Begin
Name_File;
Assign(BookFile, Name); {Открытие нового файла для записи}
Rewrite(BookFile);
Writeln('Создание записей файла ', Name);
Write('Введите число записей : ');
Readln(n);
For i:=1 to n do
AddRec;
Writeln('Создание файла завершено: ');
Writeln('файл данных имеет: ', FileSize(BookFile),' записи');
Close(BookFile);
End;
Procedure OutputRec; {вывод текущей записи на экран}
Begin
Read(BookFile,Work);
With Work do
Begin
Write('Запись № ',FilePos(BookFile),':');
Writeln('Название: ', naz, ' высота: ',vta,' горная система: ',gc,' часть света: ',chact,' страна: ',ctrana);
End;
End;
Procedure OutputAllRec; {Вывод всех записей файла на экран}
Begin
Name_File;
Assign(BookFile,Name);
{$I-}
Reset(BookFile);
{$I+}
if IOResult=0 then
begin
Seek(BookFile,0);
Writeln('Вывод файла*: ', Name);
While (not EOF(BookFile)) do
OutPutRec;
End
Else
Writeln('Файла с именем ' +Name+' на диске нет ');
End;
Procedure Find; {Поиск}
Var
BookFile:file of RecBook;
Work:RecBook;
Maska:Stchact;
Rez_Find:boolean;
CountRec:integer;
Begin
Name_File;
Assign(BookFile,Name);
{$I-}
Reset(BookFile);
{$I+}
if IOResult=0 then
begin
Write('Введите часть света для поиска*: ');
Readln(Maska);
CountRec:=0;
While(not Eof(BookFile)) do
Begin
Read(BookFile,Work);
With Work do
If Pos(Maska,chact)<>0 then
Begin
Rez_Find:=True;
Inc(CountRec);
Writeln('Название: ', naz, ' высота*: ',vta);
End;
End;
If Rez_Find then
Writeln('Число записей ', Maska,'=',CountRec)
Else
Writeln('В справочнике нет : ', Maska);
Close(BookFile);
End
Else
Writeln('Файл на диске '+Name+' на диске нет ');
End;
Begin
ClrScr;
End_Menu:=False;
Repeat
Writeln('Выбери вид работы: ');
Writeln('1-создание нового файла: ');
Writeln('2-просмотр списка*: ');
Writeln('3-поиск: ');
Writeln('0-завершение работы: ');
Write('Твой выбор: ');
Readln(Vid);
Case Vid of
1:Create;
2:OutPutAllRec;
3:Find;
0:End_Menu:=True;
end;
Writeln('Нажми клавишу Enter');
Readln;
ClrScr;
Until End_Menu;
End.