Структурная диаграмма и спецификация программного комплекса. Данные для тестирования программного комплекса, страница 9

flag:=true; fio:=add_str(4);

if fio='' then

begin

errors(4); flag:=false;

end; {if fio=''}

until(flag);

repeat {ввод года рождения с проверкой правильности}

flag:=true; bgggg:=add_num(5);

if (bgggg<curyear-100) or (bgggg>curyear) then

begin

errors(5); flag:=false;

end; {if (bgggg<curyear-100) or (bgggg>curyear)}

until(flag);

repeat {ввод пола с проверкой правильности}

flag:=true; gender:=add_num(6);

if (gender=1) or (gender=2) then

else

begin

errors(6); flag:=false;

end; {else}

until(flag);

repeat {ввод вида образования с проверкой правильности}

flag:=true; edu:=add_num(7);

if (edu<1) or (edu>5) then

begin

errors(7); flag:=false;

end; {if (edu<1) or (edu>5)}

until(flag);

repeat {ввод специальности с проверкой правильности}

flag:=true; spec:=add_str(8);

if spec='' then

begin

errors(8); flag:=false;

end; {if spec=''}

until(flag);

repeat {ввод стажа работы с проверкой правильности}

flag:=true; exp:=add_num(9);

if (exp<0) or (exp>70) then

begin

errors(9); flag:=false;

end; {if (exp<0) or (exp>70)}

until(flag);

windows(5, 3, 75, 21, 1); textbackground(12);

for x:=5 to 75 do begin gotoxy(x, 4); write(' '); end;

gotoxy(27, 4); textcolor(15); write('КАРТОЧКА НОВОГО СОИСКАТЕЛЯ');

textbackground(1); gotoxy(7, 7); write('Дата постановки на учет: ');

if dd<10 then write('0',dd,'-') else write(dd,'-');

if mm<10 then write('0',mm) else write(mm); write('-',gggg);

gotoxy(7, 9); write('ФИО: '); write(fio);

gotoxy(7, 11); write('Год рождения: '); write(bgggg);

gotoxy(7, 13); write('Пол: '); if gender=1 then write('мужской') else write('женский');

gotoxy(7, 15); write('Образование: ');

case edu of

1: write('высшее');

2: write('среднее специальное');

3: write('среднее');

4: write('неполное среднее');

5: write('начальное');

end; {case edu}

gotoxy(7, 17); write('Специальность: '); write(spec);

gotoxy(7, 19); write('Стаж работы (полных лет): '); write(exp);

bottom(5); {вывод строки состояния}

ch:=readkey;

if ch=#13 then

begin

assign(fildata, filename);

reset(fildata);

s:=filesize(fildata); {определение количества записей в файле базы данных}

buf.fio:=fio; buf.spec:=spec; buf.byear:=bgggg; buf.gender:=gender;

buf.edu:=edu; buf.exp:=exp; buf.day:=dd; buf.month:=mm; buf.year:=gggg;

seek(fildata, s);

write(fildata, buf); {запись в файл данных о соискателе}

close(fildata);

end; {if ch=#13}

menu; {вызов основного меню}

end; {newcomp}

{раздел инициализации модуля}

begin

end.


{Модуль реализует выполнение второго пункта главного меню – редактирование данных соискателей из базы данных.}

unit agsecond;

{интерфейсная часть модуля}

interface

uses crt, aginput, agsub, agmenu;

procedure edit; {процедура редактирования данных соискателя}

{раздел реализации модуля}

implementation

procedure edit;

var

ch: char;

dd, mm, gggg, gender, bgggg, edu, exp, s, kod, i, x: integer;

fio, spec: string[33];

flag: boolean;

begin

bottom(4); {вывод строки состояния}

top(10); {вывод заголовка окна}

write('ФИО (полностью): ');

readln(fio);

assign(fildata, filename);

reset(fildata);

s:=filesize(fildata); {определение количества записей в файле базы данных}

kod:=-1;

for i:=0 to s-1 do {определение индекса соискателя с введенной}

begin               {фамилией в файле базы данных}

seek(fildata, i);

read(fildata, buf);

if buf.fio=fio then kod:=i;

end; {for i:=0 to s-1}

if kod=-1 then

begin

close(fildata);

ch:=errors(10);

if ch=#13 then edit {вызов процедуры редактирования данных соискателя}

else menu; {возврат к главному меню}

end {if kod=-1}

else

begin

seek(fildata, kod);

read(fildata, buf);

close(fildata);

windows(5, 3, 75, 21, 1); textbackground(12);

for x:=5 to 75 do

begin

gotoxy(x, 4); write(' ');

end; {for x:=5 to 75}

gotoxy(32, 4); textcolor(15);

write('КАРТОЧКА СОИСКАТЕЛЯ');

textbackground(1); gotoxy(7, 7); write('Дата постановки на учет: ');

if buf.day<10 then write('0',buf.day,'-') else write(buf.day,'-');

if buf.month<10 then write('0',buf.month) else write(buf.month);