Смекни!
smekni.com

База данных "Сотрудники" (стр. 2 из 2)

end;

end;

end;

procedure punkt1; {Новыйсотрудник}

var k,ch:char;

begin

clrscr;

gotoxy(12,wherey);writeln('*************************************');

gotoxy(12,wherey);writeln('Добавьте в базу информацию о новом сотруднике - "Enter"');

gotoxy(12,wherey);writeln('*************************************');

ch:=readkey;

if ch<>chr(27) then

begin

new(Cur);

writeln(' Введите информацию');

write('Регистрационный номер: ');

readln(Cur^.rnom);

write('Фамилия: ');

readln(Cur^.fam);

write('Имя: ');

readln(Cur^.name);

write('Отчество: ');

readln(Cur^.otch);

write('Год и Дата рождения: ');

readln(Cur^.date);

write('Пол: ');

readln(Cur^.pol);

write('Стажработы: ');

readln(Cur^.stag);

write('Домашнийадрес: ');

readln(Cur^.adress);

write('Телефон: ');

readln(Cur^.tel);

write('Должность: ');

readln(Cur^.dolg);

write('Оклад: ');

readln(Cur^.oklad);

Cur^.link:=Top;

Top:=Cur;

end;

end;

procedure Punkt2; {Уволить}

var

rnom1:integer;

fam1,name1, otch1:string[20];

pos,f:integer;

key:char;

begin

clrscr;

writeln(' *******************************************');

writeln(' Будите удалять сотрудика из базы - "Enter"');

writeln(' *******************************************');

ch:=readkey;

if ch=chr(13) then

begin

clrscr;

if top=nil then begin

writeln('Базапуста');

readln;

end

else

BEGIN

writeln(' **********************');

writeln(' Увольнение сотрудника');

writeln(' **********************');

writeln('Пожалуйста введите');

Writeln('Регистрационный номер увольняемого ');readln(rnom1);

writeln('Фамилия увольняемого: ');readln(fam1);

writeln('Имяувольняемого: ');readln(name1);

writeln('Отчествоувольняемого: ');readln(otch1);

Cur:=Top;

pos:=1;

repeat

f:=0;

If Cur^.rnom=rnom1 then

If Cur^.fam=fam1 then

If Cur^.Name=name1 then

if Cur^.otch=otch1 then

begin

writeln('Вы действительно хотите удалить данного сотрудника');

Writeln('Enter-ДА, Esc-НЕТ');

key:=readkey;

if key=chr(13) then

begin

if Cur^.link=nil then begin dispose(Cur); f:=1; end

else

If Cur=Top then begin

If Top^.link<>nil then

begin

Top:=Top^.link;

dispose(Cur);

f:=1;

end;

end

else

begin

Position(pos-1);

Prev:=Cur;

Cur:=Cur^.link;

Next:=Cur^.link;

Prev^.link:=Next;

Dispose(Cur);

f:=1;

end;

writeln('Сотрудник ' ,fam1,' ',name1,' ',otch1, ' уволен ');

readkey;

end;

end;

Cur:=Cur^.link;

pos:=pos+1;

if (cur=nil) and (f=0) then

begin

WriteLn('Искомый сотрудник не числется.');

writeln('Возможно имя или фамилия были введены с маленькой буквы');

Write('Для продолжения нажмите любую клавишу.');

readkey;

break;

end;

until f=1;

end;

END;

end;

procedure Punkt3; {Просмотр}

var ch:char;

begin

clrscr;

sortirovka;

writeln(' **********************');

writeln(' Списоксотрудников');

writeln(' **********************');

Cur:=Top;

if top=nil then write('nichego netu')

else

Repeat

write('Регистрационныйномер: ');writeln(Cur^.rnom);

write('Фамилия: ');write(Cur^.fam);

gotoxy(40,wherey); write('ГодиДатарождения: ');writeln(Cur^.date);

write('Имя: ');write(Cur^.name);

gotoxy(40,wherey);write('Домашнийадрес: ');writeln(Cur^.adress);

write('Отчество: ');write(Cur^.otch);

gotoxy(40, wherey);write('Телефон: ');writeln(Cur^.tel);

write('Пол: ');write(Cur^.pol);

gotoxy(40,wherey);write('Должность: ');writeln(Cur^.dolg);

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));

end;

procedure Punkt4; {Упорядочить}

var ch:char;

begin

clrscr;

