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}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.