Przejdź do głównej zawartości

23. Harmonogram zajęć szkolnych

Harmonogram zajęć szkolnych

Aplikacja do tworzenia i zarządzania tygodniowym planem zajęć: dodawanie lekcji, przypisywanie sal i nauczycieli, wykrywanie konfliktów (ta sama sala w tym samym czasie).

  • Modelowania danych w układzie tabelarycznym (dzień × godzina)
  • Wykrywania konfliktów w harmonogramie
  • Generowania tabeli HTML z danych JSON
  • Walidacji pól z listą wyboru (klasy, sale, nauczyciele)
  • Wyświetlania siatki tygodniowej
  1. Definiowanie zasobów — lista sal i nauczycieli
  2. Dodawanie lekcji — klasa, przedmiot, nauczyciel, sala, dzień, godzina
  3. Wyświetlanie planu — tabela: dni × godziny lekcyjne
  4. Wykrywanie konfliktów — ta sama sala lub nauczyciel w tym samym terminie
  5. Filtrowanie widoku — plan dla konkretnej klasy lub sali
{
"lessons": [
{
"id": 1,
"class": "3TI",
"subject": "Programowanie aplikacji webowych",
"teacher": "mgr Nowak",
"room": "B14",
"day": "poniedzialek",
"hour": 1,
"added_at": "2026-01-15"
}
],
"rooms": ["A01", "A02", "B14", "B15", "Sala gimnastyczna"],
"teachers": ["mgr Nowak", "mgr Kowalska", "dr Wiśniewski"]
}

Wymagane funkcje:

  • Formularz dodawania lekcji (klasa, przedmiot, dzień, godzina)
  • Lista lekcji w formie tabeli
  • Filtrowanie po klasie
  • Zapis do JSON, walidacja pól wymaganych
Ocena: 3.0
  • Folderharmonogram/
    • index.php
    • dodaj.php
    • edytuj.php
    • plan.php
    • zasoby.php
    • Folderincludes/
      • functions.php
      • conflicts.php
      • auth.php
    • Folderdata/
      • lessons.json
    • Foldercss/
      • style.css
      • print.css

Wykrywanie konfliktu sali:

function hasRoomConflict(array $lessons, string $room, string $day, int $hour, int $excludeId = 0): bool {
foreach ($lessons as $lesson) {
if ($lesson['id'] === $excludeId) continue;
if ($lesson['room'] === $room && $lesson['day'] === $day && $lesson['hour'] === $hour) {
return true;
}
}
return false;
}

Budowanie siatki tygodniowej:

function buildScheduleGrid(array $lessons, string $class): array {
$days = ['poniedzialek', 'wtorek', 'sroda', 'czwartek', 'piatek'];
$grid = [];
foreach ($days as $day) {
for ($h = 1; $h <= 8; $h++) {
$grid[$day][$h] = null;
}
}
foreach ($lessons as $l) {
if ($l['class'] === $class) {
$grid[$l['day']][$l['hour']] = $l;
}
}
return $grid;
}