-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOO-Bank.py
119 lines (104 loc) · 3.92 KB
/
OO-Bank.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# %% Create Class
from datetime import datetime
import itertools
#%%
class kontos():
minimum_kontostand = 0
def __init__(self,kennung:int):
self.kennung = kennung
self.saldo = 0
self.buchungshistorie = {}
def bareinzahlung(self,betrag):
self.saldo += betrag
self.buchungshistorie[datetime.today()] = ("Bareinzahlung",betrag)
def letzte_buchung_prüfen(self,anzahl_buchungen):
return dict(itertools.islice(sorted(self.buchungshistorie.items(),reverse=True), anzahl_buchungen))
def abbuchen_konto(self,betrag,konto_gutschrift,minimum_kontostand= minimum_kontostand):
if self.saldo - minimum_kontostand > betrag:
self.saldo -= betrag
self.buchungshistorie[datetime.today()] = ("Belastung",-betrag,konto_gutschrift)
else:
print(betrag)
raise ValueError
def gutschrift(self,betrag,belastungskonto):
self.saldo += betrag
self.buchungshistorie[datetime.today()] = ("Gutschrift",betrag,belastungskonto)
class jugendkonto(kontos):
pass
class privatkonto(kontos):
abbuchgebühr = 0.01
def abbuchen_konto(self, betrag,konto_gutschrift,abbuchgebühr, minimum_kontostand=-1000):
super().abbuchen_konto((1 + abbuchgebühr)*betrag,konto_gutschrift, minimum_kontostand)
class sparkonto(kontos):
pass
class bankkonto(kontos):
pass
# %%
class OO_Bank(jugendkonto,privatkonto,sparkonto,bankkonto):
def __init__(self,saldo_konto) -> None:
self.bankkonto = bankkonto(1)
self.bankkonto.saldo = saldo_konto
self.konto = {}
self.kennummer_kontos = 10
def create_konto(self,kontotyp):
if kontotyp == "Jugendkonto":
self.konto[self.kennummer_kontos] = jugendkonto(self.kennummer_kontos)
elif kontotyp == "Privatkonto":
self.konto[self.kennummer_kontos] = privatkonto(self.kennummer_kontos)
elif kontotyp == "Sparkonto":
self.konto[self.kennummer_kontos] = sparkonto(self.kennummer_kontos)
else:
return "Der Kontotyp ist nicht vorhanden"
self.kennummer_kontos +=1
def bareinzahlung(self, kennung, Barbetrag):
if kennung in self.konto and Barbetrag > 0:
self.konto[kennung].bareinzahlung(Barbetrag)
else:
print("Kennung unbekannt oder Barbetrag negativ")
def check_saldo(self,kennung):
return self.konto[kennung].saldo
def konto_löschen(self,kennung):
if self.check_saldo(kennung) == 0:
del self.konto[kennung]
else:
return "Es hat noch Geld auf dem Konto"
def letzte_buchung_prüfen(self, kennung,anzahl_buchungen=1):
return self.konto[kennung].letzte_buchung_prüfen(anzahl_buchungen)
def buchung_von_konto(self,kennung_belastungskonto:int,kennung_gutschrift_konto:int,betrag:float):
try:
self.konto[kennung_belastungskonto].abbuchen_konto(betrag,kennung_gutschrift_konto)
self.konto[kennung_gutschrift_konto].gutschrift(betrag,kennung_belastungskonto)
except:
print("kontostand ist zu klein")
if isinstance(self.konto[kennung_belastungskonto],privatkonto):
self.bankkonto.gutschrift(privatkonto.abbuchgebühr * betrag,kennung_belastungskonto)
# %%
bank_object=OO_Bank(1000)
# %%
bank_object.create_konto("Jugendkonto")
bank_object.create_konto("Privatkonto")
bank_object.create_konto("Sparkonto")
# %%
bank_object.bareinzahlung(10,1000)
bank_object.bareinzahlung(11,400)
bank_object.bareinzahlung(12,700)
#%%
bank_object.check_saldo(11)
# %%
bank_object.buchung_von_konto(11,10,100)
# %%
bank_object.check_saldo(11)
# %%
bank_object.letzte_buchung_prüfen(11,2)
# %%
bank_object.bareinzahlung(11,400)
# %%
bank_object.bareinzahlung(11,700)
bank_object.letzte_buchung_prüfen(11)
# %%
youth=jugendkonto(10)
# %%
youth.bareinzahlung(10000)
# %%
youth.abbuchen_konto(1000,11,0)
# %%