183 lines
5.0 KiB
Java
183 lines
5.0 KiB
Java
|
|
||
|
|
||
|
import java.io.File;
|
||
|
import java.io.FileNotFoundException;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
public class Getraenkespender {
|
||
|
private User user;
|
||
|
private static ArrayList<User> users1 = new ArrayList<>();
|
||
|
private static ArrayList<String> drinksTypen = new ArrayList<String>(
|
||
|
Arrays.asList("wasser", "maracuja", "energydrink", "orange"));
|
||
|
private static Scanner scanner = new Scanner(System.in);
|
||
|
private Getraenk1 drink;
|
||
|
|
||
|
public Getraenkespender() throws FileNotFoundException {
|
||
|
loadFile("src/Mitgliedschaft.csv");
|
||
|
dataControl();
|
||
|
login();
|
||
|
if (checkAbo()) {
|
||
|
System.out.println("Monatliches Abo vorhanden");
|
||
|
takeOrder();
|
||
|
if (drink != null) {
|
||
|
System.out.println("Bitte entnehmen Sie Ihre Flasche:1 " + drink.toString());
|
||
|
}
|
||
|
} else {
|
||
|
System.out.println("Kein monatliches Abo vorhanden.\nPreis pro 0.5l beliebiges Getränk: 1 Euro");
|
||
|
takeOrder();
|
||
|
if (drink != null) {
|
||
|
// Guthaben aktualisieren
|
||
|
double preis = drink.getLiter() * 2;
|
||
|
double guthaben = user.getGuthaben() - preis;
|
||
|
user.setGuthaben(guthaben);
|
||
|
System.out.println(user.toString());
|
||
|
System.out.println("Bitte entnehmen Sie Ihre Flasche: " + drink.toString());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void setUser1(User user) {
|
||
|
this.user = user;
|
||
|
}
|
||
|
|
||
|
public User getUser() {
|
||
|
return user;
|
||
|
}
|
||
|
|
||
|
public Getraenk1 getDrink() {
|
||
|
return drink;
|
||
|
}
|
||
|
|
||
|
public void setDrink(Getraenk1 drink) {
|
||
|
this.drink = drink;
|
||
|
}
|
||
|
|
||
|
private void login() {
|
||
|
System.out.println("\n**Willkommen in fitbase**");
|
||
|
while (user == null) {
|
||
|
System.out.println("Geben Sie Ihr ID ein(ID = Mitgliednummer)");
|
||
|
int eingabe1 = scanner.nextInt();
|
||
|
findUser(eingabe1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void findUser(int id) {
|
||
|
for (User benutzer : users1) {
|
||
|
if (benutzer.getId() == id) {
|
||
|
System.out.println("Zugriff gewährt für Mitglied: " + benutzer.getName() + ", Ihr Guthaben beträgt: "
|
||
|
+ benutzer.getGuthaben() + "€");
|
||
|
setUser1(benutzer);
|
||
|
}
|
||
|
}
|
||
|
if (user == null) {
|
||
|
System.out.println("User nicht gefunden");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private boolean checkAbo() {
|
||
|
if (user.getAbo()) {
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void dataControl() {
|
||
|
for (User user1 : users1) {
|
||
|
System.out.println(user1.toString());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void loadFile(String pfad) throws FileNotFoundException {
|
||
|
Scanner scanner = new Scanner(new File(pfad));
|
||
|
while (scanner.hasNextLine()) {
|
||
|
String line = scanner.nextLine();
|
||
|
String[] lines = line.split(";");
|
||
|
String name = lines[0];
|
||
|
boolean abo = lines[1].equalsIgnoreCase("ja");
|
||
|
int guthaben = Integer.parseInt(lines[2]);
|
||
|
User user = new User(name, abo, guthaben);
|
||
|
users1.add(user);
|
||
|
}
|
||
|
scanner.close();
|
||
|
}
|
||
|
|
||
|
private void takeOrder() {
|
||
|
|
||
|
String getraenk;
|
||
|
String kohlenSauere;
|
||
|
String liter;
|
||
|
|
||
|
scanner.nextLine();
|
||
|
|
||
|
while (drink == null) {
|
||
|
ArrayList<String> order = new ArrayList<>();
|
||
|
System.out.println("Bitte wählen Sie ein Getränk:");
|
||
|
for (String drink : drinksTypen) {
|
||
|
System.out.printf("-%s\n", drink);
|
||
|
}
|
||
|
getraenk = scanner.nextLine().toLowerCase();
|
||
|
|
||
|
if (drinksTypen.contains(getraenk)) {
|
||
|
order.add(getraenk);
|
||
|
} else {
|
||
|
System.out.println("Ungültige Eingabe. Bitte wählen Sie ein vorhandenes Getränk.");
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
System.out.println(getraenk + " soll mit oder ohne Kohlensäure? (Antwort: mit oder ohne)");
|
||
|
kohlenSauere = scanner.nextLine().toLowerCase();
|
||
|
|
||
|
if (kohlenSauere.equals("mit") || kohlenSauere.equals("ohne")) {
|
||
|
order.add(kohlenSauere);
|
||
|
} else {
|
||
|
System.out.println("Ungültige Eingabe. Bitte geben Sie entweder (mit) oder (ohne) ein.");
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
System.out.println("0.5, 1.0 oder 1.5 Liter? (Format: x.x)");
|
||
|
liter = scanner.nextLine();
|
||
|
|
||
|
try {
|
||
|
double literValue = Double.parseDouble(liter);
|
||
|
if (Arrays.asList("0.5", "1.0", "1.5").contains(liter)) {
|
||
|
order.add(liter);
|
||
|
}
|
||
|
System.out.printf("Getränk: %s, Kohlensäure: %s, Liter: %s\n", getraenk, kohlenSauere, literValue);
|
||
|
|
||
|
makeDrink(order);
|
||
|
if (drink != null) {
|
||
|
break;
|
||
|
}
|
||
|
} catch (NumberFormatException e) {
|
||
|
System.out.println("Ungültige Eingabe. Bitte geben Sie eine gültige Liter-Menge ein.");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void makeDrink(ArrayList<String> order) {
|
||
|
boolean kohlensaeure = order.get(1).equalsIgnoreCase("mit");
|
||
|
|
||
|
try {
|
||
|
double liter = Double.parseDouble(order.get(2));
|
||
|
if (Arrays.asList(0.5, 1.0, 1.5).contains(liter)) {
|
||
|
double preis = liter * 2;
|
||
|
setDrink(new Getraenk1(order.get(0), kohlensaeure, liter, preis));
|
||
|
} else {
|
||
|
System.out.println("Ungültige Eingabe für die Liter-Menge. Bitte wählen Sie 0.5, 1.0 oder 1.5.");
|
||
|
}
|
||
|
} catch (NumberFormatException e) {
|
||
|
System.out.println("Ungültige Eingabe für die Liter-Menge. Bitte geben Sie eine Zahl ein.");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|