0% found this document useful (0 votes)
72 views15 pages

Código Fuente de Plataforma de Transporte

Codify fuente

Uploaded by

Alex Chochom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views15 pages

Código Fuente de Plataforma de Transporte

Codify fuente

Uploaded by

Alex Chochom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Código Fuente: Proyecto Práctico

1) Código User:

public abstract class User {


private String fullName;
private String emailAddress;

protected User(String fullName, String


emailAddress) {
this.fullName = fullName;
this.emailAddress = emailAddress;
}

public String getFullName() {


return fullName;
}

public String getEmailAddress() {


return emailAddress;
}

public abstract void displayInfo();


}

2) Código fuente: Drive.

import java.util.List;
import java.util.ArrayList;

public class Driver extends User {


private String carModel;
private String currentLocation;
private boolean isAvailable;
private List<Integer> ratings; // Lista de
calificaciones

public Driver(String name, String email, String


carModel, String currentLocation, boolean
isAvailable) {
super(name, email);
this.carModel = carModel;
this.currentLocation = currentLocation;
this.isAvailable = isAvailable;
this.ratings = new ArrayList<>();
}

public String getCurrentLocation() {


return currentLocation;
}

public boolean checkAvailability() {


return isAvailable;
}

public void setAvailability(boolean isAvailable)


{
this.isAvailable = isAvailable;
}

public void addRating(int rating) {


this.ratings.add(rating);
}

public double calculateAverageRating() {


if (ratings.isEmpty()) {
return 0;
}
double total = 0;
for (int rating : ratings) {
total += rating;
}
return total / ratings.size();
}
@Override
public void displayInfo() {
System.out.println("Driver: " +
getFullName() + ", Email: " + getFullName()+ ",
Modelo de coche: " + carModel +
", Ubicación actual: " +
currentLocation + ", Disponible: " + (isAvailable ?
"Sí" : "No") +
", Calificación promedio: " +
String.format("%.2f", calculateAverageRating()));
}
}

3) Código fuente: Passenger.

public class Passenger extends User {

public Passenger(String name, String


contactEmail) {
super(name, contactEmail);
}

@Override
public void displayInfo() {
System.out.println("Passenger: " +
getFullName() + ", Email: " + getEmailAddress());
}
}

4) Código fuente: Payment.


public class Payment {
private Passenger passenger;
private Driver driver;
private double amount;
public boolean isProcessed;

public Payment(Passenger passenger, Driver


driver, double amount) {
this.passenger = passenger;
this.driver = driver;
this.amount = amount;
this.isProcessed = false;
}

public void processPayment() {


this.isProcessed = true;
System.out.println("Payment processed
successfully for the amount of $" + amount);
}

public void displayPaymentInfo() {


System.out.println("Payment of $" + amount +
" - Passenger: " + passenger.getEmailAddress() + ",
Driver: " + driver.getEmailAddress() +
", Status: " + (isProcessed ?
"Processed" : "Pending"));
}

public Passenger getPassenger() {


return passenger;
}

public Driver getDriver() {


return driver;
}
}
5) Código fuente: Trip

