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.
Ale weiteren Befehle beziehen sich über die Dateivariable auf diese Datei.

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 

BubbleSort-Algorithmus

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)