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