Compare commits

..

1 Commits
main ... dev

Author SHA1 Message Date
danai ea03bd0fa4 Entfernung für KrztripEmpfehlung hinzugefügt 2024-06-17 23:53:27 +02:00
14 changed files with 143 additions and 395 deletions

View File

@ -1,9 +1,2 @@
# TravelBuddyApp # TravelBuddyApp
( Caroline Ufer und Bohdana Illiuk )
Login-Namen:
1. max, 12345
2. lisa, 1111
3. anna, pass123
4. mike, 54321
5. sven, 112233

View File

@ -75,7 +75,7 @@
<transformer <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass> <mainClass>
ui.UserInterface</mainClass> de.hs_mannheim.informatik.mvn.Main</mainClass>
</transformer> </transformer>
</transformers> </transformers>
</configuration> </configuration>

View File

@ -5,9 +5,7 @@ public class Auto {
private String name; private String name;
private double co2AusstossProKm; private double co2AusstossProKm;
public Auto(String name, double co2AusstossProKm) { public Auto(String name, double co2AusstossProKm) {
this.name = name; this.name = name;
this.co2AusstossProKm = co2AusstossProKm; this.co2AusstossProKm = co2AusstossProKm;
} }
@ -27,5 +25,5 @@ public class Auto {
public void setCO2AusstossProKm(double co2AusstossProKm) { public void setCO2AusstossProKm(double co2AusstossProKm) {
this.co2AusstossProKm = co2AusstossProKm; this.co2AusstossProKm = co2AusstossProKm;
} }
} }

View File

@ -91,16 +91,20 @@ public class KurztripEmpfehlung {
} }
public double berechneEntfernung(Ort standort, Ort zielort) { 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());
double b1 = Math.toRadians(standort.getBreitengrad()); double deltaL = l2 - l1;
double b2 = Math.toRadians(zielort.getBreitengrad()); double cosDeltaL = Math.cos(deltaL);
double l1 = Math.toRadians(standort.getLängengrad()); double acosArgument = Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * cosDeltaL;
double l2 = Math.toRadians(zielort.getLängengrad());
double entfernung = (6378.388 acosArgument = Math.max(-1.0, Math.min(1.0, acosArgument));
* Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1))) * 1.25;
return entfernung; double entfernung = 6378.388 * Math.acos(acosArgument);
return entfernung;
} }

View File

