Kleines Java-Projekt; Kassenprogramm

Schwitzer

Mitglied
Hallo zusammen,

ich habe folgendes Anliegen:

Ich möchte ein kleines Projekt in Java angehen. Ich hatte bereits vor einiger Zeit mit Java und Programmieren an sich zu tun, jedoch war ich damals unmotiviert und dementsprechend ging das meiste an mir vorbei.

Ziel:

Eine Art "Kassenprogramm", quasi ein verbesserter Taschenrechner.


Es gibt Hin- und Rückfahrt. Hinfahrt wird durch die Taste 1 gewählt, Hin- und Rückfahrt durch die Taste 2.
Des weiteren gibt es 3 Personenarten (Erwachsene , Kinder, Senioren) welche durch das Drücken der Tasten 1-3 ausgewählt werden können. Die Erwachsenen liegen auf der Taste mit der 1, Kinder auf der 2, Senioren auf der 3.
Danach soll überprüft werden, ob diese Ermäßigungen erhalten, jeweils mit Taste 1 bejahen oder Taste 2 verneinen.

Die Preise sollen sich dann automatisch addieren und letztendlich der Preis ausgeben werden.
Beispiel:
Erwachsene: Hinfahrt 5€; Hin- Rückfahrt 9€
Ermäßigt: 4€ und 8€
Kinder: Hinfahrt 3,50€; Hin- Rückfahrt 7€
Ermäßigt: 2,50€ und 6€
Senioren: Hinfahrt 4€, Hin- Rückfahrt 8€
Ermäßigt: 3€ und 7€

Der Fall, dass jemand Hinfahrten und Hin- und Rückfahrten bucht ist eher unwahrscheinlich und würde ich daher erst einmal auslassen.
(Würde ansonsten ja dann ein exit verwendt werden müssen, um aus der Abfrage zu kommen, oder?)

Ist einmal das gewünschte "Packet" ausgewählt, sollte eingetippt werden können, mit welchen Betrag der Kunde zahlt, um das auszugebende Rückgeld ausrechnen lassen zu können.

Die Daten sollten jeweils gespeichert werden, um am Ende des Tages den Gesamtbetrag und die Anzahl und die Arten der verkauften Fahrten ausgeben lassen zu können. (Jeweils pro Personenart)

Der Visualisierung im einem "Fenster" bin ich noch einigermaßen gewachsen, hoffe ich zumindest. ^^

Ich wäre euch sehr dankbar, wenn ihr mir ein bisschen auf die Sprüngen helfen könntet. Ich habe das Meiste noch Dunkel in Erinnerung, wünschte jedoch ich hätte in der Schule besser aufgepasst. Leider hatten wir drei Jahre lang fast ausschließlich Theorie, dementsprechend verlor man die Lust an der Praxis.
 
Natürlich kann man Dir helfen, dazu müsstest Du allerdings konkrete Fragen stellen 🙂 "Ich möchte eine Anwendung X schreiben, kann mir jemand helfen?" ist viel zu allgemein.

Ebenso allgemein: vergiss am Anfang das (grafische) User Interface, das dient nur der Show.
 
für das Addieren der Preise eignet sich das Dekorator Pattern


in dem Link finde ich alle beipsiele komplex außer das von java mit dem Kaffee das ist gut weils schön kurz ist, damit kannst du dein addieren umsetzen oder klassisch mit plus .. aber das ist ja langweilig 😀
 
Natürlich kann man Dir helfen, dazu müsstest Du allerdings konkrete Fragen stellen 🙂 "Ich möchte eine Anwendung X schreiben, kann mir jemand helfen?" ist viel zu allgemein.

Ebenso allgemein: vergiss am Anfang das (grafische) User Interface, das dient nur der Show.
Alles klar, danke für die Rückmeldung, wird gemacht.
Ich bin mir nicht sicher, wie das Ganze am einfachsten zu realisieren wäre. Gerade mit Blick auf Abfragen und wie ich das ganze in die Tabelle lade, jedoch dass es einzeln ausgegeben wird.
Ich habe meinen Aufgaben früher in der Schule meist auf einem Harakiri-Weg gelöst, war nicht immer so effizient.
 
Alles klar, danke für die Rückmeldung, wird gemacht.
Ich bin mir nicht sicher, wie das Ganze am einfachsten zu realisieren wäre. Gerade mit Blick auf Abfragen und wie ich das ganze in die Tabelle lade, jedoch dass es einzeln ausgegeben wird.
Ich habe meinen Aufgaben früher in der Schule meist auf einem Harakiri-Weg gelöst, war nicht immer so effizient.
Von einer Tabelle -> Einzeln ist kein Problem, dafür gibt's Schleifen und Indizes. Verwende aber keine zweidimensionalen Arrays, sondern eine Liste von Instanzen einer Klasse, die eine Altersgruppe beschreibt.

Welche Informationen gibt es über einen Altersgruppe? Beschreibung, PreisEinzelfahrt,PreisHinUndZurueck. Erstelle eine Klasse, die das speichern kann. Dann brauchst du nur noch eine Liste von Instanzen dieser Klasse, um alle Informationen zu speichern.
Für die Ausgabe schreib zuerst was, das EIN Element dieser Liste ausgibt, dann wende alle Elemente dieser Liste darauf an.

Was Algorithmen angeht, empfiehlt es sich bei solchen Sachen immer zu überlegen, wie man es auf dem Blatt machen würde.
 
