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

seek(fildata, kod[j]);

read(fildata, buf);

special[j]:=buf.spec;

lo[j]:=(special[j] <> special[i]) and lo[j];

end; {for j:=1 to comp}

difsp[k]:=i;

difspn[k]:=special[i];

k:=k+1;

end; {if lo[i]}

end; {for i:=1 to comp}

for i:=1 to k-1 do {расчет числа соискателй по каждой специальности}

begin

spkol[i]:=0;

for j:=1 to comp do

begin

seek(fildata, kod[j]);

read(fildata, buf);

if buf.spec=difspn[i] then spkol[i]:=spkol[i]+1;

end; {for j:=1 to comp}

end; {for i:=1 to k-1}

close(fildata);

if comp>2 then {определение специальности с максимальным числом соискателей}

repeat

flag:=true;

for i:=1 to k-1 do if spkol[i]<spkol[i+1] then

begin

masnum:=spkol[i]; masstr:=difspn[i];

spkol[i]:=spkol[i+1]; difspn[i]:=difspn[i+1];

spkol[i+1]:=masnum; difspn[i+1]:=masstr;

flag:=false;

end; {if spkol[i]<spkol[i+1]}

until(flag);

bot:=kol;

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

screens:=(comp div 13)+1; comp1:=1;

for j:=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('ОТЧЕТ НОМЕР 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,' Г.');

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

textbackground(1); gotoxy(3, 6);

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

gotoxy(3, 7); write('│  N.  │                  Специальность');

gotoxy(56, 7); write('│ Кол-во соискателей │');

gotoxy(3, 8);

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

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

y:=1;

for i:=1+comp1*(j-1) to k-1 do

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('│ ',difspn[i]);

gotoxy(56, 8+y); write('│ ',spkol[i]);

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

comp:=comp+1;

y:=y+1;

if comp=j*13 then

begin

comp1:=i; break;

end; {if comp=scr*13}

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

gotoxy(3, 8+y);

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

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

readkey;

end; {for scr:=1 to screens}

end; {else}

if comp=0 then readkey;

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

end; {report3}

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

begin

end.


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

unit agrep4;

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

interface

uses crt, graph, agsub, agthird;

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

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

implementation

procedure report4;

var

gd, gm: integer;

s, i, j, x, maxf, maxm, max, my: integer;

male, female: array[1..12] of integer;

txty: string[10];

begin

assign(fildata, filename);

reset(fildata);

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

for j:=1 to 12 do {расчет числа женщин и мужчин за каждый месяц текущего года}

begin

male[j]:=0;

female[j]:=0;

for i:=0 to s-1 do

begin

seek(fildata, i);

read(fildata, buf);

if (buf.month=j) and (buf.year=curyear) then

case buf.gender of

1: male[j]:=male[j]+1;

2: female[j]:=female[j]+1;

end; {case buf.gender}

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

end; {for j:=1 to 12}

close(fildata);

maxm:=male[1];

maxf:=female[1];

for j:=1 to 12 do {расчет максимального числа из женщин и мужчин за текущий год}

begin

if male[j]>maxm then maxm:=male[j];

if female[j]>maxf then maxf:=female[j];

end; {for j:=1 to 12}