Lade Inhalt...

Entwicklung eines Informationssystems für Fahrplanauskünfte

Hausarbeit 2011 21 Seiten

Ingenieurwissenschaften - Bauingenieurwesen

Leseprobe

Inhaltsverzeichnis

1. Analyse der Aufgabenstellung
1.1 Allgemeine Beschreibung der Aufgabenstellung
1.2 Erstellen einer Datenbank
1.3 Erstellung einer grafischen Benutzeroberfläche - GUI
1.3.1 Model-View-Control-Konzept (MVC - Konzept)

2 Programmentwurf
2.1 ER - Modell
2.2 Relationenmodell
2.3 UML – Diagramm
2.4 Dokumentation der Klassenstruktur
2.4.1 Verbindungsaufbau
2.4.2 Model
2.4.3 View
2.4.4 Control
2.5 Problemstellung und Lösungsansätze

3 Validierung

4 Benutzerhandbuch

5 Anhang

6 Literatur

7 Quellen

1. Analyse der Aufgabenstellung

1.1 Allgemeine Beschreibung der Aufgabenstellung

Die Aufgabe besteht darin, dass ein Datenbanksystem für Fahrplanauskünfte erstellt wird. Dies besteht zum einen aus einer Abfahrtstafel, die dem Benutzer ermöglicht zu einer bestimmten ausgewählten Haltestelle die dazugehörigen anfahrenden Verkehrslinien ausgegeben zu bekommen.

Zum anderen kann ein Fahrplanbuch verwendet werden, das durch Auswählen bestimmter Verkehrslinien die angefahrenen Haltestellen mit den jeweiligen Abfahrtszeiten darstellt.

Zum dritten soll der Nutzer die Möglichkeit haben eine Start- und Zielhaltestelle, sowie die gewünschte Abfahrtszeit anzugeben und mittels einer Fahrauskunft die jeweiligen Verkehrsmittel mit den dazugehörenden Verkehrslinien, sowie der nächstmöglichen Abfahrtszeit visualisiert bekommen.

1.2 Erstellen einer Datenbank

Eine Datenbank für unser konzeptioniertes Datenbankschema soll erstellt werden. Die Datensätze dieser Datenbank werden schließlich dafür verwendet, um dem Nutzer die gewünschten Informationen zu liefern.

1.3 Erstellung einer grafischen Benutzeroberfläche - GUI

Eine grafische Oberfläche soll entworfen und implementiert werden, die in Form eines Windows – Fensters (sogen. JFrame) dargestellt werden soll.

Durch integrierte Buttons oder Menüs im Fenster sollen bestimmte Aktionen, wie zum Beispiel die Auswahl verschiedener Haltestellen oder der gewünschten Abfahrtszeit, ermöglicht werden. Sobald der Benutzer eine Schaltfläche betätigt, soll dies von der grafischen Oberfläche erfasst werden und eine angemessene Reaktion erfolgen.

1.3.1 Model-View-Control-Konzept (MVC - Konzept)

Bei der Entwicklung des Informationssystems, die in der Programmiersprache Java vorgenommen wird, soll das MVC – Konzept berücksichtigt werden.

Das MVC – Konzept bewirkt durch die Dreiteilung (Model, View, Control) eine Trennung aller Daten von der visuellen Repräsentation. Dies ist besonders vorteilhaft, da sich alle drei Teile unterschiedlich entwickeln und einsetzen lassen. Beispielsweise kann die Visualisierung (View) verändert bzw. weiterentwickelt werden, während das Modell (Model) beibehalten wird. Somit sind unterschiedliche Visualisierungen der Daten möglich.

- (Model):

Das Modell ist zuständig für die Repräsentation der Operationen einer Anwendung, dabei ist es sowohl vom View, als auch vom Controller unabhängig.

Es bietet Operationen zum Zugriff auf Daten, die die Views benötigen, um diese abzufragen bzw. darzustellen. Auch die vom Controller verwendeten Operationen zur Umsetzung von Ereignissen stellt das Modell bereit.

