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

reset(fildata);

for i:=0+comp1*(scr-1) to s-1 do

begin

seek(fildata, i);

read(fildata, buf);

if (buf.month=mm) and (buf.year=gggg) then

begin

gotoxy(3, 8+y); write('│ ');

if comp<10 then write('000',comp);

if (comp<100) and (comp>=10) then write('00',comp);

if (comp<1000) and (comp>100) then write('0',comp);

gotoxy(10, 8+y); write('│ ',buf.fio); gotoxy(59, 8+y); 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,'-');

write(buf.year); write('      │');

comp:=comp+1;

y:=y+1;

end; {if (buf.month=mm) and (buf.year=gggg)}

if comp=scr*13 then

begin

comp1:=i+1; break;

end; {if comp=scr*13}

end; {for i:=0+comp1*(scr-1) to s-1}

close(fildata);

gotoxy(3, 8+y);

write('└──────┴────────────────────────────────────────────────┴──────────────────┘');

if comp<bot then bottom(20) else bottom(21); {вывод строки состояния}

readkey;

end; {for scr:=1 to screens}

end; {else}

if comp2=0 then readkey;

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

end; {report2}

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

begin

end.


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

unit agrep3;

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

interface

uses crt, agsub, agthird;

const n=100;

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

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

implementation

procedure report3;

var

gggg, s, comp, comp1, kol, masnum, code: integer;

mm, bot, screens, i, j, k, x, y: word;

flag: boolean;

test: string;

kod, difsp, spkol: array[1..n] of integer;

lo: array[1..n] of boolean;

special, difspn: array[1..n] of string[25];

sp, masstr: string[25];

begin

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

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

flag:=true;

repeat

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

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

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

begin

kod[comp+1]:=i; comp:=comp+1;

end; {if (buf.month=mm) and (buf.year=gggg)}

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

close(fildata);

if comp=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('ОТЧЕТ НОМЕР 3 - СПИСОК СПЕЦИАЛЬНОСТЕЙ ЗА ');

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 comp=0}

else

begin

for i:=1 to comp do lo[i]:=true;

kol:=0; k:=1;

assign(fildata, filename);

reset(fildata);

for i:=1 to comp do {определение различных специальностей}

begin                   {за указанный месяц и их индексов}

seek(fildata, kod[i]);

read(fildata, buf);

special[i]:=buf.spec;

if lo[i] then

begin

kol:=kol+1;

for j:=1 to comp do

begin