Gerade mit Blick auf Abfragen und wie ich das ganze in die Tabelle lade, jedoch dass es einzeln ausgegeben wird.
Auch das ist erstmal völlig uninteressant. Du musst Dir erstmal ansehen, mit welchen Objekten Du es zu tun hast. @Neumi5694 hat das schon anhand von Altersgruppen beschrieben. Ich hätte Tarif dazu gesagt, das ist aber nur eine Frage der Bezeichnung, da der Aufbau identisch ist.

Ich bleib mal bei meiner Terminologie: es gibt einen Erwachsenen-, Kinder- und Senioren-Tarif, sowohl normal als auch ermäßigt. Jeder Tarif hat also eine Bezeichnung, einen Preis für die Hinfahrt sowie einen Preis für die Hin- und Rückfahrt. Du siehst: der Aufbau ist identisch zu dem von @Neumi5694 beschriebenen.

Auf der anderen Seite soll ja eine "Rechnung" entstehen. Auf der können sich mehrere Positionen befinden und jede Position muss es ermöglichen, auch im Nachhinein festzustellen, ob ich eine Hinfahrt oder eine Hin- und Rückfahrt und in welchem Tarif ich diese gebucht habe und natürlich auch, welchen Preis ich dafür bezahlen muss(te). Evtl. möchte man auch die Anzahl hinzunehmen, das kannst Du Dir dann alles überlegen.

Damit müsste ich dann schon in der Lage sein, in Pseudocode z. B. schreiben zu können:
Java:
Tarif erwachseneNormaltarif = new Tarif("Erw. (Normaltarif)", 5, 9);
Rechnungsposition pos1 = new Rechnungsposition(HINFAHRT, erwachseneNormaltarif);
Rechnungsposition pos2 = new Rechnungsposition(HIN_RUECK, erwachseneNormaltarif);
Rechnung rechnung = new Rechnung(123, LocalDateTime.now(), List.of(pos1, pos2));
Mit etwas zusätzlichem Auwand (entsprechenden Methoden) ließe sich dann z. B. schon eine Ausgabe der Art
Code:
Rechnung #123 vom 04.01.2021, 14:56 Uhr

Pos Bezeichnung                      Preis
------------------------------------------
  1 Hinfahrt, Erw. (Normaltarif)    5,00 €
  2 Hin-/Rück, Erw. (Normaltarif)   9,00 €
                                  --------
                                   14,00 €
                                  ========
generieren.

Das Modell ist keineswegs vollständig und es gibt natürlich auch ein paar "Fallstricke" aber Du sollst Dir ja selbst Gedanken dazu machen 🙂
 
Auch das ist erstmal völlig uninteressant. Du musst Dir erstmal ansehen, mit welchen Objekten Du es zu tun hast. @Neumi5694 hat das schon anhand von Altersgruppen beschrieben. Ich hätte Tarif dazu gesagt, das ist aber nur eine Frage der Bezeichnung, da der Aufbau identisch ist.

Ich bleib mal bei meiner Terminologie: es gibt einen Erwachsenen-, Kinder- und Senioren-Tarif, sowohl normal als auch ermäßigt. Jeder Tarif hat also eine Bezeichnung, einen Preis für die Hinfahrt sowie einen Preis für die Hin- und Rückfahrt. Du siehst: der Aufbau ist identisch zu dem von @Neumi5694 beschriebenen.

Auf der anderen Seite soll ja eine "Rechnung" entstehen. Auf der können sich mehrere Positionen befinden und jede Position muss es ermöglichen, auch im Nachhinein festzustellen, ob ich eine Hinfahrt oder eine Hin- und Rückfahrt und in welchem Tarif ich diese gebucht habe und natürlich auch, welchen Preis ich dafür bezahlen muss(te). Evtl. möchte man auch die Anzahl hinzunehmen, das kannst Du Dir dann alles überlegen.

Damit müsste ich dann schon in der Lage sein, in Pseudocode z. B. schreiben zu können:
Java:
Tarif erwachseneNormaltarif = new Tarif("Erw. (Normaltarif)", 5, 9);
Rechnungsposition pos1 = new Rechnungsposition(HINFAHRT, erwachseneNormaltarif);
Rechnungsposition pos2 = new Rechnungsposition(HIN_RUECK, erwachseneNormaltarif);
Rechnung rechnung = new Rechnung(123, LocalDateTime.now(), List.of(pos1, pos2));
Mit etwas zusätzlichem Auwand (entsprechenden Methoden) ließe sich dann z. B. schon eine Ausgabe der Art
Code:
Rechnung #123 vom 04.01.2021, 14:56 Uhr

Pos Bezeichnung                      Preis
------------------------------------------
  1 Hinfahrt, Erw. (Normaltarif)    5,00 €
  2 Hin-/Rück, Erw. (Normaltarif)   9,00 €
                                  --------
                                   14,00 €
                                  ========
generieren.

Das Modell ist keineswegs vollständig und es gibt natürlich auch ein paar "Fallstricke" aber Du sollst Dir ja selbst Gedanken dazu machen 🙂
Vielen Dank vorerst an dich und @Neumi5694

Werde heute Abend bei Gelegenheit ein Klassendiagramm etc anfertigen.

Wäre es sinnvoller zur Auswahl der Personenarten einen Keylistener oder eine Abfrage zu benutzen?
 

Zurück
Oben