# 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 ![grafik](https://hackmd.io/_uploads/S1PBrjfPle.png) ```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 ![grafik](https://hackmd.io/_uploads/B12yuIvDex.png) 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. ![grafik](https://hackmd.io/_uploads/HJlfO8vDxx.png) ```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 ![grafik](https://hackmd.io/_uploads/B1gVdIvPgx.png) ```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