Тексты программ (в приложении).
Главный запускающий файл программы. Pr1.dpr
program Pr1;
uses Forms, Start in 'START.PAS' {Form1}, unit1 in 'UNIT1.PAS', unit2 in 'UNIT2.PAS', unit3 in 'UNIT3.PAS', unit4 in 'UNIT4.PAS';
{$R *.RES}
begin Application.CreateForm(TForm1, Form1); Application.Run; end.
Файл определяющий ввод дополнительной информации через интерфейс программы. Start.pas
unit Start;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Unit1,Unit2,Unit3,Unit4;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Label4: TLabel; Edit2: TEdit; Label5: TLabel; Edit3: TEdit; Label6: TLabel; Edit4: TEdit; Label7: TLabel; Edit5: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin str(n_mes,mw);
system.assign(f,'vhod\base.dat'); rewrite(f);
z:=Edit3.Text; writeln(f,z);{val(z,fzp,conv);}{ФЗП}
z:=Edit2.Text; writeln(f,z);{val(z,kol_d,conv);} {Кол-во дней}
z:=Edit5.Text; writeln(f,z);{val(z,tar_rab,conv);} {Тариф рабочего 5-го разряда}
z:=Edit4.Text; writeln(f,z);{val(z,oc_m,conv);} {Оклад мастера}
z:=Edit1.Text; writeln(f,z);{val(z,n_mes,conv);}
system.close(f); Unit2.vvod; Unit3.prog; Unit4.vivod;
end;
procedure TForm1.FormCreate(Sender: TObject); begin
Edit1.Text:='0'; Edit2.Text:='0'; Edit3.Text:='0'; Edit4.Text:='0'; Edit5.Text:='0';
system.assign(f,'vhod\base.dat'); reset(f);
readln(f,z);val(z,fzp,conv);{ФЗП} Edit3.Text:=FloatToStr(fzp);
readln(f,z);val(z,kol_d,conv); {Кол-во дней} Edit2.Text:=IntToStr(kol_d);
readln(f,z);val(z,tar_rab,conv); {Тариф рабочего 5-го разряда} Edit5.Text:=IntToStr(tar_rab);
readln(f,z);val(z,oc_m,conv); {Оклад мастера} Edit4.Text:=FloatToStr(oc_m);
readln(f,z);val(z,n_mes,conv); Edit1.Text:=IntToStr(n_mes);
system.close(f);
end;
end.
Файл, отвечающий за идентификацию переменных. Unit1.pas
unit unit1; interface { Раздел констант } const mes:array [1..12] of string [8]=('Январь','Февраль','Март','Апрель','Май', 'Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
{ Описание переменных } VAR n_mes:integer;{N месяца} conv:integer; {перем.-конвектор} f,f1:system.text; z,s,mw:string;x,y:real; {дополнительные переменные} kol_d,tar_rab: integer; {Исходная информация} fzp,oc_m:extended; {Исходная информация} kol_vo:array[1..4] of integer; {Количество работников в группе} ktu:array[1..4,1..20] of real; {КТУ} fio:array[1..4,1..20] of string[16]; {ФИО} a:array[1..4,1..20,3..20] of longint; {Выходная информация} t:array[1..4,1..20,1..7] of real; {Тариф/оклад и табель} balls:array[1..4,1..20] of extended; {Баллы работников} br,bi:extended; {Сумма баллов} { i,j,g,h,}c:integer; {переменные-счетчики} nkr,nki,p,q:extended; {Нормативные коэффициенты, Доля ИТР,Перем.-счетчик} fr,fi:real; { Средства распред. по КТУ рабочим и ИТР}
implementation
end.
Файл, отвечающий за ввод данных из входных таблиц. Unit2.pas
unit unit2;
interface uses unit1;
procedure vvod;
implementation procedure vvod; var i,j,g,h:integer; begin
{ Считывание данных из первой таблицы } for i:=1 to 4 do kol_vo[i]:=0; for i:=1 to 4 do begin str(i,s);assign(f,'vhod\'+s+'-1-'+mw+'.txt');reset(f);
for j:=1 to 7 do readln(f,z); {пропустить шапку таблицы} repeat readln(f,z);kol_vo[i]:=kol_vo[i]+1; j:=pos('|',z);z:=copy(z,j+1,250); {Пропускаем номер} j:=pos('|',z);fio[i,kol_vo[i]]:=copy(z,1,j-1);z:=copy(z,j+1,250); {ФИО} j:=pos('|',z);val(copy(z,1,j-1),ktu[i,kol_vo[i]],conv);z:=copy(z,j+1,300);{КТУ} {Разряд работника} j:=pos('|',z);val(copy(z,1,j-1),a[i,kol_vo[i],6],conv);z:=copy(z,j+1,300); {Тариф/оклад работника} j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],1],conv);z:=copy(z,j+1,300); {Табель времени работника} j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],2],conv);z:=copy(z,j+1,300); j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],3],conv);z:=copy(z,j+1,300); {Выходные работника} j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],4],conv);z:=copy(z,j+1,300); j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],5],conv);z:=copy(z,j+1,300); { Сверхурочные работника} j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],6],conv);z:=copy(z,j+1,300); j:=pos('|',z);val(copy(z,1,j-1),t[i,kol_vo[i],7],conv); until eof(f); close(f);end;
{ Считывание данных из второй таблицы }
for i:=1 to 4 do begin str(i,s);assign(f,'vhod\'+s+'-2-'+mw+'.txt');reset(f); for g:=1 to 7 do readln(f,z); {пропустить шапку таблицы} for g:=1 to kol_vo [i] do begin readln(f,z);j:=pos('|',z);z:=copy(z,j+1,250); j:=pos('|',z);z:=copy(z,j+1,250); for h:=8 to 10 do begin j:=pos('|',z);val(copy(z,1,j-1),x,c); a[i,g,h]:=round(x);fzp:=fzp-a[i,g,h];z:=copy(z,j+1,250);end; j:=pos('|',z);val(copy(z,1,j-1),x,c); a[i,g,18]:=round(x);z:=copy(z,j+1,250); for h:=11 to 12 do begin j:=pos('|',z);val(copy(z,1,j-1),x,c); a[i,g,h]:=round(x);fzp:=fzp-a[i,g,h];z:=copy(z,j+1,250);end; j:=pos('|',z);val(copy(z,1,j-1),x,c);a[i,g,19]:=round(x); for h:=13 to 16 do begin z:=copy(z,j+1,250);j:=pos('|',z); val(copy(z,1,j-1),x,c);a[i,g,h]:=round(x);fzp:=fzp-a[i,g,h];end; end; close(f);end;
end; end.
Файл, отвечающий за основной расчет. Unit3.pas unit unit3;
interface uses unit1;
procedure prog;
implementation procedure prog; var i,j,h:integer; begin
br:=0; bi:=0;
for i:=1 to 4 do for j:=1 to kol_vo[i] do begin
if a[i,j,6]=0 then balls[i,j]:=t[i,j,1]*t[i,j,2]/kol_d else balls[i,j]:=t[i,j,1]*t[i,j,3]; a[i,j,3]:=round(balls[i,j]);
{Выходные} if a[i,j,6]=0 then begin a[i,j,4]:=round(1.5*t[i,j,1]*t[i,j,4]/kol_d); balls[i,j]:=balls[i,j]+t[i,j,1]*t[i,j,4]/kol_d;end else begin balls[i,j]:=balls[i,j]+t[i,j,1]*t[i,j,5]; a[i,j,4]:=round(1.5*t[i,j,1]*t[i,j,5]);end; {Сверхурочные} if a[i,j,6]<>0 then begin balls[i,j]:=balls[i,j]+t[i,j,1]*(t[i,j,6]+t[i,j,7]); a[i,j,5]:=round(t[i,j,1]*(1.5*t[i,j,6]+2*t[i,j,7]));end else begin balls[i,j]:=balls[i,j]+t[i,j,1]*(t[i,j,6]+t[i,j,7])/8/kol_d; a[i,j,5]:=round(t[i,j,1]*(1.5*t[i,j,6]+2*t[i,j,7])/8/kol_d);end; {Расчет баллов} balls[i,j]:=balls[i,j]*ktu[i,j]; if a[i,j,6]<>0 then br:=br+balls[i,j] else bi:=bi+balls[i,j]; for h:=3 to 5 do fzp:=fzp-a[i,j,h];{Уменьшение ФЗП} end; {writeln (' bi: ',round(bi),' br: ',round(br));}
{ Надбавка по КТУ } nkr:=0.75*fzp/br;nki:=0.25*fzp/bi; {writeln('fzp ',round(fzp));}
p:=0; q:=1; { Цикл оптимизации} repeat if round (oc_m+oc_m*1.5*nki)> round(tar_rab*8*kol_d+tar_rab*8*kol_d*1.5*nkr) then begin p:=p+q; q:=q/10; end;
p:=p-q; nkr:=(1-p)*fzp/br; nki:=p*fzp/bi; { writeln (round (oc_m+oc_m*1.5*nki),' ',round(tar_rab*8*kol_d+tar_rab*8*kol_d*1.5*nkr)); writeln ('oc_m ',round(oc_m),' nki ',round( nki)); writeln ('oc_m ',round(oc_m),' nkr ',round( nkr));} until round (oc_m+oc_m*1.5*nki)<> round(tar_rab*8*kol_d+tar_rab*8*kol_d*1.5*nkr);
{writeln ('ok ',round (oc_m+oc_m*1.5*nki),' ',round(tar_rab*8*kol_d+tar_rab*8*kol_d*1.5*nkr)); writeln ('ok nkr : ',round(nkr) ,' nki : ',nki);}
{ Зарплата по КТУ выпл. рабочим } for i:=1 to 3 do for j:=1 to kol_vo[i] do a[i,j,7]:=round(nkr*balls[i,j]);
{ Зарплата по КТУ выпл. ИТР } for j:=1 to kol_vo[i] do a[4,j,7]:=round(nki*balls[4,j]);
{ Итоговое суммирование }
for i:=1 to 4 do for j:=1 to kol_vo[i] do begin a[i,j,17]:=0;a[i,j,20]:=0; for h:=3 to 5 do a[i,j,17]:=a[i,j,17]+a[i,j,h]; for h:=7 to 16 do a[i,j,17]:=a[i,j,17]+a[i,j,h]; for h:=17 to 19 do a[i,j,20]:=a[i,j,20]+a[i,j,h]; end;
end; end.
Файл, отвечающий за вывод данных в выводные таблицы. Unit4.pas
unit unit4;
interface uses unit1;
procedure vivod;
implementation procedure vivod ; var i,j,h:integer; begin {Вывод в таблицу}
for i:=1 to 4 do begin str(i,s);assign(f,'vihod\'+s+'-'+mw+'.txt');rewrite(f); s:='Таблица заработной платы по ' +s+' участку на '+mes[n_mes]+' месяц'; writeln(f,s);
{Создание шапки таблицы} assign(f1,'vhod/shapka');reset(f1); for j:=1 to 6 do begin readln(f1,z);writeln(f,z);end;close(f1);
for j:=1 to kol_vo[i] do begin {Вывод данных в таблицу} write(f,'|');write(f,j:2);write(f,'|'); write(f,fio[i,j]:16);write(f,'|'); for h:=3 to 5 do begin write(f,a[i,j,h]:8);write(f,'|');end; str(round(balls[i,j]),s);write(f,s:8);write(f,'|'); for h:=7 to 20 do begin write(f,a[i,j,h]:8);write(f,'|');end; write(f,j:2);writeln(f,'|'); end; close(f); end;
{readln;}
end; end.
Список идентификаторов, используемых в программе: n_mes -№ ìåñÿöà; conv -ïåðåì.-êîíâåêòîð; f,f1 -òåêñòîâûå; z,s,mw:string;x,yl -äîïîëíèòåëüíûå ïåðåìåííûå; kol_d,tar_rab, fzp,oc_m -Èñõîäíàÿ èíôîðìàöèÿ; kol_vo[1..4] -Êîëè÷åñòâî ðàáîòíèêîâ â ãðóïïå; ktu[1..4,1..20] -ÊÒÓ; fio[1..4,1..20] -Ôамилия, Èмя, Îчество работника; a[1..4,1..20,3..20] -Âûõîäíàÿ èíôîðìàöèÿ èç òàáëèöû; t:[1..4,1..20,1..7] -Òàðèô, îêëàä è òàáåëü; balls[1..4,1..20] of extended -Áàëëû ðàáîòíèêîâ; br,bi -Ñóììы áàëëîâ рабочих и ИТР; i,j,g,h,c; -ïåðåìåííûå-ñ÷åò÷èêè; nkr,nki,p,q -Íîðìàòèâíûå êîýôôèöèåíòû, Äîëÿ ÈÒÐ,Ïåðåì.-ñ÷åò÷èê; fr,fi -Ñðåäñòâà ðàñïðåä. ïî ÊÒÓ ðàáî÷èì è ÈÒÐ; mes -наименование месецев;
Дополнительно: Программа осуществляет построчный ввод из входных файлов, обрабатывает их при помощи рабочих файлов, делая построчный вывод в выходные файлы. Для функционирования программы используются форматные файлы. Максимальный объем вводимой информации ограничен структурой таблицы. Помимо основных, программа использует стандартные модули языка Delphi.
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (164)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |