Compare commits

...

61 Commits

Author SHA1 Message Date
5023c8614a . 2022-03-21 15:12:56 +01:00
1f949e0034 . 2022-03-21 14:57:59 +01:00
3b71cfc812 . 2022-03-17 13:40:03 +01:00
1e14c24e6a . 2022-03-17 10:56:09 +01:00
2a220f0c59 . 2022-03-15 11:34:05 +01:00
db153e2883 . 2022-03-15 11:11:06 +01:00
b7c7f0b870 . 2022-03-15 10:42:24 +01:00
e488d8a241 . 2022-01-11 11:13:01 +01:00
a4789cd594 . 2022-01-10 15:34:51 +01:00
e054b82c6d . 2021-11-25 12:26:00 +01:00
732d29fefe . 2021-11-25 12:12:51 +01:00
2030e6e5be . 2021-11-25 10:39:23 +01:00
f2113866fb . 2021-11-25 09:10:23 +01:00
7ce321ed58 uml diagramm 2021-11-22 15:37:20 +01:00
7251b4a4fe unterricht vom 22.11. 2021-11-22 15:21:38 +01:00
57667d9787 konto $ kunde erstellen 2021-11-18 12:48:12 +01:00
7e879fed38 basic bank 2021-11-18 12:17:48 +01:00
a3e42d2d9d abteilung variant, bank start 2021-11-18 12:10:22 +01:00
12357e9a91 some fixes, added transfer method 2021-11-18 11:25:31 +01:00
68932c43f4 19.11 2021-11-16 11:29:27 +01:00
836fa81365 rechtschreibung 2021-11-15 15:20:19 +01:00
fecdf379af simplified 2021-11-15 15:13:17 +01:00
137233e22f also non static überweißen 2021-11-15 15:07:18 +01:00
1ad5c174be static ueberweissen 2021-11-15 14:47:18 +01:00
7ac9e38d45 overloaded constructors 2021-10-21 12:43:48 +02:00
e070913513 input checking 2021-10-21 12:31:41 +02:00
15c2e13fda konto 2021-10-21 12:22:57 +02:00
6ef295a777 übung user 2021-10-21 11:29:58 +02:00
c2aa6704c0 UMl Diagram 19.10 2021-10-19 11:09:41 +02:00
d71cf32c35 multiply powershell 2021-09-23 10:55:06 +02:00
255b72506c Neu organisiert für neues Schuljahr 2021-09-21 11:35:05 +02:00
b4f3fc83d2 Update 'AWP_11fi5/2021-07-29 User.sql' 2021-07-26 15:50:48 +02:00
d7fa97afe8 Update 'AWP_11fi5/2021-07-29 User.sql' 2021-07-26 15:47:09 +02:00
cd0a5b6b85 Update 'AWP_11fi5/2021-07-29 User.sql' 2021-07-26 15:44:29 +02:00
a74a2281b2 Update 'AWP_11fi5/2021-07-29 User.sql' 2021-07-26 15:39:51 +02:00
b72a8ef71f . 2021-07-26 15:32:24 +02:00
c2ef05847b . 2021-07-26 14:16:54 +02:00
49c470939a colors 2021-07-26 14:16:02 +02:00
4325fc8e1c . 2021-07-26 14:14:44 +02:00
0755b58307 rechnung er update 2021-07-26 14:12:05 +02:00
bc45b53b93 rechnungen ER 2021-07-26 14:10:31 +02:00
0576fbdcb5 rechnungen tabellenentwurf 2021-07-26 13:46:13 +02:00
a0164f7861 Rechnungen Tabellentwurf Anfang 2021-07-23 12:04:59 +02:00
39450ddfaa korrektur 2021-07-23 11:16:56 +02:00
82c2908d49 added length to varchars 2021-07-23 10:54:07 +02:00
4bd30c51c6 Teil 2 2021-07-22 12:44:21 +02:00
63a625e947 a 2021-07-22 12:23:04 +02:00
f0257b1d82 Korrektur 2021-07-22 12:16:05 +02:00
3b2aefd614 Rechtschreibfehler... 2021-07-22 12:00:00 +02:00
08b7b3c26d 2021-07-21 Prüfungsaufgaben 2021-07-22 10:58:57 +02:00
5fcbb75617 aufgabe 2 verein 2021-06-18 12:07:52 +02:00
50872fd681 Upload files to 'AWP_11fi5/Verein' 2021-06-18 10:47:10 +02:00
9e1a2e5d52 ordnerstruktur verein 2021-06-18 10:45:58 +02:00
3ea0be648a lunadb joins 2021-06-17 11:32:58 +02:00
f6a171d128 clients 2021-06-15 12:47:40 +02:00
84aaab8cbe client data 2021-06-15 12:30:01 +02:00
81a6b4dca1 JOINS fertig 2021-06-14 15:36:08 +02:00
eb2ad89dbb JOINS a-i 2021-06-14 15:19:29 +02:00
9116a70e82 cleaned up output table 2021-06-14 14:39:44 +02:00
4d5a683eff added join exercise 2021-06-14 14:33:09 +02:00
bf41852193 reordered files a bit 2021-06-14 14:32:13 +02:00
61 changed files with 1599 additions and 0 deletions

View 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
);

View 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)|

View 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;

View File

@ -0,0 +1,6 @@
USE kosidasdb;
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
LEFT JOIN Posten ON Artikel.ArtikelID = Posten.ArtikelID
GROUP BY Artikel.ArtikelID;

View 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
);

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View 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;

View 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`);

View 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;

View File

@ -21,3 +21,10 @@
* IPv4
* ID=172.20.0.0/20
* Nur Sichere Updates
## Client
* IP: 172.20.0.54
* Hostname: Creativ05-PC06
* Localer User: admin
* Locales Passwort: Win2016

View 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=-&gt;
m1=1
m2=*
&lt; 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=-&gt;
m1=1
m2=1
&lt; leitet</panel_attributes>
<additional_attributes>10.0;20.0;170.0;20.0</additional_attributes>
</element>
</diagram>

View 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

View 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
View 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
View 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
View 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=-&gt;
m1=0..n
m2=1
&lt; 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=&lt;-&gt;&gt;&gt;&gt;&gt;
m1=0..n
m2=1
&lt; 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=&lt;-&gt;&gt;&gt;&gt;&gt;
m1=0..n
m2=1
&lt; 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
View 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()

View 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

View 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
View 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>

View 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
View 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
View 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=&lt;&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=&lt;&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=&lt;&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=&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=&lt;-</panel_attributes>
<additional_attributes>10.0;110.0;10.0;10.0;100.0;10.0</additional_attributes>
</element>
</diagram>

View 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=&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=&lt;&lt;&lt;&lt;&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=&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
View 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()

View 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.