Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по ФИО. Каждая компонента записи содержит следующую информацию об оценках учеников вашего класса по геометрии: ФИО (тип string); оценки за месяц (одномерный массив из 15 элементов) — Pascal(Паскаль)

uses crt;
type
StFio=string[30];
ocenka=array[1..15] of integer;
Recbook=record
a:ocenka;
Fio:StFio;
end;
var
BookFile:file of Recbook;
i,n:integer;
vid:byte;
End_menu:boolean;
work:RecBook;
Name:string[12];
procedure Name_File;
begin
write('введите имя файла: ');
readln(Name);
end;
Procedure AddRec;
Begin
writeln('ввод записи №: ', FilePos(bookFile)+1);
with work do
begin
write('Введите фамилию: ');
readln(Fio);
write('Введите количество оценок: ');
readln(n);
for i:=1 to n do
begin
write(i,' оценка: ');
readln(a[i]);
write(bookFile,work)
end;
end;
end;
procedure Create_book ;
var i,count:integer;
begin
Name_file;
assign(bookfile,Name);
rewrite(bookfile);
writeln('введите число записей в справочнике: ');
readln(count);
for i:=1 to count do
Addrec;
writeln('Создание записи завершено: ');
close(bookFile);
end;
procedure putrec;
begin
Read(Bookfile,work);
with work do
begin
write('Запись № ',FilePos(Bookfile),':');
writeln('ФИО: ' ,Fio,' Оценки ',a[i]:3);
end;
end;
procedure allRec;
begin
name_file;
assign(bookfile,name);
{$I-}
reset(bookfile);
{$I+1}
if IOresult=0 then
begin
Seek(BookFile,0);
writeln('Вывод справочника из файла: ',name);
while (not Eof(bookFile)) do
putrec;
end
else
writeln('Файла с именем '+Name+' на диске нет');
end;
Procedure FindFio; {Поиск по фамилии }
Var {объявление переменных}
BookFile:file of RecBook;
Work:RecBook;
Maska:StFio;
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,Fio)<>0 then{Найдена запись абонента с указанной фамилией}
Begin
Rez_Find:=True;
Inc(CountRec);{увеличиваем на один шаг}
Writeln('Фамилия: ', Fio,', Оценки ',a[i]:3);
End;
End;
If Rez_Find then {проверка условия}
Writeln('Число записей для ', Maska,'=',CountRec)
Else
Writeln('Hет абонентов с фамилией  ', Maska);
Close(BookFile);{закрытие файла}
End
Else
Writeln('Файла с именем '+Name+' на диске нет');
End;
Begin {основная программа}
ClrScr;{очистка экрана}
End_Menu:=False;
Repeat         {Повторять показ меню, пока End_Menu=False}
Writeln('Выберите вид работы ');
Writeln('1-создание нового файла ');
Writeln('2-просмотр списка ');
Writeln('3-поиск  ');
Writeln('0-завершение работы ');
Write('Ваш выбор: ');
Readln(Vid);{ввод данных}
Case Vid of  {Вызов разных процедур в зависимости от вида работы}
1:Create_Book;
2:aLLRec;
3:FindFio;
0:End_Menu:=True;
end;
Writeln('Нажмите клавишу Enter');
Readln;
ClrScr;{очистка экрана}
Until End_Menu;
end.

Leave a Comment

95 − 94 =