лабы 2 семестр / 10 лаба
.docUses Crt;
Const
Name = 'Base.dat';
Type
b = Record
FIO: String[30];
Gruppa,data,zach: Byte;
Rmatem,rfizik,summ: Real;
End;
Var i: Byte;
Index: Byte;
f: Text;
Procedure Header(s:String);
Begin
ClrScr;
TextColor(12);
GotoXY(35,1); Write(s);
GotoXY(1,3);
TextColor(10);
End;
Procedure Max;
Begin
Reset(f);
Index:= 0;
While not EOF(f) Do Begin
ReadLn(f);
Inc(Index);
End;
if Index<>0 then Dec(Index,2);
End;
Procedure Viewing;
Var s: String[80];
Begin
Reset(f);
Header('Просмотр');
TextColor(15);
ReadLn(f,s); WriteLn(s);
TextColor(10);
While not EOF(f) Do Begin
ReadLn(f,s);
Writeln(s);
End;
ReadKey;
End;
Procedure Additing;
Var W: b;
Begin
Append(f);
Repeat
With W Do Begin
Write('ФИО: '); ReadLn(FIO);
Write('Группа: '); ReadLn(gruppa);
Write('Дата рождения: '); ReadLn(data);
Write('Зачетная книжка: '); ReadLn(zach);
Write('Рейтинг по математике: '); ReadLn(rmatem);
Write('Рейтинг по физике: '); ReadLn(rfizik);
summ:= rfizik + rmatem;
WriteLn(f,FIO:30,gruppa:3,data:5,
zach:7,rmatem:7:1,rfizik:10:2,summ:10:2);
End;
WriteLn;
WriteLn('Enter - меню');
WriteLn('Любая другая - продолжить');
Until ReadKey=#13;
End;
{
Procedure Editing;
Begin
Repeat
Header('Изменение');
Write('Введите номер карточки: ');
ReadLn(i);
if not (i in [1..Max]) then Begin
TextColor(15);
WriteLn('Неправильно введен номер карточки!');
WriteLn('Он должен быть: 1..',Max);
TextColor(10);
ReadKey;
Break;
End
Else With a[i] Do Begin
Write('ФИО: '); ReadLn(FIO);
Write('Группа: '); ReadLn(gruppa);
Write('Дата рождения: '); ReadLn(data);
Write(' Зачетная книжка: '); ReadLn(zach);
Write('Рейтинг по математике: '); ReadLn(rmatem);
Write('Рейтинг по физике: '); ReadLn(rfizik);
summ:= rfizik + rmatem;
End;
WriteLn;
WriteLn('Enter - меню');
WriteLn('Любая другая - продолжить');
Until ReadKey=#13;
End;
Procedure ClearArray;
Begin
For i:=1 to Max Do
With a[i] Do Begin
FIO:='Фамилия Имя Отчество';
gruppa:=0;
data:=0;
zach:=0;
rmatem:=0;
rfizik:=0;
summ:=0;
End;
End;
Procedure Deleting;
Begin
Repeat
Header('Удаление');
Writeln('Введите:');
Writeln('1 - чтобы удалилить одну запись');
Writeln('0 - чтобы удалилить все записи');
Case ReadKey of
'1': Begin
Write('Введите номер карточки: ');
ReadLn(i);
With a[i] Do Begin
FIO:='Фамилия Имя Отчество';
gruppa:=0;
data:=0;
zach:=0;
rmatem:=0;
rfizik:=0;
summ:=0;
End;
TextColor(13);
WriteLn('Данные удалены');
TextColor(10);
End;
'0': Begin
ClearArray;
TextColor(13);
WriteLn('Все данные удалены');
TextColor(10);
End;
End;
Writeln;
WriteLn('Enter - меню');
WriteLn('Любая другая - продолжить');
Until ReadKey=#13;
End;
Procedure Searching;
Var W: Worker;
C: Boolean;
i,j,l,p: Byte;
Begin
Repeat
ClrScr;
Header('Поиск');
WriteLn('1 - ФИО');
WriteLn('2 - Группа');
WriteLn('3 – Дата рождения');
WriteLn('4 – Зачетная книжка');
WriteLn('5 – Рейтинг по математике');
WriteLn('6 – Рейтинг по физике');
WriteLn('7 – Суммарный рейтинг');
WriteLn;
Case ReadKey of
'1': Begin
Write('ФИО: '); ReadLn(W.FIO);
l:= Length(W.FIO);
For i:=1 to Max Do Begin
p:= Pos(W.FIO[1],a[i].FIO);
if (p>0) and (p-1+l <= Length(a[i].FIO)) then Begin
c:= True;
For j:=2 to l Do
if a[i].FIO[p-1+j] <> W.FIO[j] then Begin
c:= False;
Break;
End;
if c then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End
Else Continue;
End;
End;
'2': Begin
Write('Группа: '); ReadLn(W.gruppa);
For i:= 1 to Max Do
if W.gruppa = a[i].gruppa then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
'3': Begin
Write('Дата рождения: '); ReadLn(W.Data);
For i:= 1 to Max Do
if W.Data = a[i].Data then With a[i] Do
WriteLn(FIO:30,gruppa:7,Data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
'4': Begin
Write('Зачетная книжка: '); ReadLn(W.zach);
For i:= 1 to Max Do
if W.zach = a[i].zach then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
'5': Begin
Write('Рейтинг по математике: '); ReadLn(W.rmatem);
For i:= 1 to Max Do
if W.rmatem = a[i].rmatem then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
'6': Begin
Write('Рейтинг по физике: '); ReadLn(W.rfizik);
For i:= 1 to Max Do
if W.rfizik = a[i].rfizik then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
'7': Begin
Write('Суммарный рейтинг: '); ReadLn(W.summ);
For i:= 1 to Max Do
if W.summ = a[i].summ then With a[i] Do
WriteLn(FIO:30,gruppa:7,data:10,
zach:7,rmatem:7:1,rfizik:8:2,summ:8:2);
End;
End;
WriteLn;
WriteLn('Enter - меню');
WriteLn('Любая другая - продолжить');
Until ReadKey=#13;
End;
}
Begin
Assign(f,Name);
Repeat
Header('Лабораторная 10');
WriteLn('1 - Просмотр');
WriteLn('2 - Добавить');
WriteLn('3 - Изменить');
WriteLn('4 - Удалить');
WriteLn('5 - Поиск');
WriteLn('6 - Сортировка');
WriteLn('Esc - Выход');
Case ReadKey of
'1': Viewing;
'2': Additing;
{'2': Editing;
'3': Deleting;
'4': Searching;}
#27: Begin
{Writing;}
Close(f);
Exit;
End;
End;
Until 1<>1
End.