(c) 2023 Technische Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever - Impressum
dir()
['In', 'Out', '_', '__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_dh', '_i', '_i1', '_ih', '_ii', '_iii', '_oh', '_sh', 'exit', 'get_ipython', 'quit']
_x1 = dir()
from math import sin, cos, tan
_x2 = dir()
set(_x2)-set(_x1)
{'_i3', '_i4', '_x1', 'cos', 'sin', 'tan'}
set(_x2)-set(_x1)-set([x for x in _x2 if x.startswith('_')])
{'cos', 'sin', 'tan'}
_x1 = dir()
from math import *
_x2 = dir()
set(_x2)-set(_x1)-set([x for x in _x2 if x.startswith('_')])
{'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sinh', 'sqrt', 'tanh', 'trunc'}
import os
if not os.path.exists("Unternehmen"):
os.mkdir("Unternehmen")
if not os.path.exists("Unternehmen/Organisation"):
os.mkdir("Unternehmen/Organisation")
with open("Unternehmen/__init__.py","w") as f:
f.write("")
with open("Unternehmen/Organisation/__init__.py","w") as f:
f.write("")
%%writefile Unternehmen/Person.py
import datetime
class Person():
def __init__(self,vorname,nachname,geschlecht,gebort,gebdatum):
self.nachname = nachname
self.vorname = vorname
self.geschlecht = geschlecht
self.gebort = gebort
if isinstance(gebdatum, datetime.date):
self.gebdatum = gebdatum
elif isinstance(gebdatum, str):
self.gebdatum = datetime.datetime.strptime(gebdatum, "%d.%m.%y").date()
def alter(self):
return datetime.datetime.now().year - self.gebdatum.year
Writing Unternehmen/Person.py
%%writefile Unternehmen/Adressen.py
class Koordinaten():
__erdradius = 6378.137 # Äquatorradius in km (WGS84 Referenzellipsoid)
# siehe https://de.wikipedia.org/wiki/Orthodrome
def __init__(self,ost=0,nord=0):
self.ost = ost
self.nord = nord
def distanz(self,andererOrt):
from math import sin, cos, acos, radians
lat1 = radians(self.nord)
lat2 = radians(andererOrt.nord)
lon1 = radians(self.ost)
lon2 = radians(andererOrt.ost)
d = self.__erdradius * acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2) *cos(lon2-lon1))
return d
class Adresse():
def __init__(self,ort,strasse,plz,koordinaten=None):
self.ort = ort
self.strasse = strasse
self.plz = plz
if koordinaten and isinstance(koordinaten, Koordinaten):
self.koordinaten = koordinaten
else:
self.koordinaten = Koordinaten()
__all__ = ["Koordinaten", "Adresse"]
Writing Unternehmen/Adressen.py
%%writefile Unternehmen/Organisation/Verwaltung.py
from ..Person import Person
from ..Adressen import *
class Mitarbeiter(Person,Adresse):
def __init__(self,person,abteilung,funktion,gehalt):
if isinstance(person, Person):
self.person = person
else:
print("keine Person angegeben")
self.abteilung = abteilung
self.funktion = funktion
self.gehalt = gehalt
def adresse(self,adresse):
if isinstance(adresse, Adresse):
self.adresse = adresse
else:
print("keine Adresse angegeben")
def mitarbeiterZugang(self,ma):
if isinstance(ma, Mitarbeiter):
self.mitarbeiter.append(ma)
else:
print("kein Mitarbeiter angegeben")
def mitarbeiterWeggang(self,ma):
if isinstance(ma, Mitarbeiter):
del self.mitarbeiter[self.mitarbeiter.index(ma)]
else:
print("kein Mitarbeiter angegeben")
Overwriting Unternehmen/Organisation/Verwaltung.py
%%writefile Unternehmen/Organisation/Abteilungen.py
from .Verwaltung import Mitarbeiter
class Abteilung(Mitarbeiter):
def __init__(self,mitarbeiter):
self.mitarbeiter = []
if isinstance(mitarbeiter, list):
for ma in mitarbeiter:
if isinstance(ma, Mitarbeiter) and ma.abteilung == self.name:
self.mitarbeiter.append(ma)
if ma.funktion == "Leiter":
self.leiter = ma
elif ma.funktion == "Stellvertreter":
self.stellvertreter = ma
class Einkauf(Abteilung):
name = "Einkauf"
def __init__(self,mitarbeiter):
super(Einkauf, self).__init__(mitarbeiter)
class Verkauf(Abteilung):
name = "Verkauf"
def __init__(self,mitarbeiter):
super(Verkauf, self).__init__(mitarbeiter)
class Verwaltung(Abteilung):
name = "Verwaltung"
def __init__(self,mitarbeiter):
super(Verwaltung, self).__init__(mitarbeiter)
__all__ = ["Einkauf", "Verkauf", "Verwaltung"]
Writing Unternehmen/Organisation/Abteilungen.py
spalten="Geschlecht,Vorname,Nachname,Strasse,Ort,Plz,Email,Telefon,Gebdatum,Nord,Ost"
personen="""M,Mathias,Zimmer,Buelowstrasse 82,Oberrod,56479,MathiasZimmer@gmx.de,02664 99 74 68,27.03.82,50.530761,7.980033
M,Torsten,Müller,Paderborner Strasse 23,Erdweg,85253,TorstenMuller@kabel.de,08254 27 03 80,31.05.91,48.310973,11.335096
M,Thomas,Neudorf,Fontenay 41,Kronach,96313,ThomasNeudorf@gmx.de,09261 66 53 16,07.07.46,50.273421,11.407716
W,Angelika,Nussbaum,An Der Urania 60,Husum,25805,AngelikaNussbaum@rhyta.com,04841 42 23 87,16.08.32,54.561832,9.151079
M,Jonas,Weissmüller,Sonnenallee 34,Augsburg,86044,JonasWeissmuller@telekom.de,0821 51 24 61,13.04.68,48.353975,10.910581
M,Stefan,Busch,Alt-Moabit 22,Wurzen,4801,StefanBusch@1und1.de,03425 65 19 75,28.06.56,51.380197,12.837981
M,Felix,Herz,Kastanienallee 98,Osteel,26529,FelixHerz@1und1.de,04934 60 24 76,08.12.97,53.450546,7.20508
W,Martina,Bumgarner,Hardenbergstraße 50,Rehweiler,66907,MartinaBumgarner@vodafon.de,06383 47 26 81,15.02.46,49.480584,7.435079
W,Doreen,Hoch,Straße der Pariser Kommune 44,Köln Rodenkirchen,50996,DoreenHoch@rhyta.com,0221 36 87 52,10.08.96,50.811933,7.040219
M,Steffen,Hueber,Frankfurter Allee 2,Karlsruhe Daxlanden,76189,SteffenHueber@congstar.de,0721 23 96 58,22.04.79,49.090142,8.397664
M,Steffen,Mayer,Kurfürstenstraße 8,Eschenbach,92671,SteffenMayer@kabel.de,07161 56 96 94,27.01.81,48.676098,9.628519
M,Kevin,Kastner,Charlottenstrasse 48,Cottbus,3050,KevinKastner@gmx.de,0355 58 83 10,19.02.48,51.733721,14.431042
W,Susanne,Weissmüller,Rosenstrasse 3,München,81675,SusanneWeissmuller@telekom.de,089 70 86 18,11.11.57,48.220319,11.695522
M,Marcel,Boehm,Alter Wall 43,Gollhofen,97258,MarcelBoehm@cuvox.de,09339 89 94 42,31.12.78,49.52431,10.159784
M,Michael,Konig,Inge Beisheim Platz 40,Kirchgellersen,21394,MichaelKonig@cuvox.de,04135 75 33 09,14.11.35,53.277876,10.155416
W,Johanna,Boehm,Genslerstraße 91,Berlin Schöneberg,10825,JohannaBoehm@vodafon.de,030 75 91 23,17.02.40,52.541938,13.395334
W,Daniela,Hartmann,Gubener Str. 9,Rosenheim,83026,DanielaHartmann@web.de,08031 69 53 65,25.06.34,47.833694,12.01175
W,Leonie,Klug,Rohrdamm 59,Bad Salzuflen Holzhausen,32108,LeonieKlug@cuvox.de,05208 70 42 84,03.02.70,52.049233,8.826827
M,Florian,Jung,Gotzkowskystrasse 55,Dohr,56812,FlorianJung@rhyta.com,02671 63 54 64,28.02.93,50.092006,7.101282
M,Martin,Gersten,Rudower Strasse 18,Lascheid,54597,MartinGersten@telekom.de,06556 10 73 02,16.10.70,50.28629,6.515705
W,Heike,Herman,Messedamm 93,Dresden,1131,HeikeHerman@kabel.de,0351 74 61 85,08.03.74,51.086195,13.790194
W,Sarah,Köhler,Invalidenstrasse 96,Ruppertsberg,67152,SarahKoehler@web.de,06326 93 97 78,02.06.93,49.333561,8.207738
W,Sabrina,Drescher,Guentzelstrasse 6,Ebersburg,36157,SabrinaDrescher@telekom.de,06656 25 78 89,06.02.91,50.552373,9.781745
M,Wolfgang,Gottschalk,Brandenburgische Str. 16,Erlenbach,63902,WolfgangGottschalk@web.de,07132 16 70 86,11.12.31,47.957794,8.086371
M,Wolfgang,Fisher,Schönhauser Allee 99,Emmendingen,79312,WolfgangFisher@gmx.de,07641 27 41 15,26.10.75,48.101633,7.770728
M,Daniel,Koertig,Luetzowplatz 48,Ehlenz,54636,DanielKoertig@kabel.de,06569 99 21 64,31.10.53,50.06716,6.342487
W,Annett,Boehm,Budapester Strasse 93,Gyhum,27404,AnnettBoehm@kabel.de,04288 48 86 09,21.07.44,53.245072,9.258132
M,Kristian,Gerber,Reeperbahn 64,Zwickau,8066,KristianGerber@web.de,037607 48 54,30.07.74,50.778603,12.566214
M,Thorsten,Kunze,Straße der Pariser Kommune 71,Köln Mülheim,51063,ThorstenKunze@cuvox.de,0221 61 98 68,06.07.77,50.912801,6.933286
W,Christine,Beich,Straße der Pariser Kommune 16,Köln Kalk,51109,ChristineBeich@gmx.de,0221 41 72 22,21.01.93,51.019736,7.099108
M,Mario,Farber,Invalidenstrasse 86,Hainfeld,76835,MarioFarber@telekom.de,06323 84 88 31,12.11.42,49.253485,8.167636
W,Laura,Gerste,Bayreuther Strasse 18,Reutlingen Gönningen,72770,LauraGerste@gustr.com,071 33 62 11,27.10.78,48.395319,9.086912
M,Ralf,Schröder,Hardenbergstraße 29,Schwanheim,76848,RalfSchroder@congstar.de,06392 21 03 75,06.12.66,49.274311,7.876453
M,Jörg,Hertzog,An der Alster 23,Krakow,18290,JorgHertzog@rhyta.com,038451 71 69,22.04.82,53.629202,12.326508
M,Maximilian,Abt,Landsberger Allee 27,München,80324,MaximilianAbt@congstar.de,089 10 64 76,10.01.71,48.051394,11.484411
M,Dennis,Nacht,Nuernbergerstrasse 15,Eutin,23693,DennisNacht@kabel.de,04521 93 53 33,05.08.41,54.158818,10.688799
M,Torsten,Weiss,Landsberger Allee 38,München,80602,TorstenWeiss@rhyta.com,089 96 75 89,21.03.45,48.076066,11.622793
W,Leonie,Wolf,Hollander Strasse 17,Biebertal,35444,LeonieWolf@cuvox.de,06409 10 68 95,13.10.56,50.69536,8.516227
M,Swen,Ebersbacher,Holstenwall 19,Abberode,6543,SwenEbersbacher@telekom.de,034779 14 40,21.10.39,51.570154,11.294344
M,Martin,Thalberg,Mohrenstrasse 63,Albstadt Burgfelden,72459,MartinThalberg@cuvox.de,07431 43 39 99,03.03.37,48.263463,8.945908"""
from Unternehmen.Person import Person
from Unternehmen.Adressen import Adresse, Koordinaten
from Unternehmen.Organisation.Verwaltung import Mitarbeiter
from Unternehmen.Organisation.Abteilungen import *
mitarbeiterliste = []
abteilungen = ["Verwaltung", "Einkauf", "Verkauf"]
maIndx = [(0,12),(12,25),(25,40)]
lines = personen.split('\n')
i = 0
for line in lines:
p = dict(zip(spalten.split(','),line.split(',')))
koord = Koordinaten(p["Nord"],p["Ost"])
person = Person(p["Vorname"],p["Nachname"],p["Geschlecht"],p["Ort"],p["Gebdatum"])
adresse = Adresse(p["Ort"],p["Strasse"],p["Plz"],koord)
for a in abteilungen:
indx = abteilungen.index(a)
if maIndx[indx][0] <= i < maIndx[indx][1]:
if i == maIndx[indx][0]:
f = "Leiter"
g = 3000
elif i == maIndx[indx][0]+1:
f = "Stellvertreter"
g = 2800
else:
f = "Mitarbeiter"
g = 2500
mitarbeiter = Mitarbeiter(person,a,f,g)
mitarbeiter.adresse = adresse
mitarbeiterliste.append(mitarbeiter)
i += 1
einkauf = Einkauf(mitarbeiterliste)
verkauf = Verkauf(mitarbeiterliste)
verwaltung = Verwaltung(mitarbeiterliste)
for abteilung in [verwaltung,einkauf,verkauf]:
print("Die Anzahl der Mitarbeiter in der Abteilung {} ist {}".format(abteilung.name,len(abteilung.mitarbeiter)))
if abteilung.leiter.person.geschlecht == "M":
print("Der Leiter der Abteilung {} ist {} {}".format(abteilung.name,
abteilung.leiter.person.vorname,
abteilung.leiter.person.nachname))
else:
print("Die Leiterin der Abteilung {} ist {} {}".format(abteilung.name,
abteilung.leiter.person.vorname,
abteilung.leiter.person.nachname))
if abteilung.stellvertreter.person.geschlecht == "M":
print("Der Stellvertreter der Abteilung {} ist {} {}".format(abteilung.name,
abteilung.stellvertreter.person.vorname,
abteilung.stellvertreter.person.nachname))
else:
print("Die Stellvertreterin der Abteilung {} ist {} {}".format(abteilung.name,
abteilung.stellvertreter.person.vorname,
abteilung.stellvertreter.person.nachname))
Die Anzahl der Mitarbeiter in der Abteilung Verwaltung ist 12 Der Leiter der Abteilung Verwaltung ist Mathias Zimmer Der Stellvertreter der Abteilung Verwaltung ist Torsten Müller Die Anzahl der Mitarbeiter in der Abteilung Einkauf ist 13 Die Leiterin der Abteilung Einkauf ist Susanne Weissmüller Der Stellvertreter der Abteilung Einkauf ist Marcel Boehm Die Anzahl der Mitarbeiter in der Abteilung Verkauf ist 15 Der Leiter der Abteilung Verkauf ist Daniel Koertig Die Stellvertreterin der Abteilung Verkauf ist Annett Boehm