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
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user