added admin menu; number of coins; number of blank tickets; some other

small improvements
This commit is contained in:
Joel
2021-01-10 17:06:35 +01:00
parent 1b7605afb8
commit 1bf1606f2e
+179 -12
View File
@@ -7,6 +7,12 @@ import java.util.Scanner;
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 (){
//===================================================================
// Array für die Bezeichnungen
@@ -38,7 +44,8 @@ class Fahrkartenautomat
int i=0;
for (; i<bezeichnungen.length; i++)
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: ");
try {
auswahlTicket = tastatur.nextByte();
@@ -54,6 +61,11 @@ class Fahrkartenautomat
if (auswahlTicket == i+1) {
break;
}
else if (auswahlTicket == i+2) {
zuZahlenderBetrag = 0.0;
einzelBetrag = 0.0;
continue;
}
else if (auswahlTicket == 99)
{
admin();
@@ -61,7 +73,7 @@ class Fahrkartenautomat
}
else {System.out.println(" >>falsche Eingabe<<"); warte(1000); continue;}
}
zuZahlenderBetrag = anzahlErfassen(einzelBetrag);
zuZahlenderBetrag += anzahlErfassen(einzelBetrag);
}
return zuZahlenderBetrag;
}
@@ -86,6 +98,7 @@ class Fahrkartenautomat
}
break;
}
ticketRohlinge-=anzahlTickets;
return anzahlTickets * einzelBetrag;
}
@@ -151,37 +164,46 @@ class Fahrkartenautomat
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"));
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"));
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"));
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"));
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"));
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"));
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"+
"vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt.\n\n");
warte(2000);
warte(4000);
}
public static void admin() {
Scanner tastatur = new Scanner(System.in);
byte auswahl;
boolean imGange = true;
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)
{
double zuZahlenderBetrag;
double rueckgabebetrag;
while (true) {
while (ticketRohlinge > 0) {
zuZahlenderBetrag = auswahlErfassen();
rueckgabebetrag = fahrkartenBezahlen(zuZahlenderBetrag);
fahrkartenAusgeben();
rueckgeldAusgeben(rueckgabebetrag);
fahrkartenAusgeben();
verabschiedungAnzeigen();
}
errorAnzeigen(1);
}
}
class Muenze {