Мегаобучалка Главная | О нас | Обратная связь


Тексты программ (в приложении).



2019-10-11 164 Обсуждений (0)
Тексты программ (в приложении). 0.00 из 5.00 0 оценок




 

Главный запускающий файл программы.

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.

 



2019-10-11 164 Обсуждений (0)
Тексты программ (в приложении). 0.00 из 5.00 0 оценок









Обсуждение в статье: Тексты программ (в приложении).

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (164)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)