Главная страница
Навигация по странице:

  • 2.1. Построение алгоритма программы

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

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

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


    Скачать 64.5 Kb.
    НазваниеАвтоматизация и исчисление показателей численности кадров организации Построение алгоритма программы
    Дата08.01.2023
    Размер64.5 Kb.
    Формат файлаdoc
    Имя файлаГлава 2.doc
    ТипГлава
    #876371

    Глава 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. Язык программирования


    написать администратору сайта