- (View):

Die Präsentation ist für die Darstellung der benötigten Daten aus dem Modell und die Aufnahme von Benutzeraktionen zuständig (z.B. werden Benutzereingaben erzeugt oder es erfolgt eine ersichtliche Reaktion auf das Betätigen eines Buttons). Ein View kennt sowohl seinen Controller als auch sein Modell und ist von beiden abhängig.

Wie bereits im „Modell“ beschrieben (siehe oben) benötigt ein View die Informationen der darzustellenden Daten, die es aus dem Modell erhält.

Aber auch der Controller beeinflusst die Änderung des Views, beispielsweise bei einem Loginformular könnte dieser entscheiden, je nachdem ob man eingeloggt ist, welche visuelle Ausgabe in dem Fenster erscheinen soll.

- (Controller):

Controller sind für die Steuerung der Anwendung durch den Benutzer zuständig. Sie erfassen alle Aktionen, ordnen Operationen bestimmte Reaktionen zu und leiten diese zur Visualisierung an das View weiter.

Folglich erzeugen Controller die Views.

Die Einheit aus View und Controller bildet die Benutzeroberfläche.

2 Programmentwurf

2.1 ER - Modell

Abbildung in dieser Leseprobe nicht enthalten

2.2 Relationenmodell

siehe Anhang

2.3 UML – Diagramm

Abbildung in dieser Leseprobe nicht enthalten

2.4 Dokumentation der Klassenstruktur

Nachfolgend werden nur die zur Programmierung notwendigen Klassen dokumentiert.

2.4.1 Verbindungsaufbau

Die Klasse JDBCConnect liefert die Verbindung zu einer SQL- Datenbank, auf der sich die benötigten Datensätze befinden.

In der Methode getConnection() wird die Verbindung aufgebaut. Bei auftretenden Fehlern während des Verbindens sollen ClassNotFound – bzw. SQL-Exceptions ausgegeben werden.

2.4.2 Model

Die Model - Klassen enthalten alle darzustellenden Daten. Hier bestehen die Model - Klassen aus „ Verkehrslinientyp “ und „haelt_an“.

Die Klasse „ Verkehrslinientyp “ beinhaltet die Eigenschaften einer Verkehrslinie. Attribute stellen die Eigenschaften einer Verkehrslinie dar, die in diesem Fall der Linienname sowie der Linientyp ist. Zwar wäre eine eindeutige Beschreibung durch eine ID gewährleistet, allerdings hatten wir Schwierigkeiten diese letztlich zu integrieren. Erläuterungen zu den aufgetretenen Schwierigkeiten folgen in

Der Konstruktor sorgt da dafür, dass alle Objekte einer Klasse initialisiert werden. Hier enthält der Konstruktor einen Liniennamen mit dem Rückgabewert eines „String“ und einen Linientyp, der den Rückgabewert „integer“ enthält.

Durch die Methode „ toString() “ können Attribute der Klasse „ Verkehrslinientyp “ ausgegeben werden. Soll heißen: wenn z.B. in der Klasse „ InputFrame“ auf die Modelklasse „ Verkehrslinientyp “ zugegriffen wird, um eine JComboBox mit Inhalt zu füllen, beinhaltet die Combobox nur die Attribute, die in der „ toString() “ - Methode stehen (in diesem Fall Liniennamen).

Die Klasse „ haelt_an “ wird durch folgende Attribute beschrieben. Integer ID_haelt_an: jede Linie enthält für jede angefahrene Haltestelle zu einer bestimmten Zeit eine andere ID

Verkehrslinientyp Linienname: Attribut aus der Klasse „ Verkehrslinientyp

String Name_Haltestelle: alle Haltestellen, die von den Verkehrslinien befahren werden

Time Zeit: Uhrzeit, wann die Haltestellen befahren werden

