Файл: Автоматизация и исчисление показателей численности кадров организации Построение алгоритма программы.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 18.10.2024
Просмотров: 4
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Глава 2. Автоматизация и исчисление показателей численности кадров организации
2.1. Построение алгоритма программы
Имеем условие: 45 работников отработали полный календарный месяц; 15 работников отработали 25 календарных дней; 11 работников отработали 20 календарных дней; 7 работников отработали 11 календарных дней. Рассчитать среднесписочную численность работников организации в марте текущего года.
Для нахождения среднесписочной численности работников организации необходимо в первую очередь вычислить списочную численность работников за календарные дни (чел/дней):
-
45*31=1395 (чел/дн.); -
15*25=375 (чел/дн.); -
11*20=220 (чел/дн.); -
7*11=77 (чел/дн.).
Найдем среднесписочную численность кадров (формула 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.
-
Блок-схема
Данная блок-схема позволяет нам подробно рассматривать принцип работы программы автоматизации и исчисления показателей численности кадров.
-
Язык программирования