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

gotoxy(15, 9); textcolor(15);

write('ОТЧЕТ НОМЕР 1 - ПРОЦЕНТ ЖЕНЩИН, ВСТАВШИХ НА УЧЕТ');

textbackground(1); gotoxy(14, 14); write('За ');

case mm of

1: write('январь');

2: write('февраль');

3: write('март');

4: write('апрель');

5: write('май');

6: write('июнь');

7: write('июль');

8: write('август');

9: write('сентябрь');

10: write('октябрь');

11: write('ноябрь');

12: write('декабрь');

end; {case mm}

write(' ',gggg,' г. на учет встало ');

if femperc=0 then write('0') else write(femperc:3:1); write('% женщин');

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

readkey;

reports; {вызов меню отчетов}

end; {report1}

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

begin

end.


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

unit agrep2;

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

interface

uses crt, agsub, agthird;

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

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

implementation

procedure report2;

var

mm, gggg, s, comp, comp1, comp2: integer;

bot, screens, scr, i, x, y, code: integer;

flag: boolean;

test: string;

begin

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

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

flag:=true;

repeat

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

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(32); {вывод заголовка окна}

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); {определение количества записей в файле базы данных}

comp:=0;

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

begin

seek(fildata, i);

read(fildata, buf);

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

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

close(fildata);

comp2:=comp;

if comp2=0 then

begin

windows(2, 3, 78, 22, 1); textbackground(12);

for x:=2 to 78 do

begin

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

end; {for x:=2 to 78}

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

write('ОТЧЕТ НОМЕР 2 - СПИСОК ВСТАВШИХ НА УЧЕТ ЗА ');

case mm of

1: write('ЯНВАРЬ');

2: write('ФЕВРАЛЬ');

3: write('МАРТ');

4: write('АПРЕЛЬ');

5: write('МАЙ');

6: write('ИЮНЬ');

7: write('ИЮЛЬ');

8: write('АВГУСТ');

9: write('СЕНТЯБРЬ');

10: write('ОКТЯБРЬ');

11: write('НОЯБРЬ');

12: write('ДЕКАБРЬ');

end; {case mm}

write(' ',gggg,' Г.');

textbackground(1);  gotoxy(3, 6); write('За указанный месяц соискателей нет!');

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

end {if comp2=0}

else

begin

bot:=comp;

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

screens:=(comp div 13)+1;

comp1:=1;

for scr:=1 to screens do

begin

windows(2, 3, 78, 22, 1); textbackground(12);

for x:=2 to 78 do

begin

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

end; {for x:=2 to 78}

if screens>1 then gotoxy(5, 4) else gotoxy(13, 4);

textcolor(15);

write('ОТЧЕТ НОМЕР 2 - СПИСОК ВСТАВШИХ НА УЧЕТ ЗА ');

case mm of

1: write('ЯНВАРЬ');

2: write('ФЕВРАЛЬ');

3: write('МАРТ');

4: write('АПРЕЛЬ');

5: write('МАЙ');

6: write('ИЮНЬ');

7: write('ИЮЛЬ');

8: write('АВГУСТ');

9: write('СЕНТЯБРЬ');

10: write('ОКТЯБРЬ');

11: write('НОЯБРЬ');

12: write('ДЕКАБРЬ');

end; {case mm}

write(' ',gggg,' Г.');

if screens>1 then write(' (СТРАНИЦА ',scr,')');

textbackground(1);

gotoxy(3, 6);

write('┌───────┬────────────────────────────────────────────────┬─────────────────┐');

gotoxy(3, 7); write('│  N.  │                  ФИО соискателя');

gotoxy(59, 7); write('│ Дата постановки │'); gotoxy(3, 8);

write('├──────┼────────────────────────────────────────────────┼─────────────────┤');

comp:=1+12*(scr-1);

y:=1;

assign(fildata, filename);