---
# System prepended metadata

title: FIAE Prüfung 2014 Sommer
tags: [Ausbildung_FIAE_Prüfung]

---

# FIAE Prüfung Teil 2 2014 Sommer

[Prüfung als PDF](https://ccs.jade-hs.de/index.php/f/233955891) (nur intern)

:::spoiler Inhaltsverzeichnis
[toc]
:::

## GA1 1. Handlungsschritt

### aa)

| Vorgang  | Beschreibung              | Tage   | Vorgänger |
| :------- | :------------------------ | :----- | --------- |
| A        | Planung                   | 30     | -         |
| B        | Netzwerk (Erstellung)     | 40     | A         |
| C        | Hardware (Bereitstellung) | 15     | A         |
| D        | Software (Bereitstellung) | 30     | A         |
| E        | Installation Software     | 5      | C, D      |
| F        | Anschluss Computer        | 5      | B, E      |
| G        | Test und Übergabe         | 10     | F         |

```graphviz
digraph Netzplan {
    node [shape=record]
    rankdir=LR;
    T [label = "{FAZ|FEZ} | {Vorgang|Beschreibung} | {Dauer|GP|FP} | {SAZ|SEZ}"];
}
```

```graphviz
digraph Netzplan {
    node [shape=record]
    rankdir=LR;
    splines=ortho;
    
    A [label= "{0 | 30} | {A | Planung} | {30 | 0 | 0} | {0 | 30}"];
    B [label= "{30 | 70} | {B | Netzwerk} | {40 | 0 | 0} | {30 | 70}"];
    C [label= "{30 | 45} | {C | Hardware} | {15 | 20 | 15} | {50 | 65}"];
    D [label= "{30 | 60} | {D | Software} | {30 | 5 | 5} | {35 | 65}"];
    E [label= "{60 | 65} | {E | Installation \n Software} | {5 | 5 | 5} | {65 | 70}"];
    F [label= "{70 | 75} | {F | Anschluss \n Computer} | {5 | 0 | 0} | {70 | 75}"];
    G [label= "{75 | 85} | {G | Test und \n Übergabe} | {10 | 0 | -} | {75 | 85}"];
               
    A -> {rank=same; B; C; D} [dir="forward"];
    {C, D} -> E;
    {B, E} -> F;
    F -> G;
}
```

### ab)

Projektstart am 02. Juni 2014.
Wann kann Vorgang D frühestens begonnen werden?

* 16. Juli 2014

### ac)

Gesamtpuffer:

* Vorgänge können im Zeitraum des Gesamtpuffers verschoben werden, ohne Projektende zu gefährden (bis max. zum SAZ des Nachfolgers)

Freier Puffer:

* Zeitraum den ein Vorgang verschoben werden kann, ohne den folgenden Vorgang (bis max. FAZ des Nachfolgers) verschieben zu müssen.

### ba)

Cloud Computing (CC):

* TODO

2 betriebswirtschaftliche Vorteile CC:

* TODO

## GA1 2. Handlungsschritt

## GA1 3. Handlungsschritt

```java=
rechnungsausgabe(kunde : Kunde) : double {
    array bestellungen[] = Kunde.getBestellungen;
    array bestellPositionen[] = Kunde.getBestellungen.getBestellPosition;
    int bestellungLaenge = bestellungen.length;
    int bestellPositionLaenge = bestellPositionen,length;
    int position = bestellPositionen[].getPosNr;
    int anzahlSeite = 1;
    int anzahlZeile = 0;
    double gesamtbetrag;

for(int k = 0; k < bestellungLaenge)

    druckeSeitenKopf(anzahlSeite);
    druckeRechnungsKopf(kunde, bestellungen[i].getBestellNr();
    druckePositionsKopf();

for (int i = 0; i < bestellPositionLaenge i++) {

    anzahlZeile++;
    druckePositionsZeile(    
    bestellPosition[i].getArtikel().getArtikelNr(), 
    bestellPosition[i].getBezeichnung(), 
    bestellPosition[i].getEinzelPreis(),
    bestellPosition[i].getMenge()
    );
    
    if(anzahlZeile == 20)
    {
    anzahlSeite++;
    druckeSeitenKopf(anzahlSeite);
    druckePositionsKopf();
    }
}


for (int j = 0; j < laenge; j++) {
   
    double preis = bestellPosition[i].getEinzelpreis();
    int menge = bestellPosition[i].getMenge();
    gesamtbetrag += preis * menge;
    
}

druckeRechnungsFuss(gesamtBetrag, Kunde.getRabatt());

return gesamtbetrag;
```

## GA1 4. Handlungsschritt

```java=
String res = "0100";
laenge = laengeZeichenkette(werbetext);

for (int i = 0; i < laenge; i++) {
    
    char c = zeichen(werbetext, i);
    for (int j = 0; j < zeichenSatz.length; j++) {
        
        for (int k = 0; k < zeichenSatz.length; k++) {

            String v1 = String.valueOf(c);
            String  v2 = zeichenSatz[j][k];
            if (v1.equals(v2)) {
                String werbeZeichen = zeichenSatz[j][0] + zeichenSatz[0][k];
                res += werbeZeichen;
            }
        }
    }
}

res += "0000";
System.out.println("The result = " +res);
```

## GA1 5. Handlungsschritt

Datenmodell:

```plantuml
left to right direction     
hide circle

entity "Kunde" as Kd {
    Kd_Id (PK)
    --
    Kd_Firma
    Kd_Straße
    Kd_PLZ
    Kd_Ort
}

entity "Rechnung" as Rg {
    Rg_Id (PK)
    --
    Rg_Kdid (FK)
    Rg_Datum
    Rg_Nummer
}

entity " RechnungsPosition " as RgPos {
    RgPos_Id (PK)
    --
    RgPos_RgId (FK)
    RgPos_ArtId (FK)
    RgPos_Menge
    RgPos_Preis
}

entity "Artikel" as Art {
    Art_Id (PK)
    --
    Art_Nummer
    Art_Bezeichung
    Art_Preis
}

' Beziehungen '
Kd     "1" -- "n" Rg
Rg     "1" -- "n" RgPos
RgPos  "n" -- "1" Art
```

:::spoiler SQL zum Testen

```sql
CREATE TABLE Kunde (
    Kd_Id INT PRIMARY KEY,
    Kd_Firma VARCHAR(255),
    Kd_Strasse VARCHAR(255),
    Kd_PLZ VARCHAR(10),
    Kd_Ort VARCHAR(255)
);

CREATE TABLE Rechnung (
    Rg_Id INT PRIMARY KEY,
    Rg_KdId INT,
    Rg_Datum DATE,
    Rg_Nummer VARCHAR(20),
    FOREIGN KEY (Rg_KdId) REFERENCES Kunde(Kd_id)
);

CREATE TABLE Artikel (
    Art_Id INT PRIMARY KEY,
    Art_Nummer VARCHAR(20),
    Art_Bezeichnung VARCHAR(255),
    Art_Preis DECIMAL(10, 2)
);

CREATE TABLE RechnungPosition (
    RgPos_Id INT PRIMARY KEY,
    RgPos_RgId INT,
    RgPos_ArtId INT,
    RgPos_Menge INT,
    RgPos_Preis DECIMAL(10, 2),
    FOREIGN KEY (RgPos_RgId) REFERENCES Rechnung(Rg_Id),
    FOREIGN KEY (RgPos_ArtId) REFERENCES Artikel(Art_Id)
);

INSERT INTO Artikel 
    (Art_Id, Art_Nummer, Art_Bezeichnung, Art_Preis) 
VALUES
    (1, 'ABC123', 'Schmerzmittel XYZ', 10.50),
    (2, 'DEF456', 'Irgendein schmerzmittel Produkt', 4.00),
    (3, 'GHI789', 'Lidi Katztee', 3.20);

INSERT INTO Kunde 
    (Kd_id, Kd_Firma, Kd_Strasse, Kd_Plz, Kd_Ort) 
VALUES
    (1, 'KundenFirma1', 'Kundenstrasse1', '12345', 'KundenOrt1'),
    (2, 'KundenFirma2', 'Kundenstrasse2', '54321', 'KundenOrt2'),
    (3, 'KundenFirma3', 'Kundenstrasse3', '98765', 'KundenOrt3');

INSERT INTO 
    Rechnung (Rg_Id, Rg_KdId, Rg_Datum, Rg_Nummer) 
VALUES
    (1, 1, '2023-01-01', 'R12345'),
    (2, 2, '2023-02-01', 'R54321'),
    (3, 3, '2023-03-01', 'R98765');

INSERT INTO RechnungPosition 
    (RgPos_Id, RgPos_RgId, RgPos_ArtId, RgPos_Menge, RgPos_Preis) 
VALUES
    (1, 1, 1, 2, 5.99),
    (2, 1, 2, 1, 12.50),
    (3, 2, 3, 3, 9.99);
```

:::

### a)

Erstellen Sie eine SQL-Abfrage die alle Artikel auflistet, deren Artikel-
bezeichnung die Zeichenkette "Schmerzmittel" oder "schmerzmittel" enthält.
Zu jedem Artikel sollen jeweils alle Attribute ausgegeben werden.

Vorschlag RM:

```sql=
SELECT 
    *
FROM 
    Artikel 
WHERE
    Art_Bezeichnung LIKE %Schmerzmittel% OR
    Art_Bezeichnung LIKE %schmerzmittel%;
```

### b)

Erstellen Sie eine SQL-Abfrage die alle Kunden und deren Umsätze auflisten.
Zu jedem Kunden sollen alle Attribute ausgegeben werden.
Die Liste soll nach Umsatz absteigen sortiert werden.

Vorschlag RM:

```sql=
SELECT
    Kunde.*,
    SUM(RgPos_Menge * RgPos_Preis) as Umsatz
FROM 
    Kunde, 
    Rechnung, 
    RechnungPosition
WHERE 
    Kd_Id = Rg_KdId AND
    Rg_Id = RgPos_RgId
GROUP BY 
    Kd_id
ORDER BY 
    Umsatz DESC;
```

```sql=
SELECT
    Kunde.Kd_Id,
    Kunde.Kd_Firma,
    SUM(RechnungPosition.RgPos_Menge * RechnungPosition.RgPos_Preis) AS Gesamtumsatz
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, Kunde.Kd_Firma
ORDER BY
    Gesamtumsatz DESC;
```

### c)

Eertellen Sie eine SQL-Abfrage die für jeden Artikel folgendes ermittelt:

| Art_id | Art_Nummer | Art_Bezeichnung | Art_Preis | MengeGesamt | AnzahlRechPos |
| :----- | ---------: | :-------------- | --------: | ----------: | ------------: |
| 76732  | IB767612   | B Schmerzmittel | 10,50     | 451         | 391           |
| 09239  | HM674786   | Lidi Katztee    | 10,50     | 7514        | 2.121         |

```sql=
-- Alternativ SELECT Artikel.*,
SELECT
    Art_id, 
    Art_Nummer, 
    Art_Bezeichnung, 
    Art_Preis,
    SUM(RgPos_Menge) AS MengeGesamt,
    COUNT(RgPos_Id) AS AnzahlRechPos
FROM
    Artikel
LEFT JOIN
    RechnungPostition ON Art_Id = RgPos_ArtId;
GROUP BY 
    Art_id
```

### d)

Deutschland ist in zehn PLZ-Regionen (0-9 1. Stelle der PLZ) unterteilt.
Erstelle eine SQL-Abfrage die jede PLZ-Region (0-9) den Gesamtumsatz ausweist.
Die  Liste soll nach Gesamtumsatz absteigend sortiert werden.

| Gebiet | Umsatz  |
| ------ | ------- |
| 5      | 154.000 |
| 8      | 148.000 |
| 3      | 134.000 |
| ...    | ...     |

Hinweis: Die Kopfzeile wird nicht mit ausgegeben.

```sql=
SELECT
    LEFT(Kd_PLZ, 1 ) AS Gebiet,
    SUM(RgPos_Preis * RgPos_Menge) AS Umsatz
FROM 
    Kunde
INNER JOIN 
    Rechnung ON (Kd_Id = Rg_KdId)
INNer JOIN 
    RechnungPosition ON (Rg_Id = RgPos_RgId) 
GROUP BY 
    Gebiet
ORDER BY 
    Umsatz DESC;
```

## GA2 1. Handlungsschritt

## GA2 2. Handlungsschritt

## GA2 3. Handlungsschritt

## GA2 4. Handlungsschritt

## GA2 5. Handlungsschritt