Integer Umlauf: die Strecke einer Verkehrslinie von ihrer Start- zur Endhaltestelle, z.B. fährt die Linie 4 Richtung Garbsen einmal vom Start- (Roderbruchmarkt) bis zum Endpunkt (Auf der Horst), dies ist Umlauf 1. Anschließend fährt die Linie 4 Richtung Roderbruch dieselbe Strecke wieder zurück, die wäre der zweite Umlauf, usw.

Im Konstruktor der Klasse „ haelt_an “ werden die genannten Attribute initialisiert.

Die Methode „ toString() “ ist für die Ausgabe der ausgewählten Attribute der Klasse zuständig (wie in der Klasse „ Verkehrslinientyp “ beschrieben). In diesem Fall werden die Namen der Haltestellen ausgegeben.

2.4.3 View

Die View - Klassen bzw. Interfaces sind für die Darstellung der Daten aus dem Modell sowie für Reaktionen auf Benutzeraktionen zuständig, die sie an die Control - Komponente weiterleiten. Sie stellen somit die Verbindung zwischen dem Model und dem Controller dar.

Die View Komponente besteht hier aus dem Interface „ Querys “. Allgemein dient dieses dazu, mittels SQL - Anweisungen, auf Tupel bestimmter Relationen in der Datenbank zuzugreifen.

Auf die, im Interface „ Querys “ enthaltenen, Methoden wird in der Klasse „ InputFrame “, in Kapitel 2.2.4 Control erläutert, zugegriffen, um nach der Auswahl eines bestimmten Parameters in der JComboBox eine Ausgabe der Datensätze zu erhalten.

Die Methode „ getQuery(String Haltestelle) “ beinhaltet einen SQL - Befehl, der aussagt, dass zu einer beliebig ausgewählten Haltestelle die anfahrenden Verkehrslinien ausgegeben werden. „ getQuery(String Haltestelle) “ dient der Ausgabe im ersten Tab (Abfahrtstafel).

Die darauffolgende Methode „ getQuery1(String Linienname) “ enthält ebenso einen SQL-Befehl, der jedoch besagt, dass für eine ausgewählte Linie sowohl alle Haltestellen ausgegeben werden, die von ihr angefahren wird, als auch die dazugehörigen Abfahrtszeiten. Dieser Befehl ist für die Ausgabe im zweiten Tab (Fahrplanbuch) zuständig.

Durch die dritte Methode „ getQuery2(String Start, String Ziel, String Zeit) “ erhält man, abhängig von der gewünschten Zeit sowie Start- und Ziel(-Haltestelle), die Linien, die zwischen diesen Haltestellen verkehren, die Ankunfts- und Abfahrtszeiten sowie die Dauer der gesamten Fahrt. Dieser Methode ist für die Ausgabe im dritten Tab (Fahrauskunft) zuständig.

Zusätzlich zum Interface „ Querys “ würde die Klasse „ InputFrame “ ebenso als View - Komponente gelten, da diese Methoden enthält, die der Darstellung der grafischen Oberfläche dienen (z.B. addComponents()).

Allerdings beinhaltet das „ InputFrame “ ebenfalls Methoden, die der Control - Komponente zugeordnet werden kann (z.B. actionPerformed(ActionEvent e)).

Diese Tatsachen haben wir leider erst kurz vor Abgabe bemerkt und haben uns letztendlich dafür entschieden die Klasse „ InputFrame “ als Control - Klasse zu definieren.

2.4.4 Control

Die Control - Klassen verwalten die Anfragen des Benutzers. Hier stellt die Klasse „ InputFrame “ eine Control - Komponente dar.

Das „InputFrame“ ist abgeleitet von der Superklasse „ JFrame“ und erbt somit die Methode „ setVisible(boolean b)“ ->setVisible(true)“. Beim Starten des Programms erscheint aufgrund dieser Methode ein Windows-Fenster, das sich mit der Maus größer bzw. kleiner ziehen oder schließen lässt.

Abbildung in dieser Leseprobe nicht enthalten

Außerdem besitzt die Klasse „ InputFrame “ die Schnittstelle „ ActionListener “, die die Methode „ actionPerformed() “ übergibt (Erläuterung hierzu später).

