Projekt für Grundlagen der Programmierung
Es ist ein Beleg mit folgenden Inhaltes anzufertigen:
(1) Aufgabenstellung
(2) Programmentwurf (in einer bel. Entwurfssprache)
(3) Pascal-Quelltext (gut kommentiert)
(4) Testergebnisse (zu repräsentativen Eingabewerten)
Der Schein wird im Rahmen einer Vorführung des lauffähigen Programms erteilt.
Zu dieser Vorführung ist der Beleg vorzulegen.
Es ist für Ihren Tätigkeitsbereich eine Datei aufzubauen, auf der verschiedene Recherchen durchgeführt werden sollen.
Dazu ist eine geeignete Datenstruktur zu vereinbaren.
Die Lösung der Teilaufgaben soll in einem Pascal- Programm über ein Auswahlmenü und
zwecks besserer Strukturierung unter Verwendung von Unterprogrammen erfolgen.
Gebraucht wagen |
Aufgabenstellung
Für einen Gebrauchtwagenhändler soll ein Programm erstellt werden, mit dem der Fuhrpark verwaltet werden kann.
Bei Ankauf und Verkauf wird die Datei aktualisiert. Der Verkäufer und der potentielle Kunde erhält mit Abfragen
eine Übersicht über vorhandene Autos mit einigen wesentlichen Attributen. Nach Eingabe von Kundenwünschen
ermittelt das Programm, ob die gewünschten Autos vorrätig sind.
Menü
1 ___ Ankauf eines Autos
2 ___ Verkauf eines Autos
3 ___ Suchen eines Autos
4 ___ Laden
5 ___ Speichern
6 ___ Sortierte Liste nach Modellen
7 ___ Sortierte Liste nach Preisen
8 ___ ENDE
Komponenten der Autos (Record)
Marke, Modell, Baujahr, km-Stand, Preis, Sonderausstattung
Jedes Auto steht auf einem bestimmte Platz, jeder Platz hat eine Nummer (nr)
Bemerkungen
Auf eine nutzerfreundliche Anwendung wurde geachtet (--> procedure Rahmen)
Der Quelltext ist unter Verwendung von Unterprogrammen erstellt und ist übersichtlich strukturiert.
Es wurde eine Konstante max = 100 festgelegt, um das Programm testen zu können.
In den letzten Versionen wurde der record um die Komponente Nummer erweitert, in die beim Abspeichern
die Platznummer eingelesen wird.
Unterprogramme
Rahmen; Taste;
Ankauf........neuer Datensatz wird angelegt
Verkauf.......zum Lösche von Datensätzen
Drucken.......vorhandene Autos mit entsprechenden Kriterien können ausgedruckt werden
Speichern; Laden
Sorieren......einfacher Bubblesort
nach Marken......alphabetische Ordnung
nach Preisen.....aufsteigende Preise
Suchen; Menue
Unterproramm Laden:
Beim Einlesen wird jeder RECORD zunächst in den Hilfsrecord Platz[0] eingelesen, so dass man aus
der Komponente Platz[0].nummer die richtige Platznummer herauslesen und den RECORD richtig einordnen kann.
Unterprogram Ankauf
Es wird geprüft, ob noch Platz vorhanden ist. Ist die maximale Anzahl von 100 Autos erreicht,
können keine Autos mehr untergebracht werden, also kein Ankauf möglich. Ist die maximale Anzal noch nicht erreicht,
dann werden die Daten aufgenommen. Danach sollte abgespechert werden.
Unterprogramm Verkauf
Logischerweise ist ein Platz für ein neues Auto frei geworden, deshalb erfolgt das Löschen über die Platznummer.
Typisierte Dateien ( Unterprogramme Laden und Abspeichern)
Bei dieser Art von Dateien wird der Datentyp
der Daten(z.B. ein RECORD ) direkt in die Speicherdatei übertragen.
Die Filevariable muss dann ebenfalls mit diesem Datentyp versehen werden(Bsp.:
VAR Datei : file of auto;
dabei ist auto ein RECORD. Aus dieser Vorgehensweise ergeben sich eine Reihe von Besonderheiten
Zusammenfassung der Besonderheiten
Befehl |
Erläuterung |
Beispiel |
ASSIGN |
Ordnet einer Dateivariablen die
tatsächliche Datei zu. |
ASSIGN(Datei , 'C:\tp\auto.dat') |
RESET |
Öffnet eine typisierte Datei für Lese- und Schreiboperationen. |
RESET(Datei); |
CLOSE |
Schließt eine offene Datei. Dies sollte nie vergessen werden, da sonst Datenverluste die Folge sind. |
Close(Datei); |
Unterprogramm Suchen und Drucken
Da gebrauchte (alte) Autos nicht unbedingt einen Katalysator haben müssen, beginnt die Abfrage nach
dem Katalysator. Es gibt Kunden, dem Automarke und Modell egal ist, deshalb kann eine neutrale Eingabe mit
dem Fragezeichen erfolgen. Ansonsten müssen die Vorstellungen nach dem Preis, Baujahr und dem km-Stand
eingeben werden. Da es mehrere Autos mit den entsprechenden Wünschen gibt, werden diese auch auf dem
Bildschirm und evt. auf dem Drucker ausgegeben.
Das Suchen erfolgt über eine "Lineare Suche", die sequentielle Suche.
Die Aufgabe besteht darin, ein Element in einer Liste oder einem Array mit n Elementen zu finden.
Man geht dazu die Liste Element für Element durch, bis man es gefunden hat.
Der Suchaufwand wächst linear mit der Anzahl der Elemente in der Liste.
Bedingungen eingeben
gefunden:=false
solange Ende der Datei nicht erreicht und Datensätze nicht gefunden führe aus:
nächsten Datensatz lesen
Bedingungen gefunden, dann gefunden:=true sonst Ausgabe nichts gefunden
Datensatz gefunden, dann Datenasatz ausgeben sonst Fehlanzeige ausgeben
Unterprogramm Sortieren
Der Sortieralgorithmus Bubblesort (Blasensortierung) arbeitet nach dem
Prinzip, dass das Feld durchlaufen wird,
und dabei so getauscht wird, dass das größte bzw. kleinste Element an der richtigen Stelle steht.
Soll das kleinste Element nach unten wandern, so beginnt man am Ende des Feldes und tauscht benachbarte Elemente aus,
wenn das höhere Element kleiner als sein Vorgänger ist. Somit steht das kleinste Element nach einem Durchlauf
am Anfang des Feldes.
Diese Sortierung wird wiederholt, ohne dass dabei der erste bereits sortierte Feldteil beachtet wird.
Damit erhält man ein sortiertes Feld.
Bevor der Sortieralgorithmus beginnt, wird die Größe der Datei mit
filesize(datei) überprüft.
Erst wenn alle Datensätze überprüft sind, bricht der Algorithmus ab.
Prüfen, wie viele Datensätze
Schleife über Durchlauf = 1 .. Datensätze
Schleife über Position = 1 .. Datensätze - 1
Falls platz[Position] > platz[Position+1],
dann Vertausche platz[Position] und platz[Position+1]
Schleife-Ende
Schleife-Ende
Was kann das Programm noch nicht ?
Das Programm berücksichtigt noch keine falschen Eingaben (z. B. wenn bei km-Stand ein String eingeben wird,
bricht das Programm ab , dabei gehen die Datensätze verloren.
Quelltext: AUTO6.PAS
Textdatei Projekt.txt
Gesamt DOWNLOAD
Ergebnisse: (Shortscreen)