Skip to content

29. Rejestr projektów klasowych

This content is not available in your language yet.

Rejestr projektów klasowych

Katalog projektów realizowanych przez klasy szkolne: rejestracja projektu z opisem, składem zespołu, terminem oddania i statusem. System umożliwia śledzenie postępu i przeglądanie historii.

  • Modelowania danych zawierających tablicę (lista członków zespołu)
  • Zarządzania statusami projektu z walidacją przejść
  • Wyświetlania terminów z ostrzeżeniami o zbliżającym się deadlinie
  • Filtrowania po statusie, klasie i roku szkolnym
  • Eksportu danych do formatu CSV
  1. Rejestracja projektu — tytuł, opis, klasa, przedmiot, termin, zespół (lista imion)
  2. Lista projektów — z statusem i terminem, wyróżnienie przeterminowanych
  3. Zmiana statusu — planowany → w realizacji → oddany → oceniony
  4. Szczegóły projektu — opis, skład zespołu, historia statusów
  5. Filtrowanie — po klasie, statusie, przedmiocie
{
"projects": [
{
"id": 1,
"title": "Aplikacja pogodowa",
"description": "Strona wyświetlająca pogodę z zewnętrznego API",
"class": "3TI",
"subject": "Programowanie webowe",
"team": ["Jan Kowalski", "Anna Nowak"],
"deadline": "2026-03-31",
"status": "in_progress",
"grade": null,
"created_at": "2026-01-15",
"status_history": [
{"status": "planned", "changed_at": "2026-01-15"},
{"status": "in_progress", "changed_at": "2026-02-01"}
]
}
]
}

Wymagane funkcje:

  • Formularz rejestracji projektu
  • Lista projektów z terminem i statusem
  • Zmiana statusu
  • Wyróżnienie przeterminowanych
  • Zapis do JSON
Ocena: 3.0
  • Directoryprojekty-klasowe/
    • index.php
    • dodaj.php
    • edytuj.php
    • projekt.php
    • zmien-status.php
    • Directoryincludes/
      • functions.php
      • auth.php
    • Directorydata/
      • projects.json
    • Directorycss/
      • style.css

Wykrywanie zbliżającego się terminu:

function getDeadlineStatus(string $deadline): string {
$daysLeft = (strtotime($deadline) - time()) / 86400;
if ($daysLeft < 0) return 'overdue';
if ($daysLeft <= 7) return 'soon';
return 'ok';
}

Parsowanie składu zespołu:

$teamInput = trim($_POST['team'] ?? '');
$team = array_filter(array_map('trim', explode(',', $teamInput)));
if (count($team) < 1) {
$errors[] = "Podaj co najmniej jednego członka zespołu";
}
$team = array_map('htmlspecialchars', array_values($team));