Skip to content

Kalkulator spalania paliwa

This content is not available in your language yet.

Stworzysz Kalkulator spalania paliwa - aplikację umożliwiającą obliczanie średniego zużycia paliwa na podstawie przejechanych kilometrów i zatankowanego paliwa. System pozwala śledzić historię tankowań, analizować koszty podróży i porównywać efektywność jazdy w różnych okresach.

Czego się nauczysz?

  • Walidacji danych liczbowych (dystans, litry, cena)
  • Wykonywania obliczeń matematycznych w PHP
  • Pracy z historią rekordów i średnimi
  • Formatowania liczb i walut
  • Tworzenia raportów i statystyk

W prawdziwej pracy...

Kalkulatory i aplikacje do śledzenia wydatków są podstawą wielu aplikacji finansowych i lifestyle’owych. Umiejętność projektowania systemów z obliczeniami, historią danych i statystykami jest fundamentem dla każdego programisty tworzącego aplikacje użytkowe - od zarządzania flotą pojazdów firmowych po osobiste budżetowanie.

  1. Formularz wprowadzania danych Użytkownik podaje przejechane kilometry, ilość zatankowanego paliwa (litry) i opcjonalnie cenę za litr. System oblicza średnie spalanie.

  2. Walidacja danych System sprawdza poprawność wprowadzonych danych - czy wartości są liczbami dodatnimi, czy dystans i litry mają sens (np. nie więcej niż 500 litrów).

  3. Obliczenie spalania System oblicza spalanie według wzoru: (litry / km) * 100 = l/100km i wyświetla wynik.

  4. Wyświetlenie wyniku Użytkownik widzi obliczone spalanie w czytelnej formie z opcjonalnym kosztem podróży.

Przykładowa struktura pliku JSON:

{
"records": [
{
"id": 1,
"date": "2026-02-10",
"distance": 450,
"liters": 36.5,
"price_per_liter": 6.25,
"consumption": 8.11,
"total_cost": 228.13,
"notes": "Trasa A4 Kraków-Wrocław",
"created_at": "2026-02-10 18:30:00"
},
{
"id": 2,
"date": "2026-02-15",
"distance": 120,
"liters": 12.8,
"price_per_liter": 6.30,
"consumption": 10.67,
"total_cost": 80.64,
"notes": "Jazda miejska",
"created_at": "2026-02-15 14:20:00"
},
{
"id": 3,
"date": "2026-02-18",
"distance": 380,
"liters": 28.5,
"price_per_liter": 6.18,
"consumption": 7.50,
"total_cost": 176.13,
"notes": "",
"created_at": "2026-02-18 20:00:00"
}
]
}

Wymagane funkcje:

  • Formularz z polami: dystans (km), ilość paliwa (litry)
  • Walidacja danych w PHP (wartości > 0, poprawne liczby)
  • Obliczenie spalania: (litry / km) * 100
  • Wyświetlenie wyniku z dokładnością do 2 miejsc po przecinku
  • Prosty interfejs CSS

Przykładowy scenariusz:

Użytkownik wpisuje dystans 450 km i zatankowane 36.5 litra. Po kliknięciu “Oblicz” widzi wynik: “Średnie spalanie: 8.11 l/100km”.

Ocena: 3.0

Walidacja danych wejściowych:

$distance = filter_var($_POST['distance'] ?? '', FILTER_VALIDATE_FLOAT);
$liters = filter_var($_POST['liters'] ?? '', FILTER_VALIDATE_FLOAT);
if ($distance === false || $distance <= 0) {
$errors[] = "Dystans musi być liczbą dodatnią";
}
if ($liters === false || $liters <= 0) {
$errors[] = "Ilość paliwa musi być liczbą dodatnią";
}
if ($liters > 500) {
$errors[] = "Ilość paliwa wydaje się nieprawidłowa (max 500 l)";
}
if ($distance > 0 && $liters > 0 && ($liters / $distance) * 100 > 50) {
$errors[] = "Spalanie wydaje się nierealistycznie wysokie";
}

Obliczanie spalania:

function calculateConsumption(float $distance, float $liters): float {
if ($distance <= 0) {
return 0;
}
return round(($liters / $distance) * 100, 2);
}
function calculateTotalCost(float $liters, float $pricePerLiter): float {
return round($liters * $pricePerLiter, 2);
}
function calculateCostPer100km(float $consumption, float $pricePerLiter): float {
return round($consumption * $pricePerLiter, 2);
}

Formatowanie wyników:

function formatConsumption(float $consumption): string {
return number_format($consumption, 2, ',', ' ') . ' l/100km';
}
function formatCurrency(float $amount): string {
return number_format($amount, 2, ',', ' ') . '';
}
function formatDistance(float $km): string {
return number_format($km, 0, ',', ' ') . ' km';
}

Średnie spalanie z historii:

function calculateAverageConsumption(array $records): float {
if (empty($records)) {
return 0;
}
$totalDistance = 0;
$totalLiters = 0;
foreach ($records as $record) {
$totalDistance += $record['distance'];
$totalLiters += $record['liters'];
}
if ($totalDistance <= 0) {
return 0;
}
return round(($totalLiters / $totalDistance) * 100, 2);
}

Raport miesięczny (wariant C):

function getMonthlyReport(array $records, int $year, int $month): array {
$monthRecords = array_filter($records, function($r) use ($year, $month) {
$recordDate = strtotime($r['date']);
return date('Y', $recordDate) == $year && date('n', $recordDate) == $month;
});
if (empty($monthRecords)) {
return [
'distance' => 0,
'liters' => 0,
'cost' => 0,
'consumption' => 0,
'trips' => 0,
];
}
$totalDistance = array_sum(array_column($monthRecords, 'distance'));
$totalLiters = array_sum(array_column($monthRecords, 'liters'));
$totalCost = array_sum(array_column($monthRecords, 'total_cost'));
return [
'distance' => $totalDistance,
'liters' => round($totalLiters, 2),
'cost' => round($totalCost, 2),
'consumption' => calculateConsumption($totalDistance, $totalLiters),
'trips' => count($monthRecords),
];
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazać postępy - nawet małe kroki się liczą
  • Wyjaśnić wątpliwości - pytaj, nie zgaduj
  • Skonsultować rozwiązania - feedback pomoże Ci się rozwijać

Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!