Файл: Автоматизация и исчисление показателей численности кадров организации Построение алгоритма программы.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 18.10.2024

Просмотров: 4

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Глава 2. Автоматизация и исчисление показателей численности кадров организации

2.1. Построение алгоритма программы
Имеем условие: 45 работников отработали полный календарный месяц; 15 работников отработали 25 календарных дней; 11 работников отработали 20 календарных дней; 7 работников отработали 11 календарных дней. Рассчитать среднесписочную численность работников организации в марте текущего года.

Для нахождения среднесписочной численности работников организации необходимо в первую очередь вычислить списочную численность работников за календарные дни (чел/дней):

  1. 45*31=1395 (чел/дн.);

  2. 15*25=375 (чел/дн.);

  3. 11*20=220 (чел/дн.);

  4. 7*11=77 (чел/дн.).

Найдем среднесписочную численность кадров (формула 1):




    1. . Листинг программы


unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

mm1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

lbl1: TLabel;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

edt4: TEdit;

lbl2: TLabel;

edt5: TEdit;

edt6: TEdit;

edt7: TEdit;

edt8: TEdit;

btn1: TButton;

btn2: TButton;

lbl3: TLabel;

Edit1: TEdit;

edt9: TEdit;

edt10: TEdit;

edt11: TEdit;

lbl4: TLabel;

edt12: TEdit;

procedure N3Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure edt1KeyPress(Sender: TObject; var Key: Char);

procedure edt2KeyPress(Sender: TObject; var Key: Char);

procedure edt3KeyPress(Sender: TObject; var Key: Char);

procedure edt4KeyPress(Sender: TObject; var Key: Char);

procedure edt5KeyPress(Sender: TObject; var Key: Char);

procedure edt6KeyPress(Sender: TObject; var Key: Char);

procedure edt7KeyPress(Sender: TObject; var Key: Char);

procedure edt8KeyPress(Sender: TObject; var Key: Char);
private

{ Private declarations }

public

{ Public declarations }

end;

const

rab=45; //45 работников

rab2=15; // 15 работников

rab3=11; // 11 работников

rab4=7; // 7 работников

rabdn=31; // 31 день

rab1dn=25; // 25 дней

rab2dn=20; // 20 дней

rab3dn=11; // 11 дней
var

Form1: TForm1;

Vrab,Vrab2,Vrab3,Vrab4: Real;

Vrabdn, Vrab1dn, Vrab2dn, Vrab3dn:Real;

implementation

uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject); // автоматический ввод значений из условия задачи

begin

edt1.text:=FloatToStr(rab);

edt2.Text:=FloatToStr(rab2);

edt3.Text:=FloatToStr(rab3);

edt4.Text:=FloatToStr(rab4);

edt5.Text:=FloatToStr(rabdn);

edt6.Text:=FloatToStr(rab1dn);

edt7.Text:=FloatToStr(rab2dn);

edt8.Text:=FloatToStr(rab3dn);

end;
procedure TForm1.btn1Click(Sender: TObject); // решение

var ChDn, ChDn1, ChDn2, ChDn3:Real; // чел/дней

CC:Real; // среднесписочная численность

begin

if (edt1.Text='') or (edt2.Text='') or (edt3.Text='') or (edt4.Text='')

or (edt5.Text='') or (edt6.Text='') or (edt7.Text='') or (edt8.Text='')

then MessageDLG('Одно из полей не заполнено, найди и заполни',mtError,[mbOk],0)

else

begin

Vrab:=StrToFloat(edt1.Text);

Vrab2:=StrToFloat(edt2.Text);

Vrab3:=StrToFloat(edt3.Text);

Vrab4:=StrToFloat(edt4.Text);

Vrabdn:=StrToFloat(edt5.Text);

Vrab1dn:=StrToFloat(edt6.text);

Vrab2dn:=StrToFloat(edt7.Text);

Vrab3dn:=StrToFloat(edt8.Text);
if (Vrab>=0) and (Vrabdn>=0)

then

begin

ChDn:=Vrab*vrabdn;

edit1.text:=FloatToStr(ChDn);

end

else

MessageDLG('Введено некорректное значение в одно из поле. Значение должно быть больше нуля',mtError,[mbOk],0);
if (Vrab2>=0) and (Vrab1dn>=0)

then

begin

ChDn1:=Vrab2*vrab1dn;

edt9.text:=FloatToStr(ChDn1);

end

else

MessageDLG('Введено некорректное значение в одно из поле. Значение должно быть больше нуля',mtError,[mbOk],0);

if (Vrab3>=0) and (Vrab2dn>=0)

then

begin

ChDn2:=Vrab3*vrab2dn;

edt10.text:=FloatToStr(ChDn2);

end

else

MessageDLG('Введено некорректное значение в одно из поле. Значение должно быть больше нуля',mtError,[mbOk],0);
if (Vrab4>=0) and (Vrab3dn>=0)

then

begin

ChDn3:=Vrab4*vrab3dn;

edt11.text:=FloatToStr(ChDn3)

end

else

MessageDLG('Введено некорректное значение в одно из поле. Значение должно быть больше нуля',mtError,[mbOk],0);
if (Vrabdn>=0) and (Vrab1dn>=0) and (Vrab2dn>=0) and (Vrab3dn>=0) and

(ChDn>=0) and (ChDn1>=0) and (ChDn2>=0) and (ChDn3>=0)

then

begin

CC:=(ChDn+ChDn1+ChDn2+ChDn3)/(Vrabdn+Vrab1dn+Vrab2dn+Vrab3dn);

edt12.Text:=FloatToStrf(CC,ffFixed,6,0);

end

else

MessageDLG('Введено некорректное значение в одно из поле. Значение должно быть больше нуля',mtError,[mbOk],0);
// ограничения ввода в edit чисел больше 31

if (Vrabdn>=32) then

begin

MessageDlg('Введено неправильное значение в количество дней 1 графа!',mtError,[mbOk],0);

Abort;

end;
if (Vrab1dn>=32) then

begin

MessageDlg('Введено неправильное значение в количество дней 2 графа!',mtError,[mbOk],0);

Abort;

end;
if (Vrab2dn>=32) then

begin

MessageDlg('Введено неправильное значение в количество дней 3 графа!',mtError,[mbOk],0);

Abort;

end;
if (Vrab3dn>=32) then

begin

MessageDlg('Введено неправильное значение в количество дней 4 графа!',mtError,[mbOk],0);

Abort;

end;

end;

end;
procedure TForm1.N5Click(Sender: TObject); // открытие условия задачи

begin

form2.show;

end;
procedure TForm1.N6Click(Sender: TObject); // открытие справки

begin

form3.show;

end;
procedure TForm1.N2Click(Sender: TObject); // выход из программы



begin

Close;

end;
procedure TForm1.btn2Click(Sender: TObject); // очистить

begin

edt1.Text:='';

edt2.Text:='';

edt3.Text:='';

edt4.Text:='';

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt8.Text:='';

edit1.Text:='';

edt9.Text:='';

edt10.Text:='';

edt11.Text:='';

edt12.Text:='';

end;
// ограничение на ввод букв

procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt2KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt3KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt4KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt5KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt6KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt7KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;
procedure TForm1.edt8KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',',']) then

Key:=#0;

end;

end.



    1. Блок-схема


Данная блок-схема позволяет нам подробно рассматривать принцип работы программы автоматизации и исчисления показателей численности кадров.



    1. Язык программирования