Построение модели организационной структуры фирмы
try
rentPay:=StrToFloat(lbledtRentPay.Text);
except
on EConvertError do
begin
MessageDlg('Арендные платежи введены не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
try
credPay:=StrToFloat(lbledtCredPay.Text);
except
on EConvertError do
begin
MessageDlg('Платежи по кредитам введены не верно!', mtWarning, [mbOk], 0);
Exit;
end;
>end;
try
eduPay:=StrToFloat(lbledtEduPay.Text);
except
on EConvertError do
begin
MessageDlg('Платежи за образование введены не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
try
alimPay:=StrToFloat(lbledtAlimPay.Text);
except
on EConvertError do
begin
MessageDlg('Алименты введены не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
try
othersPay:=StrToFloat(lbledtOthersPay.Text);
except
on EConvertError do
begin
MessageDlg('Прочие платежи введены не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
fixPay:=rentPay+credPay+eduPay+alimPay+othersPay;
freeIncome:=(gAverageIncome*(1-famKoef))-fixPay;
lbledtFreeIncome.Text:=FloatToStr(freeIncome);
gFreeIncome:=freeIncome;
end;
//
// Определение текущего дохода заемщика
//
procedure TForm1.btnCurrentIncomeCountClick(Sender: TObject);
var
totalIncome, provedIncome, currentIncome : real;
k, k1, k2, k3, k4, k5, k6, k7 : real;
begin
try
totalIncome:=StrToFloat(lbledtTotalIncome.Text);
except
on EConvertError do
begin
MessageDlg('Заявленный доход введен не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
try
provedIncome:=StrToFloat(lbledtProvedIncome.Text);
except
on EConvertError do
begin
MessageDlg('Подтвержденный доход введен не верно!', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxProvedIncome.ItemIndex of
0 : k1:=1; // подтвержденный
1 : k1:=0.6; // неподтвержденный
2 : k1:=0.4; // неподтвержденный без.док.
else
begin
MessageDlg('Не выбрана форма подтверждения дохода!', mtWarning, [mbOk], 0);
Exit;
end;
end;
if (k1 <> 1) then // есть неподтвержденная часть дохода
begin
case cbxClient.ItemIndex of
0 : k2:=0.05;
1 : k2:=0;
else
begin
MessageDlg('Не заполнено поле "Заемщик - клиент Банка" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxAccVol.ItemIndex of
0 : k3:=0.1;
1 : k3:=0.2;
2 : k3:=0.3;
else
begin
MessageDlg('Не заполнено поле "Объемы оборотов по счету" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxPropCost.ItemIndex of
0 : k4:=0.05;
1 : k4:=0.1;
2 : k4:=0.2;
else
begin
MessageDlg('Не заполнено поле "Стоимость имущества" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxShare.ItemIndex of
0 : k5:=0;
1 : k5:=0.05;
2 : k5:=0.1;
3 : k5:=0.2;
else
begin
MessageDlg('Не заполнено поле "Размер доли" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxExpense.ItemIndex of
0 : k6:=0;
1 : k6:=0.1;
2 : k6:=0.2;
else
begin
MessageDlg('Не заполнено поле "Размер расходов" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxPrePaid.ItemIndex of
0 : k7:=0;
1 : k7:=0.1;
2 : k7:=0.15;
3 : k7:=0.2;
else
begin
MessageDlg('Не заполнено поле "Размер доли собств. ср-в" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
k:=k1+k2+k3+k4+k5+k6+k7;
if (k < 1) then
currentIncome:=provedIncome+(totalIncome-provedIncome)*k
else
currentIncome:=totalIncome;
end
else // k1 = 1 - весь доход подтвержден - короткая формула
currentIncome:=totalIncome;
lbledtCurrentIncome.Text:=FloatToStr(currentIncome);
gCurrentIncome:=currentIncome;
end;
procedure TForm1.btnAverageIncomeCountClick(Sender: TObject);
var
averageIncome,k,k1,k2,k3,k4,k5,k6,k7,k8,k9 : real;
begin
case cbxPos.ItemIndex of
0 : k1:=0.25;
1 : k1:=0.2;
2 : k1:=0.15;
3 : k1:=0.1;
4 : k1:=0.05;
5 : k1:=0.2;
else
begin
MessageDlg('Не заполнено поле "Должность" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxSpec.ItemIndex of
0 : k2:=0.15;
1 : k2:=0.15;
2 : k2:=0.1;
3 : k2:=0.05;
4 : k2:=0.05;
5 : k2:=0.1;
6 : k2:=0.1;
else
begin
MessageDlg('Не заполнено поле "Обязанности" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxStazh.ItemIndex of
0 : k3:=0.2;
1 : k3:=0.15;
2 : k3:=0.05;
else
begin
MessageDlg('Не заполнено поле "Стаж" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxLastStazh.ItemIndex of
0 : k4:=0.1;
1 : k4:=0.05;
2 : k4:=0;
else
begin
MessageDlg('Не заполнено поле "Последний стаж" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxJobChange.ItemIndex of
0 : k5:=0.1;
1 : k5:=0.05;
2 : k5:=0;
else
begin
MessageDlg('Не заполнено поле "Смена работы" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxCareer.ItemIndex of
0 : k6:=0.05;
1 : k6:=0;
else
begin
MessageDlg('Не заполнено поле "Карьерный рост" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxEdu.ItemIndex of
0 : k7:=0.15;
1 : k7:=0.1;
2 : k7:=0.05;
3 : k7:=0.05;
4 : k7:=0;
else
begin
MessageDlg('Не заполнено поле "Образование" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxAge.ItemIndex of
0 : k8:=0;
1 : k8:=0.15;
2 : k8:=0.1;
3 : k8:=0.05;
else
begin
MessageDlg('Не заполнено поле "Возраст" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
case cbxCredHistory.ItemIndex of
0 : k9:=0.05;
1 : k9:=0;
else
begin
MessageDlg('Не заполнено поле "Кредитная история" !', mtWarning, [mbOk], 0);
Exit;
end;
end;
k:=k1+k2+k3+k4+k5+k6+k7+k8+k9;
if (k > 1) then k:=1;
averageIncome:=gCurrentIncome*k;
lbledtAverageIncome.Text:=FloatToStr(averageIncome);
gAverageIncome:=averageIncome;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
pod,psd,klci : real;
begin
try
pod:=gAnnuitet/gAverageIncome;
psd:=gAnnuitet/gFreeIncome;
klci:=gSummaCredita/gCarPrice;
lbledtPOD.Text:=FloatToStr(RoundTo(pod,-3));
lbledtPSD.Text:=FloatToStr(RoundTo(psd,-3));
lbledtKLCI.Text:=FloatToStr(RoundTo(klci,-3));
except
on EInvalidOp do
begin
MessageDlg('Приступайте к рассчету коэф-тов в последнюю очередь !', mtWarning, [mbOk], 0);
Exit;
end;
end;
if (pod <= 0.45) then
pnlPOD.Caption:='V'
else
pnlPOD.Caption:='X';
if (psd <= 0.7) then
pnlPSD.Caption:='V'
Другие рефераты на тему «Экономико-математическое моделирование»:
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели