write('Стаж работы: ');write(Cur^.stag);
gotoxy(40,wherey);write('Оклад: ');writeln(Cur^.oklad);
writeLn('**********************************************');writeln;
Cur:=Cur^.link;
ch:=ReadKey;
if ch<>chr(13) then break;
if cur=nil then
begin
Write('список окончен');
readkey;
break;
end;
until (Cur=nil) or (ch<>chr(13));
procedure Punkt4; {Упорядочить}
var ch:char;
clrscr;
Uporyad;
writeln(' **********************');
writeln(' Список сотрудников');
Cur:=Top;
if top=nil then write('Файл пуст')
else
Repeat
write('Регистрационный номер: ');writeln(Cur^.rnom);
write('Фамилия: ');write(Cur^.fam);
gotoxy(40,wherey); write('Имя: ');writeln(Cur^.name);
write('Отчество: ');write(Cur^.otch);
Procedure Punkt5; {Поиск сотрудника}
var
dol:String[10];
sch,kol:integer;
search:boolean;
sotr:array[1..10] of base;
gotoxy(33,wherey); writeln('****************');
gotoxy(33,wherey); writeln('Поиск сотрудника');
write('Введите должность сотрудника: ');readln(dol);
gotoxy(30,wherey); writeln('********************');
gotoxy(30,wherey); writeln('Найденные сотрудники');
Sch:=0;
I:=0;
Search:=false;
While Cur<>nil do
If Cur^.Dolg = dol then begin
i:=i+1;
sotr[i]:=Cur^;
Sch:=Sch+1;
search:=true;
if (search=false) and (Cur=nil) then
Write('Искомых сотрудников нет в базе.');
writeln('Возможно должность введена с маленькой буквы');
If Search=true then
WriteLn('Искомая должность: ',dol);
WriteLn('');
For i:=1 to Sch do
write('Регистрационный номер: ');writeln(Sotr[i].rnom);
write('Фамилия: ');write(Sotr[i].fam);
gotoxy(40,wherey); write('Год и Дата рождения: ');writeln(Sotr[i].date);
write('Имя: ');write(Sotr[i].name);
gotoxy(40,wherey);write('Домашний адрес: ');writeln(Sotr[i].adress);
write('Отчество: ');write(Sotr[i].otch);
gotoxy(40, wherey);write('Телефон: ');writeln(Sotr[i].tel);
write('Пол: ');write(Sotr[i].pol);
gotoxy(40,wherey);write('Должность: ');writeln(Sotr[i].dolg);
write('Стаж работы: ');write(Sotr[i].stag);
gotoxy(40,wherey);write('Оклад: ');writeln(Sotr[i].oklad);
writeLn('***************************************************');
Begin
gotoxy(28,wherey);writeln('**************************');
gotoxy(28,wherey);writeln('БАЗА ДАННЫХ ПО СОТРУДНИКАМ');
Top:=nil;
menu[1]:='1. НОВЫЙ СОТРУДНИК';
menu[2]:='2. УВОЛИТЬ СОТРУДНИКА';
menu[3]:='3. ПРОСМОТРЕТЬ СПИСОК';
menu[4]:='4. УПОРЯДОЧИТЬ СПИСОК';
menu[5]:='5. НАЙТИ СОТРУДНИКА';
menu[6]:='6. ВЫХОД';
menu[8]:= '1. Очистить базу ';
menu[9]:= '2. Продолжить базу';
menu[10]:='3. ВЫХОД';
menu[11]:='';
punkt:=8; x:=30; y:=-2; textattr:=norm;
n:=10; p:=8;
Menus;
repeat
if ch=chr(0) then
case ch of
chr(80) : { стрелка вниз }
if punkt<=n+1 then begin
if punkt=10 then begin
gotoxy(x,y+punkt-1);
write(menu[punkt]);
textattr:= norm;
if punkt=10 then punkt:=7;
punkt:=punkt+1;
textattr:=sel;
chr(72) : { стрелка вверх }
if (punkt<=n) and not(punkt<p) then begin
if punkt=8 then begin
if punkt=8 then punkt:=11;
punkt:=punkt-1;
end; {case : of }
end
if ch=chr(13) then {нажата клавиша <Enter>}
case punkt of
8 : punkt0 ;
9 : ch:=chr(27) ;
10 : exit ; {выход}
End;
until ch= chr(27) ; {27 - код <Esc>}
{clrscr;}
punkt:=1; x:=30; y:=5; textattr:=norm;
n:=6; p:=1;
filetodin;
if punkt=6 then begin
if punkt=6 then punkt:=0;
if (punkt<=n) and not(punkt<1) then begin
if punkt=1 then begin
if punkt=1 then punkt:=7;
1 : punkt1 ;
2 : punkt2 ;
3 : punkt3 ;
4 : punkt4 ;
5 : punkt5 ;
6 : ch:=chr(27) ; {выход}
dintofile;
End.
Приложение 2
Распечатка структуры базы даны
**********************
Список сотрудников
Регистрационный номер: 2
Фамилия: Бояршина Год и Дата рождения: 2.06.85
Имя: Елена Домашний адрес: Гая
Отчество: Александровна Телефон: 28666
Пол: ж Должность: Уборщица
Стаж работы: 5 Оклад: 2000
*************************************************************
Регистрационный номер: 6
Фамилия: Герасимов Год и Дата рождения: 21.12.80
Имя: Евгений Домашний адрес: Ворошилова 34-34
Отчество: Алексеивич Телефон: -23077
Пол: м Должность: Секретарь
Стаж работы: 3 Оклад: 4000
Регистрационный номер: 3
Фамилия: Григорьев Год и Дата рождения: 10.07.85
Имя: Александр Домашний адрес: Голосова 103-108
Отчество: Владимирович Телефон: 2632
Пол: м Должность: Директор
Стаж работы: 4 Оклад: 30000
Регистрационный номер: 4
Фамилия: Матросов Год и Дата рождения: 16.07.85
Имя: Игорь Домашний адрес: Голосова 102-102
Отчество: Витальевич Телефон: 2027
Пол: м Должность: Бухгалтер
Стаж работы: 2 Оклад: 6000
Регистрационный номер: 1
Фамилия: Прохоров Год и Дата рождения: 23.11.80
Имя: Виктор Домашний адрес: Баныкина
Отчество: Сергеевич Телефон: -856
Пол: м Должность: Охранник
Стаж работы: 3 Оклад: 5500
Регистрационный номер: 5
Фамилия: Ромашенко Год и Дата рождения: 12.05.80
Имя: Владимир Домашний адрес: Баныкина
Отчество: Владимирович Телефон: -4124
Пол: м Должность: Мэнеджер
Стаж работы: 5 Оклад: 10000
список окончен
Приложение 3
Распечатку результатов решения задачи по данным контрольного примера
Уволен служащий с ФИО - Матросов Игорь Витальевич
Принят на работу новый сотрудник с ФИО - Сурьянинова Алена
Структура база данных выглядит следующим образом:
Регистрационный номер: 7
Фамилия: Сурьянинова Год и Дата рождения: 12.05.80
Имя: Алёна Домашний адрес: Революционная
Отчество: Александровна Телефон: 16676
Пол: ж Должность: Секретарь
Стаж работы: 10 Оклад: 5000
Страницы: 1, 2, 3