FH Darmstadt 
FB Informatik 
Prof.Dr. H.P.Weber
Programmieren II 
Praktikum
3

Ziel: Sie sollen Dateien ein- und auslesen und die enthaltenen Daten weiter verarbeiten können. 


1    Einlesen einer Binärdatei und Weiterverarbeitung ihrer Daten

Der Spielleiter der Tischtennis-Bezirksklasse möchte den aktuellen Tabellenstand des Spielbetriebs darstellen lassen. Eine Datei mit dem aktuellen Stand aller Mannschaften steht hierfür zur Verfügung; allerdings noch nicht in Form einer sortierten Tabelle. Die Mannschaftsdaten liegen als Binärdatei vor. Die nebenstehende Abbildung zeigt die verwendete Datenstruktur. Der in der Datei vorhandene C-String für 'teamName' ist in den einzelnen Datensätzen unterschiedlich lang und enthält jeweils als letztes Zeichen eine binäre Null.

Als Hexadezimal-Darstellung sieht das dann beispielsweise so aus - zu sehen ist zu Beginn der Datei der TSV Auerbach (teamName) mit 18 Spielen (matchesPlayed), 64:86 Sätzen (gamesWon : gamesLost) und 14:22 Punkten (pointsWon : pointsLost).
 

Attribut Datentyp
teamName std::string
matchesPlayed int
gamesWon int
gamesLost int
pointsWon int
pointsLost int

Technische Hinweise:  

Entwerfen Sie ein Anwendungsprogramm, das

  • die Daten dieser Datei in eine Tabelle einliest, sie am Bildschirm ausgibt, innerhalb der Tabelle sortiert und danach nochmals am Bildschirm ausgibt und
  • die sortierte Tabelle in einer Textdatei speichert.
Sehen Sie folgende Klassen vor:
Team   hat die oben dargestellte Attributstruktur, die zur binären Eingabedatei passt,
Table   enthält einen vector<Team> (mit allen Mannschaften) als Attribut.
Zum Sortieren der Mannschaften innerhalb der Tabelle können Sie einen beliebigen Sortieralgorithmus verwenden. Die Reihenfolge der Mannschaften in der sortierten Tabelle wird bestimmt durch
  1. die Anzahl der gewonnenen Punkte (pointsWon)
  2. bei Gleichheit: Anzahl der verlorenen Punkte (pointsLost)
  3. bei Gleichheit: Differenz der Satzresultate (gamesWon - gamesLost)
  4. bei Gleichheit: ursprüngliche Reihenfolge



2    Bestandsliste (fakultativ)

Für eine Eisenwarenhandlung soll eine Bestandsliste geführt werden, die Auskunft über die vorhandenen Werkzeuge (toolName) einschließlich Stückzahl im Lager (inStock) und Einzelpreis (unitPrice) gibt. Schreiben Sie ein Programm, das menügesteuert
  • die Binärdatei (Random Access File) "tools.dta" mit 100 leeren Records initialisiert,
  • die Eingabe der Daten für jedes Werkzeug erlaubt,
  • alle Werkzeuge mit ihren Daten auflistet,
  • das Löschen eines nicht mehr benötigten Records ermöglicht
  • und die Aktualisierung jeder Information in der Datei erlaubt.

Die partNumber jedes Werkzeugs soll auch die Record-Nummer sein.
Benutzen Sie diese Datei zum Testen Ihres Programms.

Attribut Datentyp
partNumber int
toolName char[30]
inStock int
unitPrice double