Przejdź do głównej zawartości

Kalkulator rat kredytu (uproszczony)

Stworzysz Kalkulator rat kredytu - aplikacje umozliwiajaca obliczenie miesiecznej raty kredytu na podstawie podanych parametrow. Użytkownik wprowadza kwote kredytu, roczne oprocentowanie i okres spłaty, a system automatycznie oblicza rate miesieczna. Historia obliczen jest zapisywana do pliku JSON.

Czego się nauczysz?

  • Obsługi formularzy HTML i walidacji danych w PHP
  • Operacji matematycznych i wzorow finansowych
  • Formatowania liczb (waluta, procenty)
  • Zapisu i odczytu danych z plikow JSON

W prawdziwej pracy...

Kalkulatory finansowe to podstawa aplikacji bankowych, porównywark kredytow i narzedzi do planowania finansow osobistych. Umiejetnosc implementacji wzorow matematycznych, walidacji danych liczbowych i prezentacji wynikow w czytelny sposób to cenne kompetencje w sektorze fintech.

  1. Formularz wprowadzania danych Użytkownik podaje kwote kredytu, roczne oprocentowanie (w procentach) oraz okres spłaty (w miesiacach lub latach).

  2. Obliczenie raty miesiecznej System oblicza miesieczna rate kredytu według uproszczonego wzoru (raty rowne) i wyświetla wynik.

  3. Zapis do historii Każde obliczenie jest zapisywane do pliku JSON wraz z data, co pozwala przegladac poprzednie kalkulacje.

Przykładowa struktura pliku JSON:

{
"calculations": [
{
"id": 1,
"amount": 100000,
"interest_rate": 8.5,
"period_months": 120,
"monthly_payment": 1239.86,
"total_payment": 148783.20,
"total_interest": 48783.20,
"created_at": "2026-02-17 10:30:00"
},
{
"id": 2,
"amount": 50000,
"interest_rate": 7.0,
"period_months": 60,
"monthly_payment": 990.06,
"total_payment": 59403.60,
"total_interest": 9403.60,
"created_at": "2026-02-17 11:15:00"
}
]
}

Wymagane funkcje:

  • Formularz z polami: kwota kredytu, oprocentowanie roczne, okres (miesiace)
  • Walidacja danych w PHP (liczby dodatnie, oprocentowanie 0-100%)
  • Obliczenie i wyświetlenie raty miesiecznej
  • Zapis każdego obliczenia do pliku JSON
  • Prosty interfejs CSS (czytelny formularz)

Przykładowy scenariusz:

Użytkownik wchodzi na strone i widzi formularz. Wpisuje kwote 100000 zl, oprocentowanie 8% i okres 120 miesiecy. Po kliknieciu “Oblicz” widzi wynik: “Rata miesieczna: 1 213,28 zl”. Obliczenie zostaje zapisane do pliku JSON.

Ocena: 3.0

Walidacja danych kredytu:

$amount = filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT);
$interestRate = filter_var($_POST['interest_rate'], FILTER_VALIDATE_FLOAT);
$periodMonths = filter_var($_POST['period_months'], FILTER_VALIDATE_INT);
$errors = [];
if ($amount === false || $amount <= 0) {
$errors[] = "Kwota kredytu musi być liczba dodatnia";
}
if ($interestRate === false || $interestRate < 0 || $interestRate > 100) {
$errors[] = "Oprocentowanie musi być w zakresie 0-100%";
}
if ($periodMonths === false || $periodMonths < 1) {
$errors[] = "Okres spłaty musi wynosic minimum 1 miesiac";
}

Obliczenie raty miesiecznej (raty rowne - annuitetowe):

function calculateMonthlyPayment($amount, $annualRate, $months) {
if ($annualRate == 0) {
return $amount / $months; // Kredyt bezodsetkowy
}
$monthlyRate = $annualRate / 100 / 12; // Oprocentowanie miesieczne
$payment = $amount * ($monthlyRate * pow(1 + $monthlyRate, $months))
/ (pow(1 + $monthlyRate, $months) - 1);
return round($payment, 2);
}
$monthlyPayment = calculateMonthlyPayment($amount, $interestRate, $periodMonths);
$totalPayment = $monthlyPayment * $periodMonths;
$totalInterest = $totalPayment - $amount;

Generowanie harmonogramu splat:

function generateSchedule($amount, $annualRate, $months, $monthlyPayment) {
$schedule = [];
$balance = $amount;
$monthlyRate = $annualRate / 100 / 12;
for ($i = 1; $i <= $months; $i++) {
$interestPart = round($balance * $monthlyRate, 2);
$principalPart = round($monthlyPayment - $interestPart, 2);
$balance = round($balance - $principalPart, 2);
$schedule[] = [
'month' => $i,
'payment' => $monthlyPayment,
'principal' => $principalPart,
'interest' => $interestPart,
'balance' => max(0, $balance)
];
}
return $schedule;
}

Formatowanie kwoty:

function formatMoney($amount) {
return number_format($amount, 2, ',', ' ') . ' zl';
}
// Wynik: "1 213,28 zl"

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!