# FIAE Prüfung 2019 Sommer
[Prüfung als PDF](https://ccs.jade-hs.de/index.php/f/...) (nur intern)
:::spoiler Inhaltsverzeichnis
[toc]
:::
## GA1 1. Handlungsschritt
### GA1 1. a) Projektstrukturplan

```plantuml
@startwbs
scale 0.9
* Maschinensteuerung
** Planung
** Bedarfs-\nermittlung
**[#fff] Beschaffung
*** Angebots\n-vergleich
*** Bestellung
**[#fff] Realisierung
*** Installation
*** Probebetrieb
*** Schulung
** Abnahme\nBetrieb
@endwbs
```
```graphviz
digraph Netzplan {
node [shape=record]
rankdir=LR;
A [label= "{8 | 12} | {A | Netzwerkplanung} | {12 | 0 | 0} | {0 | 12}"];
B [label= "{12 | 17} | {B | Netzwerkauswahl} | {5 | 0 | 0} | {12 | 17}"];
C [label= "{17 | 21} | {C | Sicherheitskonzeption} | {4 | 0 | 0} | {17 | 21}"];
D [label= "{17 | 23} | {D | Netzwerkinfrastruktur} | {6 | 0 | 0} | {17 | 23}"];
E [label= "{17 | 20} | {E | Netzwerkgeräte} | {3 | 0 | 0} | {23 | 25}"];
F [label= "{21 | 31} | {F | Netzwerkinstallation} | {10 | 0 | 0} | {25 | 35}"];
G [label= "{21 | 28} | {G | Netzwerktest} | {7 | 0 | 0} | {25 | 32}"];
H [label= "{23 | 27} | {H | Netzwerküberwachung} | {4 | 0 | 0} | {32 | 36}"];
I [label= "{23 | 28} | {I | Netzwerkunterstützung} | {5 | 0 | 0} | {32 | 36}"];
J [label= "{35 | 36} | {J | Netzwerkübernahme} | {1 | 0 | 0} | {36 | 37}"];
T [label = "{FAZ|FEZ} | {Vorgang|Beschreibung} | {Dauer|GP|FP} | {SAZ|SEZ}"]
A -> B
B -> {rank=same; C; D}
C -> {rank=same; F; G}
D -> {rank=same; H; I}
F -> J
G -> J
H -> J
I -> J
}
```
```plantuml
digraph Netzplan {
node [shape=record]
rankdir=LR;
A [label= "{8 | 12} | {A | Netzwerkplanung} | {12 | 0 | 0} | {0 | 12}"];
B [label= "{12 | 17} | {B | Netzwerkauswahl} | {5 | 0 | 0} | {12 | 17}"];
C [label= "{17 | 21} | {C | Sicherheitskonzeption} | {4 | 0 | 0} | {17 | 21}"];
D [label= "{17 | 23} | {D | Netzwerkinfrastruktur} | {6 | 0 | 0} | {17 | 23}"];
E [label= "{17 | 20} | {E | Netzwerkgeräte} | {3 | 0 | 0} | {23 | 25}"];
F [label= "{21 | 31} | {F | Netzwerkinstallation} | {10 | 0 | 0} | {25 | 35}"];
G [label= "{21 | 28} | {G | Netzwerktest} | {7 | 0 | 0} | {25 | 32}"];
H [label= "{23 | 27} | {H | Netzwerküberwachung} | {4 | 0 | 0} | {32 | 36}"];
I [label= "{23 | 28} | {I | Netzwerkunterstützung} | {5 | 0 | 0} | {32 | 36}"];
J [label= "{35 | 36} | {J | Netzwerkübernahme} | {1 | 0 | 0} | {36 | 37}"];
T [label = "{FAZ|FEZ} | {Vorgang|Beschreibung} | {Dauer|GP|FP} | {SAZ|SEZ}"]
A -> B
B -> {rank=same; C; D}
C -> {rank=same; F; G}
D -> {rank=same; H; I}
F -> J
G -> J
H -> J
I -> J
}
```
### GA1 1. b) Sequenzdiagramm
```plantuml
@startuml
scale 0.8
collections Produktionsleiter
collections Anwendungsentwickler
collections Maschinenführer
collections Steuerprogramm
activate Produktionsleiter
Produktionsleiter -> Anwendungsentwickler : Steuerprogramm erstellen()
activate Anwendungsentwickler
Anwendungsentwickler --> Steuerprogramm : create
Anwendungsentwickler -> Maschinenführer : Steuerprogramm testen()
activate Maschinenführer
Maschinenführer -> Steuerprogramm : Probelauf durchführen()
activate Steuerprogramm
Maschinenführer <-- Steuerprogramm : Probelauf erfolgreich
deactivate Steuerprogramm
Anwendungsentwickler <-- Maschinenführer : Steuerprogramm funktioniert
deactivate Maschinenführer
Produktionsleiter <-- Anwendungsentwickler : Maschine produktionsbereit
deactivate Anwendungsentwickler
deactivate Produktionsleiter
@enduml
```
## GA1 2. Handlungsschritt
## GA1 3. Handlungsschritt
## GA1 4. Handlungsschritt
### GA1 4. a) Datenmodell
```plantuml
left to right direction
hide circle
scale 0.8
entity TeilGruppe {
Gruppe_ID (PK)
--
Gruppenbezeichnung
}
entity BestellPos {
Bestell_ID (FK)(PK)
Teil_ID (FK)(PK)
--
Menge
}
entity Bestellung {
Bestell_ID (PK)
Lieferer_ID (FK)
--
Bestelldatum
}
entity Teil {
Teil_ID (PK)
Gruppe_ID (FK)
--
Teilbezeichnung
Bestand
}
entity Lieferer {
Lieferer_ID (PK)
--
LiefererName
LiefererAdresse
}
entity TeilLieferer {
Teil_ID (FK)(PK)
Lieferer_ID (FK)(PK)
--
EinkaufPreis
}
Lieferer "1" -- "n" TeilLieferer
Lieferer "1" -- "n" Bestellung
Bestellung "1" -u- "n" BestellPos
TeilGruppe "1" -- "n" Teil
Teil "1" -- "n" TeilLieferer
Teil "1" -- "n" BestellPos
```
### GA1 4. b) Normalform
## GA1 5. Handlungsschritt
Datenmodell
```plantuml
left to right direction
hide circle
scale 0.8
entity Laufzeit {
LfdNrID (PK)
MaschineID (FK)
--
Datum
Stunden
}
entity MaschinenTyp {
MaschineTypID (PK)
--
Beschreibung
WartungIntervallInStunden
}
entity Maschine {
MaschineID (PK)
MaschineTypID (FK)
KundeID (FK)
--
ProduktionsDatum
DatumLetzteWartung
}
entity Kunde {
KundeID (PK)
--
KundeFirma
KundeAdresse
}
Laufzeit "n" -- "1" Maschine
Maschine "n" -- "1" Kunde
MaschinenTyp "1" -- "n" Maschine
```
### GA1 5. a)
Liste aller Maschinentypen mit Anzahl Maschinen je Typ absteigend nach Zahl der Maschinen

Alternative Idee (Testen!)
```sql=
SELECT
MT.MaschineTypID,
MT.Beschreibung,
MT.WartungsintervallInStunden,
COUNT(M.MaschineID) AS AnzahlMaschinen
FROM
Maschine AS M
INNER JOIN MaschinenTyp AS MT
ON M.MaschineTypID = MT.MaschineTypID
GROUP BY
MT.MaschineTypID
ORDER BY
AnzahlMaschinen DESC;
```
```sql=
SELECT
MT.MaschineTypID,
MT.Beschreibung,
MT.WartungsintervallInStunden,
(SELECT
COUNT(M.MaschineID)
FROM
Maschine AS M
WHERE
M.MaschineTypID = MT.MaschineTypID
) AS AnzahlMaschinen
FROM
MaschinenTyp AS MT
ORDER BY
AnzahlMaschinen DESC;
```
### GA1 5. b)
Liste aller Kunden und ihrer Maschinen, deren Laufzeit nach der letzten Wartung das Wartungsintervall in den nächsten 100 Stunden überschreiten.

```sql=
SELECT
KundeID
KundeFirma
KundeAdresse
MaschineID
(SELECT
SUM(L.Stunden)
FROM
Laufzeit AS L
Maschine AS M
WHERE
L.MaschineID = M.MaschineID AND
L.Datum > M.DatumLetzteWartung
) AS Laufzeit
FROM
Kunde AS K
INNER JOIN Maschine AS M
ON M.KundeID = K.KundeID
INNER JOIN MaschinenTyp AS MT
ON M.MaschineTypID = MT.MaschineTypID
WHERE
(SELECT
SUM(L.Stunden)
FROM
Laufzeit AS L
Maschine AS M
WHERE
L.MaschineID = M.MaschineID AND
L.Datum > M.DatumLetzteWartung
) + 100 > MT.WartungsIntervallInStunden
```
### GA1 5. c)
Liste aller Maschinentypen, der zugehörigen Kunden und Laufzeit der Maschinen seit der letzten Wartung

```sql=
SELECT
MT.MaschineTypID
MT.Beschreibung
K.KundeFirma
SELECT
SUM(L.Stunden)
FROM
Laufzeit AS L
Maschine AS M
WHERE
L.MaschineID = M.MaschineID AND
L.Datum > M.DatumLetzteWartung
) AS Laufzeit
FROM
MaschineTyp AS MT
LEFT JOIN Maschine AS M
ON M.MaschineTypID = MT.MaschineTypID
LEFT JOIN Kunde AS K
ON M.KundeID = K.KundeID
```
### GA1 5. d)
Reduziere Wartungsintervall um 10% für alle Verpackungsmaschinen um 10%
```sql=
UPDATE
MaschineTyp
SET
WartungsIntervallInStunden = WartungsIntervallInStunden * 0.9
WHERE
Beschreibung LIKE "Verpackung";
```
## GA2 1. Handlungsschritt
### GA2 1. a)
|Kabel | | Meter |
|------------------------------------|---|-------|
| Lagerbestand | | 2.400 |
| Eiserner Bestand | - | 500 |
| Werkstattbestand | + | 200 |
| Vormerkbestand für andere Projekte | - | 800 |
| Für das Projekt verfügbare Menge | = | |
### GA2 1. b)
| | |
|------|---------------------------------------------------|
| 120% | Gemeinkostenzuschlagssatz (Basis Fertigungslöhne) |
| 10% | Gewinnzuschlag |
| 2% | Skonto |
| | % | SOLL (Kalk.) | | | IST <br>(Nachkalk.) |
| :--------------------- |----: | -----------: | ---------------------: | ---: | ----------: |
| Fertigungsmaterial | |8000,00 | Fertigungsmaterial | | |
| Gemeinkosten | 120% | 6480,00 | Gemeinkosten | 120% | |
| Fertigungslöhne | | 5400,00 | Fertigungslöhne | | |
| Aufwand (Selbstkosten) | | 19880,00 | Aufwand (Selbstkosten) | | |
| Gewinn | 10% | 1988,00 | Gewinn | | |
| Barverkaufspreis | | 21868,00 | Barverkaufspreis | | |
| Skonto | 2% | 446,29 | | | |
| Angebotspreis | | 22314,29 | | | |
| Umsatzsteuer | 19% | 4239,71 | Umsatzsteuer | 19% | |
| Angebotspreis \* | | 26554,00 | Zahlungsbetrag | | 25950,00 |
| Wirtschaftlichkeit | | 1,1 | Wirtschaftlichkeit | | |
## GA2 2. Handlungsschritt
## GA2 3. Handlungsschritt
## GA2 4. Handlungsschritt
## GA2 5. Handlungsschritt
## 3 WiSo