204 lines
5.5 KiB
PowerShell
204 lines
5.5 KiB
PowerShell
class kunde {
|
|
[string]$name
|
|
|
|
kunde([string]$name) {
|
|
$this.name = $name
|
|
}
|
|
|
|
kunde([string]$vorname, [string]$nachname) {
|
|
$this.name = $vorname + " " + $nachname
|
|
}
|
|
}
|
|
|
|
class konto {
|
|
[kunde]$kunde
|
|
[double]$guthaben
|
|
[datetime]$erstelldatum
|
|
|
|
static überweisen([konto]$von, [konto]$nach, [double]$menge) {
|
|
$stand_von = $von.guthaben
|
|
$stand_nach = $nach.guthaben
|
|
try {
|
|
$von.auszahlen($menge)
|
|
$nach.einzahlen($menge)
|
|
}
|
|
catch {
|
|
$von.guthaben = $stand_von
|
|
$nach.guthaben = $stand_nach
|
|
throw $_
|
|
}
|
|
}
|
|
|
|
überweisen([konto]$nach, [double]$menge) {
|
|
[konto]::überweisen($this, $nach, $menge)
|
|
}
|
|
|
|
konto([kunde]$kunde) {
|
|
$this.guthaben = 0
|
|
$this.erstelldatum = Get-Date
|
|
$this.kunde = $kunde
|
|
}
|
|
|
|
[double]einzahlen([double]$menge) {
|
|
if ($menge -lt 0) {
|
|
throw "Einzahlungsmenge muss positiv sein!"
|
|
}
|
|
$this.guthaben += $menge
|
|
return $this.guthaben
|
|
}
|
|
|
|
[double]auszahlen([double]$menge) {
|
|
if ($menge -lt 0) {
|
|
throw "Auszahlungsmenge muss positiv sein!"
|
|
}
|
|
if (($this.guthaben - $menge) -gt (-1000)) {
|
|
$this.guthaben -= $menge
|
|
} else {
|
|
throw "Konto überzogen!"
|
|
}
|
|
return $this.guthaben
|
|
}
|
|
}
|
|
|
|
class bank {
|
|
[string]$name
|
|
[System.Collections.Generic.List[konto]]$konten = @()
|
|
[System.Collections.Generic.List[kunde]]$kunden = @()
|
|
|
|
bank([string]$name) {
|
|
$this.name = $name
|
|
}
|
|
|
|
auszahlen([konto]$konto, [double]$menge) {
|
|
$konto.auszahlen($menge)
|
|
}
|
|
|
|
einzahlen([konto]$konto, [double]$menge) {
|
|
$konto.einzahlen($menge)
|
|
}
|
|
|
|
überweisen([konto]$von, [konto]$nach, [double]$menge) {
|
|
$von.überweisen($nach, $menge)
|
|
}
|
|
|
|
[kunde]neukunde([string]$vorname, [string]$nachname) {
|
|
$kunde = [kunde]::new($vorname, $nachname)
|
|
$this.kunden.add($kunde)
|
|
return $kunde
|
|
}
|
|
|
|
[konto]konto_erstellen([kunde]$kunde) {
|
|
$konto = [konto]::new($kunde)
|
|
$this.konten.add($konto)
|
|
return $konto
|
|
}
|
|
|
|
[void]übersicht() {
|
|
Write-Host "Übersicht"
|
|
foreach ($kunde in $this.kunden) {
|
|
Write-Host $kunde.name
|
|
foreach ($konto in $this.konten) {
|
|
if ($konto.kunde -eq $kunde) {
|
|
Write-Host " " $konto.guthaben
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
class cui {
|
|
[int]$state = 0
|
|
[bank]$bank
|
|
|
|
cui() {
|
|
$this.bank = [bank]::new("defaultbank")
|
|
}
|
|
|
|
[konto]select_konto([string]$use) {
|
|
if ($this.bank.konten.count -eq 0) {
|
|
Write-Host "Es sind keine Konten vorhanden!"
|
|
return $null
|
|
}
|
|
Write-Host "Wähle ein Konto" $use
|
|
for ($i = 0; $i -lt $this.bank.konten.count; $i += 1) {
|
|
Write-Host "Konto" $i "("$this.bank.konten[$i].guthaben") von" $this.bank.konten[$i].kunde.name
|
|
}
|
|
return $this.bank.konten[$(Read-Host "Auswahl")]
|
|
}
|
|
|
|
[kunde]select_kunde([string]$use) {
|
|
if ($this.bank.kunden.count -eq 0) {
|
|
Write-Host "Es sind keine Kunden vorhanden!"
|
|
return $null
|
|
}
|
|
Write-Host "Wähle einen Kunden" $use
|
|
for ($i = 0; $i -lt $this.bank.kunden.count; $i += 1) {
|
|
Write-Host "Kunde" $i ":" $this.bank.kunden[$i].name
|
|
}
|
|
return $this.bank.kunden[$(Read-Host "Auswahl")]
|
|
}
|
|
|
|
[int]run() {
|
|
$bname = Read-Host "Wähle einen Banknamen"
|
|
$this.bank = [bank]::new($bname)
|
|
while ($true) {
|
|
Write-Host "Wähle eine Aktion aus:"
|
|
Write-Host "1: Kunde anlegen"
|
|
Write-Host "2: Konto anlegen"
|
|
Write-Host "3: Einzahlen"
|
|
Write-Host "4: Auszahlen"
|
|
Write-Host "5: Überweißen"
|
|
Write-Host "6: Übersicht"
|
|
Write-Host "0: Beenden"
|
|
$cmd = Read-Host "Aktion"
|
|
switch ($cmd) {
|
|
0 {
|
|
return 0
|
|
}
|
|
1 {
|
|
$this.bank.neukunde(
|
|
$(Read-Host "Vorname"),
|
|
$(Read-Host "Nachname")
|
|
)
|
|
}
|
|
2 {
|
|
$k = $this.select_kunde("als Kontobesitzer")
|
|
if ($null -ne $k) {
|
|
$this.bank.konto_erstellen($k)
|
|
}
|
|
}
|
|
3 {
|
|
$k = $this.select_konto("für das Einzahlen")
|
|
if ($null -ne $k) {
|
|
$amount = Read-Host "Menge"
|
|
$this.bank.einzahlen($k, $amount)
|
|
}
|
|
}
|
|
4 {
|
|
$k = $this.select_konto("für das Auszahlen")
|
|
if ($null -ne $k) {
|
|
$amount = Read-Host "Menge"
|
|
$this.bank.auszahlen($k, $amount)
|
|
}
|
|
}
|
|
5 {
|
|
$von = $this.select_konto("als Quelle")
|
|
if ($null -ne $von) {
|
|
$nach = $this.select_konto("als Ziel")
|
|
$amount = Read-Host "Menge"
|
|
$this.bank.überweisen($von, $nach, $amount)
|
|
}
|
|
}
|
|
6 {
|
|
$this.bank.übersicht()
|
|
Read-Host "Press any key"
|
|
}
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
}
|
|
|
|
$cui = [cui]::new()
|
|
$cui.run() |