Nicht ganz richtige Implementierung für KurztripEmpfehlung Klasse
parent
04669ca008
commit
a17d823f7b
|
@ -2,4 +2,58 @@ package domain;
|
|||
|
||||
public class Reiseplanung {
|
||||
|
||||
private Ort standort;
|
||||
private Ort zielort;
|
||||
private double entfernung;
|
||||
private double dauerPKW;
|
||||
private double dauerFahrrad;
|
||||
private double co2AusstoßPKW;
|
||||
|
||||
public Reiseplanung(Ort standort, Ort zielort, double durchschnittsgeschwindigkeitPKW,
|
||||
double durchschnittsgeschwindigkeitFahrrad, double co2AusstossProKmPKW) {
|
||||
this.standort = standort;
|
||||
this.zielort = zielort;
|
||||
this.entfernung = berechneEntfernung(standort, zielort);
|
||||
this.dauerPKW = entfernung / durchschnittsgeschwindigkeitPKW;
|
||||
this.dauerFahrrad = entfernung / durchschnittsgeschwindigkeitFahrrad;
|
||||
this.co2AusstoßPKW = entfernung * co2AusstossProKmPKW;
|
||||
}
|
||||
|
||||
public double berechneEntfernung(Ort standort, Ort zielort) {
|
||||
double b1 = Math.toRadians(standort.getBreitengrad());
|
||||
double b2 = Math.toRadians(zielort.getBreitengrad());
|
||||
double l1 = Math.toRadians(standort.getLängengrad());
|
||||
double l2 = Math.toRadians(zielort.getLängengrad());
|
||||
|
||||
return 6378.388 * Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public double getEntfernung() {
|
||||
return entfernung;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String berechneReiseDauer(double durchschnittsgeschwindigkeit) {
|
||||
double dauer = entfernung / durchschnittsgeschwindigkeit;
|
||||
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
|
||||
}
|
||||
|
||||
public double berechneCO2Ausstoss() {
|
||||
return co2AusstoßPKW;
|
||||
}
|
||||
|
||||
public double getDauerPKW() {
|
||||
return dauerPKW;
|
||||
}
|
||||
|
||||
public double getDauerFahrrad() {
|
||||
return dauerFahrrad;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,65 @@
|
|||
package fassade;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import domain.KurztripEmpfehlung;
|
||||
import domain.Ort;
|
||||
import domain.Reiseplanung;
|
||||
import domain.User;
|
||||
|
||||
|
||||
public class ReiseFassade {
|
||||
|
||||
private Reiseplanung reiseplanung;
|
||||
private KurztripEmpfehlung kurztripEmpfehlung;
|
||||
|
||||
public ReiseFassade() {
|
||||
|
||||
this.kurztripEmpfehlung = new KurztripEmpfehlung();
|
||||
}
|
||||
|
||||
|
||||
/*public Reiseplanung planeReise(Ort startort, Ort zielort) {
|
||||
Reiseplanung reiseplanung = new Reiseplanung(startort, zielort);
|
||||
reiseplanung.berechneEntfernung();
|
||||
reiseplanung.berechneReisedauerPKW();
|
||||
reiseplanung.berechneReisedauerFahrrad();
|
||||
reiseplanung.berechneCo2Ausstoss();
|
||||
return reiseplanung;
|
||||
}*/
|
||||
|
||||
|
||||
public void setHeimatortFromUser(User user) {
|
||||
kurztripEmpfehlung.setHeimatort(user.getHeimatstandort());
|
||||
}
|
||||
|
||||
|
||||
public double berechneEntfernung() {
|
||||
return reiseplanung.getEntfernung();
|
||||
}
|
||||
|
||||
public String berechneReiseDauerPKW() {
|
||||
return reiseplanung.berechneReiseDauer(reiseplanung.getDauerPKW());
|
||||
}
|
||||
|
||||
public String berechneReiseDauerFahrrad() {
|
||||
return reiseplanung.berechneReiseDauer(reiseplanung.getDauerFahrrad());
|
||||
}
|
||||
|
||||
public double berechneCO2AusstossPKW() {
|
||||
return reiseplanung.berechneCO2Ausstoss();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<Ort> zufallsorteFahrrad(int maxEntfernung) {
|
||||
return kurztripEmpfehlung.zufallsorteFahrrad(maxEntfernung);
|
||||
}
|
||||
|
||||
public List<Ort> zufallsortePKW(int minEntfernung) {
|
||||
return kurztripEmpfehlung.zufallsortePKW(minEntfernung);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
package ui;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
import domain.Ort;
|
||||
import domain.Reiseplanung;
|
||||
import domain.User;
|
||||
import fassade.ReiseFassade;
|
||||
import fassade.UserFassade;
|
||||
|
||||
public class UserInterface {
|
||||
|
||||
private UserFassade userFacade;
|
||||
private ReiseFassade reiseFacade;
|
||||
private User user;
|
||||
private Scanner scanner;
|
||||
|
||||
public UserInterface() {
|
||||
|
||||
this.reiseFacade = new ReiseFassade();
|
||||
this.userFacade = new UserFassade();
|
||||
this.scanner = new Scanner(System.in);
|
||||
start();
|
||||
|
@ -37,20 +44,28 @@ public class UserInterface {
|
|||
switch (option) {
|
||||
case 1:
|
||||
registrieren();
|
||||
System.out.println("\n================================================================================");
|
||||
System.out
|
||||
.println("\n================================================================================");
|
||||
break;
|
||||
case 2:
|
||||
einloggen();
|
||||
System.out.println("\n================================================================================");
|
||||
System.out
|
||||
.println("\n================================================================================");
|
||||
break;
|
||||
case 3:
|
||||
sucheOrt();
|
||||
System.out
|
||||
.println("\n================================================================================");
|
||||
break;
|
||||
case 4:
|
||||
planeReise();
|
||||
System.out
|
||||
.println("\n================================================================================");
|
||||
break;
|
||||
case 5:
|
||||
kurztripEmpfehlen();
|
||||
System.out
|
||||
.println("\n================================================================================");
|
||||
break;
|
||||
case 6:
|
||||
System.out.println("Auf Wiedersehen!");
|
||||
|
@ -68,7 +83,7 @@ public class UserInterface {
|
|||
System.out.print("Geben Sie ein Passwort ein: ");
|
||||
String password = scanner.nextLine();
|
||||
System.out.print("Geben Sie Ihre Heimat-PLZ ein: ");
|
||||
String plz = scanner.nextLine();
|
||||
int plz = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Geben Sie Ihren Heimatort ein: ");
|
||||
String ortName = scanner.nextLine();
|
||||
System.out.print("Geben Sie den Namen Ihres Autos ein: ");
|
||||
|
@ -82,7 +97,17 @@ public class UserInterface {
|
|||
|
||||
userFacade.registrieren(username, password, plz, ortName, autoName, co2Ausstoss,
|
||||
durchschnittsgeschwindigkeitPKW, durchschnittsgeschwindigkeitFahrrad);
|
||||
System.out.println("\nRegistrierung erfolgreich! Willkommen, " + username + "!");
|
||||
|
||||
User user = userFacade.einloggen(username, password); // Fügen Sie dies hinzu, um den Benutzer nach der
|
||||
// Registrierung automatisch einzuloggen
|
||||
if (user != null) {
|
||||
this.user = user;
|
||||
reiseFacade.setHeimatortFromUser(user);
|
||||
System.out.println("\nRegistrierung und automatischer Login erfolgreich! Willkommen, " + username + "!");
|
||||
} else {
|
||||
System.out.println("\nRegistrierung erfolgreich, aber automatischer Login fehlgeschlagen.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void einloggen() {
|
||||
|
@ -93,11 +118,11 @@ public class UserInterface {
|
|||
|
||||
User user = userFacade.einloggen(username, password);
|
||||
if (user != null) {
|
||||
this.user = user;
|
||||
reiseFacade.setHeimatortFromUser(user);
|
||||
System.out.println("\nLogin erfolgreich! Willkommen zurück, " + user.getUsername() + "!");
|
||||
String wetter = user.zeigeWetterHeimatstandort();
|
||||
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getOrtName() + ": " + wetter);
|
||||
|
||||
|
||||
} else {
|
||||
System.out.println("\nBenutzername oder Passwort ist falsch:(");
|
||||
}
|
||||
|
@ -105,38 +130,81 @@ public class UserInterface {
|
|||
|
||||
private void sucheOrt() {
|
||||
System.out.print("Geben Sie den Namen des Ortes ein: ");
|
||||
|
||||
// die Ortssuche und Wetteranzeige für die nächsten drei Tage
|
||||
String ortName = scanner.nextLine();
|
||||
/*
|
||||
* List<Ort> treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) {
|
||||
* System.out.println("Keine Treffer gefunden."); } else {
|
||||
* System.out.println("Trefferliste:"); for (Ort ort : treffer) {
|
||||
* System.out.println(ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")"); String
|
||||
* wetter = user.zeigeWettervorhersageHeimatstandort();
|
||||
* System.out.println("Aktuelles Wetter in " +
|
||||
* user.getHeimatstandort().getOrtName() + ": " + wetter); } }
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void planeReise() {
|
||||
System.out.print("Geben Sie Ihre Start-PLZ ein: ");
|
||||
String startPLZ = scanner.nextLine();
|
||||
int startPlz = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Geben Sie Ihren Startort ein: ");
|
||||
String startOrtName = scanner.nextLine();
|
||||
System.out.print("Geben Sie Ihre Ziel-PLZ ein: ");
|
||||
String zielPLZ = scanner.nextLine();
|
||||
System.out.print("Geben Sie Ihren Zielort ein: ");
|
||||
Ort startort = new Ort(startPlz, startOrtName);
|
||||
System.out.print("Geben Sie die Ziel-PLZ ein: ");
|
||||
int zielPlz = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Geben Sie den Zielort ein: ");
|
||||
String zielOrtName = scanner.nextLine();
|
||||
// die Reiseplanung basierend auf den Eingaben
|
||||
Ort zielort = new Ort(zielPlz, zielOrtName);
|
||||
|
||||
/*
|
||||
* Reiseplanung reise = reiseFacade.planeReise(startort, zielort);
|
||||
* System.out.println("Reiseplanung:"); System.out.println("Entfernung: " +
|
||||
* reise.getEntfernung() + " km"); System.out.println("Reisedauer PKW: " +
|
||||
* reise.getDauerPKW() + " Stunden"); System.out.println("Reisedauer Fahrrad: "
|
||||
* + reise.getDauerFahrrad() + " Stunden");
|
||||
* System.out.println("CO2-Ausstoß PKW: " + reise.berechneCO2Ausstoss() + " g");
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void kurztripEmpfehlen() {
|
||||
System.out.println("Empfohlener Kurztrip:");
|
||||
// die Empfehlung eines Kurztrips
|
||||
if (user != null && user.getHeimatstandort() != null) {
|
||||
System.out.println("Empfehlung basiert auf Heimatort: " + user.getHeimatstandort().getOrtName());
|
||||
|
||||
reiseFacade.setHeimatortFromUser(user);
|
||||
|
||||
System.out.print("Wählen Sie ein Transportmittel (Fahrrad/Auto): ");
|
||||
String transportmittel = scanner.nextLine().trim().toLowerCase();
|
||||
|
||||
switch (transportmittel) {
|
||||
case "fahrrad":
|
||||
List<Ort> fahrradOrte = reiseFacade.zufallsorteFahrrad(100);
|
||||
if (fahrradOrte.isEmpty()) {
|
||||
System.out.println("Keine Orte innerhalb von 100 km gefunden.");
|
||||
} else {
|
||||
System.out.println("Folgende Orte wurden für einen Fahrrad-Kurztrip empfohlen:");
|
||||
for (Ort ort : fahrradOrte) {
|
||||
System.out.println("- " + ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "auto":
|
||||
List<Ort> autoOrte = reiseFacade.zufallsortePKW(150);
|
||||
if (autoOrte.isEmpty()) {
|
||||
System.out.println("Keine Orte mindestens 150 km entfernt gefunden.");
|
||||
} else {
|
||||
System.out.println("Folgende Orte wurden für einen Auto-Kurztrip empfohlen:");
|
||||
for (Ort ort : autoOrte) {
|
||||
System.out.println("- " + ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")");
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
System.out.println("Ungültige Option. Bitte wählen Sie entweder 'Fahrrad' oder 'Auto'.");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
System.out.println("Bitte zuerst einloggen und Heimatort angeben!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
new UserInterface();
|
||||
|
||||
|
|
Loading…
Reference in New Issue