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

4: outtextxy(390,92+50*i,'неполное среднее ('+txty+'%)');

5: outtextxy(390,92+50*i,'начальное ('+txty+'%)');

end; {case i}

end; {for i:=1 to 5}

outtextxy(110,450,'Нажмите любую клавишу для возврата к выбору отчетов');

readkey;

closegraph; {выход из графического режима}

end; {if graphresult=grok}

end; {else}

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

end; {report5}

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

begin

end.


{Модуль, реализующий выполнение отчёта номер 6 – построение столбиковой диаграммы, отражающей распределение соискателей по возрастам в следующих возрастных группах: 18-25, 26-35, 36-45, 45-55, старше 55.}

unit agrep6;

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

interface

uses crt, graph, agsub, agthird;

procedure report6;

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

implementation

procedure report6;

var

gd, gm: integer;

agec, s, i, j, x, max, my: integer;

age: array[1..5] of integer;

txty: string[10];

begin

assign(fildata, filename);

reset(fildata);

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

for j:=1 to 5 do age[j]:=0;

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

begin

seek(fildata, i);

read(fildata, buf);

agec:=curyear-buf.byear; {расчет возраста}

if (agec>=18) and (agec<=25) then age[1]:=age[1]+1;

if (agec>=26) and (agec<=35) then age[2]:=age[2]+1;

if (agec>=36) and (agec<=45) then age[3]:=age[3]+1;

if (agec>45) and (agec<=55) then age[4]:=age[4]+1;

if agec>55 then age[5]:=age[5]+1;

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

close(fildata);

max:=age[1];

{определение возрастной группы с максимальным числом соискателей}

for j:=1 to 5 do if age[j]>max then max:=age[j];

windows(9, 3, 71, 22, 1);

textbackground(12);

for x:=9 to 71 do

begin

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

end; {for x:=9 to 71}

gotoxy(33, 4); textcolor(15); write('ОТЧЕТ НОМЕР 6');

textbackground(1);

gotoxy(11, 6); write('Распределение соискателей по возрастным группам');

gotoxy(18, 10);

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

gotoxy(18, 11); write('│ Возрастная группа │ Количество соискателей │');

gotoxy(18, 12);

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

for j:=1 to 5 do

begin

gotoxy(18, 12+j); write('│ ');

case j of

1: write('18-25 лет');

2: write('26-35 лет');

3: write('36-45 лет');

4: write('45-55 лет');

5: write('старше 55 лет');

end; {case j}

gotoxy(38, 12+j); write('│');

gotoxy(50, 12+j); write(age[j]); gotoxy(63, 12+j); write('│');

end; {for j:=1 to 5}

gotoxy(18, 13+j);

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

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

readkey;

gd:=VGA;

gm:=VGAhi;

initgraph(gd,gm,''); {инициализация графического режима}

if graphresult=grok then

begin

setcolor(15);

outtextxy(90,2,'Диаграмма распределения соискателей по возрастным группам');

line(50,400,590,400); line(50,40,50,400);

outtextxy(580,410,'группы'); outtextxy(2,20,'кол-во');

for j:=1 to 5 do

begin

setcolor(15); setlinestyle(0,0,1); line(50+90*j,400,50+90*j,405);

settextstyle(0,0,1);

case j of

1: outtextxy(30+90*j,410,'18-25');

2: outtextxy(30+90*j,410,'26-35');

3: outtextxy(30+90*j,410,'36-45');

4: outtextxy(30+90*j,410,'45-55');

5: outtextxy(30+90*j,410,'старше 55');

end; {case j}

end; {for j:=1 to 5}

my:=350 div max; {расчет единичного шага в пикселях по вертикали}

for j:=max downto 0 do

begin

setcolor(8); setlinestyle(3,0,1);

if j>0 then line(55,400-my*j,570,400-my*j);

setcolor(15); setlinestyle(0,0,1); line(45,400-my*j,55,400-my*j);

settextstyle(0,0,1); settextjustify(2,2);

str(max-j,txty); outtextxy(40,57+my*j,txty);

end; {for j:=max downto 0}

for i:=1 to 5 do

begin

setcolor(i); setfillstyle(1,i); bar(30+90*i,400-my*age[i],70+90*i,400);

end; {for i:=1 to 5}

settextjustify(0,0); setcolor(15);

outtextxy(110,450,'Нажмите любую клавишу для возврата к выбору отчетов');

readkey;

closegraph; {выход из графического режима}

end; {if graphresult=grok}

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

end; {report6}

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

begin

end.