Uporyad;

writeln(' **********************');

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);

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));

end;

Procedure Punkt5; {Поисксотрудника}

var

dol:String[10];

sch,kol:integer;

search:boolean;

sotr:array[1..10] of base;

begin

clrscr;

gotoxy(33,wherey); writeln('****************');

gotoxy(33,wherey); writeln('Поисксотрудника');

gotoxy(33,wherey); writeln('****************');

write('Введите должность сотрудника: ');readln(dol);

clrscr;

gotoxy(30,wherey); writeln('********************');

gotoxy(30,wherey); writeln('Найденные сотрудники');

gotoxy(30,wherey); writeln('********************');

Sch:=0;

I:=0;

Search:=false;

Cur:=Top;

While Cur<>nil do

begin

If Cur^.Dolg = dol then begin

i:=i+1;

sotr[i]:=Cur^;

Sch:=Sch+1;

search:=true;

end;

Cur:=Cur^.link;

if (search=false) and (Cur=nil) then

begin

Write('Искомых сотрудников нет в базе.');

writeln('Возможно должность введена с маленькой буквы');

end;

end;

If Search=true then

begin

WriteLn('Искомая должность: ',dol);

WriteLn('');

For i:=1 to Sch do

begin

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('***************************************************');

ch:=ReadKey;

if ch<>chr(13) then break;

end;

end;

readkey;

end;

Begin

clrscr;

gotoxy(28,wherey);writeln('**************************');

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

ch:=ReadKey;

if ch=chr(0) then

begin

ch:=ReadKey;

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;

end;

if punkt=10 then punkt:=7;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt+1;

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

chr(72) : { стрелкавверх}

if (punkt<=n) and not(punkt<p) then begin

if punkt=8 then begin

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

if punkt=8 then punkt:=11;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt-1;

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

end; {case : of }

end

else

if ch=chr(13) then {нажатаклавиша <Enter>}

begin

case punkt of

8 : punkt0 ;

9 : ch:=chr(27) ;

10 : exit ; {выход}

end;

End;

until ch= chr(27) ; {27 - код <Esc>}

{clrscr;}

punkt:=1; x:=30; y:=5; textattr:=norm;

n:=6; p:=1;

Menus;

filetodin;

repeat

ch:=ReadKey;

if ch=chr(0) then

begin

ch:=ReadKey;

case ch of

chr(80) : { стрелкавниз}

if punkt<=n+1 then begin

if punkt=6 then begin

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

if punkt=6 then punkt:=0;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt+1;

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

chr(72) : { стрелкавверх}

if (punkt<=n) and not(punkt<1) then begin

if punkt=1 then begin

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

if punkt=1 then punkt:=7;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt-1;

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:= norm;

end;

end; {case : of }

end

else

if ch=chr(13) then {нажатаклавиша <Enter>}

begin

case punkt of

1 : punkt1 ;

2 : punkt2 ;

3 : punkt3 ;

4 : punkt4 ;

5 : punkt5 ;

6 : ch:=chr(27) ; {выход}

end;

Menus;

End;

until ch= chr(27) ; {27 - код <Esc>}

{clrscr;}

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

Распечатку результатов решения задачи по данным контрольного примера

Уволен служащий с ФИО – Матросов Игорь Витальевич

Принят на работу новый сотрудник с ФИО – Сурьянинова Алена

Структура база данных выглядит следующим образом:

**********************

Список сотрудников

**********************

Регистрационный номер: 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

*************************************************************

Регистрационный номер: 1

Фамилия: Прохоров Год и Дата рождения: 23.11.80

Имя: Виктор Домашний адрес: Баныкина

Отчество: Сергеевич Телефон: -856

Пол: м Должность: Охранник

Стаж работы: 3 Оклад: 5500

*************************************************************

Регистрационный номер: 5

Фамилия: Ромашенко Год и Дата рождения: 12.05.80

Имя: Владимир Домашний адрес: Баныкина

Отчество: Владимирович Телефон: -4124

Пол: м Должность: Мэнеджер

Стаж работы: 5 Оклад: 10000

*************************************************************

Регистрационный номер: 7

Фамилия: Сурьянинова Год и Дата рождения: 12.05.80

Имя: Алёна Домашний адрес: Революционная

Отчество: Александровна Телефон: 16676

Пол: ж Должность: Секретарь

Стаж работы: 10 Оклад: 5000

*************************************************************

список окончен