Hallo,
ich hatte hier schon mal so einen Beitrag, aber ich krieg darauf keine Antworten mehr, weil er vermutlich zu lang geworden ist. Es geht um die Implementierung eines Buchungssystems für Busse. Ich poste nochmal die ganze Aufgabe, aber nur das fett markierte ist wichtig. Daran sitz ich seit Tagen und es klappt einfach net. Alles andere habe ich. Kann mir wer bei der Logik dahinter helfen ? ich hab bisher eine buslinie klasse und passende Arraylist dafür. Genauso habe ich eine Costumer und Booking Klasse mit jeweiligen Listen, aber ist das überhaupt sinnvoll für die Modellierung oder erschwert es es nur alles? Der add und listroute Befehl (siehe unten) für die Buslinien war einfach, da es nur um eine Arraylist ging, aber der book Befehl und list-bookings will einfach nicht klappen, weil ich über 3 Arraylists hinweg itterieren muss (hatte schon 100 variationen, aber ich poste dass was ich habe als Code unten)
Die Aufgabe lautet wie folgt :
In dieser Aufgabe soll ein Buchungssystem für Busfahrkarten implementiert werden. Ein Omnibus,
kurz Bus, ist ein großes Verkehrsmittel, welches unter anderem auch im öffentlichen Personennahverkehr
der Beförderung zahlreicher Personen dient. Hierbei kann ein Omnibus über seine
eindeutige Busnummer identifiziert werden. Eine Fahrkarte ist ein Ausweis, der gegen Entrichtung
eines bestimmten Geldbetrages zur Benutzung eines öffentlichen Verkehrsmittels berechtigt. Ein
Busbahnhof ist eine größere Haltestellenanlage, die als Verknüpfungspunkt verschiedener Buslinien
dient. Hierbei kann jeder Busbahnhof über eine eindeutige Zeichenkette identifiziert werden. Eine
Buslinie ist die Verbindung zweier Busbahnhöfe, die regelmäßig durch Omnibusse bedient wird.
B.1 Platzhalter
Beachten Sie, dass bei der Beschreibung der Eingabe- und Ausgabeformate die Wörter zwischen
spitzen Klammen (< und >) für Platzhalter stehen, welche bei der konkreten Ein- und Ausgabe
durch Werte ersetzt werden. Diese eigentlichen Werte enthalten bei der Ein- und Ausgabe keine
spitzen Klammern.
<Busnummer > Eine natürliche Zahl aus dem offenen Intervall ¹0 1000º, welche bei der Ausgabe
immer mit führenden Nullen auf drei Stellen aufgeführt wird.
<Kundennummer > Eine natürliche Zahl exklusive 0, welche für den ersten Kunde bei 1 beginnt
und für jeden weiteren Kunden um 1 hochgezählt wird.
<Vorname > und <Nachname > Teile des Namens eines Kunden, welche jeweils durch eine
beliebige Zeichenkette ohne Zeilenumbruch und ohne Semikolon angegeben werden.
<Preis > Die Kosten für ein Busticket, welche durch eine positive reelle Zahl mit einem zweistelligen
Nachkommateil, getrennt durch einen Punkt, angegeben werden.
<Rechnungsnummer > Eine natürliche Zahl exklusive 0, welche für die erste Rechnung bei 1
beginnt und für jeden weitere Rechnung um 1 hochgezählt wird.
<Start > und <Ziel > Bezeichner für den Start- und Zielbusbahnhof einer Buslinie in Form
einer Zeichenkette ohne Zeilenumbruch und ohne Semikolon.
<Währung > Kann entweder EUR, USD oder JPY sein.
B.2 Befehle
Nach dem Start nimmt Ihr Programm über die Konsole mittels Terminal . readLine () Eingaben
entgegen, welche im Folgenden näher spezifiziert werden. Nach Abarbeitung einer Eingabe
wartet Ihr Programm auf weitere Eingaben, bis das Programm irgendwann durch die Eingabe der
Zeichenfolge quit beendet wird.
Achten Sie darauf, dass durch die Ausführung der folgenden Befehle die gegebene Spezifikationen
nicht verletzt werden und geben Sie in diesen Fällen immer eine aussagekräftige Fehlermeldung aus.
Wenn die Benutzereingabe nicht dem vorgegebenen Format entspricht, ist auch eine Fehlermeldung
auszugeben. Nach der Ausgabe einer Fehlermeldung soll das Programm wie erwartet fortfahren
und wieder auf die nächste Eingabe warten. Jede Fehlermeldung muss mit Error, beginnen und
darf keine Zeilenumbrüche enthalten. Den weiteren Text der Fehlermeldung dürfen Sie frei wählen,
er sollte jedoch sinnvoll sein.
B.2.1 Der add-Befehl
Dieser Befehl fügt dem Buchungssystem eine neue buchbare Buslinie hinzu.
Eingabeformat add <Busnummer >;< Start >;< Ziel >;< Preis >;<Währung >
Ausgabeformat Im Erfolgsfall wird OK ausgegeben.
B.2.2 Der remove-Befehl
Mit dem Befehl ist es möglich, Buslinien aus den Buchungssystem zu entfernen. Gestrichene
Buslinien mit einer Busnummer können jedoch zu einem späteren Zeitpunkt mittels add-Befehl
dem System wieder hinzugefügt werden.
Eingabeformat remove <Busnummer >
Ausgabeformat Im Erfolgsfall wird OK ausgegeben.
B.2.3 Der list - route-Befehl
Der parameterlose Befehl gibt die Liste aller buchbaren Buslinien auf der Konsole aus.
Eingabeformat list - route
Ausgabeformat <Busnummer >;< Start >;< Ziel >;< Preis >;<Währung >
Die buchbaren Buslinien werden zeilenweise analog des Eingabeformats des add-Befehls aufsteigend
sortiert nach der <Busnummer > ausgegeben. Groß- und Kleinschreibung des Start- und Zielbusbahnhofs
stimmen mit der zuvor mittels add-Befehl getätigten Eingabe überein. Für den Fall, dass
noch keine Buslinie hinzugefügt wurden, findet keine Ausgabe statt.
B.2.4 Der book-Befehl
Mit dem Befehl kann ein Kunde ein Busticket buchen. Jeder erfolgreichen Buchung wird eine neuen
Rechnungsnummer zugewiesen. Auch wird mit jeder erfolgreichen Buchung ein neuer Kunde mit
einer eindeutigen Kundennummer angelegt, es sei denn ein Kunde mit dem gleichen Namen hat
bereits früher eine Bestellung getätigt.
Eingabeformat book <Busnummer >;< Vorname >;< Nachname >
Ausgabeformat <Rechnungsnummer >;< Kundennummer >
Im Erfolgsfall werden die zugehörige Rechnungs- und Kundennummern angezeigt. Rechnungsnummern
für die mittels remove-Befehl gelöschten Buslinien werden nicht mit ausgegeben und auch
nicht wiederverwendet.
B.2.5 Der list-bookings-Befehl
Der parameterlose Befehl gibt eine Liste aller bisher getätigten Buchungen auf der Konsole auf. Die
mittels remove-Befehl gelöschten Buslinien werden nicht mit ausgegeben.
Eingabeformat list - bookings
Ausgabeformat <Kundennummer >,< Busnummer >,< Rechnungsnummer >
Alle Busticketbuchungen werden zeilenweise ausgegeben. Die Ausgabe erfolgt aufsteigend sortiert
nach der Kundennummer. Bei identischer Kundennummer wird absteigend nach der Rechnungsnummer
sortiert. Für den Fall, dass noch keine Buchungen vorgenommen wurden, findet keine
Ausgabe statt.
B.2.6 Der quit-Befehl
Der parameterlose Befehl ermöglicht es, das Buchungssystem vollständig zu beenden. Dabei findet
keine Konsolenausgabe statt. Beachten Sie, dass hierfür keine Methoden wie System. exit ()
oder Runtime . exit () verwendet werden dürfen.
code
ich wäre sehr dankbar, um eure Hilfe. Sitze wirklich schon Tage dran und meine Abageb ist am Mittwoch
ich hatte hier schon mal so einen Beitrag, aber ich krieg darauf keine Antworten mehr, weil er vermutlich zu lang geworden ist. Es geht um die Implementierung eines Buchungssystems für Busse. Ich poste nochmal die ganze Aufgabe, aber nur das fett markierte ist wichtig. Daran sitz ich seit Tagen und es klappt einfach net. Alles andere habe ich. Kann mir wer bei der Logik dahinter helfen ? ich hab bisher eine buslinie klasse und passende Arraylist dafür. Genauso habe ich eine Costumer und Booking Klasse mit jeweiligen Listen, aber ist das überhaupt sinnvoll für die Modellierung oder erschwert es es nur alles? Der add und listroute Befehl (siehe unten) für die Buslinien war einfach, da es nur um eine Arraylist ging, aber der book Befehl und list-bookings will einfach nicht klappen, weil ich über 3 Arraylists hinweg itterieren muss (hatte schon 100 variationen, aber ich poste dass was ich habe als Code unten)
Die Aufgabe lautet wie folgt :
In dieser Aufgabe soll ein Buchungssystem für Busfahrkarten implementiert werden. Ein Omnibus,
kurz Bus, ist ein großes Verkehrsmittel, welches unter anderem auch im öffentlichen Personennahverkehr
der Beförderung zahlreicher Personen dient. Hierbei kann ein Omnibus über seine
eindeutige Busnummer identifiziert werden. Eine Fahrkarte ist ein Ausweis, der gegen Entrichtung
eines bestimmten Geldbetrages zur Benutzung eines öffentlichen Verkehrsmittels berechtigt. Ein
Busbahnhof ist eine größere Haltestellenanlage, die als Verknüpfungspunkt verschiedener Buslinien
dient. Hierbei kann jeder Busbahnhof über eine eindeutige Zeichenkette identifiziert werden. Eine
Buslinie ist die Verbindung zweier Busbahnhöfe, die regelmäßig durch Omnibusse bedient wird.
B.1 Platzhalter
Beachten Sie, dass bei der Beschreibung der Eingabe- und Ausgabeformate die Wörter zwischen
spitzen Klammen (< und >) für Platzhalter stehen, welche bei der konkreten Ein- und Ausgabe
durch Werte ersetzt werden. Diese eigentlichen Werte enthalten bei der Ein- und Ausgabe keine
spitzen Klammern.
<Busnummer > Eine natürliche Zahl aus dem offenen Intervall ¹0 1000º, welche bei der Ausgabe
immer mit führenden Nullen auf drei Stellen aufgeführt wird.
<Kundennummer > Eine natürliche Zahl exklusive 0, welche für den ersten Kunde bei 1 beginnt
und für jeden weiteren Kunden um 1 hochgezählt wird.
<Vorname > und <Nachname > Teile des Namens eines Kunden, welche jeweils durch eine
beliebige Zeichenkette ohne Zeilenumbruch und ohne Semikolon angegeben werden.
<Preis > Die Kosten für ein Busticket, welche durch eine positive reelle Zahl mit einem zweistelligen
Nachkommateil, getrennt durch einen Punkt, angegeben werden.
<Rechnungsnummer > Eine natürliche Zahl exklusive 0, welche für die erste Rechnung bei 1
beginnt und für jeden weitere Rechnung um 1 hochgezählt wird.
<Start > und <Ziel > Bezeichner für den Start- und Zielbusbahnhof einer Buslinie in Form
einer Zeichenkette ohne Zeilenumbruch und ohne Semikolon.
<Währung > Kann entweder EUR, USD oder JPY sein.
B.2 Befehle
Nach dem Start nimmt Ihr Programm über die Konsole mittels Terminal . readLine () Eingaben
entgegen, welche im Folgenden näher spezifiziert werden. Nach Abarbeitung einer Eingabe
wartet Ihr Programm auf weitere Eingaben, bis das Programm irgendwann durch die Eingabe der
Zeichenfolge quit beendet wird.
Achten Sie darauf, dass durch die Ausführung der folgenden Befehle die gegebene Spezifikationen
nicht verletzt werden und geben Sie in diesen Fällen immer eine aussagekräftige Fehlermeldung aus.
Wenn die Benutzereingabe nicht dem vorgegebenen Format entspricht, ist auch eine Fehlermeldung
auszugeben. Nach der Ausgabe einer Fehlermeldung soll das Programm wie erwartet fortfahren
und wieder auf die nächste Eingabe warten. Jede Fehlermeldung muss mit Error, beginnen und
darf keine Zeilenumbrüche enthalten. Den weiteren Text der Fehlermeldung dürfen Sie frei wählen,
er sollte jedoch sinnvoll sein.
B.2.1 Der add-Befehl
Dieser Befehl fügt dem Buchungssystem eine neue buchbare Buslinie hinzu.
Eingabeformat add <Busnummer >;< Start >;< Ziel >;< Preis >;<Währung >
Ausgabeformat Im Erfolgsfall wird OK ausgegeben.
B.2.2 Der remove-Befehl
Mit dem Befehl ist es möglich, Buslinien aus den Buchungssystem zu entfernen. Gestrichene
Buslinien mit einer Busnummer können jedoch zu einem späteren Zeitpunkt mittels add-Befehl
dem System wieder hinzugefügt werden.
Eingabeformat remove <Busnummer >
Ausgabeformat Im Erfolgsfall wird OK ausgegeben.
B.2.3 Der list - route-Befehl
Der parameterlose Befehl gibt die Liste aller buchbaren Buslinien auf der Konsole aus.
Eingabeformat list - route
Ausgabeformat <Busnummer >;< Start >;< Ziel >;< Preis >;<Währung >
Die buchbaren Buslinien werden zeilenweise analog des Eingabeformats des add-Befehls aufsteigend
sortiert nach der <Busnummer > ausgegeben. Groß- und Kleinschreibung des Start- und Zielbusbahnhofs
stimmen mit der zuvor mittels add-Befehl getätigten Eingabe überein. Für den Fall, dass
noch keine Buslinie hinzugefügt wurden, findet keine Ausgabe statt.
B.2.4 Der book-Befehl
Mit dem Befehl kann ein Kunde ein Busticket buchen. Jeder erfolgreichen Buchung wird eine neuen
Rechnungsnummer zugewiesen. Auch wird mit jeder erfolgreichen Buchung ein neuer Kunde mit
einer eindeutigen Kundennummer angelegt, es sei denn ein Kunde mit dem gleichen Namen hat
bereits früher eine Bestellung getätigt.
Eingabeformat book <Busnummer >;< Vorname >;< Nachname >
Ausgabeformat <Rechnungsnummer >;< Kundennummer >
Im Erfolgsfall werden die zugehörige Rechnungs- und Kundennummern angezeigt. Rechnungsnummern
für die mittels remove-Befehl gelöschten Buslinien werden nicht mit ausgegeben und auch
nicht wiederverwendet.
B.2.5 Der list-bookings-Befehl
Der parameterlose Befehl gibt eine Liste aller bisher getätigten Buchungen auf der Konsole auf. Die
mittels remove-Befehl gelöschten Buslinien werden nicht mit ausgegeben.
Eingabeformat list - bookings
Ausgabeformat <Kundennummer >,< Busnummer >,< Rechnungsnummer >
Alle Busticketbuchungen werden zeilenweise ausgegeben. Die Ausgabe erfolgt aufsteigend sortiert
nach der Kundennummer. Bei identischer Kundennummer wird absteigend nach der Rechnungsnummer
sortiert. Für den Fall, dass noch keine Buchungen vorgenommen wurden, findet keine
Ausgabe statt.
B.2.6 Der quit-Befehl
Der parameterlose Befehl ermöglicht es, das Buchungssystem vollständig zu beenden. Dabei findet
keine Konsolenausgabe statt. Beachten Sie, dass hierfür keine Methoden wie System. exit ()
oder Runtime . exit () verwendet werden dürfen.
code
Code:
for (int i = 0; i < busline.size(); i++) {
if (busline.get(i).getBusNumber() == busnumber) {
Booking b = new Booking(busnumber, prename, postname);
bookings.add(b);
// String s = String.format("%s;%s", booking.getBillNumber(), costumer.getCostumerNumber());
Terminal.printLine(b);
}
}
}
public void listBookings() {
// Collections.sort(booking, new CompareByCostumerNumber());
for (Booking element : bookings) {
Terminal.printLine(element);
}
}
ich wäre sehr dankbar, um eure Hilfe. Sitze wirklich schon Tage dran und meine Abageb ist am Mittwoch