In der Klasse „ InputFrame “ befinden sich (wie in Kapitel 2.3.3 View erwähnt) Teile der View – Komponente. Diese sollen hier erläutert werden.

Die Erstellung der grafischen Oberfläche erfolgt durch ein Fenster (JFrame), das drei Karteireiter (JTabbedPanes) enthält. Jeder dieser Reiter ermöglicht dem Nutzer mittels einer Schaltfläche (JComboBox) Liniennamen bzw. Haltestellen auszuwählen. Durch Betätigen des „Anfordern“ – Knopfes (JButton) erhält der Nutzer die gewünschten Informationen in einer Tabelle (JTable).

Abbildung in dieser Leseprobe nicht enthalten

Im Konstruktor der Klasse werden zum einen die Combo – Boxen mit Inhalt aus den Relationen der Datenbank gefüllt und zum anderen erfolgt hier die Initialisierung des JSpinners. Ein JSpinner ermöglicht dem Nutzer eine gewünschte Zeit einzustellen. In der Methode „ addComponents() “ werden dem JFrame zunächst die drei Reiter hinzugefügt. Dem ersten und zweiten Reiter werden eine JComboCox, JTable sowie ein JButton hinzugefügt. In den dritten Reiter werden zusätzlich eine JComboBox und ein JSpinner eingefügt. Eine Control – Komponente stellt die Methode „ actionPerformed(ActionEvent e)“ dar. Sobald ein Programmnutzer eine Auswahl in der ComboBox trifft und anschließend den Anfordern - Button betätigt bedeutet dies in der Java – Sprache, dass ein ActionEvent erzeugt wird. Mittels der „ actionPerformed(ActionEvent e)“ – Methode findet die entsprechende Reaktion statt. Wenn der Nutzer beispielsweise eine Haltestelle in der JComboBox auswählt und diese anfordert, wird dies von der View – Komponente erfasst und an das Controll weitergeleitet. Die „ actionPerformed(ActionEvent e)“ – Methode reagiert darauf, indem diese eine Tabelle der angefahrenen Verkehrslinien ausgibt. Die beinhaltenden Informationen erhält die Methode aus den getQuery () -Methoden der View – Komponente.

2.5 Problemstellung und Lösungsansätze

Beim Erstellen des ER – Modells trat ein Problem beim Setzen des Primärschlüssels in der Entität „ Verkehrslinientyp “ auf. Sicherlich wäre als Primärschlüssel eine ID eindeutiger, als der Linienname, jedoch würde die ID der Relation „ haelt_an “ übergeben werden. Es erschien uns einfacher die Liniennamen an die Relation „haelt_an“ übergeben zu lassen, damit man in den SQL – Anweisungen direkt die Attribute von „ haelt_an “ ansprechen kann (ohne INNER JOIN o.ä.).

Erst beim Programmieren bzw. bei näherer Betrachtung der JComboBoxen, in denen die Haltestellen enthalten sind, ist uns aufgefallen, dass die Haltestellennamen mehrmals in den ComboBoxen erscheinen. Es kam die Idee auf in einem SQL – Befehl mit DISTINCT zu arbeiten, um Wiederholungen zu vermeiden, jedoch scheiterte es an der Umsetzung.

3 Validierung

Anhand eines Beispiels wird in diesem Kapitel die Funktionalität des Programms präsentiert (Bsp. wird an der Fahrauskunft vorgenommen).

[...]

Details

Seiten
21
Jahr
2011
ISBN (eBook)
9783668704701
ISBN (Buch)
9783668704718
Dateigröße
1.7 MB
Sprache
Deutsch
Katalognummer
v425604
Institution / Hochschule
Gottfried Wilhelm Leibniz Universität Hannover
Note
1,7
Schlagworte
Erstellen von Datenbanken Erstellen einer grafischen Benutzeroberfläche GUI Model View Control Konzept (MVC) ER_Modell UML Diagramm Relationenmodell

Autor

Teilen

Zurück

Titel: Entwicklung eines Informationssystems für Fahrplanauskünfte