Skip to content

55. System punktacji uczniów

This content is not available in your language yet.

System punktacji uczniów

Aplikacja do zarządzania punktacją uczniów w klasie: dodawanie uczniów, przyznawanie punktów za aktywności (odpowiedź, projekt, konkurs) i wyświetlanie rankingu.

  • Modelowania danych ucznia z historią punktów
  • Sortowania tablicy po sumie punktów (usort)
  • Agregacji: sumowanie punktów z historii
  • Wyróżniania lidera rankingu

Systemy gamifikacji i punktacji są w każdej platformie e-learningowej, systemach CRM i programach lojalnościowych. Ta aplikacja uczy agregacji danych i budowania rankingów.

  1. Lista uczniów z łączną liczbą punktów
  2. Formularz dodawania ucznia (imię, klasa)
  3. Formularz przyznawania punktów (uczeń, liczba punktów, powód)
  4. Historia punktów ucznia
  5. Ranking: lista posortowana malejąco po punktach
{
"students": [
{
"id": 1,
"name": "Jan Kowalski",
"class": "3TI",
"points": [
{"amount": 5, "reason": "Odpowiedź na lekcji", "date": "2026-02-10"},
{"amount": 10, "reason": "Projekt tygodnia", "date": "2026-02-14"}
]
}
]
}
  • Lista uczniów z sumą punktów
  • Formularz przyznawania punktów
  • Prosty ranking (posortowana lista)
  • Zapis do JSON
Ocena: 3.0
<?php
// Obliczanie sumy punktów ucznia
function getTotalPoints(array $student): int {
return array_sum(array_column($student['points'], 'amount'));
}
// Budowanie rankingu
function buildRanking(array $students): array {
$ranked = array_map(function($s) {
$s['total'] = getTotalPoints($s);
return $s;
}, $students);
usort($ranked, fn($a, $b) => $b['total'] <=> $a['total']);
foreach ($ranked as $i => &$s) {
$s['rank'] = $i + 1;
}
return $ranked;
}
// Przyznawanie punktów
function addPoints(array &$students, int $studentId, int $amount, string $reason): bool {
foreach ($students as &$student) {
if ($student['id'] === $studentId) {
$student['points'][] = [
'amount' => $amount,
'reason' => htmlspecialchars($reason),
'date' => date('Y-m-d'),
];
return true;
}
}
return false;
}

Gamifikacja w klasie!

Zacznij od listy uczniów i sumy punktów. Potem dodaj formularz przyznawania. Ranking przyjdzie naturalnie po usort().