@ -1,33 +1,49 @@
package domain; package domain;
import java.io.IOException; import java.io.IOException;
public class Ort { public class Ort {
private int plz; private int plz;
private String name; private String ortName;
public double breitengrad; private double breitengrad;
public double längengrad; private double längengrad;
public Ort(int plz, String name) { public Ort(int plz, String name) {
this.plz = plz; this.plz = plz;
this.name = name; this.ortName = name;
} }
public Ort(int plz, String name, double breitengrad, double längengrad) { public Ort(int plz, String name, double breitengrad, double längengrad) {
this.plz = plz; this.plz = plz;
this.name = name; this.ortName = name;
this.breitengrad = breitengrad; this.breitengrad = breitengrad;
this.längengrad = längengrad; this.längengrad = längengrad;
} }
public int getPLZ() {
return plz;
}
public String getOrtName() {
return ortName;
}
public double getBreitengrad() {
return breitengrad;
}
public double getLängengrad() {
return längengrad;
}
public String getAktuellesWetter() { public String getAktuellesWetter() {
try { try {
return WetterService.getAktuellesWetter(name); return WetterService.getAktuellesWetter(ortName);
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
return "Fehler beim Abrufen des aktuellen Wetters"; return "Fehler beim Abrufen des aktuellen Wetters";
@ -35,30 +51,11 @@ public class Ort {
} }
public String getWettervorhersage() { public String getWettervorhersage() {
try { try {
return WetterService.getWettervorhersage(name); return WetterService.getWettervorhersage(ortName);
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
return "Fehler beim Abrufen der Wettervorhersage"; return "Fehler beim Abrufen der Wettervorhersage";
} }
}
public String getName() {
return name;
}
public int getPLZ() {
return plz;
}
public double getBreitengrad() {
return breitengrad;
}
public double getLängengrad() {
return längengrad;
} }
} }

View File

@ -1,7 +1,5 @@
package domain; package domain;
import java.lang.Math;
public class Reiseplanung { public class Reiseplanung {
private Ort standort; private Ort standort;
@ -11,49 +9,40 @@ public class Reiseplanung {
private double dauerFahrrad; private double dauerFahrrad;
private double co2AusstoßPKW; private double co2AusstoßPKW;
public Reiseplanung(User user, Ort zielort) { public Reiseplanung(Ort standort, Ort zielort, double durchschnittsgeschwindigkeitPKW,
this.standort = user.getHeimatstandort(); double durchschnittsgeschwindigkeitFahrrad, double co2AusstossProKmPKW) {
this.standort = standort;
this.zielort = zielort; this.zielort = zielort;
this.entfernung = berechneEntfernung(standort, zielort); this.entfernung = berechneEntfernung(standort, zielort);
this.dauerPKW = berechneDauer(user.getDurchschnittsgeschwindigkeitPKW()); this.dauerPKW = entfernung / durchschnittsgeschwindigkeitPKW;
this.dauerFahrrad = berechneDauer(user.getDurchschnittsgeschwindigkeitFahrrad()); this.dauerFahrrad = entfernung / durchschnittsgeschwindigkeitFahrrad;
this.co2AusstoßPKW = berechneCO2Ausstoß(user.getAuto()); this.co2AusstoßPKW = entfernung * co2AusstossProKmPKW;
} }
public double berechneEntfernung(Ort standort, Ort zielort) { public double berechneEntfernung(Ort standort, Ort zielort) {
double b1 = Math.toRadians(standort.getBreitengrad()); double b1 = Math.toRadians(standort.getBreitengrad());
double b2 = Math.toRadians(zielort.getBreitengrad()); double b2 = Math.toRadians(zielort.getBreitengrad());
double l1 = Math.toRadians(standort.getLängengrad()); double l1 = Math.toRadians(standort.getLängengrad());
double l2 = Math.toRadians(zielort.getLängengrad()); double l2 = Math.toRadians(zielort.getLängengrad());
entfernung = (6378.388 return 6378.388 * Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1));
* Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1))) * 1.25; }
public double getEntfernung() {
return entfernung; return entfernung;
} }
// berechnet die ungefähre Dauer zum gewählten Ort
public double berechneDauer(double geschwindigkeit) {
return entfernung / geschwindigkeit; public String berechneReiseDauer(double durchschnittsgeschwindigkeit) {
double dauer = entfernung / durchschnittsgeschwindigkeit;
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
} }
// berechnet ungefähren CO2 Ausstoß des Autos für eine Strecke public double berechneCO2Ausstoss() {
public double berechneCO2Ausstoß(Auto auto) { return co2AusstoßPKW;
return entfernung * auto.getCO2AusstossProKm();
}
public double getEntfernung() {
return Math.round(entfernung*100.0)/100.0;
}
@Override
public String toString() {
return String.format(
"Von %s nach %s\nEntfernung: %.1f km\nReisedauer mit dem PKW: %.1f Stunden\nReisedauer mit dem Fahrrad: %.1f Stunden\nCO2-Ausstoß durch PKW: %.1f kg",
standort.getName(), zielort.getName(), entfernung, dauerPKW, dauerFahrrad, co2AusstoßPKW);
} }
public double getDauerPKW() { public double getDauerPKW() {
@ -63,8 +52,8 @@ public class Reiseplanung {
public double getDauerFahrrad() { public double getDauerFahrrad() {
return dauerFahrrad; return dauerFahrrad;
} }
public double getCO2Ausstoß() {
return co2AusstoßPKW;
}
} }

View File

@ -12,7 +12,7 @@ public class User {
private String username; private String username;
private String hashedPassword; private String hashedPassword;
private Ort heimatstandort; private Ort heimatstandort;
public Auto auto; private Auto auto;
private double durchschnittsgeschwindigkeitPKW; private double durchschnittsgeschwindigkeitPKW;
private double durchschnittsgeschwindigkeitFahrrad; private double durchschnittsgeschwindigkeitFahrrad;
@ -83,7 +83,7 @@ public class User {
try (PrintWriter writer = new PrintWriter(new FileWriter("users.txt", true))) { try (PrintWriter writer = new PrintWriter(new FileWriter("users.txt", true))) {
writer.println(username + "," + hashedPassword + "," + heimatstandort.getPLZ() + "," writer.println(username + "," + hashedPassword + "," + heimatstandort.getPLZ() + ","
+ heimatstandort.getName() + "," + auto.getName() + "," + auto.getCO2AusstossProKm() + "," + heimatstandort.getOrtName() + "," + auto.getName() + "," + auto.getCO2AusstossProKm() + ","
+ durchschnittsgeschwindigkeitPKW + "," + durchschnittsgeschwindigkeitFahrrad); + durchschnittsgeschwindigkeitPKW + "," + durchschnittsgeschwindigkeitFahrrad);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -92,7 +92,6 @@ public class User {
} }
public boolean einloggen() { public boolean einloggen() {
try (BufferedReader reader = new BufferedReader(new FileReader("users.txt"))) { try (BufferedReader reader = new BufferedReader(new FileReader("users.txt"))) {
String line; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
@ -115,7 +114,7 @@ public class User {
public String zeigeWetterHeimatstandort() { public String zeigeWetterHeimatstandort() {
try { try {
return WetterService.getAktuellesWetter(heimatstandort.getName()); return WetterService.getAktuellesWetter(heimatstandort.getOrtName());
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {
return "Fehler beim Abrufen des Wetters: " + e.getMessage(); return "Fehler beim Abrufen des Wetters: " + e.getMessage();
} }
@ -123,7 +122,7 @@ public class User {
public String zeigeWettervorhersageHeimatstandort() { public String zeigeWettervorhersageHeimatstandort() {
try { try {
return WetterService.getWettervorhersage(heimatstandort.getName()); return WetterService.getWettervorhersage(heimatstandort.getOrtName());
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {
return "Fehler beim Abrufen der Wettervorhersage: " + e.getMessage(); return "Fehler beim Abrufen der Wettervorhersage: " + e.getMessage();
} }

View File

@ -13,7 +13,6 @@ import org.json.JSONObject;
public class WetterService { public class WetterService {
private static final String API_KEY = "fc01dfd47f80659f12512c295e80b201"; private static final String API_KEY = "fc01dfd47f80659f12512c295e80b201";
private static final HttpClient client = HttpClient.newHttpClient(); private static final HttpClient client = HttpClient.newHttpClient();

View File

@ -1,169 +1,66 @@
package fassade; package fassade;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import domain.KurztripEmpfehlung;
import domain.Ort; import domain.Ort;
import domain.Reiseplanung; import domain.Reiseplanung;
import domain.User; import domain.User;
import domain.WetterService;
import java.util.List;
import java.util.Set;
import domain.KurztripEmpfehlung;
public class ReiseFassade { public class ReiseFassade {
private Reiseplanung reiseplanung; private Reiseplanung reiseplanung;
private KurztripEmpfehlung kurztripEmpfehlung; private KurztripEmpfehlung kurztripEmpfehlung;
User user;
List<Ort> alleOrte;
public ReiseFassade(User user) { public ReiseFassade() {
this.kurztripEmpfehlung = new KurztripEmpfehlung(); this.kurztripEmpfehlung = new KurztripEmpfehlung();
alleOrte = ladeAlleOrte();
}
public void setHeimatortFromUser(User user) {
Ort heimatort = user.getHeimatstandort();
this.kurztripEmpfehlung.setHeimatort(heimatort);
}
public List<Ort> ladeAlleOrte() {
List<Ort> alleOrte = new ArrayList<>();
String csvFile = "src/main/resources/PLZ.csv";
String line;
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
line = line.replaceAll("\\s+", "");
String[] data = line.split(";");
int plz = Integer.parseInt(data[0].replaceAll("\"", ""));
String ortName = data[1].replaceAll("\"", "");
double breitengrad = Double.parseDouble(data[2].replaceAll("\"", ""));
double laengengrad = Double.parseDouble(data[3].replaceAll("\"", ""));
Ort ort = new Ort(plz, ortName);
ort.breitengrad = breitengrad;
ort.längengrad = laengengrad;
alleOrte.add(ort);
}
} catch (IOException e) {
System.err.println("Fehler beim Lesen der Datei: " + e.getMessage());
e.printStackTrace();
} catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
System.err.println("Fehlerhaftes Datenformat in der CSV-Datei: " + e.getMessage());
e.printStackTrace();
}
return alleOrte;
}
public Ort[] sucheOrt(String suchbegriff) {
Set<Ort> trefferSet = new HashSet<>();
if (suchbegriff.equalsIgnoreCase("alle")) {
trefferSet.addAll(alleOrte);
} else {
for (Ort o : alleOrte) {
if (o.getName().contains(suchbegriff) && trefferSet.size() < 8) {
trefferSet.add(o);
}
}
}
return trefferSet.toArray(new Ort[0]);
} }
public String anzeigeTrefferliste(Ort[] trefferliste) {
StringBuilder ausgabe = new StringBuilder();
int i = 1;
for (Ort o : trefferliste) { /*public Reiseplanung planeReise(Ort startort, Ort zielort) {
double entfernung = new Reiseplanung(user, o).getEntfernung(); Reiseplanung reiseplanung = new Reiseplanung(startort, zielort);
ausgabe.append(i).append(". ").append(o.getName()).append(" (Entfernung: ") reiseplanung.berechneEntfernung();
.append(entfernung).append(" km)\n"); reiseplanung.berechneReisedauerPKW();
String wettervorhersage = getWettervorhersage(o.getName()); reiseplanung.berechneReisedauerFahrrad();
ausgabe.append(wettervorhersage).append("\n"); reiseplanung.berechneCo2Ausstoss();
i++; return reiseplanung;
} }*/
return ausgabe.toString();
public void setHeimatortFromUser(User user) {
kurztripEmpfehlung.setHeimatort(user.getHeimatstandort());
} }
public String ortAnzeige(int index, Ort[] trefferliste) {
String anzeige = " ";
anzeige = trefferliste[index - 1].getName() + " " + trefferliste[index - 1].getPLZ() + " "
+ trefferliste[index - 1].getWettervorhersage();
return anzeige;
}
public String getReiseplanung(User user, Ort ziel) {
reiseplanung = new Reiseplanung(user, ziel);
return reiseplanung.toString();
}
public String getAktuellesWetter(String ortName) {
try {
return WetterService.getAktuellesWetter(ortName);
} catch (IOException | InterruptedException e) {
return "Fehler beim Abrufen des Wetters: " + e.getMessage();
}
}
public String getWettervorhersage(String ortName) {
try {
return WetterService.getWettervorhersage(ortName);
} catch (IOException | InterruptedException e) {
return "Fehler beim Abrufen des Wetters: " + e.getMessage();
}
}
public double berechneEntfernung() { public double berechneEntfernung() {
return reiseplanung.getEntfernung(); return reiseplanung.getEntfernung();
} }
public String berechneReiseDauerPKW() { public String berechneReiseDauerPKW() {
double dauer = reiseplanung.berechneDauer(reiseplanung.getDauerPKW()); return reiseplanung.berechneReiseDauer(reiseplanung.getDauerPKW());
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
} }
public String berechneReiseDauerFahrrad() { public String berechneReiseDauerFahrrad() {
double dauer = reiseplanung.berechneDauer(reiseplanung.getDauerFahrrad()); return reiseplanung.berechneReiseDauer(reiseplanung.getDauerFahrrad());
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
} }
public double berechneCO2AusstossPKW() { public double berechneCO2AusstossPKW() {
return reiseplanung.getCO2Ausstoß(); return reiseplanung.berechneCO2Ausstoss();
} }
public List<Ort> zufallsorteFahrrad(int maxEntfernung) { public List<Ort> zufallsorteFahrrad(int maxEntfernung) {
return kurztripEmpfehlung.zufallsorteFahrrad(maxEntfernung); return kurztripEmpfehlung.zufallsorteFahrrad(maxEntfernung);
} }
public List<Ort> zufallsortePKW(int minEntfernung) { public List<Ort> zufallsortePKW(int minEntfernung) {
return kurztripEmpfehlung.zufallsortePKW(minEntfernung); return kurztripEmpfehlung.zufallsortePKW(minEntfernung);
} }
} }

View File

@ -6,7 +6,6 @@ import domain.Auto;
public class UserFassade { public class UserFassade {
public User registrieren(String username, String password, int plz, String ortName, String autoName, public User registrieren(String username, String password, int plz, String ortName, String autoName,
double co2AusstossProKm, double durchschnittsgeschwindigkeitPKW, double co2AusstossProKm, double durchschnittsgeschwindigkeitPKW,
double durchschnittsgeschwindigkeitFahrrad) { double durchschnittsgeschwindigkeitFahrrad) {
@ -19,7 +18,6 @@ public class UserFassade {
} }
public User einloggen(String username, String password) { public User einloggen(String username, String password) {
User user = new User(username, password, null, null, 0, 0); User user = new User(username, password, null, null, 0, 0);
if (user.einloggen()) { if (user.einloggen()) {
return user; return user;

View File

@ -19,7 +19,7 @@ public class UserInterface {
public UserInterface() { public UserInterface() {
this.reiseFacade = new ReiseFassade(user); 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();
@ -30,7 +30,6 @@ public class UserInterface {
boolean exit = false; boolean exit = false;
System.out.println("\t\t\t Willkommen zur Travel-Buddy-App!"); System.out.println("\t\t\t Willkommen zur Travel-Buddy-App!");
System.out.println("\t\t\t --------------------------------"); System.out.println("\t\t\t --------------------------------");
while (!exit) { while (!exit) {
System.out.println("1. Registrieren"); System.out.println("1. Registrieren");
System.out.println("2. Einloggen"); System.out.println("2. Einloggen");
@ -124,95 +123,51 @@ public class UserInterface {
reiseFacade.setHeimatortFromUser(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().getName() + ": " + 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:(");
} }
} }
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(); String ortName = scanner.nextLine();
/*
// Search for the location * List<Ort> treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) {
Ort[] treffer = reiseFacade.sucheOrt(ortName); * System.out.println("Keine Treffer gefunden."); } else {
* System.out.println("Trefferliste:"); for (Ort ort : treffer) {
if (treffer.length == 0) { * System.out.println(ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")"); String
System.out.println("Keine Treffer gefunden."); * wetter = user.zeigeWettervorhersageHeimatstandort();
} else { * System.out.println("Aktuelles Wetter in " +
System.out.println("Trefferliste:"); * user.getHeimatstandort().getOrtName() + ": " + wetter); } }
for (int i = 0; i < treffer.length; i++) { */
Reiseplanung reiseplanung = new Reiseplanung(user, treffer[i]); }
System.out.println((i + 1) + ". " + treffer[i].getName() + " (PLZ: " + treffer[i].getPLZ() +
"), Entfernung: " + reiseplanung.getEntfernung() + " km");
String wettervorhersage = reiseFacade.getWettervorhersage(treffer[i].getName());
System.out.println(wettervorhersage);
}
// Display the current weather at the user's home location
String wetter = reiseFacade.getAktuellesWetter(user.getHeimatstandort().getName());
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getName() + ": " + wetter);
// Choose a location from the list
System.out.println("Wählen Sie einen Ort aus: ");
System.out.println("Geben Sie 'beenden' ein, um zu beenden");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("beenden")) {
return;
}
try {
int eingabe = Integer.parseInt(input);
if (eingabe < 1 || eingabe > treffer.length) {
System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
} else {
System.out.println(reiseFacade.ortAnzeige(eingabe, treffer));
}
} catch (NumberFormatException e) {
System.out.println("Ungültige Eingabe. Bitte geben Sie eine Zahl ein.");
}
}
}
private void planeReise() { private void planeReise() {
System.out.print("Geben Sie die Ziel-PLZ ein: "); System.out.print("Geben Sie Ihre Start-PLZ ein: ");
int zielPlz = Integer.parseInt(scanner.nextLine()); int startPlz = Integer.parseInt(scanner.nextLine());
System.out.print("Geben Sie den Zielort ein: "); System.out.print("Geben Sie Ihren Startort ein: ");
String zielOrtName = scanner.nextLine(); String startOrtName = scanner.nextLine();
Ort startort = new Ort(startPlz, startOrtName);
// Lade alle Orte, um den Ort mit den GPS-Koordinaten zu erhalten System.out.print("Geben Sie die Ziel-PLZ ein: ");
List<Ort> alleOrte = reiseFacade.ladeAlleOrte(); int zielPlz = Integer.parseInt(scanner.nextLine());
Ort zielort = null; System.out.print("Geben Sie den Zielort ein: ");
for (Ort ort : alleOrte) { String zielOrtName = scanner.nextLine();
if (ort.getPLZ() == zielPlz && ort.getName().equalsIgnoreCase(zielOrtName)) { Ort zielort = new Ort(zielPlz, zielOrtName);
zielort = ort;
break;
}
}
if (zielort != null) { /*
System.out.println(reiseFacade.getReiseplanung(user, zielort)); * Reiseplanung reise = reiseFacade.planeReise(startort, zielort);
} else { * System.out.println("Reiseplanung:"); System.out.println("Entfernung: " +
System.out.println("Der Zielort wurde nicht gefunden."); * 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() {
if (user != null && user.getHeimatstandort() != null) { if (user != null && user.getHeimatstandort() != null) {
System.out.println("Empfehlung basiert auf Heimatort: " + user.getHeimatstandort().getName()); System.out.println("Empfehlung basiert auf Heimatort: " + user.getHeimatstandort().getOrtName());
reiseFacade.setHeimatortFromUser(user); reiseFacade.setHeimatortFromUser(user);
@ -256,7 +211,7 @@ public class UserInterface {
KurztripEmpfehlung kurztripEmpfehlung = new KurztripEmpfehlung(); KurztripEmpfehlung kurztripEmpfehlung = new KurztripEmpfehlung();
for (Ort ort : empfohleneOrte) { for (Ort ort : empfohleneOrte) {
double entfernung = kurztripEmpfehlung.berechneEntfernung(user.getHeimatstandort(), ort); double entfernung = kurztripEmpfehlung.berechneEntfernung(user.getHeimatstandort(), ort);
System.out.printf("- %s (PLZ: %d, Entfernung: %.1f km)%n", ort.getName(), ort.getPLZ(), entfernung); System.out.printf("- %s (PLZ: %d, Entfernung: %.1f km)%n", ort.getOrtName(), ort.getPLZ(), entfernung);
} }
} else { } else {
System.out.println("Keine Orte gefunden."); System.out.println("Keine Orte gefunden.");
@ -267,6 +222,7 @@ public class UserInterface {
System.out.println("Bitte zuerst einloggen und Heimatort angeben!"); System.out.println("Bitte zuerst einloggen und Heimatort angeben!");
} }
} }
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -1,80 +0,0 @@
package domain;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
public class ReiseplanungTest {
private Auto auto;
private Ort startOrt;
private Ort zielOrt;
private User user;
private Reiseplanung reiseplanung;
@Before
public void setUp() {
auto = new Auto("Brummi", 167.6); // CO2-Ausstoß in g/km
startOrt = new Ort(1067, "Dresden", 13.7210676148814, 51.0600336463379);
user = new User("Karl", "hallo", startOrt, auto, 70, 15); // Durchschnittsgeschwindigkeit PKW und Fahrrad
zielOrt = new Ort(1705, "Freital", 13.6382950999229, 50.9981963286759);
reiseplanung = new Reiseplanung(user, zielOrt);
}
@Test
public void testBerechneEntfernung() {
double result = reiseplanung.berechneEntfernung(startOrt, zielOrt);
// This value needs to be verified and adjusted if necessary
assertEquals(14.2125, result, 0.1);
}
@Test
public void testBerechneDauer() {
double entfernung = 136.5;
double geschwindigkeit = 70; // Durchschnittsgeschwindigkeit in km/h
double result = reiseplanung.berechneDauer(geschwindigkeit);
assertEquals(1.95, result, 0.01);
}
@Test
public void testBerechneCO2Ausstoß() {
double entfernung = 73.8;
double result = reiseplanung.berechneCO2Ausstoß(auto);
assertEquals(12368.88, result, 0.01);
}
@Test
public void testGetEntfernung() {
assertEquals(14.2125, reiseplanung.getEntfernung(), 0.1);
}
@Test
public void testGetDauerPKW() {
double geschwindigkeit = user.getDurchschnittsgeschwindigkeitPKW();
double erwarteteDauer = 14.2125 / geschwindigkeit;
assertEquals(erwarteteDauer, reiseplanung.getDauerPKW(), 0.1);
}
@Test
public void testGetDauerFahrrad() {
double geschwindigkeit = user.getDurchschnittsgeschwindigkeitFahrrad();
double erwarteteDauer = 14.2125 / geschwindigkeit;
assertEquals(erwarteteDauer, reiseplanung.getDauerFahrrad(), 0.1);
}
@Test
public void testGetCO2Ausstoß() {
double erwarteterCO2Ausstoß = 14.2125 * auto.getCO2AusstossProKm();
assertEquals(erwarteterCO2Ausstoß, reiseplanung.getCO2Ausstoß(), 0.1);
}
@Test
public void testToString() {
String expected = "Von " + startOrt.getName() + " Nach " + zielOrt.getName() +
"\nEntfernung: " + reiseplanung.getEntfernung() +
"\nReisedauer mit dem PKW: " + reiseplanung.getDauerPKW() +
"\nReisedauer mit dem Fahrrad: " + reiseplanung.getDauerFahrrad() +
"\nCO2-Ausstoß durch PKW: " + reiseplanung.getCO2Ausstoß();
assertEquals(expected, reiseplanung.toString());
}
}

View File

@ -64,7 +64,7 @@ public class UserTest {
assertTrue(testUser.einloggen()); assertTrue(testUser.einloggen());
// Überprüfe, ob die Userdaten korrekt gesetzt wurden // Überprüfe, ob die Userdaten korrekt gesetzt wurden
assertEquals("Teststadt", testUser.getHeimatstandort().getName()); assertEquals("Teststadt", testUser.getHeimatstandort().getOrtName());
assertEquals("Testauto", testUser.getAuto().getName()); assertEquals("Testauto", testUser.getAuto().getName());
assertEquals(0.12, testUser.getAuto().getCO2AusstossProKm(), 0.001); // Delta für Genauigkeit assertEquals(0.12, testUser.getAuto().getCO2AusstossProKm(), 0.001); // Delta für Genauigkeit
assertEquals(80.0, testUser.getDurchschnittsgeschwindigkeitPKW(), 0.001); // Delta für Genauigkeit assertEquals(80.0, testUser.getDurchschnittsgeschwindigkeitPKW(), 0.001); // Delta für Genauigkeit

View File

@ -1,6 +1,4 @@
max,5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5,10115,Berlin,VW,120.0,60.0,20.0 dana,a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3,67105,Schifferstadt,audi,123.0,60.0,30.0
lisa,0ffe1abd1a08215353c233d6e009613e95eec4253832a761af28ff37ac5a150c,80331,Münnchen,auto,120.0,60.0,30.0 max,a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3,555,berlin,audi,12.0,23.0,34.0
anna,9b8769a4a742959a2d0298c36fb70623f2dfacda8436237df08d8dfd5b37374c,76131,Karlsruhe,auto1,110.0,60.0,20.0 tina,a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3,1328,Dresden,audi,12.0,34.0,56.0
mike,20f3765880a5c269b747e1e906054a4b4a3a991259f1e16b5dde4742cec2319a,68159,Mannheim,auti2,130.0,50.0,20.0 dan,0ffe1abd1a08215353c233d6e009613e95eec4253832a761af28ff37ac5a150c,76131,Karlsruhe,tesla,23.0,120.0,40.0
sven,e0bc60c82713f64ef8a57c0c40d02ce24fd0141d5cc3086259c19b1e62a62bea,69115,Heidelberg,auto3,120.0,60.0,30.0