Untitled

 avatar
unknown
plain_text
4 months ago
4.5 kB
2
Indexable
from abc import ABC
from enum import Enum
from datetime import datetime


class Rola(Enum):
    ADMIN = 'Admin'
    NAUCZYCIEL = 'Nauczyciel'
    UCZEN = 'Uczen'


class Uzytkownik(ABC):
    def __init__(self, user_id, imie, email, haslo, rola):
        self.user_id = user_id
        self.imie = imie
        self.email = email
        self.haslo = haslo
        self.rola = rola

    def zaloguj(self):
        print(f"{self.imie} zalogowany jako {self.rola.value}")

    def wyloguj(self):
        print(f"{self.imie} wylogowany.")

    def zaktualizuj_profil(self, nowe_dane):
        self.imie = nowe_dane.get("imie", self.imie)
        self.email = nowe_dane.get("email", self.email)
        print(f"{self.imie} zaktualizował/a profil")


class Nauczyciel(Uzytkownik):
    def __init__(self, user_id, imie, email, haslo, przedmiot):
        super().__init__(user_id, imie, email, haslo, Rola.NAUCZYCIEL)
        self.przedmiot = przedmiot

    def przypisz_zajecia(self, zajecia):
        zajecia.nauczyciel = self
        print(f"Nauczyciel {self.imie} przypisany do przedmiotu {zajecia.przedmiot}")


class Uczen(Uzytkownik):
    def __init__(self, user_id, imie, email, haslo, klasa):
        super().__init__(user_id, imie, email, haslo, Rola.UCZEN)
        self.klasa = klasa

    def zapisz_na_zajecia(self, zajecia):
        zajecia.dodaj_ucznia(self)
        print(f"Uczeń {self.imie} zapisany na zajęcia {zajecia.przedmiot}")


class Administrator(Uzytkownik):
    def __init__(self, user_id, imie, email, haslo):
        super().__init__(user_id, imie, email, haslo, Rola.ADMIN)

    def stworz_nauczyciela(self, user_id, imie, email, haslo, przedmiot):
        return Nauczyciel(user_id, imie, email, haslo, przedmiot)

    def stworz_ucznia(self, user_id, imie, email, haslo, klasa):
        return Uczen(user_id, imie, email, haslo, klasa)


class Zajecia:
    def __init__(self, class_id, przedmiot, start, koniec):
        self.class_id = class_id
        self.przedmiot = przedmiot
        self.start = start
        self.koniec = koniec
        self.nauczyciel = None
        self.uczniowie = []

    def dodaj_ucznia(self, uczen):
        self.uczniowie.append(uczen)
        print(f"Uczeń {uczen.imie} dodany do zajęć {self.przedmiot}")

    def usun_ucznia(self, uczen):
        if uczen in self.uczniowie:
            self.uczniowie.remove(uczen)
            print(f"Uczeń {uczen.imie} usunięty z zajęć {self.przedmiot}")


class Sala:
    def __init__(self, room_id, numer_sali, pojemnosc):
        self.room_id = room_id
        self.numer_sali = numer_sali
        self.pojemnosc = pojemnosc

    def czy_dostepna(self, start, koniec):
        # Tu można dodać logikę sprawdzającą dostępność sali w danym przedziale czasowym
        print(f"Sala {self.numer_sali} jest dostępna od {start} do {koniec}")
        return True


class Harmonogram:
    def __init__(self, schedule_id, data_rozpoczecia_tygodnia):
        self.schedule_id = schedule_id
        self.data_rozpoczecia_tygodnia = data_rozpoczecia_tygodnia
        self.zajecia = []

    def wygeneruj_harmonogram(self):
        print(f"Generowanie harmonogramu na tydzień od {self.data_rozpoczecia_tygodnia}")
        for zaj in self.zajecia:
            print(f"Zajęcia: {zaj.przedmiot}, Start: {zaj.start}, Koniec: {zaj.koniec}")

    def zaktualizuj_harmonogram(self, zajecia):
        self.zajecia.append(zajecia)
        print(f"Dodano zajęcia {zajecia.przedmiot} do harmonogramu")

    def wyswietl_harmonogram(self):
        print("Harmonogram zajęć:")
        for zaj in self.zajecia:
            print(f"{zaj.przedmiot}: {zaj.start} - {zaj.koniec}")


if __name__ == "__main__":
    admin = Administrator(1, "Admin", "admin@school.com", "password123")

    nauczyciel = admin.stworz_nauczyciela(2, "Jan Kowalski", "jan@school.com", "pass123", "Matematyka")

    uczen = admin.stworz_ucznia(3, "Anna Nowak", "anna@school.com", "pass123", "1A")

    sala = Sala(1, "101", 30)

    zajecia = Zajecia(1, "Matematyka", datetime(2024, 10, 20, 8, 0), datetime(2024, 10, 20, 9, 30))

    nauczyciel.przypisz_zajecia(zajecia)

    uczen.zapisz_na_zajecia(zajecia)

    sala.czy_dostepna(zajecia.start, zajecia.koniec)

    harmonogram = Harmonogram(1, datetime(2024, 10, 20))

    harmonogram.zaktualizuj_harmonogram(zajecia)

    harmonogram.wyswietl_harmonogram()
Editor is loading...
Leave a Comment