interface
uses crt, agsub, agmenu;
procedure reports; {процедура вывода меню отчетов}
{раздел реализации модуля}
implementation
uses agrep1, agrep2, agrep3, agrep4, agrep5, agrep6;
procedure reports;
var
ch: char;
x, y, x1, x2, y1, y2: integer;
flag: boolean;
begin
textbackground(2);
for x:=1 to 80 do
begin
gotoxy(x, 1); write(' ');
end; {for x:=1 to 80}
gotoxy(2, 1); textcolor(15); write('Служба занятости, г. Мурманск');
repeat {выбор отчета}
flag:=true;
x1:=1; x2:=80; y1:=2; y2:=24;
textbackground(7);
for x:=x1 to x2 do
begin
gotoxy(x, y1); write(' '); gotoxy(x, y2); write(' ');
end; {for x:=x1 to x2}
for y:=y1 to y2 do
begin
gotoxy(x1, y); write(' '); gotoxy(x2, y); write(' ');
for x:=x1 to x2 do
begin
gotoxy(x, y); write(' ');
end; {for x:=x1 to x2}
end; {for y:=y1 to y2}
windows(12, 8, 65, 19, 1); textbackground(12);
for x:=12 to 65 do
begin
gotoxy(x, 9); write(' ');
end; {for x:=12 to 65}
gotoxy(37, 9); textcolor(15); write('ОТЧЕТЫ'); textbackground(1);
gotoxy(14, 11); write('1 - процент женщин за определенный месяц');
gotoxy(14, 12); write('2 - список всех вставших на учет за месяц');
gotoxy(14, 13); write('3 - рейтинг специальностей за месяц');
gotoxy(14, 14); write('4 - графики изменения числа женщин и');
gotoxy(14, 15); write(' мужчин за текущий год');
gotoxy(14, 16); write('5 - круговая диаграмма образований за месяц');
gotoxy(14, 17); write('6 - столбиковая диаграмма по возрастам');
gotoxy(14, 18); write('7 - выход в главное меню');
bottom(7); {вывод строки состояния}
ch:=readkey;
if (ch='1') or (ch='2') or (ch='3') or (ch='4') or (ch='5')
or (ch='6') or (ch='7') then flag:=true else flag:=false;
until(flag);
case ch of
'1': report1; {вызов процедуры формирования отчета 1}
'2': report2; {вызов процедуры формирования отчета 2}
'3': report3; {вызов процедуры формирования отчета 3}
'4': report4; {вызов процедуры формирования отчета 4}
'5': report5; {вызов процедуры формирования отчета 5}
'6': report6; {вызов процедуры формирования отчета 6}
'7': menu; {возврат в главное меню}
end; {case ch}
end; {reports}
{раздел инициализации модуля}
begin
end.
{Модуль, реализующий выполнение отчёта номер 1 – определение процента женщин из числа всех вставших на учёт за указанный пользователем месяц.}
unit agrep1;
{интерфейсная часть модуля}
interface
uses crt, agsub, agthird;
procedure report1; {процедура формирования отчета номер 1}
{раздел реализации модуля}
implementation
procedure report1;
var
mm, gggg, gender, s, fem, comp, i, x, code: integer;
flag: boolean;
femperc: real; {процент женщин}
test: string;
begin
bottom(2); {вывод строки состояния}
repeat {ввод месяца с проверкой правильности}
flag:=true;
repeat
top(21); {вывод заголовка окна}
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(22); {вывод заголовка окна}
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); {определение количества записей в файле базы данных}
fem:=0;
comp:=0;
for i:=0 to s-1 do {подсчет общего числа соискателей в указанный месяц}
begin {и числа женщин в этот месяц}
seek(fildata, i);
read(fildata, buf);
if (buf.gender=2) and (buf.month=mm) and (buf.year=gggg) then fem:=fem+1;
if (buf.month=mm) and (buf.year=gggg) then comp:=comp+1;
end; {for i:=0 to s-1}
close(fildata);
{расчет процента женщин в указанный месяц}
if comp=0 then femperc:=0 else femperc:=(fem/comp)*100;
windows(12, 8, 65, 19, 1); textbackground(12);
for x:=12 to 65 do
begin
gotoxy(x, 9); write(' ');
end; {for x:=12 to 65}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.