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

interface

uses crt, agsub, agmenu;

procedure reports; {процедура вывода меню отчетов}

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

implementation

uses agrep1, agrep2, agrep3, agrep4, agrep5, agrep6;

procedure reports;

var

ch: char;

x, y, x1, x2, y1, y2: integer;

flag: boolean;

begin

textbackground(2);

for x:=1 to 80 do

begin

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

end; {for x:=1 to 80}

gotoxy(2, 1); textcolor(15); write('Служба занятости, г. Мурманск');

repeat {выбор отчета}

flag:=true;

x1:=1; x2:=80; y1:=2; y2:=24;

textbackground(7);

for x:=x1 to x2 do

begin

gotoxy(x, y1); write(' '); gotoxy(x, y2); write(' ');

end; {for x:=x1 to x2}

for y:=y1 to y2 do

begin

gotoxy(x1, y); write(' '); gotoxy(x2, y); write(' ');

for x:=x1 to x2 do

begin

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

end; {for x:=x1 to x2}

end; {for y:=y1 to y2}

windows(12, 8, 65, 19, 1); textbackground(12);

for x:=12 to 65 do

begin

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

end; {for x:=12 to 65}

gotoxy(37, 9); textcolor(15); write('ОТЧЕТЫ'); textbackground(1);

gotoxy(14, 11); write('1 - процент женщин за определенный месяц');

gotoxy(14, 12); write('2 - список всех вставших на учет за месяц');

gotoxy(14, 13); write('3 - рейтинг специальностей за месяц');

gotoxy(14, 14); write('4 - графики изменения числа женщин и');

gotoxy(14, 15); write('    мужчин за текущий год');

gotoxy(14, 16); write('5 - круговая диаграмма образований за месяц');

gotoxy(14, 17); write('6 - столбиковая диаграмма по возрастам');

gotoxy(14, 18); write('7 - выход в главное меню');

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

ch:=readkey;

if (ch='1') or (ch='2') or (ch='3') or (ch='4') or (ch='5')

or (ch='6') or (ch='7') then flag:=true else flag:=false;

until(flag);

case ch of

'1': report1; {вызов процедуры формирования отчета 1}

'2': report2; {вызов процедуры формирования отчета 2}

'3': report3; {вызов процедуры формирования отчета 3}

'4': report4; {вызов процедуры формирования отчета 4}

'5': report5; {вызов процедуры формирования отчета 5}

'6': report6; {вызов процедуры формирования отчета 6}

'7': menu; {возврат в главное меню}

end; {case ch}

end; {reports}

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

begin

end.


{Модуль, реализующий выполнение отчёта номер 1 – определение процента женщин из числа всех вставших на учёт за указанный пользователем месяц.}

unit agrep1;

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

interface

uses crt, agsub, agthird;

procedure report1; {процедура формирования отчета номер 1}

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

implementation

procedure report1;

var

mm, gggg, gender, s, fem, comp, i, x, code: integer;

flag: boolean;

femperc: real; {процент женщин}

test: string;

begin

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

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

flag:=true;

repeat

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

write('Введите месяц (в формате ММ): '); readln(test);

val(test,mm,code);

until code=0;

if (mm<1) or (mm>12) then

begin

errors(2); flag:=false;

end; {if (mm<1) or (mm>12)}

until(flag);

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

flag:=true;

repeat

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

write('Введите год (в формате ГГГГ): '); readln(test);

val(test,gggg,code);

until code=0;

if (gggg<curyear-25) or (gggg>curyear) then

begin

errors(3); flag:=false;

end; {if (gggg<curyear-25) or (gggg>curyear)}

until(flag);

assign(fildata, filename);

reset(fildata);

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

fem:=0;

comp:=0;

for i:=0 to s-1 do {подсчет общего числа соискателей в указанный месяц}

begin               {и числа женщин в этот месяц}

seek(fildata, i);

read(fildata, buf);

if (buf.gender=2) and (buf.month=mm) and (buf.year=gggg) then fem:=fem+1;

if (buf.month=mm) and (buf.year=gggg) then comp:=comp+1;

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

close(fildata);

{расчет процента женщин в указанный месяц}

if comp=0 then femperc:=0 else femperc:=(fem/comp)*100;

windows(12, 8, 65, 19, 1); textbackground(12);

for x:=12 to 65 do

begin

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

end; {for x:=12 to 65}