Nicht ganz richtige Implementierung für KurztripEmpfehlung Klasse
parent
04669ca008
commit
a17d823f7b
|
@ -2,4 +2,58 @@ package domain;
|
||||||
|
|
||||||
public class Reiseplanung {
|
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;
|
package fassade;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import domain.KurztripEmpfehlung;
|
||||||
|
import domain.Ort;
|
||||||
|
import domain.Reiseplanung;
|
||||||
|
import domain.User;
|
||||||
|
|
||||||
|
|
||||||
public class ReiseFassade {
|
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;
|
package ui;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import domain.Ort;
|
||||||
|
import domain.Reiseplanung;
|
||||||
import domain.User;
|
import domain.User;
|
||||||
|
import fassade.ReiseFassade;
|
||||||
import fassade.UserFassade;
|
import fassade.UserFassade;
|
||||||
|
|
||||||
public class UserInterface {
|
public class UserInterface {
|
||||||
|
|
||||||
private UserFassade userFacade;
|
private UserFassade userFacade;
|
||||||
|
private ReiseFassade reiseFacade;
|
||||||
|
private User user;
|
||||||
private Scanner scanner;
|
private Scanner scanner;
|
||||||
|
|
||||||
public UserInterface() {
|
public UserInterface() {
|
||||||
|
|
||||||
|
this.reiseFacade = new ReiseFassade();
|
||||||
this.userFacade = new UserFassade();
|
this.userFacade = new UserFassade();
|
||||||
this.scanner = new Scanner(System.in);
|
this.scanner = new Scanner(System.in);
|
||||||
start();
|
start();
|
||||||
|
@ -37,20 +44,28 @@ public class UserInterface {
|
||||||
switch (option) {
|
switch (option) {
|
||||||
case 1:
|
case 1:
|
||||||
registrieren();
|
registrieren();
|
||||||
System.out.println("\n================================================================================");
|
System.out
|
||||||
|
.println("\n================================================================================");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
einloggen();
|
einloggen();
|
||||||
System.out.println("\n================================================================================");
|
System.out
|
||||||
|
.println("\n================================================================================");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sucheOrt();
|
sucheOrt();
|
||||||
|
System.out
|
||||||
|
.println("\n================================================================================");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
planeReise();
|
planeReise();
|
||||||
|
System.out
|
||||||
|
.println("\n================================================================================");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
kurztripEmpfehlen();
|
kurztripEmpfehlen();
|
||||||
|
System.out
|
||||||
|
.println("\n================================================================================");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
System.out.println("Auf Wiedersehen!");
|
System.out.println("Auf Wiedersehen!");
|
||||||
|
@ -68,7 +83,7 @@ public class UserInterface {
|
||||||
System.out.print("Geben Sie ein Passwort ein: ");
|
System.out.print("Geben Sie ein Passwort ein: ");
|
||||||
String password = scanner.nextLine();
|
String password = scanner.nextLine();
|
||||||
System.out.print("Geben Sie Ihre Heimat-PLZ ein: ");
|
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: ");
|
System.out.print("Geben Sie Ihren Heimatort ein: ");
|
||||||
String ortName = scanner.nextLine();
|
String ortName = scanner.nextLine();
|
||||||
System.out.print("Geben Sie den Namen Ihres Autos ein: ");
|
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,
|
userFacade.registrieren(username, password, plz, ortName, autoName, co2Ausstoss,
|
||||||
durchschnittsgeschwindigkeitPKW, durchschnittsgeschwindigkeitFahrrad);
|
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() {
|
private void einloggen() {
|
||||||
|
@ -93,11 +118,11 @@ public class UserInterface {
|
||||||
|
|
||||||
User user = userFacade.einloggen(username, password);
|
User user = userFacade.einloggen(username, password);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
|
this.user = user;
|
||||||
|
reiseFacade.setHeimatortFromUser(user);
|
||||||
System.out.println("\nLogin erfolgreich! Willkommen zurück, " + user.getUsername() + "!");
|
System.out.println("\nLogin erfolgreich! Willkommen zurück, " + user.getUsername() + "!");
|
||||||
String wetter = user.zeigeWetterHeimatstandort();
|
String wetter = user.zeigeWetterHeimatstandort();
|
||||||
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getOrtName() + ": " + wetter);
|
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getOrtName() + ": " + wetter);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("\nBenutzername oder Passwort ist falsch:(");
|
System.out.println("\nBenutzername oder Passwort ist falsch:(");
|
||||||
}
|
}
|
||||||
|
@ -105,38 +130,81 @@ public class UserInterface {
|
||||||
|
|
||||||
private void sucheOrt() {
|
private void sucheOrt() {
|
||||||
System.out.print("Geben Sie den Namen des Ortes ein: ");
|
System.out.print("Geben Sie den Namen des Ortes ein: ");
|
||||||
|
String ortName = scanner.nextLine();
|
||||||
// die Ortssuche und Wetteranzeige für die nächsten drei Tage
|
/*
|
||||||
|
* 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() {
|
private void planeReise() {
|
||||||
System.out.print("Geben Sie Ihre Start-PLZ ein: ");
|
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: ");
|
System.out.print("Geben Sie Ihren Startort ein: ");
|
||||||
String startOrtName = scanner.nextLine();
|
String startOrtName = scanner.nextLine();
|
||||||
System.out.print("Geben Sie Ihre Ziel-PLZ ein: ");
|
Ort startort = new Ort(startPlz, startOrtName);
|
||||||
String zielPLZ = scanner.nextLine();
|
System.out.print("Geben Sie die Ziel-PLZ ein: ");
|
||||||
System.out.print("Geben Sie Ihren Zielort ein: ");
|
int zielPlz = Integer.parseInt(scanner.nextLine());
|
||||||
|
System.out.print("Geben Sie den Zielort ein: ");
|
||||||
String zielOrtName = scanner.nextLine();
|
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() {
|
private void kurztripEmpfehlen() {
|
||||||
System.out.println("Empfohlener Kurztrip:");
|
if (user != null && user.getHeimatstandort() != null) {
|
||||||
// die Empfehlung eines Kurztrips
|
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) {
|
public static void main(String[] args) {
|
||||||
new UserInterface();
|
new UserInterface();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue