- •Лабораторна робота № 3 (кількість аудиторних годин –6). Створення кредитного калькулятора
- •Хід роботи
- •1. Завантажте середовище візуального програмування Delphi.
- •2. Поставте на форму об’єкт TabControl1.
- •4. Розділи «Базові умови» та «Підсумкові значення» сформуйте, використовуючи об’єкти Label та Edit.
- •5. Для розділу «Сума виплат по кредиту» використайте об’єкт StringGrid1.
- •11. У коді програми кнопки «Обчислити» врахуйте наступні особливості стандартної схеми нарахування відсотків (код програми допишіть самостійно):
- •Контрольні запитання
Хід роботи
1. Завантажте середовище візуального програмування Delphi.
Змініть назву заголовка форми на «Кредитний калькулятор». У подальшому змініть розміри форми так, щоб на ній помістились усі об’єкти.
Збережіть програму у власній папці.
2. Поставте на форму об’єкт TabControl1.
У вікні Object Inspector задайте наступні значення його властивостей:
Align - alClient,
Tabs – Ануїтетна схема нарахування відсотків,
Стандартна схема нарахування відсотків (утвориться дві закладки з відповідними підписами).
Активуйте закладку «Ануїтетна схема нарахування відсотків».
3. Орієнтовно загальний вигляд кредитного калькулятора повинен бути наступним:
Базові умови:
Термін кредиту |
|
місяців |
Сума кредиту |
|
грн. |
Процентна ставка |
|
% річних |
Підсумкові значення, грн.
Загальна сума виплат |
|
у тому числі % |
|
тіло кредиту |
|
Схема виплат по кредиту
Місяць |
Дата виплати |
Заборгованість по кредиту |
Погашення кредиту |
Проценти по кредиту |
Виплати в місяць |
1 |
|
|
|
|
|
2 |
|
|
|
|
|
3 |
|
|
|
|
|
4 |
|
|
|
|
|
… |
|
… |
… |
… |
… |
4. Розділи «Базові умови» та «Підсумкові значення» сформуйте, використовуючи об’єкти Label та Edit.
Поля розділу «Підсумкові значення» не повинні бути доступними для редагування.
5. Для розділу «Сума виплат по кредиту» використайте об’єкт StringGrid1.
Значок компонента StringGrid розташований на вкладці Addіtіonal
У вікні Object Inspector задайте наступні значення його властивостей:
ColCount – 6;
RowCount – 12;
FixedCols – 0;
FixedRows – 1;
Для того, щоб задати назви заголовків стовпців таблиці активуйте форму Form 1 і у вікні Object Inspector перейдіть на закладку Events. У полі OnCreate двічі клацніть лівою клавішею миші. Активується процедура оброблення події створення форми. Наберіть у ній наступний код програми:
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
begin
ColWidths[0]:= 45; ∕∕ ширина стовпця
Cells[0,0] := 'Місяць'; ∕∕ заголовок стовпця
ColWidths[1]:= 80;
Cells[1,0] := 'Дата виплати';
ColWidths[2]:= 145;
Cells[2,0] := 'Заборгованість по кредиту';
ColWidths[3]:= 107;
Cells[3,0] := 'Погашення кредиту';
ColWidths[4]:= 115;
Cells[4,0] := 'Проценти по кредиту';
ColWidths[5]:= 95;
Cells[5,0] := 'Виплати в місяць';
end;
6. Для розділу «Дата кредитування» використайте об’єкт DateTimePicker1 із закладки Win32.
7. Поставте на закладці «Ануїтетна схема нарахування відсотків» три кнопки з підписами «Обчислити», «Очистити поля» та «Вихід» відповідно.
Загальний вигляд форми наведено на рис. 1.
Рис. 1. Форма кредитного калькулятора
8. Запрограмуйте кнопку "Вихід".
Скористайтесь процедурою закриття вікна програми close.
9. Запрограмуйте кнопку «Очистити поля».
Код програми наступний:
procedure TForm1.Button2Click(Sender: TObject);
var i, j:integer;
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
with StringGrid1 do
for i := 0 to ColCount - 1 do
for j:= 0 to RowCount - 1 do
begin
Cells[i, j] := '';
end;
end;
10. Запрограмуйте кнопку «Обчислити».
Спочатку розглянемо ануїтетну схему нарахування відсотків.
Ануїтетна схема нарахування відсотків:
1) Виплати в місяць (однаковий платіж кожного місяця !!!):
Коефіцієнт ануїтету:
,
де
A — коефіцієнт ануїтету; р — процентна ставка виражена в сотих долях в розрахунку на період.
Наприклад, для випадку 12 відсотків річних і щомісячного платежу це складе 0.12/12 = 0.01;
N - число періодів погашення кредиту.
Формула розрахунку кредиту. Формула розрахунку суми ануїтетного платежу
Sa = A * K,
де A - коефіцієнт ануїтету; K - сума кредиту.
Загальна сума виплат при ануїтетному способу погашення кредиту
S = N * Sa = N * A * K,
де N - число періодів погашення кредиту;
A - коефіцієнт ануїтету; K - сума кредиту.
Cума відсотків (переплата) при ануїтетному способі погашення
Sp = S - K = N * A * K - K =(N*A - 1) * K ,
де N - число періодів погашення кредиту;
A - коефіцієнт ануїтету; K - сума кредиту.
2) Проценти по кредиту:
Відсоток від заборгованості по кредиту = процентна ставка (в місяць) * Заборгованість по кредиту
3) погашення кредиту = виплата в місяць – проценти по кредиту.
4) Заборгованість по кредиту (у наступний місяць) = Заборгованість по кредиту (у поточному місяці) – погашення кредиту
Код програми:
procedure TForm1.Button1Click(Sender: TObject);
var j: integer;
p, A: real;
begin
if TabControl1.TabIndex=0 then //для закладки ануїтетна схема
begin
p:=(strtofloat(edit3.Text)/100)/12; //процентна ставка
A:=p*exp(strtoint(edit1.text)*ln(1+p))/(exp(strtoint(edit1.text)*ln(1+p))-1); // коефіцієнт ануїтету
edit4.text:= floattostr(strtofloat(edit2.Text)* A*strtofloat(edit1.Text)); // Загальна сума виплат
edit5.Text:=floattostr(strtofloat(edit4.Text)-strtofloat(edit2.Text)); // Cума відсотків
edit6.Text:=(edit2.Text); // тіло кредиту
StringGrid1.RowCount:=strtoint(Edit1.text)+1; // Місяць
with StringGrid1 do // перший рядок таблиці
begin
Cells[0,1] := '1';
Cells[1,1] := DateToStr(DateTimePicker1.Date); // дата
Cells[2,1] := edit2.Text; // Заборгованість по кредиту
Cells[4,1] := floattostr(strtofloat(Cells[2,1])*p); // Проценти по кредиту
Cells[5,1] := floattostr(strtofloat(edit2.Text)* A); // Виплати в місяць
Cells[3,1] := floattostr(strtofloat(Cells[5,1])-strtofloat(Cells[4,1])); // Погашення кредиту
end;
with StringGrid1 do // решта рядків таблиці
for J:= 2 to RowCount - 1 do
begin
Cells[0,j] := inttostr(j);
Cells[1,j] := DateToStr(incmonth(DateTimePicker1.Date,j-1)); // дата
Cells[2,j] := floattostr(strtofloat(Cells[2,j-1])- strtofloat(Cells[3,j-1])); // Заборгованість по кредиту
Cells[4,j] := floattostr(strtofloat(Cells[2,j])*p); // Проценти по кредиту
Cells[5,j] := floattostr(strtofloat(edit2.Text)* A); // Виплати в місяць
Cells[3,j] := floattostr(strtofloat(Cells[5,j]) - strtofloat(Cells[4,j])); // Погашення кредиту
end;
end
else // стандартна схема
begin
// код програми для стандартної схеми;
end;
end;
Рис.2. Результат виконання програми при Ануїтетній схемі нарахування відсотків
