4AHEL FSST Test (Group A)

2022-06-14

Max. 24 points

Name:

Task Max. Achieved
1 18
2 6
Sum 24
Benotung: >=21: 1, >=18: 2, >=15: 3, >=12: 4, <12: 5

Die Verwendung von Unterlagen ist erlaubt. Die Abgabe erfolgt auf Eduvidual.

Lade die Northwind Datenbank herunter und entpacke sie. Lade ebenfalls das gegebene Qt Projekt von Eduvidual herunter und öffne dieses.

  1. Qt
    Bei diesem Beispiel ist ein Archiv des gesamten Programmcodes abzugeben. Punkte werden nur vergeben, wenn das Projekt ohne Änderungen kompilierbar und lauffähig ist. Jede Teilaufgabe ist 3 Punkte wert. Das Projekt in seiner aktuellen Form verwendet QSqlQueryModel um das Resultat einer SQL Abfrage im vorhandenen QTableView darzustellen. Passe den Pfad zur Datenbank an, damit diese erfolgreich geöffnet wird. Setze folgende Verbesserungen am Projekt um:
    1. Benutzer sollen den Query verändern können. Füge dem Projekt ein QPlainTextEdit (Textfeld) und einen QPushButton hinzu.
    2. Das Layout soll so angepasst werden, dass die beiden neuen Steuerelemente gemeinsam in einer Zeile unterhalb des vorhandenen QTableView dargestellt werden. Beim Vergrößern und Verkleinern des Fensters soll die größe der Steuerelemente automatisch angepasst werden (QTableView und QPlainTextEdit sollen mit dem Fenster wachsen und schrumpfen
    3. Benenne die Steuerelemente wie folgt um: QPlainTextEdit soll den objectName "firstname_query" bekommen, wobei firstname durch den eigenen Vornamen zu ersetzen ist. Analog soll der QPushButton auf "firstname_button" umbenannt werden.
    4. Stelle die Schriftart (font) des QPlainTextEdit auf monospace um.
    5. Im neuen QPlainTextEdit sollen mehrzeilige Abfragen geschrieben werden können. Ein Clicken auf den QPushButton soll die jeweilige Abfrage ausführen und das Ergebnis im QTableView darstellen.
    6. Der Konstruktor des MainWindow und der click Handler des QPushButton führen weitgehend identischen Code aus. Verbessere den Code so, dass diese Duplikation durch Verwendung einer zusätzlichen Funktion vermieden wird.
  2. Datenbanken
    Schreibe die folgenden beiden Datenbankabfragen in dem soeben erstellten Qt Interface unter korrekter Verwendung von JOIN.
    Abzugeben sind eine Textdatei mit dem Text der Queries und jeweils ein Screenshot des erfolgreichen Queries und dessen Ergebnisses im selbst programmierten Qt Datenbankclient.
    1. Liste alle Produkte der Kategorien mit den Namen 'Dairy Products' und 'Produce'.
      select * from products
      natural join categories
      where CategoryName in ('Dairy Products', 'Produce');
    2. Liste die Namen und Telefonnummer aller Anbieter, von denen eine Nachbestellung dringend notwendig ist. Liste auch die Produktnummer, welche nachbestellt werden muss. Dringend nachbestellt werden müssen alle Produkte, bei denen die Summe aus Lagerstand und aktueller Nachbestellung kleiner als der ReorderLevel ist.
      select ContactName, Phone, ProductId from products
      natural join suppliers
      where UnitsInStock + UnitsOnOrder < ReorderLevel;