added admin menu; number of coins; number of blank tickets; some other
small improvements
This commit is contained in:
@@ -7,6 +7,12 @@ import java.util.Scanner;
|
|||||||
class Fahrkartenautomat
|
class Fahrkartenautomat
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static int ticketRohlinge = 5;
|
||||||
|
|
||||||
|
// Anzahl der vorrätigen 2 EUR, 1 EUR, 50 CENT, 20 CENT, 10 CENT, 5 CENT Münzen
|
||||||
|
private static final double[] wertMuenzen = {2, 1, 0.5, 0.2, 0.1, 0.05};
|
||||||
|
private static int[] anzahlMuenzen = {10, 10, 10, 10, 10, 10};
|
||||||
|
|
||||||
public static double auswahlErfassen (){
|
public static double auswahlErfassen (){
|
||||||
//===================================================================
|
//===================================================================
|
||||||
// Array für die Bezeichnungen
|
// Array für die Bezeichnungen
|
||||||
@@ -38,7 +44,8 @@ class Fahrkartenautomat
|
|||||||
int i=0;
|
int i=0;
|
||||||
for (; i<bezeichnungen.length; i++)
|
for (; i<bezeichnungen.length; i++)
|
||||||
System.out.printf(" %s [%.2f EUR] (%d)\n", bezeichnungen[i], preise[i], i+1);
|
System.out.printf(" %s [%.2f EUR] (%d)\n", bezeichnungen[i], preise[i], i+1);
|
||||||
System.out.printf(" Bezahlen (%d)\n", i+1);
|
System.out.printf(" Bezahlen [%.2f EUR] (%d)\n", zuZahlenderBetrag,i+1);
|
||||||
|
System.out.printf(" Stornieren (%d)\n", i+2);
|
||||||
System.out.print("Ihre Wahl: ");
|
System.out.print("Ihre Wahl: ");
|
||||||
try {
|
try {
|
||||||
auswahlTicket = tastatur.nextByte();
|
auswahlTicket = tastatur.nextByte();
|
||||||
@@ -54,6 +61,11 @@ class Fahrkartenautomat
|
|||||||
if (auswahlTicket == i+1) {
|
if (auswahlTicket == i+1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (auswahlTicket == i+2) {
|
||||||
|
zuZahlenderBetrag = 0.0;
|
||||||
|
einzelBetrag = 0.0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
else if (auswahlTicket == 99)
|
else if (auswahlTicket == 99)
|
||||||
{
|
{
|
||||||
admin();
|
admin();
|
||||||
@@ -61,7 +73,7 @@ class Fahrkartenautomat
|
|||||||
}
|
}
|
||||||
else {System.out.println(" >>falsche Eingabe<<"); warte(1000); continue;}
|
else {System.out.println(" >>falsche Eingabe<<"); warte(1000); continue;}
|
||||||
}
|
}
|
||||||
zuZahlenderBetrag = anzahlErfassen(einzelBetrag);
|
zuZahlenderBetrag += anzahlErfassen(einzelBetrag);
|
||||||
}
|
}
|
||||||
return zuZahlenderBetrag;
|
return zuZahlenderBetrag;
|
||||||
}
|
}
|
||||||
@@ -86,6 +98,7 @@ class Fahrkartenautomat
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
ticketRohlinge-=anzahlTickets;
|
||||||
return anzahlTickets * einzelBetrag;
|
return anzahlTickets * einzelBetrag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,37 +164,46 @@ class Fahrkartenautomat
|
|||||||
|
|
||||||
List<Muenze> rueckgabeMuenzen = new ArrayList<Muenze>();
|
List<Muenze> rueckgabeMuenzen = new ArrayList<Muenze>();
|
||||||
|
|
||||||
while(rückgabebetrag > 1.9) // 2 EURO-Münzen
|
while(rückgabebetrag > 1.9 && anzahlMuenzen[0] > 0) // 2 EURO-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[0] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(2, "EURO"));
|
rueckgabeMuenzen.add(muenzeErstellen(2, "EURO"));
|
||||||
rückgabebetrag -= 2.0;
|
rückgabebetrag -= 2.0;
|
||||||
}
|
}
|
||||||
while(rückgabebetrag > 0.9) // 1 EURO-Münzen
|
while(rückgabebetrag > 0.9 && anzahlMuenzen[1] > 0) // 1 EURO-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[1] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(1, "EURO"));
|
rueckgabeMuenzen.add(muenzeErstellen(1, "EURO"));
|
||||||
rückgabebetrag -= 1.0;
|
rückgabebetrag -= 1.0;
|
||||||
}
|
}
|
||||||
while(rückgabebetrag > 0.49) // 50 CENT-Münzen
|
while(rückgabebetrag > 0.49 && anzahlMuenzen[2] > 0) // 50 CENT-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[2] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(50, "CENT"));
|
rueckgabeMuenzen.add(muenzeErstellen(50, "CENT"));
|
||||||
rückgabebetrag -= 0.5;
|
rückgabebetrag -= 0.5;
|
||||||
}
|
}
|
||||||
while(rückgabebetrag > 0.19) // 20 CENT-Münzen
|
while(rückgabebetrag > 0.19 && anzahlMuenzen[3] > 0) // 20 CENT-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[3] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(20, "CENT"));
|
rueckgabeMuenzen.add(muenzeErstellen(20, "CENT"));
|
||||||
rückgabebetrag -= 0.2;
|
rückgabebetrag -= 0.2;
|
||||||
}
|
}
|
||||||
while(rückgabebetrag > 0.09) // 10 CENT-Münzen
|
while(rückgabebetrag > 0.09 && anzahlMuenzen[4] > 0) // 10 CENT-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[4] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(10, "CENT"));
|
rueckgabeMuenzen.add(muenzeErstellen(10, "CENT"));
|
||||||
rückgabebetrag -= 0.1;
|
rückgabebetrag -= 0.1;
|
||||||
}
|
}
|
||||||
while(rückgabebetrag > 0.049)// 5 CENT-Münzen
|
while(rückgabebetrag > 0.049 && anzahlMuenzen[5] > 0)// 5 CENT-Münzen
|
||||||
{
|
{
|
||||||
|
anzahlMuenzen[5] -= 1;
|
||||||
rueckgabeMuenzen.add(muenzeErstellen(5, "CENT"));
|
rueckgabeMuenzen.add(muenzeErstellen(5, "CENT"));
|
||||||
rückgabebetrag -= 0.05;
|
rückgabebetrag -= 0.05;
|
||||||
}
|
}
|
||||||
muenzenAusgeben(rueckgabeMuenzen);
|
if (rueckgabeMuenzen.size() > 0)
|
||||||
|
muenzenAusgeben(rueckgabeMuenzen);
|
||||||
|
else
|
||||||
|
errorAnzeigen(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,26 +253,171 @@ class Fahrkartenautomat
|
|||||||
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+
|
System.out.println("\nVergessen Sie nicht, den Fahrschein\n"+
|
||||||
"vor Fahrtantritt entwerten zu lassen!\n"+
|
"vor Fahrtantritt entwerten zu lassen!\n"+
|
||||||
"Wir wünschen Ihnen eine gute Fahrt.\n\n");
|
"Wir wünschen Ihnen eine gute Fahrt.\n\n");
|
||||||
warte(2000);
|
warte(4000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void admin() {
|
public static void admin() {
|
||||||
|
Scanner tastatur = new Scanner(System.in);
|
||||||
|
byte auswahl;
|
||||||
|
boolean imGange = true;
|
||||||
System.out.println("Administrationsmenü\n============");
|
System.out.println("Administrationsmenü\n============");
|
||||||
|
System.out.printf("verbleibende Ticketrohlinge: %d\n", ticketRohlinge);
|
||||||
|
System.out.printf("Kassenstand: %.2f EUR\n", kassenstandGes());
|
||||||
|
kassenstandM();
|
||||||
|
|
||||||
|
while (imGange) {
|
||||||
|
System.out.println("Kasse leeren (1)");
|
||||||
|
System.out.println("Kasse auffüllen (2)");
|
||||||
|
System.out.println("Ticketrohlinge auffüllen (3)");
|
||||||
|
System.out.println("Adminmenü verlassen (4)");
|
||||||
|
System.out.print("Ihre Wahl: ");
|
||||||
|
try {
|
||||||
|
auswahl = tastatur.nextByte();
|
||||||
|
}
|
||||||
|
catch(InputMismatchException e) {
|
||||||
|
auswahl = 0;
|
||||||
|
tastatur.nextLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(auswahl) {
|
||||||
|
case 1:
|
||||||
|
kasseLeeren();
|
||||||
|
imGange = false;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
kasseAuffuellen();
|
||||||
|
imGange = false;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ticketsAuffuellen();
|
||||||
|
imGange = false;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
imGange = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.println(" >>falsche Eingabe<<");
|
||||||
|
warte(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void errorAnzeigen(int error) {
|
||||||
|
switch (error) {
|
||||||
|
case 1:
|
||||||
|
System.out.println("\n\n\n\n\n\n\n\nSTÖRUNG\n"
|
||||||
|
+ "=======\n" + "Die Ticketrohlinge sind leider aufgebraucht.\nWir bitten um Entschuldigung.\nTechniker erreichbar unter 030 12345" );
|
||||||
|
System.exit(0);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
System.out.println("\n\n\n\n\n\n\n\nSTÖRUNG\n"
|
||||||
|
+ "=======\n" + "Es konnte kein passendes Wechselgeld ausgegeben werden.\nIhr eingegebenes Geld wurde zurückgegeben.\n"
|
||||||
|
+ "Ein Ticket wurde nicht ausgegeben.\nWir bitten um Entschludigung\nTechniker erreichbar unter 030 12345");
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void kassenstandM() {
|
||||||
|
for (int i = 0; i < anzahlMuenzen.length; i++) {
|
||||||
|
if (wertMuenzen[i] >= 1)
|
||||||
|
System.out.printf("%.0f EUR-Münzen: %d Stück\n", wertMuenzen[i], anzahlMuenzen[i]);
|
||||||
|
else {
|
||||||
|
int wert = (int) ((double)(wertMuenzen[i])*(double)100);
|
||||||
|
System.out.printf("%d CENT-Münzen: %d Stück\n", wert, anzahlMuenzen[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static double kassenstandGes() {
|
||||||
|
double kassenstand = 0.0;
|
||||||
|
for (int i = 0; i < anzahlMuenzen.length; i++) {
|
||||||
|
for (int j = 0; j < anzahlMuenzen[i] ; j++)
|
||||||
|
kassenstand += wertMuenzen[i];
|
||||||
|
}
|
||||||
|
return kassenstand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void kasseLeeren() {
|
||||||
|
System.out.println("Kasse wurde geleert");
|
||||||
|
for (int i = 0; i < anzahlMuenzen.length; i++) {
|
||||||
|
anzahlMuenzen[i] = 0;
|
||||||
|
}
|
||||||
|
admin();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void kasseAuffuellen() {
|
||||||
|
Scanner tastatur = new Scanner(System.in);
|
||||||
|
int hinzu = 0;
|
||||||
|
for (int i = 0; i < anzahlMuenzen.length; i++) {
|
||||||
|
if (wertMuenzen[i] >= 1)
|
||||||
|
System.out.printf("Wieviele %.0f EUR-Münzen sollen hinzugefügt werden:", wertMuenzen[i]);
|
||||||
|
else {
|
||||||
|
int wert = (int) ((double)(wertMuenzen[i])*(double)100);
|
||||||
|
System.out.printf("Wieviele %d CENT-Münzen sollen hinzugefügt werden: ", wert);
|
||||||
|
}
|
||||||
|
while(true) {
|
||||||
|
try {
|
||||||
|
hinzu = tastatur.nextInt();
|
||||||
|
}
|
||||||
|
catch(InputMismatchException e) {
|
||||||
|
hinzu = 0;
|
||||||
|
tastatur.nextLine();
|
||||||
|
}
|
||||||
|
if (hinzu > 0) {
|
||||||
|
anzahlMuenzen[i] += hinzu;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else System.out.println("ungültige Eingabe\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
admin();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void ticketsAuffuellen() {
|
||||||
|
Scanner tastatur = new Scanner(System.in);
|
||||||
|
int ticketsHinzu = 0;
|
||||||
|
while(true) {
|
||||||
|
System.out.print("Wieviele Rohlinge sollen aufgefüllt werden?: ");
|
||||||
|
try {
|
||||||
|
ticketsHinzu = tastatur.nextInt();
|
||||||
|
}
|
||||||
|
catch(InputMismatchException e) {
|
||||||
|
ticketsHinzu = 0;
|
||||||
|
tastatur.nextLine();
|
||||||
|
}
|
||||||
|
if (ticketsHinzu > 0) {
|
||||||
|
ticketRohlinge += ticketsHinzu;
|
||||||
|
admin();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else System.out.println("ungültige Eingabe\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
|
|
||||||
double zuZahlenderBetrag;
|
double zuZahlenderBetrag;
|
||||||
double rueckgabebetrag;
|
double rueckgabebetrag;
|
||||||
|
|
||||||
while (true) {
|
while (ticketRohlinge > 0) {
|
||||||
zuZahlenderBetrag = auswahlErfassen();
|
zuZahlenderBetrag = auswahlErfassen();
|
||||||
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
|
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
|
||||||
fahrkartenAusgeben();
|
|
||||||
rueckgeldAusgeben(rueckgabebetrag);
|
rueckgeldAusgeben(rueckgabebetrag);
|
||||||
|
fahrkartenAusgeben();
|
||||||
verabschiedungAnzeigen();
|
verabschiedungAnzeigen();
|
||||||
}
|
}
|
||||||
|
errorAnzeigen(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Muenze {
|
class Muenze {
|
||||||
|
|||||||
Reference in New Issue
Block a user