Aufgabe bekommen die einfach nur sehr schwer ist :(



  • Hallo Leute!
    Haben in der Schule eine Aufgabe bekommen um unsere Noten zu verbessern. Allerdings verstehe ich rein garnichts darin und stehe vor einem riesen Berg,...gefühlt ist es der Mount Everest 😞 ... vielleicht könnt ihr mir ein wenig unter die Arme greifen.

    Hier die Aufgabe:

    Schreibe ein Programm, mit dem die Daten von einer (theoretisch) beliebigen Anzahl von Kunden verwaltet werden können.
    Die Elemente eines Kundendatensatzes könnten z.B. aus Nachname, Vorname, Straße, PLZ, Wohnort und Geburtsdatum bestehen, ausschließlich Daten des Typs char-Array. Namen, Straße und Ort sollten Arrays ausreichender Länge sein, für die PLZ reicht eine Größe von 6 Zeichen und für Geburtsdaten von 11 Zeichen.
    Um beliebig viele Kunden verwalten zu können und gleichzeitig keinen Speicher unnötig zu verschwenden, sollen die Arrays dynamisch und nur dann erzeugt werden, wenn tatsächlich Daten eines neuen Kunden im System eingetragen werden müssen.
    Alle bei der dynamischen Speicheranforderung der char-Arrays für einen Kunden erhaltenen char-Zeiger sollen in einem Array zusammengefasst werden (siehe unten). Dieses muss ebenfalls dynamisch erzeugt werden.
    Die Größe dieses Arrays soll jedoch um ein Element größer sein, als die Anzahl der Elemente zu einem Kundendatensatz. Dieses zusätzliche Element soll einen Zeiger auf den nächsten Kundendatensatz speichern. So entsteht ausgehend vom ersten Kunden eine Kette von einem Kundendatensatz zum nächsten. Im letzten Datensatz der Kette bleibt der Verweis auf einen Nachfolger leer, bis tatsächlich ein zusätzlicher Kundendatensatz eingetragen wird Es muss permanent ein Zeiger auf den ersten Datensatz der Kette gehalten werden, um den Zugriff auf die Datenstruktur nicht zu verlieren.
    Es empfiehlt sich eventuell zusätzlich ein Zeiger auf den jeweils aktuell letzten Datensatz der Kette, damit neue Kunden unmittelbar dahinter eingetragen werden können, ohne zuvor die ganze Kette durchlaufen zu müssen.

    Hinweis: Falls innerhalb eines Arrays verschiedene Arten von Zeigern gespeichert werden müssen, z.B. char-Pointer und Pointer auf char-Pointer, dann kann man das Array auch als Array für void-Pointer definieren. Die einzelnen Pointer im Array sind dann vor ihrer Verwendung auf den benötigten Pointer-Typ umzucasten.

    Benutzeroberfläche:

    Das Programm muss für den Benutzer eine Menüoberfläche bieten, mit der
    • er neue Kunden eintragen kann
    • er Kunden über ihren Namen suchen und ihre Daten anzeigen lassen kann
    • man vorhandene Kunden wieder löschen kann, wobei intern der zugehörige Speicher wieder freigegeben werden muss
    • das Programm beendet werden kann

    Erweiterungen:

    Sinnvoll wäre es alle Daten beim Programmende in einer Textdatei zu speichern und beim nächsten Programmstart automatisch aus der Datei wieder in den Speicher zu laden.
    Informationen über hierzu benötigte Funktionen und Mechanismen können sicherlich im Internet gefunden werden. Es gibt mehrere Möglichkeiten, eine geeignete Variante wäre z.B. die Verwendung der hier beschriebenen Funktionen:
    http://www.cplusplus.com/reference/iostream/fstream/

    Es ist eventuell auch sinnvoll, neue Kundendatensätze nicht einfach am Ende der Kette anzuhängen, sondern alle Datensätze in der Kette alphabetisch nach Namen sortiert zu speichern. Neue Datensätze müssen dann an der richtigen Position in der Kette eingefügt werden.
    Ein Vorteil der sortierten Kette ist, dass die Suche nach Kundendaten abgebrochen werden kann, wenn man bei der Suche in der Kette auf Elemente stößt, die alphabetisch bereits hinter dem gesuchten Namen liegen.
    Außerdem kann dem Benutzer eine neue Funktion angeboten werden, d.h. die sortierte Ausgabe von Kunden.

    Schonmal ein riesengroßes Danke, wenn jemand spaß daran hat zu helfen.



  • Lies dir mal bitte den Thread "Du brauchst Hilfe?" durch (Link in meiner Signatur) und überleg dann wie du eine tatsächliche Frage stellen könntest. Einfach deine Hausaufgaben posten ohne zu zeigen was du schon getan hast und wo deine Probleme dabei sind, wird nicht zum Erfolg führen. Ich machs mal dicht, wir erwarten dann deine Fragen zu konkreten Problemen bei der Umsetzung 🙂





  • Sicher das du die Aufgabe in C++ schreiben sollst und nicht in C ?
    Die Aufgabenstellung klingt sehr nach C. Denn du sollst CharArrays nehmen und eine LinkedList Programmieren. In C++ gibts für all sowas schon Hilfsklassen und die Standardlib. Das sollte wohl erstmal geklärt werden, bevor man weiterschaut.


Log in to reply