Buchungssystem für Busse

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
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
 
ich hatte hier schon mal so einen Beitrag, aber ich krieg darauf keine Antworten mehr, weil er vermutlich zu lang geworden ist.
Wir hatten hier schon Threads mit 500 Kommentaren. Dagegen sind die bislang 45 Kommentare Deines Threads https://www.java-forum.org/thema/modellieren-eines-buchungssystems-fuer-busfahrkarten.186924/page-3#post-1207414 noch gar nichts.

Bleib einfach bei dem alten Thread. Es kann schon mal dauern, bis eine Antwort kommt, schließlich hat nicht jeder ständig Zeit und Lust.
 
Sitze wirklich schon Tage dran und meine Abageb ist am Mittwoch
Das ist aber ganz allein Dein Problem! Bis jetzt habe ich noch keine erwähnenswerte Versuche deiner seits gesehen, dem Problem Herr zu werden. Wenn du darauf wartest, dass einer kommt und dir die Aufgabe schreibt, dann schreib es doch auch so aus, für etwas Geld wird sich sicher irgendjemand melden. Dafür, dass du ein Student bist, bleibt der Ehrgeiz weit hinter den Erwartungen zurück..
 
Das ist aber ganz allein Dein Problem! Bis jetzt habe ich noch keine erwähnenswerte Versuche deiner seits gesehen, dem Problem Herr zu werden. Wenn du darauf wartest, dass einer kommt und dir die Aufgabe schreibt, dann schreib es doch auch so aus, für etwas Geld wird sich sicher irgendjemand melden. Dafür, dass du ein Student bist, bleibt der Ehrgeiz weit hinter den Erwartungen zurück..
Das versteh ich jetzt net. Ich sitze den ganzen gestrigen und heutigen Tag daran und versuche es zu lösen, aber klappt halt net. Und ich poste bewusst so wenig Code wie möglich, da wir an unserer Uni ein Abgabesystem haben, dass die Abgaben auf Plagiat prüft. Es kann ja sein, dass einer meiner Mitstudenten mein Post hier findet und meinen Code 1:1 abschreibt und dann hab ich ein Problem. Ich bin wirklich am verzweifeln
 
Ich sitze den ganzen gestrigen und heutigen Tag daran und versuche es zu lösen, aber klappt halt net
Du ich kenne es nur zu gut aus meinem Umfeld. Alles kurz vor knapp, alles irgendwie, 4,4 gewinnt. Da war ich noch nie ein Freund von, da steige ich aus. Letztendlich sind all die Probleme, vor den du stehst, durch etwas Fachwissen ohne Bedrängnis zu lösen. Schön, dass du als Student dein Fach so ernst nimmst. Viel Erfolg
 
Du ich kenne es nur zu gut aus meinem Umfeld. Alles kurz vor knapp, alles irgendwie, 4,4 gewinnt. Da war ich noch nie ein Freund von, da steige ich aus. Letztendlich sind all die Probleme, vor den du stehst, durch etwas Fachwissen ohne Bedrängnis zu lösen. Schön, dass du als Student dein Fach so ernst nimmst. Viel Erfolg
Ich weiß nicht wieso du so genervt reagierst. Ich hab doch alles von der Aufgabe außer diese 2 Befehle, weil ich nicht verstehe, wie ich meine Listen sinnvoll koppeln kann. Sobald ich in einer Methode über eine Liste itteriere und dann die 2. Arrayliste brauche, kommt es zu ArrayoutofBounds exceptions
 
Ich weiß nicht wieso du so genervt reagierst.
Nun kann ich nicht für @Javinner sprechen, aber ich vermute mal, dass ihn die Herangehensweise stört: statt stundenlang irgendwas rumzuprobieren, hättest Du die Zeit besser in das Lernen von Grundlagen verwendet.

Sobald ich in einer Methode über eine Liste itteriere und dann die 2. Arrayliste brauche, kommt es zu ArrayoutofBounds exceptions
Dann stimmt vermutlich etwas mit den Indizes nicht.
 
