Z#StudiVZ - JirkaDellOro/Softwaredesign GitHub Wiki

Entwickeln Sie eine Klasse „Studi“, deren Objekte relevante Daten zu einzelnen Studierenden der HFU halten können. Darunter sind Name, Vorname, Matrikelnummer, Alter, Geschlecht, Studiengang und mindestens drei weitere Attribute Ihrer Wahl. Achten Sie auf sinnvolle Datentypen. Außerdem soll jedes Objekt ein Array mit 7 Feldern für die in jedem Semester erreichten Leistungspunkte zur Verfügung stellen. Erzeugen Sie im Hauptprogramm drei dieser Objekte, füllen Sie sie mit Phantasiedaten und lassen Sie alle Eigenschaften der drei Objekte auf der Leinwand in gut strukturierter Form ausgeben. Außerdem soll zu jedem Objekt die Summe der erreichten Leistungspunkte ausgegeben werden.

8.1 Studi-VZ Implementieren Sie eine rudimentäre Verwaltung von Studentendaten. Erweitern Sie dazu den nebenstehenden Code, der in diesem Zustand schon lauffähig ist, aber noch kein sinnvolles Ergebnis liefert. Ergänzen Sie ihn um die Struktur von StudentData und die Körper der Funktionen „saveData“ und „queryData“. „saveData“ soll einen String mit kommaseparierten Werten annehmen und damit ein neues Objekt vom Typ StudentData füllen. Die Werte sind Matrikelnummer, Name, Vorname, Alter, Geschlecht und ein Kommentar. Matrikelnummer und Alter sollen als Zahlen gespeichert werden, das Geschlecht als boolescher Wert. Die anderen Werte sollen Strings bleiben. Das Objekt soll dann im assoziativen Array students abgelegt werden, wobei die Matrikelnummer als Schlüssel dient. Die Funktion gibt einen String zurück, der die erfolgreiche Speicherung meldet, oder einen Fehler, wenn z.B. die eingegebene Matrikelnummer keine Nummer ist. „queryData“ nimmt eine Matrikelnummer entgegen und liefert den darunter in students gefundenen Datensatz als formatierten String zurück, oder eine entsprechende Meldung, wenn unter der Nummer keine Daten gefunden wurden. 8.1.1 Konzeption Finden Sie sinnvolle Namen und Datentypen der Informationen in StudentData. Setzen Sie sich mit der String-Methode „split“ auseinander, welche es ihnen leicht ermöglicht, die Eingabe des Nutzers zu verarbeiten. Skizzieren Sie die Algorithmen von „saveData“ und „queryData“. 8.1.2 Implementation Kopieren Sie den Code aus der Aufgabenstellung und implementieren Sie die Strukturen und Algorithmen Ihres Konzeptes. Bis auf die return-Anweisungen bleibt der Code unverändert und wird nur an den betreffenden Stellen erweitert. Hinweis: „\n“ bewirkt einen Zeilenumbruch in einem Alert- oder Prompt-Popup. Umlaute in Popups bleiben ein Problem und sollten hier keine Rolle spielen.

module StudentData {
    interface StudentData {
        // hier ist noch die richtige Datenstruktur zu vermerken
    }
    interface StudentDataArray {
        [matrikel: number]: StudentData;
    }

    var students: StudentDataArray = {};
    var stop: boolean = false;

    while (!stop) {
        var action: string = prompt("Datensatz anlegen (n), abfragen(a) oder Programm beenden (s)\nn,a oder s eingeben");

        switch (action) {
            case "n":
            case "N":
                var input: string = prompt("Eingabe (jeweils mit Komma getrennt) von\nMatrikelnummer, Name, Vorname, Alter, Geschlecht (0 oder 1) und Kommentar");
                alert(saveData(input));
                break;
            case "a":
            case "A":
                var matrikel: number = parseInt(prompt("Eingabe Matrikelnummer"));
                alert(queryData(matrikel));
                break;
            case "s":
            case "S":
                stop = true;
        }
    }

    function saveData(_input: string): string {
        return "Hier fehlt noch der richtige Code...";
    }
    function queryData(_matrikel: number): string {
        return "Hier fehlt noch der richtige Code...";
    }
}