public class Trip {


private Passenger passenger;
private Driver driver;
private String startLocation;
private String endLocation;
private double distance;
private double fare;
private boolean isCompleted;
private Payment payment;

public Trip(Passenger passenger, Driver driver,


String startLocation, String endLocation, double
distance) {
this.passenger = passenger;
this.driver = driver;
this.startLocation = startLocation;
this.endLocation = endLocation;
this.distance = distance;
this.fare = calculateFare(distance);
this.isCompleted = false;
}

private double calculateFare(double distance) {


double baseFare = 2.50; // tarifa base
double costPerKm = 1.75; // costo por cada
kilómetro
return baseFare + (costPerKm * distance);
}

public void markAsCompleted() {


this.isCompleted = true;
this.payment = new Payment(passenger,
driver, fare); // Crear el pago al completar el
viaje
System.out.println("The trip has been
completed. Fare: $" + fare);
}
public void processPayment() {
if (payment != null && !payment.isProcessed)
{
payment.processPayment();
} else {
System.out.println("The payment has
already been processed or is not available.");
}
}

public void displayInfo() {


System.out.println("Trip from " +
startLocation + " to " + endLocation);
System.out.println("Passenger: " +
passenger.getEmailAddress() + ", Driver: " +
driver.getEmailAddress());
System.out.println("Distance: " + distance +
" km, Fare: $" + fare);
System.out.println("Status: " + (isCompleted
if (payment != null) {
payment.displayPaymentInfo();
}
}

public boolean isCompleted() {


return isCompleted;
}

public Driver getDriver() {


return driver;
}

public Passenger getPassenger() {


return passenger;
}
}
6) Código fuente: TransportPlatform

import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;

public class TransportPlatform {


private static List<Driver> drivers = new
ArrayList<>();
private static List<Passenger> passengers = new
ArrayList<>();
private static List<Trip> trips = new
ArrayList<>();
private static Scanner scanner = new
Scanner(System.in);

public static void main(String[] args) {


int option;
do {
displayMenu();
option = scanner.nextInt();
scanner.nextLine(); // Limpiar buffer

switch (option) {
case 1:
registerDriver();
break;
case 2:
registerPassenger();
break;
case 3:
showDrivers();
break;
case 4:
showPassengers();
break;
case 5:
findDriversByLocation();
break;
case 6:
requestTrip();
break;
case 7:
markTripAsCompleted();
break;
case 8:
rateDriver();
break;
case 9:
processTripPayment();
break;
case 10:
showPaymentHistory();
break;
case 0:
System.out.println("Exiting the
system...");
break;
default:
System.out.println("Invalid
option. Please try again.");
}
} while (option != 0);
}

private static void displayMenu() {


System.out.println("\n** Transport Platform
Menu **");
System.out.println("1. Register new
driver");
System.out.println("2. Register new
passenger");
System.out.println("3. Show all drivers");
System.out.println("4. Show all
passengers");
System.out.println("5. Search for available
drivers by location");
System.out.println("6. Request a trip");
System.out.println("7. Mark a trip as
completed");
System.out.println("8. Rate a driver");
System.out.println("9. Process trip
payment");
System.out.println("10. Show payment
history");
System.out.println("0. Exit");
System.out.print("Select an option: ");
}

private static void registerDriver() {


System.out.print("Enter the driver's name:
");
String name = scanner.nextLine();
System.out.print("Enter the driver's email:
");
String email = scanner.nextLine();
System.out.print("Enter the driver's
vehicle: ");
String vehicle = scanner.nextLine();
System.out.print("Enter the driver's
location: ");
String location = scanner.nextLine();

Driver newDriver = new Driver(name, email,


vehicle, location, true);
drivers.add(newDriver);
System.out.println("Driver registered
successfully.");
}

private static void registerPassenger() {


System.out.print("Enter the passenger's
name: ");
String name = scanner.nextLine();
System.out.print("Enter the passenger's
email: ");
String email = scanner.nextLine();

Passenger newPassenger = new Passenger(name,


email);
passengers.add(newPassenger);
System.out.println("Passenger registered
successfully.");
}

private static void showDrivers() {


if (drivers.isEmpty()) {
System.out.println("No drivers
registered.");
} else {
System.out.println("\nList of
drivers:");
for (Driver driver : drivers) {
driver.displayInfo();
}
}
}

private static void showPassengers() {


if (passengers.isEmpty()) {
System.out.println("No passengers
registered.");
} else {
System.out.println("\nList of
passengers:");
for (Passenger passenger : passengers) {
passenger.displayInfo();
}
}
}

private static void findDriversByLocation() {


System.out.print("Enter the location to
search for drivers: ");
String location = scanner.nextLine();

boolean found = false;


for (Driver driver : drivers) {
if
(driver.getEmailAddress().equalsIgnoreCase(location)
&& driver.isAvailable()) {
driver.displayInfo();
found = true;
}
}

if (!found) {
System.out.println("No available drivers
found in this location.");
}
}

private static void requestTrip() {


System.out.print("Enter the passenger's
name: ");
String passengerName = scanner.nextLine();

Passenger passenger =
findPassengerByName(passengerName);
if (passenger == null) {
System.out.println("Passenger not
found.");
return;
}

System.out.print("Enter the starting


location: ");
String startLocation = scanner.nextLine();
System.out.print("Enter the destination: ");
String endLocation = scanner.nextLine();
System.out.print("Enter the distance of the
trip (in km): ");
double distance = scanner.nextDouble();
scanner.nextLine(); // Limpiar buffer

Driver assignedDriver =
findAvailableDriver(startLocation);
if (assignedDriver != null) {
Trip newTrip = new Trip(passenger,
assignedDriver, startLocation, endLocation,
distance);
trips.add(newTrip);
assignedDriver.setAvailability(false);
System.out.println("Trip assigned
successfully.");
newTrip.displayInfo();
} else {
System.out.println("No available drivers
in the requested location.");
}
}

private static void markTripAsCompleted() {


System.out.print("Enter the passenger's
name: ");
String passengerName = scanner.nextLine();

Trip trip =
findOngoingTripByPassenger(passengerName);
if (trip != null) {
trip.markAsCompleted();
trip.getDriver().setAvailability(true);
} else {
System.out.println("No ongoing trip
found for this passenger.");
}
}

private static void rateDriver() {


System.out.print("Enter the passenger's
name: ");
String passengerName = scanner.nextLine();

Trip trip =
findCompletedTripByPassenger(passengerName);
if (trip != null) {
System.out.print("Enter a rating for the
driver (1 to 5): ");
int rating = scanner.nextInt();
scanner.nextLine(); // Limpiar buffer
trip.getDriver().addRating(rating);
System.out.println("Rating recorded.");
} else {
System.out.println("No completed trip
found for this passenger.");
}
}

private static void processTripPayment() {


System.out.print("Enter the passenger's
name: ");
String passengerName = scanner.nextLine();

Trip trip =
findCompletedTripByPassenger(passengerName);
if (trip != null && !trip.isCompleted()) {
trip.processPayment();
} else {
System.out.println("No completed trip
found for this passenger.");
}
}

private static void showPaymentHistory() {


System.out.print("Enter the name of the
person (passenger or driver): ");
String personName = scanner.nextLine();

for (Trip trip : trips) {


if
(trip.getPassenger().getEmailAddress().equalsIgnoreC
ase(personName) ||

trip.getDriver().getEmailAddress().equalsIgnoreCase(
personName)) {
trip.displayInfo();
}
}
}

private static Passenger


findPassengerByName(String name) {
for (Passenger passenger : passengers) {
if
(passenger.getFullName().equalsIgnoreCase(name)) {
return passenger;
}
}
return null;
}

private static Driver findAvailableDriver(String


location) {
for (Driver driver : drivers) {
if
(driver.getCurrentLocation().equalsIgnoreCase(locati
on) && driver.isAvailable()) {
return driver;
}
}
return null;
}

private static Trip


findOngoingTripByPassenger(String passengerName) {
for (Trip trip : trips) {
if
(trip.getPassenger().getFullName().equalsIgnoreCase(
passengerName) && !trip.isCompleted()) {
return trip;
}
}
return null;
}

private static Trip


findCompletedTripByPassenger(String passengerName) {
for (Trip trip : trips) {
if
(trip.getPassenger().getFullName().equalsIgnoreCase(
passengerName) && trip.isCompleted()) {
return trip;
}
}
return null;
}
}

You might also like