Also ich möchte nicht für alle sprechen und auch den Flow hier nicht stören. No hating. Aber wenn ich 2 Seiten "Aufgabenstellung" sehe, les ich gar nicht weiter. Ich denke, du würdest mehr Hilfe erhalten, wenn du dein Problem auf einen kleinen Teilaspekt einer Methode herunterbrichst und diesen Code beschreibst und sagst, was du für eine Fehlermeldung bekommst oder welches Ergebnis du gern hättest vs. was du aktuell kriegst. Sowas kann man analysieren, Code kann man sich ansehen. Aber die wenigsten haben wahrscheinlich Lust, eine komplette Seite Aufgabenstellung zu lesen. Weils dann ja nicht "helfen" ist, sondern für dich programmieren. Is halt selten wer scharf drauf, die komplette Aufgabe runterzuprogrammieren. Ich schreib das, weil ich echt denke, wenn du es schaffst, jemand anderem dein "Problem" zu erklären, auf möglichst einfache und kurze Art und Weise, dann hilft das sogar dir selbst. Oft passiert es mir in der Arbeit, wenn ich nicht weiterkomme und jemand anderem von oben bis unten kurz den Ablauf und dann das Problem erläutere, komm ich schon selbst auf die Lösung. Oder du findest nen einfacheren Ansatz, etwas zu googeln. Hoffe, dir hilft das irgendwie...

Edit: Und wenn ich schon sowas lese: "Ein Omnibus, kurz Bus, ist ein großes Verkehrsmittel, welches unter anderem auch im öffentlichen Personennahverkehr der Beförderung zahlreicher Personen dient", frage ich mich, warum das überhaupt gepostet wird. Das ist so irrelevant für dich. Filtere so ne Info gleich weg. Geht halt um Busse. Fertig. Also erstmal Aufgabenstellung eindampfen auf das für dich wesentliche!
 
Aber die wenigsten haben wahrscheinlich Lust, eine komplette Seite Aufgabenstellung zu lesen.
Ich fand es persönlich gut hier die komplette Aufgabenstellung zu haben. Der Einleitungstext ist nämlich mehr als irritierend. Alleine vom Aufgabentext würde ich mir auch Objekte "Bus" und "Busbahnhof" modellieren. Die Teilaufgaben suggerieren aber, dass diese nur virtuell durch ihre Identifier abgebildet werden (was auch Sinn macht, denn sie haben ja keine weiteren Eigenschaften wie Anzahl Sitzplätze oder Geokoordinaten).
Für alle anderen, die das nicht lesen wollen, hat xlmJugo zur die Eingrenzung der Aufgabe ja bold-Format verwendet.
 
Also ich möchte nicht für alle sprechen und auch den Flow hier nicht stören. No hating. Aber wenn ich 2 Seiten "Aufgabenstellung" sehe, les ich gar nicht weiter. Ich denke, du würdest mehr Hilfe erhalten, wenn du dein Problem auf einen kleinen Teilaspekt einer Methode herunterbrichst und diesen Code beschreibst und sagst, was du für eine Fehlermeldung bekommst oder welches Ergebnis du gern hättest vs. was du aktuell kriegst. Sowas kann man analysieren, Code kann man sich ansehen. Aber die wenigsten haben wahrscheinlich Lust, eine komplette Seite Aufgabenstellung zu lesen. Weils dann ja nicht "helfen" ist, sondern für dich programmieren. Is halt selten wer scharf drauf, die komplette Aufgabe runterzuprogrammieren. Ich schreib das, weil ich echt denke, wenn du es schaffst, jemand anderem dein "Problem" zu erklären, auf möglichst einfache und kurze Art und Weise, dann hilft das sogar dir selbst. Oft passiert es mir in der Arbeit, wenn ich nicht weiterkomme und jemand anderem von oben bis unten kurz den Ablauf und dann das Problem erläutere, komm ich schon selbst auf die Lösung. Oder du findest nen einfacheren Ansatz, etwas zu googeln. Hoffe, dir hilft das irgendwie...

Edit: Und wenn ich schon sowas lese: "Ein Omnibus, kurz Bus, ist ein großes Verkehrsmittel, welches unter anderem auch im öffentlichen Personennahverkehr der Beförderung zahlreicher Personen dient", frage ich mich, warum das überhaupt gepostet wird. Das ist so irrelevant für dich. Filtere so ne Info gleich weg. Geht halt um Busse. Fertig. Also erstmal Aufgabenstellung eindampfen auf das für dich wesentliche!
Es tut mir leid, ich habe zum Ersten mal etwas gepostet. Ich dachte mir nichts Böses bei der Aufgabenstellung. Dachte eben, dass es einfacher fürs Verständnis ist, aber das wesentliche habe ich doch fett markiert. Mir gings nur um das Fettmarkierte. Alles andere war nur backgroundinfos, damit ich nicht erstmal die ganze Aufgabe erklären und wiedergeben muss, aber meine Herangehensweise war falsch und es tut mir leid.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben