package controller;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import domain.Adresse;
import domain.Auto;
import domain.Demo;
import domain.Geschaeftskunde;
import domain.Kunde;
import domain.Privatkunde;
import domain.Privatkunde.Anrede;
public class Verwaltungsmenue {
private Scanner scanner = new Scanner(System.in);
private Kunde[] kunden = new Kunde[4];
private Kunde[] neueListe;
private static boolean exit = false;
private static int index = 5;
private static int autoIndex = 5;
private Privatkunde prv = new Privatkunde(index, 0, "", null, "", "", "", "");
private Geschaeftskunde ges = new Geschaeftskunde(index, 0, null, null, null);
private Auto[] fuhrpark = new Auto[10];
private int kmZahl;
private double preis;
private Auto probeAuto = new Auto(null, null, kmZahl, preis, false);
public void menue() {
erzeugteObjekte();
String[] menueItems = { " ", "(01) Privatkunde anlegen", "\n(02) Geschäftskunde anlegen", "\n(03) Auto anlegen",
"\n(04) Kunde mietet ein Auto",
"\n(05) Kunde mit evtl. gemietetem Auto anzeigen\n (Auswahl durch Kundennummer)",
"\n(06) alle unvermieteten Autos anzeigen", "\n(07) Beenden" };
System.out.println("======= Car-AG - Verwaltungsmenü =======");
for (int i = 0; i < menueItems.length; i++) {
System.out.println(menueItems[i]);
}
System.out.println("\nBitte, geben Sie die Nummer des gewaehlten Menueeintrags ein:\t");
handle();
}
public void handle() {
do {
String input = scanner.nextLine();
switch (input) {
case "01":
case "1":
caseOne();
break;
case "02":
case "2":
caseTwo();
break;
case "03":
case "3":
caseThree();
break;
case "04":
case "4":
System.out.println("4");
break;
case "05":
case "5":
System.out.println("5");
break;
case "06":
case "6":
System.out.println("6");
break;
case "07":
case "7":
System.out.println("Beendet.");
exit = true;
break;
default:
System.err.println("Ungueltige Eingabe. Bitte ueberpruefen Sie Ihre Eingabe");
exit = false;
break;
}
} while (exit == false);
}
public void caseOne() {
// prv.setKundennummer(kdnNummer());
prv.setAnredeC(kdnAnrede());
System.out.println("Vorname des Privatkunden:");
prv.setVorname(kdnName());
System.out.println("Nachname des Privatkunden:");
prv.setNachname(kdnName());
System.out.println("Geburtsdatum des Privatkunden:\n(dd/mm/yyyy)");
String geburtsdKdn = scanner.nextLine();
prv.setAdrKunde(kdnAdr());
prv.seteMail(kdnEMail());
prv.setTelefonnr(kdnTelefon());
prv = new Privatkunde(index, prv.getTelefonnr(), prv.geteMail(), prv.getAdrKunde(), prv.getAnredeC(),
prv.getVorname(), prv.getNachname(), geburtsdKdn);
System.out.printf("Die Kundennummer für den gerade angelegten Kunden lautet: %d\n\n", index);
index++;
kunden = kundenErweitern(kunden, prv);
neueListe = kunden;
ausgabeKunden(neueListe);
back();
}
public void caseTwo() {
// ges.setKundennummer(kdnNummer());
System.out.println("Firmenname des Geschäftskunden");
ges.setFirmenname(kdnName());
ges.setAdrKunde(kdnAdr());
ges.seteMail(kdnEMail());
ges.setTelefonnr(kdnTelefon());
ges = new Geschaeftskunde(index, ges.getTelefonnr(), ges.geteMail(), ges.getAdrKunde(), ges.getName());
System.out.printf("Die Kundennummer für den gerade angelegten Kunden lautet: %d\n\n", index);
index++;
kunden = kundenErweitern(kunden, ges);
ausgabeKunden(kunden);
back();
}
public void caseThree() {
if(autoIndex <= 10) {
probeAuto.setMarke(autoModell());
probeAuto.setAutoKennz(autoKz());
System.out.println("Wie hoch ist der aktuelle Kilometerstand?");
do {
try {
kmZahl = scanner.nextInt();
exit = true;
} catch (InputMismatchException e) {
System.err.println("Eingabe überprüfen");
scanner.nextLine();
exit = false;
}
} while (exit == false);
System.out.println("Preis pro KM: \n(ohne € angeben)\nFormat: (X.XX)");
do {
try {
preis = scanner.nextDouble();
exit = true;
} catch (InputMismatchException e) {
System.err.println("Eingabe überprüfen");
scanner.nextLine();
exit = false;
}
} while (exit == false);
probeAuto.setAutoZustand(false);
probeAuto = new Auto(probeAuto.getMarke(), probeAuto.getAutoKennz(), kmZahl,
preis, probeAuto.isAutoZustand());
fuhrpark[autoIndex]=probeAuto;
autoIndex++;
ausgabeAutos(fuhrpark);
back();
}
}
public String autoModell() {
System.out.println("Welche Marke hat das Auto? (z.B. BMW, Mercedes Benz..)");
String autoMarke;
String autoMdl = null;
do {
autoMarke = scanner.nextLine();
if (autoMarke.matches(".*\\d.*")) {
System.err.println("Bitte nur die Marke!");
autoMarke = scanner.nextLine();
exit = false;
}
System.out.println("Welches Modell hat das Auto? (z.B. 535d, e500, C63S)");
autoMdl = scanner.nextLine();
String autoModell = autoMarke + " " + autoMdl;
exit = true;
return autoModell;
} while (exit == false);
}
public String autoKz() {
System.out.println("Wie lautet das Kennzeichen?\nIn diesem Format: (B-XX-ZZZZ)");
String autoKz;
autoKz = scanner.nextLine();
return autoKz;
}
public String kdnAnrede() {
System.out.println("Anrede des Privatkunden:\n(ausschließlich Herr oder Frau)");
String inputKdnAnrede;
do {
inputKdnAnrede = scanner.nextLine();
if (!inputKdnAnrede.equals("Herr") && !inputKdnAnrede.equals("Frau") && !inputKdnAnrede.equals("herr")
&& !inputKdnAnrede.equals("frau")) {
System.err.println("Bitte nur vorgegebene Anrede nutzen.");
inputKdnAnrede = scanner.nextLine();
exit = false;
} else {
exit = true;
}
exit = true;
return inputKdnAnrede;
} while (exit == false);
}
public String kdnName() {
String inputName;
do {
inputName = scanner.nextLine();
if (inputName.matches(".*\\d.*")) {
System.err.println("Bitte keine Zahlen.");
inputName = scanner.nextLine();
exit = false;
} else {
exit = true;
}
exit = true;
return inputName;
} while (exit == false);
}
public Adresse kdnAdr() {
System.out.println("Straße und Hausnummer des Kunden:");
String strHausnr = scanner.nextLine();
System.out.println("Adresszusatz:\n(kann freigelassen werden)");
String adrZus = scanner.nextLine();
System.out.println("Postleitzahl des Kunden:");
String plz = scanner.nextLine();
System.out.println("Ort des Kunden:");
String ort = scanner.nextLine();
Adresse inputAdr = new Adresse(strHausnr, adrZus, plz, ort);
return inputAdr;
}
public String kdnEMail() {
System.out.println("Erreichbar unter E-Mail: ");
String inputEMail;
do {
inputEMail = scanner.nextLine();
if (!inputEMail.contains("@")) {
System.err.println("Bitte Eingabe ueberpruefen. \"(@)\"");
inputEMail = scanner.nextLine();
exit = false;
} else {
exit = true;
}
exit = true;
return inputEMail;
} while (exit == false);
}
public long kdnTelefon() {
System.out.println("Erreichbar unter Telefonnummer: ");
long inputTelefonnr = 0;
do {
try {
inputTelefonnr = scanner.nextLong();
if (inputTelefonnr < 10) {
System.err.println("Die Telefonnummer ist zu lang.");
exit = false;
} else {
exit = true;
}
} catch (InputMismatchException e) {
System.err.println("Eingabe ueberpruefen.");
scanner.nextLine();
exit = false;
}
exit = true;
return inputTelefonnr;
} while (exit == false);
}
public void back() {
Scanner scan = new Scanner(System.in);
System.out.println(
"Möchten Sie zurück ins Verwaltungsmenü?\n(Drücke 1 für \"Ja\", eine andere Zahl für \"Nein\".)");
do {
try {
int input = scan.nextInt();
switch (input) {
case 1:
menue();
exit = true;
break;
default:
System.out.println("Programm beendet.");
break;
}
} catch (InputMismatchException e) {
System.err.println("Bitte nur Zahlen!");
scan.nextLine();
exit = false;
}
} while (exit == false);
}
public Auto[] autoErweitern(Auto[] alt, Auto neu) {
Auto[] erweitert = new Auto[alt.length + 1];
for (int i = 0; i < alt.length; i++) {
erweitert[i] = alt[i];
}
erweitert[alt.length] = neu;
return erweitert;
}
public Kunde[] kundenErweitern(Kunde[] alt, Kunde neuKdn) {
Kunde[] erweitert = new Kunde[alt.length + 1];
for (int i = 0; i < alt.length; i++) {
erweitert[i] = alt[i];
}
erweitert[alt.length] = neuKdn;
return erweitert;
}
public void ausgabeAutos(Auto[] einArray) {
for (int i = 0; i < einArray.length; i++) {
System.out.println(einArray[i] + "");
if(einArray[i]==null) {
System.out.println("- Platz frei -");
}
}
System.out.println();
}
public void ausgabeKunden(Kunde[] einArray) {
for (int i = 0; i < einArray.length; i++) {
System.out.println(einArray[i] + "");
}
System.out.println();
}
public void erzeugteObjekte() {
Auto bmw = new Auto("BMW 535", "B-DQ-361", 14076, 0.45, true);
Auto mercedesBenz = new Auto("Mercedes Benz S500", "B-FY-3655", 2076, 0.60, true);
Auto audi = new Auto("Audi RS7", "B-SD-0608", 18258, 1.20, true);
Auto vw = new Auto("VW Golf 7", "B-MK-2412", 145076, 0.11, true);
Auto opel = new Auto("Opel Corsa", "B-XY-1407", 120485, 0.08, false);
final Adresse anschriftFirma = new Adresse("Treskowallee 8 ", "Gebäude A", "10318", "Berlin");
Adresse kundenAdresse1 = new Adresse("Ritterlandweg 123", "", "10997", "Berlin");
Adresse kundenAdresse2 = new Adresse("Naunynstraße 10", "", "10997", "Berlin");
Adresse kundenAdresse3 = new Adresse("Adalbertstraße 12 ", "Innenhof", "10999", "Berlin");
Adresse kundenAdresse4 = new Adresse("Dresdner Straße 1 ", "Vorderhaus", "10999", "Berlin");
Privatkunde prvK1 = new Privatkunde(1, 15734325, "demirsuleymas5@gmail.com", kundenAdresse1, "herr",
"Süleyman", "Demir", "17.03.2001");
Privatkunde prvK2 = new Privatkunde(2, 17698647, "go14wa@gmx.com", kundenAdresse2, "frau", "Semiha",
"Demir", "15.04.2000");
Geschaeftskunde gesK1 = new Geschaeftskunde(3, 1789138123, "truekhaleesi@gmail.com", kundenAdresse3,
"Daenerys GmbH");
Geschaeftskunde gesK2 = new Geschaeftskunde(4, 1571239138, "imnotabas@gmail.com", kundenAdresse4,
"I love Khaleesi GmbH");
kunden[0] = prvK1;
kunden[1] = prvK2;
kunden[2] = gesK1;
kunden[3] = gesK2;
fuhrpark[0] = bmw;
fuhrpark[1] = mercedesBenz;
fuhrpark[2] = audi;
fuhrpark[3] = vw;
fuhrpark[4] = opel;
}
}