Compare commits
59 Commits
4d5a683eff
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5023c8614a | |||
| 1f949e0034 | |||
| 3b71cfc812 | |||
| 1e14c24e6a | |||
| 2a220f0c59 | |||
| db153e2883 | |||
| b7c7f0b870 | |||
| e488d8a241 | |||
| a4789cd594 | |||
| e054b82c6d | |||
| 732d29fefe | |||
| 2030e6e5be | |||
| f2113866fb | |||
| 7ce321ed58 | |||
| 7251b4a4fe | |||
| 57667d9787 | |||
| 7e879fed38 | |||
| a3e42d2d9d | |||
| 12357e9a91 | |||
| 68932c43f4 | |||
| 836fa81365 | |||
| fecdf379af | |||
| 137233e22f | |||
| 1ad5c174be | |||
| 7ac9e38d45 | |||
| e070913513 | |||
| 15c2e13fda | |||
| 6ef295a777 | |||
| c2aa6704c0 | |||
| d71cf32c35 | |||
| 255b72506c | |||
| b4f3fc83d2 | |||
| d7fa97afe8 | |||
| cd0a5b6b85 | |||
| a74a2281b2 | |||
| b72a8ef71f | |||
| c2ef05847b | |||
| 49c470939a | |||
| 4325fc8e1c | |||
| 0755b58307 | |||
| bc45b53b93 | |||
| 0576fbdcb5 | |||
| a0164f7861 | |||
| 39450ddfaa | |||
| 82c2908d49 | |||
| 4bd30c51c6 | |||
| 63a625e947 | |||
| f0257b1d82 | |||
| 3b2aefd614 | |||
| 08b7b3c26d | |||
| 5fcbb75617 | |||
| 50872fd681 | |||
| 9e1a2e5d52 | |||
| 3ea0be648a | |||
| f6a171d128 | |||
| 84aaab8cbe | |||
| 81a6b4dca1 | |||
| eb2ad89dbb | |||
| 9116a70e82 |
84
11fi5/AWP/2021-07-22 Prüfungsaufgaben.sql
Normal file
84
11fi5/AWP/2021-07-22 Prüfungsaufgaben.sql
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#A
|
||||||
|
#1
|
||||||
|
|
||||||
|
SELECT * FROM Artikel
|
||||||
|
WHERE LOWER(Art_Bezeichnung) LIKE "%schmerzmittel%";
|
||||||
|
|
||||||
|
#2
|
||||||
|
|
||||||
|
SELECT Kunde.*, SUM(RgPos_Menge*RgPos_Preis) FROM Kunde
|
||||||
|
JOIN Rechnung ON Kunde.Kd_Id = Rechnung.Rg_KdId
|
||||||
|
JOIN RechnungPosition ON Rechnung.Rg_Id = RechnungPosition.RgPos_RgID
|
||||||
|
GROUP BY Kunde.Kd_Id
|
||||||
|
ORDER BY SUM(RgPos_Menge*RgPos_Preis) DESC;
|
||||||
|
|
||||||
|
#3
|
||||||
|
|
||||||
|
SELECT Art_Id, Art_Nummer, Art_Bezeichnung, Art_Preis,
|
||||||
|
SUM(RechnungPosition.RgPos_Menge) AS MengeGesamt,
|
||||||
|
COUNT(RechnungPosition.RgPos_Id) AS AnzahlRechPos FROM Artikel
|
||||||
|
JOIN RechnungPosition ON Artikel.Art_Id = RechnungPosition.RgPos_ArtId
|
||||||
|
GROUP BY Art_Id;
|
||||||
|
|
||||||
|
#4
|
||||||
|
|
||||||
|
SELECT LEFT(Kunde.Kd_PLZ, 1) AS Gebiet, SUM(RgPos_Menge*RgPos_Preis) AS Umsatz FROM Kunde
|
||||||
|
LEFT JOIN Rechnung ON Kunde.Kd_Id = Rechnung.Rg_KdId
|
||||||
|
LEFT JOIN RechnungPosition ON Rechnung.Rg_Id = RechnungPosition.RgPos_RgID
|
||||||
|
GROUP BY LEFT(Kunde.Kd_PLZ, 1)
|
||||||
|
ORDER BY SUM(RgPos_Menge*RgPos_Preis) DESC;
|
||||||
|
|
||||||
|
#B
|
||||||
|
#1
|
||||||
|
CREATE TABLE Lieferant (
|
||||||
|
Lieferer_Nr INT AUTO_INCREMENT,
|
||||||
|
Firma VARCHAR(30),
|
||||||
|
Strasse VARCHAR(30),
|
||||||
|
PLZ VARCHAR(10),
|
||||||
|
Ort VARCHAR(30),
|
||||||
|
BLZ VARCHAR(30),
|
||||||
|
Konto_Nr VARCHAR(30),
|
||||||
|
PRIMARY KEY(Lieferer_Nr),
|
||||||
|
FOREIGN KEY(BLZ) REFERENCES Bank(BLZ)
|
||||||
|
);
|
||||||
|
|
||||||
|
#2
|
||||||
|
ALTER TABLE Lieferant
|
||||||
|
ADD Telefonnummer VARCHAR(30);
|
||||||
|
|
||||||
|
#3
|
||||||
|
ALTER TABLE Artikel
|
||||||
|
MODIFY Artikelnummer INT PRIMARY KEY;
|
||||||
|
|
||||||
|
#4
|
||||||
|
DELETE FROM Lieferant
|
||||||
|
WHERE Lieferant.Lieferer_Nr = 2;
|
||||||
|
|
||||||
|
#5
|
||||||
|
SELECT Artikel.*, Lieferant.* FROM Artikel
|
||||||
|
LEFT JOIN Artikel_Lieferbeziehung ON Artikel.Artikel_Nr = Artikel_Lieferbeziehung.Artikel_Nr
|
||||||
|
LEFT JOIN Lieferant.Lieferer_Nr = Artikel_Lieferbeziehung.Lieferer_Nr;
|
||||||
|
|
||||||
|
#6
|
||||||
|
DROP TABLE Artikel;
|
||||||
|
#Eine Tabelle die an anderen Stellen referenziert wird
|
||||||
|
#kann nicht gelöscht werden ohne die Datenintegrität zu zerstören
|
||||||
|
|
||||||
|
#7
|
||||||
|
INSERT INTO Artikel(Artikel_Nr, Artikel, Bestand, Meldebestand) VALUES
|
||||||
|
(111, "PC", 10, 4);
|
||||||
|
|
||||||
|
#8
|
||||||
|
UPDATE Artikel SET Artikel="PC Klasse" WHERE Artikel_Nr=111;
|
||||||
|
|
||||||
|
#9
|
||||||
|
SELECT Lieferant.*, Artikel.* FROM Lieferant
|
||||||
|
LEFT JOIN Artikel_Lieferbeziehung ON Lieferant.Lieferer_Nr = Artikel_Lieferbeziehung.Lieferer_Nr;
|
||||||
|
LEFT JOIN Artikel ON Artikel.Artikel_Nr = Artikel_Lieferbeziehung.Artikel_Nr;
|
||||||
|
|
||||||
|
#10
|
||||||
|
SELECT Artikel.Artikel FROM Artikel
|
||||||
|
JOIN Artikel_Lieferbeziehung ON Artikel.Artikel_Nr = Artikel_Lieferbeziehung.Artikel_Nr
|
||||||
|
WHERE Artikel_Lieferbeziehung.Einkaufspreis = (
|
||||||
|
SELECT MAX(Artikel_Lieferbeziehung.Einkaufspreis) FROM Artikel_Lieferbeziehung
|
||||||
|
);
|
||||||
46
11fi5/AWP/2021-07-23 Rechnungen.md
Normal file
46
11fi5/AWP/2021-07-23 Rechnungen.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# Rechnungserstellung
|
||||||
|
|
||||||
|
## Tabellen
|
||||||
|
|
||||||
|
|Kunden||
|
||||||
|
|-|-|
|
||||||
|
|KundenNr|INT PRIMARY KEY|
|
||||||
|
|Name|VARCHAR(24)|
|
||||||
|
|Straße|VARCHAR(24)|
|
||||||
|
|Hausnummer|INT|
|
||||||
|
|PLZ|VARCHAR(10)|
|
||||||
|
|Ort|VARCHAR(24)|
|
||||||
|
|
||||||
|
|Rechnungen||
|
||||||
|
|-|-|
|
||||||
|
|Nummer|INT PRIMARY KEY|
|
||||||
|
|Datum|DATE|
|
||||||
|
|KundenNr|INT FOREIGN KEY -> Kunden(KundenNr)|
|
||||||
|
|
||||||
|
|Position||
|
||||||
|
|-|-|
|
||||||
|
|ID|INT PRIMARY KEY|
|
||||||
|
|Rechnung|INT FOREIGN KEY -> Rechnungen(Nummer)|
|
||||||
|
|AuftragsNummer|INT|
|
||||||
|
|Kurier-ID|VARCHAR(10)|
|
||||||
|
|Art|INT|
|
||||||
|
|Datum|DATE|
|
||||||
|
|Lieferzeit|TIME|
|
||||||
|
|
||||||
|
|Preiselement||
|
||||||
|
|-|-|
|
||||||
|
|ID|INT PRIMARY KEY|
|
||||||
|
|PositionID|INT FOREIGN KEY -> Position(ID)|
|
||||||
|
|Art|INT FOREIGN KEY -> Preisart(ID)|
|
||||||
|
|Menge|FLOAT|
|
||||||
|
|
||||||
|
|Preisart||
|
||||||
|
|-|-|
|
||||||
|
|ID|INT PRIMARY KEY|
|
||||||
|
|Beschreibung|VARCHAR(36)|
|
||||||
|
|EinheitID|INT FOREIGN KEY -> Einheiten(ID)|
|
||||||
|
|
||||||
|
|Einheiten||
|
||||||
|
|-|-|
|
||||||
|
|ID|INT PRIMARY KEY|
|
||||||
|
|Einheit|VARCHAR(8)|
|
||||||
38
11fi5/AWP/2021-07-29 User.sql
Normal file
38
11fi5/AWP/2021-07-29 User.sql
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#1
|
||||||
|
CREATE USER Zilles;
|
||||||
|
CREATE USER Steinam;
|
||||||
|
CREATE USER Zobel;
|
||||||
|
CREATE USER Lange;
|
||||||
|
|
||||||
|
#2
|
||||||
|
SELECT * FROM mysql.user;
|
||||||
|
|
||||||
|
#3
|
||||||
|
GRANT UPDATE('Position') ON nordwind.Personal TO Steinam;
|
||||||
|
|
||||||
|
#4
|
||||||
|
GRANT SELECT ON nordwind.* TO Lange;
|
||||||
|
|
||||||
|
#5
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO Zilles;
|
||||||
|
|
||||||
|
#6
|
||||||
|
GRANT INSERT, UPDATE ON nordwind.Kunden TO Zobel;
|
||||||
|
|
||||||
|
#7
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
#8
|
||||||
|
SELECT * FROM mysql.user
|
||||||
|
WHERE User = 'Lange';
|
||||||
|
#alternativ
|
||||||
|
SHOW GRANTS FOR Lange;
|
||||||
|
|
||||||
|
#9
|
||||||
|
REVOKE SELECT ON nordwind.* FROM Lange;
|
||||||
|
|
||||||
|
#10
|
||||||
|
REVOKE ALL PRIVILEGES ON *.* FROM Zilles;
|
||||||
|
|
||||||
|
#11
|
||||||
|
DROP USER Zobel;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
USE kosidasdb;
|
USE kosidasdb;
|
||||||
|
|
||||||
SELECT Artikel.ArtikelID, Artikel.Bezeichnung, Farbe.Bezeichnung, SUM(Posten.Anzahl) FROM Artikel
|
SELECT Artikel.ArtikelID, Artikel.Bezeichnung, Farbe.Bezeichnung as Farbe, IF(ISNULL(Posten.Anzahl) = 0, SUM(Posten.Anzahl), 0) AS Bestellungen FROM Artikel
|
||||||
JOIN Farbe ON Farbe.Farbcodes = Artikel.Farbe
|
JOIN Farbe ON Farbe.Farbcodes = Artikel.Farbe
|
||||||
LEFT JOIN Posten ON Artikel.ArtikelID = Posten.ArtikelID
|
LEFT JOIN Posten ON Artikel.ArtikelID = Posten.ArtikelID
|
||||||
GROUP BY Artikel.ArtikelID;
|
GROUP BY Artikel.ArtikelID;
|
||||||
74
11fi5/AWP/Nordwind/Nordwind JOINS.sql
Normal file
74
11fi5/AWP/Nordwind/Nordwind JOINS.sql
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#2021-05-20 Übungen Nordwind
|
||||||
|
USE nordwind;
|
||||||
|
|
||||||
|
#a. Wie lange dauert der Versand im Schnitt bei unseren Versandfirmen?
|
||||||
|
SELECT v.Firma, AVG(DATEDIFF(Lieferdatum, Versanddatum)) FROM versandfirmen v
|
||||||
|
JOIN bestellungen b ON b.`VersandÜber` = v.FirmenNr
|
||||||
|
GROUP BY b.`VersandÜber`;
|
||||||
|
|
||||||
|
#b. Erstellen Sie eine Liste, wie hoch die Frachtkosten unserer Versandfirmen 1996 insgesamt waren.
|
||||||
|
SELECT v.Firma, SUM(Frachtkosten) FROM versandfirmen v
|
||||||
|
JOIN bestellungen b ON b.`VersandÜber` = v.FirmenNr
|
||||||
|
WHERE YEAR(b.Bestelldatum) = 1996
|
||||||
|
GROUP BY b.`VersandÜber`;
|
||||||
|
|
||||||
|
#c. Erstellen Sie eine Liste der Kunden(Kundenname), deren Waren noch nicht versendet wurden.
|
||||||
|
SELECT DISTINCT k.Firma, k.Kontaktperson FROM kunden k
|
||||||
|
JOIN bestellungen b ON b.KundenCode = k.KundenCode
|
||||||
|
WHERE b.Versanddatum IS NULL;
|
||||||
|
|
||||||
|
#d. Ermitteln Sie, wie oft unsere Kunden 1998 im Mittel bestellt haben.
|
||||||
|
#gesamt
|
||||||
|
SELECT AVG(Bestellzahl) FROM (
|
||||||
|
SELECT k.Firma, COUNT(b.BestellNr) as Bestellzahl FROM kunden k
|
||||||
|
JOIN bestellungen b ON b.KundenCode = k.KundenCode
|
||||||
|
WHERE YEAR(b.Bestelldatum) = 1998
|
||||||
|
GROUP BY b.KundenCode
|
||||||
|
) bestellcount;
|
||||||
|
|
||||||
|
#pro Kunde
|
||||||
|
SELECT k.Firma, COUNT(b.BestellNr) as Bestellzahl FROM kunden k
|
||||||
|
JOIN bestellungen b ON b.KundenCode = k.KundenCode
|
||||||
|
WHERE YEAR(b.Bestelldatum) = 1998
|
||||||
|
GROUP BY b.KundenCode;
|
||||||
|
|
||||||
|
#e. Stellen Sie fest, wie hoch der Bestellwert des Kunden LILA Supermercado 1996 jeweils bei Bestellungen über 1000,00€ war.
|
||||||
|
#Geben Sie Bestellnummer, Bestellwert und Bestelldatum an.
|
||||||
|
SELECT b.BestellNr, SUM(d.Einzelpreis * d.Anzahl * (1-d.Rabatt)) as Bestellwert, b.Bestelldatum FROM kunden k
|
||||||
|
JOIN bestellungen b ON b.KundenCode = k.KundenCode
|
||||||
|
JOIN bestelldetails d ON d.BestellNr = b.BestellNr
|
||||||
|
WHERE k.Firma = "LILA-Supermercado"
|
||||||
|
AND YEAR(Bestelldatum) = 1996
|
||||||
|
GROUP BY b.BestellNr
|
||||||
|
HAVING SUM(d.Einzelpreis * d.Anzahl * (1-d.Rabatt)) > 1000;
|
||||||
|
|
||||||
|
#f. Stellen Sie fest, wie viele Sendungen in die USA gingen.
|
||||||
|
SELECT COUNT(*) FROM bestellungen
|
||||||
|
WHERE Bestimmungsland = "USA";
|
||||||
|
|
||||||
|
#g. Ermitteln Sie, wie viele verschiedene Länder wir beliefern.
|
||||||
|
SELECT COUNT(DISTINCT Bestimmungsland) FROM bestellungen;
|
||||||
|
|
||||||
|
#h. Berechnen Sie, wie viel Umsatz wir mit skandinavischen Lieferanten insgesamt machen.
|
||||||
|
SELECT SUM(d.Einzelpreis * d.Anzahl * (1-d.Rabatt)) as Umsatz FROM bestellungen b
|
||||||
|
JOIN bestelldetails d ON b.BestellNr = d.BestellNr
|
||||||
|
JOIN artikel a ON d.ArtikelNr = a.ArtikelNr
|
||||||
|
JOIN lieferanten l ON a.LieferantenNr = l.LieferantenNr
|
||||||
|
WHERE l.Land IN ("Dänemark", "Norwegen", "Finnland", "Schweden");
|
||||||
|
|
||||||
|
#i
|
||||||
|
SELECT kunden.Firma, Kontaktperson, MAX(DATEDIFF(Lieferdatum, Bestelldatum)), versandfirmen.Firma FROM kunden
|
||||||
|
JOIN bestellungen ON kunden.KundenCode = bestellungen.KundenCode
|
||||||
|
JOIN versandfirmen ON versandfirmen.FirmenNr = bestellungen.`VersandÜber`
|
||||||
|
WHERE DATEDIFF(Lieferdatum, Bestelldatum) > 10
|
||||||
|
AND YEAR(Bestelldatum) = 1996
|
||||||
|
AND versandfirmen.Firma = "Speedy Express"
|
||||||
|
GROUP BY kunden.KundenCode;
|
||||||
|
|
||||||
|
#j
|
||||||
|
SELECT kunden.Firma, Kontaktperson, DATEDIFF(Lieferdatum, Bestelldatum) FROM kunden
|
||||||
|
JOIN bestellungen ON kunden.KundenCode = bestellungen.KundenCode
|
||||||
|
WHERE DATEDIFF(Lieferdatum, Bestelldatum) = (
|
||||||
|
SELECT MAX(DATEDIFF(Lieferdatum, Bestelldatum)) FROM kunden
|
||||||
|
JOIN bestellungen ON kunden.KundenCode = bestellungen.KundenCode
|
||||||
|
);
|
||||||
1
11fi5/AWP/Rechnungen_ER.drawio
Normal file
1
11fi5/AWP/Rechnungen_ER.drawio
Normal file
@ -0,0 +1 @@
|
|||||||
|
<mxfile host="Electron" modified="2021-07-26T12:06:46.045Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="VoBmt9-26_Rpmf-mw9aE" version="14.6.13" type="device"><diagram id="R2lEEEUBdFMjLlhIrx00" name="Page-1">7VxbT+M4FP41kXYfBjW3tvPY64IoDAK0c3kzjZt4SeLKcYaWX7/HiU1a3NIykxBGWKogPjlO4vOdiz/HreWOktU/DC2jCxrg2HI6wcpyx5bj9Lt9+CsE61Lgd9xSEDISlCK7EtyQRyyFHSnNSYCzLUVOaczJcls4p2mK53xLhhijD9tqCxpv33WJQqwJbuYo1qVfScAjOSy/U8lPMQkjdWe7I88kSClLQRahgD5sifCKT2nK5SNeYZagFKcczlwgdo+Z5U8izsVIB5Yzhc9CaJ+ElIYxRkuSncxpAuJ5BirTBUpILMy8caGhvBDczp1Y7ohRysujZDXCsYBKwVA+03TP2Sc7MHHdIzr46L43esTka8+P2CT9fkfJj0+2BP8ninNp4PM8DXAqTcTXyu7ZA0liGITlDsWgb+SZDrTnEYmDGVrTXDxIxtH8XrWGEWXkEfRRDKdsEMBpxqVbOd0tjRvRU16T4Qx0rtTo7GeiC7TaUpyhjKunoXGMlhm5K55PdEwQC0k6pJwDOKWSHDVmHK/22tN+QgmCCdMEc7YGFdnhyWnWz9oPlVvanpRFmy7Zd2Q4SD8Ln65dwQcHEsHXoOlpaF6dQ/sSJRj+nV3earDC+HmBCqP3eERjykCe0hJnEsfPRCgmYQrNGC9EN2FAArE5kGJOl+JiSzQnaTgrdMZeJbmWRhAiCn0XcRF/EQmExwGWlCOO7p4ca0mJDEZ/CB+w5ahz4ls+PPgI2nbVho9QZ3xEUxgLIgWGGLziAQvP2PJZ+yj0X4gX3SeUD3SPcwGlV78H+JoHSPD/HVyPTgfXfzne3x/WCRrD3Xfaxr2r4X4DFrBGrvV5auBvGP5ev234exr8pyjP0jxJxFzjQ2f+xlC3O17bsPf1ej/7sRHtdsdEe/24u0dO9JrD/bOG+xfGTZZvGHe/7dmdYhgbuF/jeZTmaWgY22HG5nm/ythUpq8fUVtDtGRspnLXxtlKlN8vZ3MczQfGiOcJiMaD28mHhb8xxFtna46+6jYVUV8uvV2auK/i3mnMC1onbY5O2q5oRjihppYfrOXd7i/WcqfTbwrPHWxMRPXZ2MRzLXW8987ruM7KiqyupujGC2rJ6i97Qeu13dU52iBfgEHC7MMX9sZQb72WuzqPO88ZwexTkf3NelyD4Le/DuvqDG5QrMeZYG8C79bXX12dvxnG3ijkrS+9enqCnxG8wAwURaTfnl0Y3OvHXW2VaS/Ud2ypYZhkOMZJsaHLEPXXEXWvd+yiu0rz9WOqb5IxRL1Gol7GzPsl6q6+WaYg6mr1zfhBPVT9gB+0T9X1BdjCD8zc/W0coH3Wrq/YXuA0FPvlprMvg4+Lf2OQt8/VPZ27TUgKt+ZmC8Xh2dzzTe9Hz+Z6Tb118fbseTdFvJ7JnPfOd7x7+mRexvPGumvfLLvWjnzr0zdvx/tWQc0RM7T8YCL3jknk/TfdC+fp709NJq8zk/dfncl3OUBj8ay+wrmB/xBn8whi+q58fW62N/9WPn8Z/135/G3x15fYCzouy7lJA/WQ8gNusIuUv60beBrCOAixGjkYKKIhTVE8qaRgdrF1MpBGr3RmVMBZ1NH/MOdrWbpRzqko3jxRhR2vCP+2cfxdXAqAKVtjVa+Lxlo1Uhjvt83GRi/RrLoVrapfMBDfhIfm5DpB6bqUTYkw1EaBF8N+ubyDlWjO5viIqgoTlxC/yNz3vIphOEac/Nx+kvpR7/5xqNvvGHW1F/Ew6t1WUe/9cajXHusFpVA6skYVsoY8wz7SM8rtjK15xmfjGTWirn4Z4jDqe0j/26Cu3hUb1Oup/cei7u9ZLPhd1KFZ/cBNcW7jR4ncyf8=</diagram></mxfile>
|
||||||
BIN
11fi5/AWP/Rechnungen_ER.png
Normal file
BIN
11fi5/AWP/Rechnungen_ER.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
48
11fi5/AWP/Verein/Verein JOINS 2021-06-18.sql
Normal file
48
11fi5/AWP/Verein/Verein JOINS 2021-06-18.sql
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
USE verein;
|
||||||
|
|
||||||
|
--a
|
||||||
|
SELECT spieler.name FROM spieler
|
||||||
|
JOIN strafen ON spieler.spielernr = strafen.spielernr
|
||||||
|
WHERE spieler.ort = "Düsseldorf";
|
||||||
|
|
||||||
|
--b
|
||||||
|
SELECT teams.liga, spieler.name FROM spieler
|
||||||
|
JOIN wettkaempfe ON wettkaempfe.spielernr = spieler.spielernr
|
||||||
|
JOIN teams ON wettkaempfe.teamnr = teams.teamnr;
|
||||||
|
|
||||||
|
--c
|
||||||
|
SELECT spieler.name, teams.teamnr, teams.liga FROM spieler
|
||||||
|
LEFT JOIN teams ON spieler.spielernr = teams.captain;
|
||||||
|
|
||||||
|
--d
|
||||||
|
SELECT sum(wettkaempfe.gewonnen + wettkaempfe.verloren) FROM teams
|
||||||
|
JOIN wettkaempfe ON wettkaempfe.teamnr = team.teamnr;
|
||||||
|
|
||||||
|
--e
|
||||||
|
SELECT max(strafen.betrag) FROM spieler
|
||||||
|
JOIN teams ON spieler.spielernr = teams.captain
|
||||||
|
JOIN strafen ON spieler.spielernr = strafen.spielernr
|
||||||
|
WHERE year(strafen.datum) = year(now())
|
||||||
|
AND date(strafen.datum) >= 6;
|
||||||
|
|
||||||
|
--f
|
||||||
|
SELECT teams.liga, sum(strafen.betrag) FROM teams
|
||||||
|
JOIN wettkaempfe ON teams.teamnr = wettkaempfe.teamnr
|
||||||
|
JOIN spieler ON wettkaempfe.spielernr = spieler.spielernr
|
||||||
|
JOIN strafen ON spieler.spielernr = strafen.spielernr
|
||||||
|
GROUP BY teams.liga;
|
||||||
|
|
||||||
|
--g
|
||||||
|
SELECT spieler.name FROM spieler
|
||||||
|
JOIN strafen ON spieler.spielernr = strafen.spielernr
|
||||||
|
WHERE strafen.betrag >= 50 --g.2
|
||||||
|
GROUP BY spieler.spielernr
|
||||||
|
HAVING count(strafen.zahlungsnr) >= 2;
|
||||||
|
|
||||||
|
--h
|
||||||
|
SELECT spieler.name FROM spieler
|
||||||
|
LEFT JOIN strafen ON strafen.spielernr = spieler.spielernr
|
||||||
|
JOIN wettkaempfe ON spieler.spielernr = wettkaempfe.spielernr
|
||||||
|
WHERE wettkaempfe.gewonnen > wettkaempfe.verloren
|
||||||
|
GROUP BY spieler.spielernr
|
||||||
|
HAVING COUNT(strafen.zahlungsnr) = 0;
|
||||||
186
11fi5/AWP/Verein/Verein_2021-02-04.sql
Normal file
186
11fi5/AWP/Verein/Verein_2021-02-04.sql
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 2.6.0-pl1
|
||||||
|
-- http://www.phpmyadmin.net
|
||||||
|
--
|
||||||
|
-- Host: localhost
|
||||||
|
-- Erstellungszeit: 28. November 2004 um 16:48
|
||||||
|
-- Server Version: 4.0.21
|
||||||
|
-- PHP-Version: 5.0.2
|
||||||
|
--
|
||||||
|
-- Datenbank: `verein`
|
||||||
|
--
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `spieler`
|
||||||
|
--
|
||||||
|
Drop database if exists verein;
|
||||||
|
CREATE DATABASE if not exists verein;
|
||||||
|
use verein;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `spieler`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `spieler` (
|
||||||
|
`SPIELERNR` int(11) NOT NULL default '0',
|
||||||
|
`NAME` varchar(40) NOT NULL default '',
|
||||||
|
`VORNAME` varchar(40) default NULL,
|
||||||
|
`TITEL` varchar(8) default NULL,
|
||||||
|
`GEBOREN` datetime default NULL,
|
||||||
|
`GESCHLECHT` char(1) default NULL,
|
||||||
|
`BEITRITT` datetime default NULL,
|
||||||
|
`STRASSE` varchar(40) default NULL,
|
||||||
|
`HAUSNR` varchar(5) default NULL,
|
||||||
|
`PLZ` varchar(6) default NULL,
|
||||||
|
`ORT` varchar(40) default NULL,
|
||||||
|
`TELEFON` varchar(50) default NULL,
|
||||||
|
PRIMARY KEY (`SPIELERNR`)
|
||||||
|
) Engine=InnoDB;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `spieler`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `spieler` (`SPIELERNR`, `NAME`, `VORNAME`, `TITEL`, `GEBOREN`, `GESCHLECHT`, `BEITRITT`, `STRASSE`, `HAUSNR`, `PLZ`, `ORT`, `TELEFON`) VALUES (2, 'Elfers', 'Rainer', NULL, '1981-12-09 00:00:00', 'M', '1969-05-01 00:00:00', 'Stadtring', '43', '40348', 'Düsseldorf', '0211-237893'),
|
||||||
|
(6, 'Peters', 'Robert', NULL, '1981-05-04 00:00:00', 'M', '1992-05-03 00:00:00', 'Hafenallee', '80', '40234', 'Düsseldorf', '0211-476537'),
|
||||||
|
(7, 'Wiegand', 'Günther', NULL, '1971-08-26 00:00:00', 'M', '1975-12-05 00:00:00', 'Erasmusweg', '39', '40648', 'Düsseldorf', '0211-347689'),
|
||||||
|
(8, 'Neuhaus', 'Berta', NULL, '1979-09-05 00:00:00', 'W', '1996-06-01 00:00:00', 'Sporenallee', '4', '40304', 'Ratingen', '02102-45845'),
|
||||||
|
(27, 'Kohl', 'Dagmar', NULL, '1962-11-14 00:00:00', 'W', '1980-08-01 00:00:00', 'Luisenpfad', '84', '40051', 'Meerbusch', '02105-23485'),
|
||||||
|
(28, 'Kohl', 'Claudia', NULL, '1958-05-01 00:00:00', 'W', '1979-03-01 00:00:00', 'Domplatz', '10', '40402', 'Neuss', '02101-65959'),
|
||||||
|
(39, 'Bischof', 'Dennis', NULL, '1959-01-09 00:00:00', 'M', '1975-11-01 00:00:00', 'Erikaplatz', '78', '40876', 'Düsseldorf', '0211-393435'),
|
||||||
|
(44, 'Bäcker', 'Egon', 'Dr.', '1980-04-03 00:00:00', 'M', '1989-04-01 00:00:00', 'Lichtenstraße', '23', '40323', 'Ratingen', '02102-36875'),
|
||||||
|
(57, 'Böhmen', 'Manfred', 'von', '1984-12-19 00:00:00', 'M', '1993-09-01 00:00:00', 'Erasmusweg', '16', '40989', 'Düsseldorf', '0211-473458'),
|
||||||
|
(83, 'Hofmann', 'Philipp', NULL, '1973-04-03 00:00:00', 'M', '1990-02-01 00:00:00', 'Marienufer', '16', '40127', 'Düsseldorf', '0211-353548'),
|
||||||
|
(95, 'Müller', 'Paul', NULL, '1976-07-09 00:00:00', 'M', '1995-02-01 00:00:00', 'Hauptweg', '33', '40101', 'Hilden', '02103-86756'),
|
||||||
|
(100, 'Peters', 'Franz', NULL, '1973-05-03 00:00:00', 'M', '1992-05-01 00:00:00', 'Hafenallee', '80', '40756', 'Düsseldorf', '0211-494593'),
|
||||||
|
(104, 'Maurer', 'Doris', NULL, '1980-09-03 00:00:00', 'W', '1988-11-01 00:00:00', 'Stutenallee', '65', '40053', 'Meerbusch', '02105-98757'),
|
||||||
|
(112, 'Bauer', 'Irene', 'von', '1980-12-19 00:00:00', 'W', '1996-06-01 00:00:00', 'Fuchsweg', '8', '41501', 'Krefeld', '02151-54874');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `strafen`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `strafen`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `strafen` (
|
||||||
|
`ZAHLUNGSNR` int(11) PRIMARY KEY,
|
||||||
|
`SPIELERNR` int(11) NOT NULL default '0',
|
||||||
|
`DATUM` datetime default NULL,
|
||||||
|
`BETRAG` decimal(18,4) default NULL,
|
||||||
|
KEY `B556A64745B54B4A35DEC16B9C` (`SPIELERNR`),
|
||||||
|
KEY `IX_STRAFENKEY0` (`SPIELERNR`)
|
||||||
|
) engine=InnoDB;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- RELATIONEN DER TABELLE `strafen`:
|
||||||
|
-- `SPIELERNR`
|
||||||
|
-- `spieler` -> `SPIELERNR`
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `strafen`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `strafen` (`ZAHLUNGSNR`, `SPIELERNR`, `DATUM`, `BETRAG`) VALUES (1, 27, '1996-09-10 00:00:00', 100.0000),
|
||||||
|
(2, 27, '1996-11-12 00:00:00', 75.0000),
|
||||||
|
(3, 6, '1996-12-08 00:00:00', 100.0000),
|
||||||
|
(4, 104, '1996-12-08 00:00:00', 50.0000),
|
||||||
|
(5, 44, '1996-12-08 00:00:00', 25.0000),
|
||||||
|
(6, 8, '1996-12-08 00:00:00', 25.0000),
|
||||||
|
(7, 44, '1996-12-30 00:00:00', 30.0000),
|
||||||
|
(8, 44, '1997-05-05 00:00:00', 75.0000);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `teams`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `teams`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `teams` (
|
||||||
|
`TEAMNR` int(11) NOT NULL default '0',
|
||||||
|
`Captain` int(11) default NULL,
|
||||||
|
`LIGA` varchar(40) default NULL,
|
||||||
|
PRIMARY KEY (`TEAMNR`),
|
||||||
|
KEY `TEAMSSPIELERNR3` (`Captain`),
|
||||||
|
KEY `IX_TEAMSKEY1` (`Captain`)
|
||||||
|
) engine=InnoDB;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- RELATIONEN DER TABELLE `teams`:
|
||||||
|
-- `SPIELERNR`
|
||||||
|
-- `spieler` -> `SPIELERNR`
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `teams`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `teams` (`TEAMNR`, `Captain`, `LIGA`) VALUES (1, 6, 'Bundesliga'),
|
||||||
|
(2, 27, 'Regionalliga');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Tabellenstruktur für Tabelle `wettkaempfe`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `wettkaempfe`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `wettkaempfe` (
|
||||||
|
`TEAMNR` int(11) NOT NULL default '0',
|
||||||
|
`SPIELERNR` int(11) NOT NULL default '0',
|
||||||
|
`GEWONNEN` int(11) default NULL,
|
||||||
|
`VERLOREN` int(11) default NULL,
|
||||||
|
PRIMARY KEY (`TEAMNR`,`SPIELERNR`),
|
||||||
|
KEY `D6DCE74B17B24B677E2F51185C` (`SPIELERNR`),
|
||||||
|
KEY `TEAMSWETTKMPFE5` (`TEAMNR`),
|
||||||
|
KEY `IX_WETTKMPFEKEY0` (`SPIELERNR`),
|
||||||
|
KEY `IX_WETTKMPFEKEY2` (`TEAMNR`)
|
||||||
|
) engine=InnoDB;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- RELATIONEN DER TABELLE `wettkaempfe`:
|
||||||
|
-- `SPIELERNR`
|
||||||
|
-- `spieler` -> `SPIELERNR`
|
||||||
|
-- `TEAMNR`
|
||||||
|
-- `teams` -> `TEAMNR`
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Daten für Tabelle `wettkaempfe`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `wettkaempfe` (`TEAMNR`, `SPIELERNR`, `GEWONNEN`, `VERLOREN`) VALUES (1, 2, 4, 8),
|
||||||
|
(1, 6, 9, 1),
|
||||||
|
(1, 8, 0, 1),
|
||||||
|
(1, 44, 7, 5),
|
||||||
|
(1, 57, 5, 0),
|
||||||
|
(1, 83, 3, 3),
|
||||||
|
(2, 8, 4, 4),
|
||||||
|
(2, 27, 11, 2),
|
||||||
|
(2, 104, 8, 4),
|
||||||
|
(2, 112, 4, 8);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der exportierten Tabellen
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der Tabelle `strafen`
|
||||||
|
--
|
||||||
|
ALTER TABLE `strafen`
|
||||||
|
ADD CONSTRAINT `strafen_ibfk_1` FOREIGN KEY (`SPIELERNR`) REFERENCES `spieler` (`SPIELERNR`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der Tabelle `teams`
|
||||||
|
--
|
||||||
|
ALTER TABLE `teams`
|
||||||
|
ADD CONSTRAINT `teams_ibfk_1` FOREIGN KEY (`Captain`) REFERENCES `spieler` (`SPIELERNR`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints der Tabelle `wettkaempfe`
|
||||||
|
--
|
||||||
|
ALTER TABLE `wettkaempfe`
|
||||||
|
ADD CONSTRAINT `wettkaempfe_ibfk_1` FOREIGN KEY (`SPIELERNR`) REFERENCES `spieler` (`SPIELERNR`),
|
||||||
|
ADD CONSTRAINT `wettkaempfe_ibfk_2` FOREIGN KEY (`TEAMNR`) REFERENCES `teams` (`TEAMNR`);
|
||||||
|
|
||||||
56
11fi5/AWP/luna2000/luna_joins.sql
Normal file
56
11fi5/AWP/luna2000/luna_joins.sql
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
USE luna2_innodb;
|
||||||
|
|
||||||
|
-- tblmitarbeiter
|
||||||
|
-- M_Nr
|
||||||
|
-- A_Nr -> tblabteilung
|
||||||
|
-- M_Name
|
||||||
|
-- M_Vorname
|
||||||
|
|
||||||
|
-- tbltaetigkeit
|
||||||
|
-- T_Nr
|
||||||
|
-- M_Nr -> tblmitarbeiter
|
||||||
|
-- P_Nr -> tblprojekt
|
||||||
|
-- T_Taetigkeit
|
||||||
|
-- T_Einstellungsdatum
|
||||||
|
|
||||||
|
-- tblabteilung
|
||||||
|
-- A_Nr
|
||||||
|
-- A_Name
|
||||||
|
-- A_Stadt
|
||||||
|
|
||||||
|
-- tblprojekt
|
||||||
|
-- P_Nr
|
||||||
|
-- P_Name
|
||||||
|
-- P_Mittel
|
||||||
|
|
||||||
|
#a
|
||||||
|
SELECT tblmitarbeiter.M_Vorname, tblmitarbeiter.M_Name, tblmitarbeiter.M_Nr, tblabteilung.A_Name, tblabteilung.A_Stadt FROM tblmitarbeiter
|
||||||
|
JOIN tblabteilung ON tblmitarbeiter.A_Nr = tblabteilung.A_Nr;
|
||||||
|
|
||||||
|
#b
|
||||||
|
SELECT tblmitarbeiter.*, tblprojekt.P_Name FROM tblmitarbeiter
|
||||||
|
JOIN tbltaetigkeit ON tblmitarbeiter.M_Nr = tbltaetigkeit.M_Nr
|
||||||
|
JOIN tblprojekt ON tbltaetigkeit.P_Nr = tblprojekt.P_Nr;
|
||||||
|
|
||||||
|
#c
|
||||||
|
SELECT DISTINCT tblmitarbeiter.A_Nr FROM tblmitarbeiter
|
||||||
|
JOIN tbltaetigkeit ON tbltaetigkeit.M_Nr = tblmitarbeiter.M_Nr
|
||||||
|
WHERE tbltaetigkeit.T_Einstellungsdatum = "1989-10-15";
|
||||||
|
|
||||||
|
#d
|
||||||
|
SELECT tblmitarbeiter.M_Vorname, tblmitarbeiter.M_Name, tblabteilung.A_Stadt FROM tblmitarbeiter
|
||||||
|
JOIN tblabteilung ON tblabteilung.A_Nr = tblmitarbeiter.A_Nr
|
||||||
|
JOIN tbltaetigkeit ON tbltaetigkeit.M_Nr = tblmitarbeiter.M_Nr
|
||||||
|
WHERE tbltaetigkeit.T_Taetigkeit = "Projektleiter";
|
||||||
|
|
||||||
|
#e
|
||||||
|
SELECT DISTINCT tblprojekt.P_Name FROM tblprojekt
|
||||||
|
JOIN tbltaetigkeit ON tbltaetigkeit.P_Nr = tblprojekt.P_Nr
|
||||||
|
JOIN tblmitarbeiter ON tbltaetigkeit.M_Nr = tblmitarbeiter.M_Nr
|
||||||
|
JOIN tblabteilung ON tblmitarbeiter.A_Nr = tblabteilung.A_Nr
|
||||||
|
WHERE tblabteilung.A_Name = "Diagnose";
|
||||||
|
|
||||||
|
#f
|
||||||
|
SELECT tblabteilung.* FROM tblabteilung
|
||||||
|
JOIN tblabteilung AS tblabteilung_other ON tblabteilung.A_Stadt = tblabteilung_other.A_Stadt
|
||||||
|
AND tblabteilung.A_Nr != tblabteilung_other.A_Nr;
|
||||||
@ -21,3 +21,10 @@
|
|||||||
* IPv4
|
* IPv4
|
||||||
* ID=172.20.0.0/20
|
* ID=172.20.0.0/20
|
||||||
* Nur Sichere Updates
|
* Nur Sichere Updates
|
||||||
|
|
||||||
|
## Client
|
||||||
|
|
||||||
|
* IP: 172.20.0.54
|
||||||
|
* Hostname: Creativ05-PC06
|
||||||
|
* Localer User: admin
|
||||||
|
* Locales Passwort: Win2016
|
||||||
60
12fi5/AEuP/Abteilung/UML MA Abt 1116.uxf
Normal file
60
12fi5/AEuP/Abteilung/UML MA Abt 1116.uxf
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="14.3.0">
|
||||||
|
<zoom_level>10</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>270</x>
|
||||||
|
<y>220</y>
|
||||||
|
<w>190</w>
|
||||||
|
<h>190</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Abteilung
|
||||||
|
--
|
||||||
|
Name: string
|
||||||
|
Mitarbeiter: Mitarbeiter[]</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>620</x>
|
||||||
|
<y>220</y>
|
||||||
|
<w>160</w>
|
||||||
|
<h>180</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Mitarbeiter
|
||||||
|
--
|
||||||
|
Name: string
|
||||||
|
Abteilung: Abteilung</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>450</x>
|
||||||
|
<y>280</y>
|
||||||
|
<w>190</w>
|
||||||
|
<h>50</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=->
|
||||||
|
m1=1
|
||||||
|
m2=*
|
||||||
|
< arbeitet in</panel_attributes>
|
||||||
|
<additional_attributes>10.0;20.0;170.0;20.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>450</x>
|
||||||
|
<y>330</y>
|
||||||
|
<w>190</w>
|
||||||
|
<h>50</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=->
|
||||||
|
m1=1
|
||||||
|
m2=1
|
||||||
|
< leitet</panel_attributes>
|
||||||
|
<additional_attributes>10.0;20.0;170.0;20.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
||||||
74
12fi5/AEuP/Abteilung/abteilung.ps1
Normal file
74
12fi5/AEuP/Abteilung/abteilung.ps1
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
class abteilung {
|
||||||
|
[string]$Name
|
||||||
|
[mitarbeiter[]]$Mitarbeiter = @()
|
||||||
|
[mitarbeiter]$Abteilungsleiter
|
||||||
|
|
||||||
|
abteilung([mitarbeiter]$AL) {
|
||||||
|
$this.Abteilungsleiter = $AL
|
||||||
|
$this.Mitarbeiter += $AL
|
||||||
|
}
|
||||||
|
|
||||||
|
[int]einstellen([mitarbeiter]$MA) {
|
||||||
|
if ($MA -In $this.Mitarbeiter) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
$this.Mitarbeiter += $MA
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
[int]entlassen([mitarbeiter]$MA) {
|
||||||
|
if ($MA -Eq $this.Abteilungsleiter) {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
if ($MA -In $this.Mitarbeiter) {
|
||||||
|
$this.Mitarbeiter = $this.Mitarbeiter | Where-Object { $_ -ne $MA }
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[int]transfer([mitarbeiter]$MA, [abteilung]$AB) {
|
||||||
|
$ent = $this.entlassen($MA)
|
||||||
|
if ($ent -eq 0) {
|
||||||
|
$ein = $AB.einstellen($MA)
|
||||||
|
if ($ein -eq 0) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
$this.einstellen($MA)
|
||||||
|
return 4 + $ein
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 4 + $ent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class mitarbeiter {
|
||||||
|
[string]$Name
|
||||||
|
|
||||||
|
mitarbeiter($name) {
|
||||||
|
$this.Name = $name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Tests
|
||||||
|
$MaA = [mitarbeiter]::new("Anna")
|
||||||
|
$MaB = [mitarbeiter]::new("Bertha")
|
||||||
|
$MaC = [mitarbeiter]::new("Christhof")
|
||||||
|
|
||||||
|
$AbA = [abteilung]::new($MaA)
|
||||||
|
$AbB = [abteilung]::new($MaB)
|
||||||
|
|
||||||
|
$AbB.einstellen($MaC)
|
||||||
|
|
||||||
|
|
||||||
|
$AbA
|
||||||
|
$AbB
|
||||||
|
|
||||||
|
$AbB.transfer($MaC, $AbA)
|
||||||
|
|
||||||
|
$AbA
|
||||||
|
$AbB
|
||||||
27
12fi5/AEuP/Abteilung/abteilung_var1.ps1
Normal file
27
12fi5/AEuP/Abteilung/abteilung_var1.ps1
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
class mitarbeiter {
|
||||||
|
[string]vorname
|
||||||
|
[string]nachname
|
||||||
|
|
||||||
|
mitarbeiter([string] $vorname, [string] $nachname) {
|
||||||
|
$this.vorname = $vorname
|
||||||
|
$this.nachname = $nachname
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class abteilung {
|
||||||
|
[string]bezeichnung
|
||||||
|
$maliste = [System.Collections.ArrayList]::New()
|
||||||
|
[mitarbeiter]abteilungsleiter
|
||||||
|
|
||||||
|
abteilung([string] $bezeichnung) {
|
||||||
|
$this.bezeichnung = $bezeichnung
|
||||||
|
}
|
||||||
|
|
||||||
|
nachnamen() {
|
||||||
|
foreach ($ma in $maliste) {
|
||||||
|
Write-Host $ma.vorname
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#$abteilung.abteilungsleiter.vorname
|
||||||
204
12fi5/AEuP/Bank/bank.ps1
Normal file
204
12fi5/AEuP/Bank/bank.ps1
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
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: Überweisen"
|
||||||
|
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()
|
||||||
8
12fi5/AEuP/Bank/bank.py
Normal file
8
12fi5/AEuP/Bank/bank.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from tkinter import *
|
||||||
|
from tkinter import ttk
|
||||||
|
root = Tk()
|
||||||
|
frm = ttk.Frame(root, padding=10)
|
||||||
|
frm.grid()
|
||||||
|
ttk.Label(frm, text="Hello World!").grid(column=0, row=0)
|
||||||
|
ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)
|
||||||
|
root.mainloop()
|
||||||
95
12fi5/AEuP/Bank/bank.uxf
Normal file
95
12fi5/AEuP/Bank/bank.uxf
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="14.3.0">
|
||||||
|
<zoom_level>10</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>260</x>
|
||||||
|
<y>270</y>
|
||||||
|
<w>120</w>
|
||||||
|
<h>50</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Kunde
|
||||||
|
--
|
||||||
|
+Name: String</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>460</x>
|
||||||
|
<y>90</y>
|
||||||
|
<w>160</w>
|
||||||
|
<h>120</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Konto
|
||||||
|
--
|
||||||
|
-Guthaben: Float
|
||||||
|
-Kunde: Kunde
|
||||||
|
--
|
||||||
|
+Einzahlen
|
||||||
|
+Auszahlen
|
||||||
|
+Überweisen</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>660</x>
|
||||||
|
<y>330</y>
|
||||||
|
<w>160</w>
|
||||||
|
<h>130</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Bank
|
||||||
|
--
|
||||||
|
-Konten: Konto[]
|
||||||
|
-Kunden: Kunde[]
|
||||||
|
--
|
||||||
|
+Einzahlen
|
||||||
|
+Auszahlen
|
||||||
|
+Überweisen</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>310</x>
|
||||||
|
<y>130</y>
|
||||||
|
<w>170</w>
|
||||||
|
<h>160</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=->
|
||||||
|
m1=0..n
|
||||||
|
m2=1
|
||||||
|
< gehört</panel_attributes>
|
||||||
|
<additional_attributes>150.0;20.0;10.0;20.0;10.0;140.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>310</x>
|
||||||
|
<y>310</y>
|
||||||
|
<w>370</w>
|
||||||
|
<h>110</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<->>>>>
|
||||||
|
m1=0..n
|
||||||
|
m2=1
|
||||||
|
< verwaltet</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;10.0;80.0;350.0;80.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>610</x>
|
||||||
|
<y>120</y>
|
||||||
|
<w>170</w>
|
||||||
|
<h>230</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<->>>>>
|
||||||
|
m1=0..n
|
||||||
|
m2=1
|
||||||
|
< verwaltet</panel_attributes>
|
||||||
|
<additional_attributes>10.0;20.0;140.0;20.0;140.0;210.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
||||||
20
12fi5/AEuP/Bank/db.ps1
Normal file
20
12fi5/AEuP/Bank/db.ps1
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
cls
|
||||||
|
[void][system.reflection.Assembly]::LoadFrom("/home/krumel/SQLConn/net6.0/MySql.Data.dll")
|
||||||
|
$connstring = "Server=172.17.0.2;Uid=root;Pwd='abc';Database=bankv"
|
||||||
|
|
||||||
|
$con = New-Object Mysql.Data.MysqlClient.MysqlConnection
|
||||||
|
$con.ConnectionString = $connstring
|
||||||
|
$con.Open()
|
||||||
|
|
||||||
|
$command = New-Object MySql.Data.MySqlClient.MySqlCommand
|
||||||
|
$command.CommandText = "SELECT id_kunde,vorname FROM kunden"
|
||||||
|
$command.Connection = $con
|
||||||
|
|
||||||
|
$reader = $command.ExecuteReader()
|
||||||
|
|
||||||
|
while($reader.read()){
|
||||||
|
[string]$reader.Item("id_kunde") + " " + [string]$reader.Item("vorname")
|
||||||
|
}
|
||||||
|
""
|
||||||
|
"Anzahl der Spalten: " + $reader.FieldCount
|
||||||
|
$reader.Close()
|
||||||
172
12fi5/AEuP/Bank/example_bankv1.2.ps1
Normal file
172
12fi5/AEuP/Bank/example_bankv1.2.ps1
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
cls
|
||||||
|
class konto {
|
||||||
|
|
||||||
|
[int]$nummer
|
||||||
|
[double]$stand
|
||||||
|
[kunde]$inhaber
|
||||||
|
static [string]$BIC = "BYLADEM1SWU"
|
||||||
|
[bool]$aktiv = $true
|
||||||
|
[double]$dispo = -1000
|
||||||
|
|
||||||
|
konto([int]$nummer){
|
||||||
|
if ($this.getType() -eq [konto]){
|
||||||
|
throw "Konto ist abstrakt"
|
||||||
|
}
|
||||||
|
$this.nummer = $nummer
|
||||||
|
}
|
||||||
|
|
||||||
|
konto([bool]$aktiv){
|
||||||
|
if ($this.getType() -eq [konto]){
|
||||||
|
throw "Konto ist abstrakt"
|
||||||
|
}
|
||||||
|
$this.aktiv
|
||||||
|
}
|
||||||
|
|
||||||
|
konto([int]$nummer,[double]$stand,[kunde]$inhaber){
|
||||||
|
if ($this.getType() -eq [konto]){
|
||||||
|
throw "Konto ist abstrakt"
|
||||||
|
}
|
||||||
|
$this.nummer = $nummer
|
||||||
|
$this.stand = $stand
|
||||||
|
$this.inhaber = $inhaber
|
||||||
|
}
|
||||||
|
|
||||||
|
konto([int]$nummer,[double]$stand,[string]$BIC){
|
||||||
|
if ($this.getType() -eq [konto]){
|
||||||
|
throw "Konto ist abstrakt"
|
||||||
|
}
|
||||||
|
$this.nummer = $nummer
|
||||||
|
$this.stand = $stand
|
||||||
|
$this.BIC = $BIC
|
||||||
|
}
|
||||||
|
|
||||||
|
[double]zeigeKontostand(){
|
||||||
|
return $this.stand
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]einzahlen([double]$betrag){
|
||||||
|
$this.stand = $this.stand + $betrag
|
||||||
|
#write-host "Ihr neuer Kontostand beträgt" $this.stand "EUR"
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]auszahlen([double]$betrag){
|
||||||
|
if($betrag -gt 0 ){
|
||||||
|
if(($this.stand - $betrag) -ge -1000){
|
||||||
|
$this.stand = $this.stand - $betrag
|
||||||
|
#write-host "Ihr neuer Kontostand beträgt" $this.stand "EUR"
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
write-warning "Kreditlimit erreicht"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
write-warning "Ungültige Eingabe"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]überweisen([konto]$zielkonto,[double]$betrag){
|
||||||
|
$this.auszahlen($betrag)
|
||||||
|
$zielkonto.einzahlen($betrag)
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]static statische_Methode(){
|
||||||
|
write-host "Ich bin eine statische Methode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class girokonto : konto {
|
||||||
|
girokonto([int]$nummer) : base($nummer) {}
|
||||||
|
girokonto([bool]$aktiv) : base($aktiv) {}
|
||||||
|
girokonto([int]$nummer,[double]$stand,[kunde]$inhaber) : base($nummer, $stand, $inhaber) {}
|
||||||
|
girokonto([int]$nummer,[double]$stand,[string]$BIC) : base($nummer, $stand, $BIC) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class sparkonto : konto {
|
||||||
|
sparkonto([int]$nummer) : base($nummer) {}
|
||||||
|
sparkonto([bool]$aktiv) : base($aktiv) {}
|
||||||
|
sparkonto([int]$nummer,[double]$stand,[kunde]$inhaber) : base($nummer, $stand, $inhaber) {}
|
||||||
|
sparkonto([int]$nummer,[double]$stand,[string]$BIC) : base($nummer, $stand, $BIC) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class terminkonto : konto {
|
||||||
|
terminkonto([int]$nummer) : base($nummer) {}
|
||||||
|
terminkonto([bool]$aktiv) : base($aktiv) {}
|
||||||
|
terminkonto([int]$nummer,[double]$stand,[kunde]$inhaber) : base($nummer, $stand, $inhaber) {}
|
||||||
|
terminkonto([int]$nummer,[double]$stand,[string]$BIC) : base($nummer, $stand, $BIC) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class kreditkonto : konto {
|
||||||
|
kreditkonto([int]$nummer) : base($nummer) {}
|
||||||
|
kreditkonto([bool]$aktiv) : base($aktiv) {}
|
||||||
|
kreditkonto([int]$nummer,[double]$stand,[kunde]$inhaber) : base($nummer, $stand, $inhaber) {}
|
||||||
|
kreditkonto([int]$nummer,[double]$stand,[string]$BIC) : base($nummer, $stand, $BIC) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class kunde{
|
||||||
|
|
||||||
|
[string]$vorname
|
||||||
|
[string]$nachname
|
||||||
|
[konto[]]$kontenliste = @()
|
||||||
|
|
||||||
|
kunde([string]$vorname,[string]$nachname){
|
||||||
|
if ($this.getType() -eq [kunde]){
|
||||||
|
throw "Kunde ist abstrakt"
|
||||||
|
}
|
||||||
|
$this.vorname = $vorname
|
||||||
|
$this.nachname = $nachname
|
||||||
|
$this.erstelleKonto((read-Host "Anzahl Konten"))
|
||||||
|
}
|
||||||
|
|
||||||
|
erstelleKonto([int]$anzahl){
|
||||||
|
for($i = 0;$i -lt $anzahl;$i++){
|
||||||
|
$this.kontenliste += [girokonto]::new((read-host "Kontonummer"),0,$this)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class privatkunde : kunde {
|
||||||
|
privatkunde([string]$vorname,[string]$nachname) : base($vorname, $nachname) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class bankverwaltung{
|
||||||
|
|
||||||
|
$kundenliste = [System.Collections.ArrayList]::New()
|
||||||
|
$kontoliste = [System.Collections.ArrayList]::New()
|
||||||
|
|
||||||
|
bankverwaltung(){
|
||||||
|
for($i=0;$i -lt 3;$i++){
|
||||||
|
$temp = [privatkunde]::new((read-host "Kundenvorname"),(read-host "Kundennachname"))
|
||||||
|
$this.kundenliste.add($temp)
|
||||||
|
}
|
||||||
|
$this.ladeKontenInKontoliste()
|
||||||
|
}
|
||||||
|
|
||||||
|
ladeKontenInKontoliste(){
|
||||||
|
foreach($kunde in $this.kundenliste){
|
||||||
|
foreach($konto in $kunde.kontenliste){
|
||||||
|
$this.kontoliste.add($konto)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
überweisen([konto]$quellkonto,[konto]$zielkonto,[double]$betrag){
|
||||||
|
$quellkonto.überweisen($zielkonto, $betrag)
|
||||||
|
}
|
||||||
|
|
||||||
|
einzahlen([konto]$einzahlkonto,[double]$betrag){
|
||||||
|
$einzahlkonto.einzahlen($betrag)
|
||||||
|
}
|
||||||
|
|
||||||
|
auszahlen([konto]$auszahlkonto,[double]$betrag){
|
||||||
|
$auszahlkonto.auszahlen($betrag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
### Main ###
|
||||||
|
|
||||||
|
$bankverwaltung = [bankverwaltung]::new()
|
||||||
|
$bankverwaltung.kontoliste
|
||||||
|
""
|
||||||
|
$bankverwaltung.kontoliste[3].inhaber
|
||||||
79
12fi5/AEuP/Konto/konto.ps1
Normal file
79
12fi5/AEuP/Konto/konto.ps1
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
class konto {
|
||||||
|
[string]$kontonr
|
||||||
|
[string]$ktyp
|
||||||
|
[string]$kunde
|
||||||
|
[double]$guthaben
|
||||||
|
[datetime]$erstelldatum
|
||||||
|
|
||||||
|
static ueberweisen([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 $_
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ueberweisen([konto]$nach, [double]$menge) {
|
||||||
|
[konto]::ueberweisen($this, $nach, $menge)
|
||||||
|
}
|
||||||
|
|
||||||
|
konto() {
|
||||||
|
$this.guthaben = 0
|
||||||
|
$this.erstelldatum = Get-Date
|
||||||
|
}
|
||||||
|
|
||||||
|
konto([string]$knr) {
|
||||||
|
$this.guthaben = 0
|
||||||
|
$this.erstelldatum = Get-Date
|
||||||
|
$this.kontonr = $knr
|
||||||
|
}
|
||||||
|
|
||||||
|
konto([string]$knr, [string]$ktyp) {
|
||||||
|
$this.guthaben = 0
|
||||||
|
$this.erstelldatum = Get-Date
|
||||||
|
$this.kontonr = $knr
|
||||||
|
$this.ktyp = $ktyp
|
||||||
|
}
|
||||||
|
|
||||||
|
[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
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]set_knr([int]$nr){
|
||||||
|
[string]$this.kontonr = $nr
|
||||||
|
}
|
||||||
|
|
||||||
|
[string]get_knr(){
|
||||||
|
return $this.kontonr
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]set_ktyp($typ){
|
||||||
|
$this.ktyp = $typ
|
||||||
|
}
|
||||||
|
|
||||||
|
[string]get_ktyp(){
|
||||||
|
return $this.ktyp
|
||||||
|
}
|
||||||
|
}
|
||||||
24
12fi5/AEuP/UML 1019.uxf
Normal file
24
12fi5/AEuP/UML 1019.uxf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="14.3.0">
|
||||||
|
<zoom_level>10</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>390</x>
|
||||||
|
<y>170</y>
|
||||||
|
<w>270</w>
|
||||||
|
<h>220</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>device
|
||||||
|
--
|
||||||
|
- brand: string
|
||||||
|
- model: string
|
||||||
|
- vendorsku: string
|
||||||
|
--
|
||||||
|
+ device()
|
||||||
|
+ setBrand(brand: String): void
|
||||||
|
+ getBrand(): string
|
||||||
|
</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
||||||
18
12fi5/AEuP/multiplizieren.ps1
Normal file
18
12fi5/AEuP/multiplizieren.ps1
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
function Multiplizieren($Multiplikand, $Multiplikator) {
|
||||||
|
|
||||||
|
$Produkt = 0
|
||||||
|
$i = 0
|
||||||
|
|
||||||
|
while ($i -lt [Math]::Abs($Multiplikand)) {
|
||||||
|
if ($Multiplikand -ge 0) {
|
||||||
|
$Produkt += $Multiplikator
|
||||||
|
} else {
|
||||||
|
$Produkt -= $Multiplikator
|
||||||
|
}
|
||||||
|
$i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Produkt
|
||||||
|
}
|
||||||
11
12fi5/AEuP/product.py
Normal file
11
12fi5/AEuP/product.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
def multiply(mpa, mpc):
|
||||||
|
product = 0
|
||||||
|
i = 0
|
||||||
|
while i < abs(mpa):
|
||||||
|
if mpa >= 0:
|
||||||
|
product += mpc
|
||||||
|
else:
|
||||||
|
product -= mpc
|
||||||
|
i += 1
|
||||||
|
return product
|
||||||
|
|
||||||
139
12fi5/AEuP/s45 #2 UML.uxf
Normal file
139
12fi5/AEuP/s45 #2 UML.uxf
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="14.3.0">
|
||||||
|
<zoom_level>10</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>640</x>
|
||||||
|
<y>90</y>
|
||||||
|
<w>100</w>
|
||||||
|
<h>90</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Server
|
||||||
|
--
|
||||||
|
#IP
|
||||||
|
--
|
||||||
|
+getIP()</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>480</x>
|
||||||
|
<y>240</y>
|
||||||
|
<w>140</w>
|
||||||
|
<h>110</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>PrintServer
|
||||||
|
--
|
||||||
|
-Printers[]: Printer</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>640</x>
|
||||||
|
<y>240</y>
|
||||||
|
<w>100</w>
|
||||||
|
<h>30</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>AppServer</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>760</x>
|
||||||
|
<y>240</y>
|
||||||
|
<w>100</w>
|
||||||
|
<h>30</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>DBServer</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>680</x>
|
||||||
|
<y>170</y>
|
||||||
|
<w>30</w>
|
||||||
|
<h>90</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>530</x>
|
||||||
|
<y>150</y>
|
||||||
|
<w>130</w>
|
||||||
|
<h>110</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<-</panel_attributes>
|
||||||
|
<additional_attributes>110.0;10.0;10.0;10.0;10.0;90.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>730</x>
|
||||||
|
<y>150</y>
|
||||||
|
<w>110</w>
|
||||||
|
<h>110</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;90.0;10.0;90.0;90.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>260</x>
|
||||||
|
<y>250</y>
|
||||||
|
<w>140</w>
|
||||||
|
<h>100</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Printer
|
||||||
|
--
|
||||||
|
-Room: Room
|
||||||
|
-Name: Str
|
||||||
|
--
|
||||||
|
+printDocument()</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>130</x>
|
||||||
|
<y>390</y>
|
||||||
|
<w>100</w>
|
||||||
|
<h>100</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Room
|
||||||
|
--
|
||||||
|
-Size: float
|
||||||
|
-RoomNr: str</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>390</x>
|
||||||
|
<y>260</y>
|
||||||
|
<w>110</w>
|
||||||
|
<h>30</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;90.0;10.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>160</x>
|
||||||
|
<y>280</y>
|
||||||
|
<w>120</w>
|
||||||
|
<h>130</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;110.0;10.0;10.0;100.0;10.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
||||||
87
12fi5/AEuP/s58 UML Class.uxf
Normal file
87
12fi5/AEuP/s58 UML Class.uxf
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<diagram program="umlet" version="14.3.0">
|
||||||
|
<zoom_level>10</zoom_level>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>250</x>
|
||||||
|
<y>260</y>
|
||||||
|
<w>200</w>
|
||||||
|
<h>90</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Model
|
||||||
|
--
|
||||||
|
-daten: double
|
||||||
|
--
|
||||||
|
+model(messwert): Model
|
||||||
|
+getMesswert(): double</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>620</x>
|
||||||
|
<y>140</y>
|
||||||
|
<w>190</w>
|
||||||
|
<h>120</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>View
|
||||||
|
--
|
||||||
|
-model: model
|
||||||
|
-controller: controller
|
||||||
|
--
|
||||||
|
+view(model): View
|
||||||
|
+init()
|
||||||
|
+anzeigen()</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>UMLClass</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>580</x>
|
||||||
|
<y>360</y>
|
||||||
|
<w>270</w>
|
||||||
|
<h>90</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>Controller
|
||||||
|
--
|
||||||
|
-model: model
|
||||||
|
-view: view
|
||||||
|
--
|
||||||
|
controller(model, view): Controller</panel_attributes>
|
||||||
|
<additional_attributes/>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>330</x>
|
||||||
|
<y>160</y>
|
||||||
|
<w>310</w>
|
||||||
|
<h>120</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;100.0;10.0;10.0;290.0;10.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>710</x>
|
||||||
|
<y>250</y>
|
||||||
|
<w>30</w>
|
||||||
|
<h>130</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<<<<<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;10.0;110.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<id>Relation</id>
|
||||||
|
<coordinates>
|
||||||
|
<x>330</x>
|
||||||
|
<y>340</y>
|
||||||
|
<w>270</w>
|
||||||
|
<h>70</h>
|
||||||
|
</coordinates>
|
||||||
|
<panel_attributes>lt=<-</panel_attributes>
|
||||||
|
<additional_attributes>10.0;10.0;10.0;50.0;250.0;50.0</additional_attributes>
|
||||||
|
</element>
|
||||||
|
</diagram>
|
||||||
30
12fi5/AEuP/user.ps1
Normal file
30
12fi5/AEuP/user.ps1
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
class user {
|
||||||
|
[string]$vorname
|
||||||
|
[string]$nachname
|
||||||
|
[string]$email
|
||||||
|
[string]$password
|
||||||
|
|
||||||
|
[void]setName([string]$vorname, [string]$nachname) {
|
||||||
|
$this.vorname = $vorname
|
||||||
|
$this.nachname = $nachname
|
||||||
|
$this.email = $vorname + "." + $nachname + "@irgendwas.de"
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]readName() {
|
||||||
|
$vn = Read-Host "Vorname"
|
||||||
|
$nn = Read-Host "Nachname"
|
||||||
|
$this.setName($vn, $nn)
|
||||||
|
}
|
||||||
|
|
||||||
|
[void]printInfo() {
|
||||||
|
Write-Host $this.vorname
|
||||||
|
Write-Host $this.nachname
|
||||||
|
Write-Host $this.email
|
||||||
|
Write-Host $this.password
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = [user]::new()
|
||||||
|
|
||||||
|
$user.readName()
|
||||||
|
$user.printInfo()
|
||||||
5
12fi5/EN/Summary-11-25.txt
Normal file
5
12fi5/EN/Summary-11-25.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Shortly after publishing a security-themed upgrade for iOS, Apple had to release an emergency patch to fix a zero-day-exploit which was actively exploited. The exploit in question allows an unprivileged user to execute code at kernel level.
|
||||||
|
A security researcher reverse-engineered the patch and published a proof-of-concept code, which highlights the severity of the issue.
|
||||||
|
The urgent patch less than a month after the release of iOS 15 also fixes at least 22 documented vulnerabilities, including remote DOS and local code execution.
|
||||||
|
Apple offers a built in two-factor authenticator to provide extra login security.
|
||||||
|
They also offer a feature called Mail Privacy Protection that prevents marketers from gathering mail activity.
|
||||||
Reference in New Issue
Block a user