
Code: Alles auswählen
# -*- coding: UTF8 -*-
#!/usr/bin/env python3
import os
import platform
import sys
import pprint
import time
import pickle
class stunde:
""" Eine einzelne Stunde """
def __init__(self):
"""Konstruktor : Erschafft eine stunde mit einem leeren Wörterbuch"""
#Konstruktor : Erschafft eine stunde mit einem leeren Wörterbuch
self.daten = {}
def _start(self):
"""Private Methode: Weißt self.daten Standardwerte zu"""
#Private Methode: Weißt self.daten Standardwerte zu
self.daten = {'Fach': " ", 'Raum': " ", 'Lehrer': " "}
def aendern(self,was,information):
"""Methode: Probiert den Wert "was" des Wörterbuchs zu "information" zu ändern """
# """Methode: Probiert den Wert "was" des Wörterbuchs zu "information" zu ändern """
try:
self.daten[was]=information
except:
print('Fehler bei der Eingabe bitte auch Groß/Kleinschreibeung beachten')
def anzeigen(self):
"""Methode: Gibt self.daten aus"""
# """Methode: Gibt self.daten aus"""
print (" ",self.daten )
def zu_speichernde_daten_ausgeben (self):
"""Methode: Gibt self.daten zum Speichern zurück"""
# """Methode: Gibt self.daten zum Speichern zurück"""
return self.daten
def geladene_daten_annehmen(self,data):
"""Methode: Setzt self.daten auf data welches als dict übergeben wird"""
# """Methode: Setzt self.daten auf data welches als dict übergeben wird"""
try:
self.daten=data
except:
print("Fehler beim Laden")
def raum(self):
"""Methode: Gibt den Wert des Schlüssels "Raum" aus"""
# """Methode: Gibt den Wert des Schlüssels "Raum" aus"""
print("Raum : ",self.daten['Raum'])
class tag:
"""Arbeitstag"""
def __init__(self):
"""Konstruktor: Erschafft eine leere Liste"""
# """Konstruktor: Erschafft eine leere Liste"""
self.stunden = []
def _start(self):
"""Private Methode: Fügt self.stunden 11 Stunden hinzu und ruft start() dieser auf"""
# """Private Methode: Fügt self.stunden 11 Stunden hinzu und ruft start() dieser auf"""
for i in range(11):
std = stunde()
self.stunden.append(std)
self.stunden[i]._start()
def aendern(self,tagwas,was,information):
"""Methode: Probiert die Methode "aendern" mit den parametern "was" und "informationen" des Objekts auf der liste self.stunden an der stelle tagwas-1 aufzurufen"""
# """Methode: Probiert die Methode "aendern" mit den parametern "was" und "informationen" des Objekts auf der liste self.stunden an der stelle tagwas-1 aufzurufen"""
try :
self.stunden[tagwas-1].aendern(was,information)
except:
print("Dieser tag hat nur " , len(self.stunden) , "Stunden. Bitte eine dieser wählen")
def anzeigen(self):
"""Methode: Ruft die Methode anzeigen() jeden Objekts in der liste self.stunden auf"""
# """Methode: Ruft die Methode anzeigen() jeden Objekts in der liste self.stunden auf"""
for idx, stunde in enumerate(self.stunden, 1):
print(idx)
stunde.anzeigen()
def zu_speichernde_daten_ausgeben (self):
"""Methode: Erzeugt eine leere Liste und fügt dieser die return werte der methode zu_speichernde_daten_ausgeben() welche für jedes objekt auf der liste self.stunden aufgerufen wird und gibt diese liste wieder"""
# """Methode: Erzeugt eine leere Liste und fügt dieser die return werte der methode zu_speichernde_daten_ausgeben() welche für jedes objekt auf der liste self.stunden aufgerufen wird und gibt diese liste wieder"""
datas = [stunde.zu_speichernde_daten_ausgeben() for stunde in self.stunden]
return datas
def geladene_daten_annehmen(self,data):
"""Methode: Erschafft für jedes Objekt in data eine stunde und ruft für diese die methode geladene_daten_annehmen mit dem parameter"""
# """Methode: Erschafft für jedes Objekt in data eine stunde und ruft für diese die methode geladene_daten_annehmen mit dem parameter"""
for j in data:
if len(self.stunden)<11:
std = stunde()
std.geladene_daten_annehmen(j)
self.stunden.append(std)
else:
break
def raum(self):
for idx,stunde in enumerate(self.stunden,1):
print(idx)
stunde.raum()
class woche:
def __init__(self):
self.tage = []
self._start()
def _start(self):
laufpfad=os.path.dirname(sys.argv[0])
laufpfad=os.path.join(laufpfad,"datas","data")
if os.path.exists(laufpfad):
with open(laufpfad,"rb") as ladedatei:
data=pickle.load(ladedatei)
self.geladene_daten_annehmen(data)
else:
for i in range(5):
day = tag()
self.tage.append(day)
self.tage[i]._start()
print("Willkommen bei der Erstbenutzung diesen Programms ! Viel Spaß!")
def aendern(self,wochewas,tagwas,was,information):
try:
self.tage[wochewas-1].aendern(tagwas,was,information)
except:
print("Diese Woche hat nur " , len(self.tage) , "Tage zur Auswahl. Bitte einen dieser wählen")
def anzeigen(self , ouf = sys.stderr):
for idx,tag in enumerate(self.tage,1):
Wochentage = ("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag")
print(Wochentage[idx-1],file=ouf)
tag.anzeigen()
def speichern(self):
aktuell = platform.system()
try:
print(str(aktuell)," detected as OS!")
ordner=os.path.dirname(sys.argv[0])
neuerordner=os.path.join(ordner,"datas")
if not os.path.exists(neuerordner):
os.mkdir(neuerordner)
print("Unterverzeichnis angelegt")
data=[]
#das hier drunter richtig ?
for tag in self.tage:
data.append(tag.zu_speichernde_daten_ausgeben())
neuerpfad=os.path.join(neuerordner,"data")
with open(neuerpfad,"wb") as filename:
data2zu_speichernde_daten_ausgeben=data
pickle.dump(data2zu_speichernde_daten_ausgeben,filename)
print("Daten erfolgreich gespeichert")
except:
print("Dein Betriebssystem ,",aktuell,"wird leider nicht unterstützt")
def geladene_daten_annehmen(self,data):
self.tage=[]
for i,j in enumerate(data):
day=tag()
self.tage.append(day)
self.tage[i].geladene_daten_annehmen(j)
print("Daten geladen")
def raum(self , ouf = sys.stderr):
for idx,tag in enumerate(self.tage,1):
print("Tag ", idx , file = ouf ),tag.raum()
def main():
week=woche()
eingabe = ""
while True:
print()
print(" Eintragungen zu einem (T)ag ändern? ")
print(" Wochenplanplan (a)nzeigen? ")
print(" (R)aumplan der Woche anzeigen")
print(" Einen (b)estimmten Tag anzeigen?")
print(" Den Raumplan (f)ür einen bestimmten Tag anzeigen?")
print(" (E)nde? ")
print()
eingabe = input(' Ihre Wahl? ').lower()
print()
if eingabe in ['t']:
while True:
wochewas =(input('Welchen Tag wollen Sie bearbeiten? (Bitte Zahl angeben!) '))
try:
wochewas = int(wochewas)
break
except ValueError :
print("Nur Zahlen eingeben bitte")
while True :
tagwas = (input('Welche Stunde wollen Sie bearbeiten? (Bitte Zahl angeben!) '))
try:
tagwas = int(tagwas)
break
except ValueError :
print("Nur Zahlen eingeben bitte")
stdwas = input('Welche Information wollen Sie eintragen? (Fach, Raum oder Lehrer?) ').title()
inf = input('Was soll eingetragen werden?(Maximal 4 Zeichen) ')[:4].ljust(4)
week.aendern(wochewas,tagwas,stdwas,inf)
elif eingabe in ['a']:
week.anzeigen()
elif eingabe in ['r']:
week.raum()
elif eingabe in ['b']:
while True:
was=input("Welchen Tag wollen sie anzeigen lassen ? (Nur Zahlen bitte !")
try:
was=int(was)
break
except ValueError:
print("Nur Zahlen eingeben bitte!")
week.tage[was-1].anzeigen()
elif eingabe in ['f']:
while True:
was=input("Von welchem Tag wollen sie den Raumplan anzeigen lassen ?(Nur Zahlen bittte!)")
try:
was=int(was)
break
except ValueError:
print("Nur Zahlen bitte!")
week.tage[was-1].raum()
elif eingabe in["e"]:
warten=input('Bitte nochmal Enter drücken! ')
week.speichern()
time.sleep(1)
print("Auf Wiedersehen!")
#sys.exit(0)
#os._exit(0)
break
elif eingabe in ['s']:
week.speichern()
elif eingabe in ['l']:
pfad=os.path.dirname(sys.argv[0])
echterpfad=os.path.join(pfad,"datas","data")
try:
with open(echterpfad,"rb") as file:
weekdata=pickle.load(file)
week.geladene_daten_annehmen(weekdata)
except FileNotFoundError:
print("Keine Daten gefunden")
else :
print("Bitte ein Buchstaben aus den Klammern oben wählen!")
print("Ihr Stundenplaner wurde geladen!")
if __name__ == '__main__':
main()