Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class User {
- String username;
- String contactDetails;
- int x, y; // Location coordinates
- public User(String username, String contactDetails, int x, int y) {
- this.username = username;
- this.contactDetails = contactDetails;
- this.x = x;
- this.y = y;
- }
- public void updateDetails(String contactDetails) {
- this.contactDetails = contactDetails;
- }
- public void updateLocation(int x, int y) {
- this.x = x;
- this.y = y;
- }
- }
- class Driver {
- String name;
- String vehicleDetails;
- int x, y; // Location coordinates
- boolean available;
- double earnings;
- public Driver(String name, String vehicleDetails, int x, int y) {
- this.name = name;
- this.vehicleDetails = vehicleDetails;
- this.x = x;
- this.y = y;
- this.available = true;
- this.earnings = 0;
- }
- public void updateLocation(int x, int y) {
- this.x = x;
- this.y = y;
- }
- public void changeStatus(boolean available) {
- this.available = available;
- }
- }
- class CabBookingApp {
- List<User> users = new ArrayList<>();
- List<Driver> drivers = new ArrayList<>();
- public void addUser(String username, String contactDetails, int x, int y) {
- users.add(new User(username, contactDetails, x, y));
- }
- public void addDriver(String name, String vehicleDetails, int x, int y) {
- drivers.add(new Driver(name, vehicleDetails, x, y));
- }
- public List<Driver> findRide(String username, int destX, int destY) {
- List<Driver> availableDrivers = new ArrayList<>();
- for (Driver driver : drivers) {
- if (driver.available && getDistance(driver.x, driver.y, destX, destY) <= 5) {
- availableDrivers.add(driver);
- }
- }
- return availableDrivers;
- }
- public void chooseRide(String username, String driverName, int destX, int destY) {
- for (Driver driver : drivers) {
- if (driver.name.equals(driverName) && driver.available) {
- driver.available = false;
- double fare = calculateBill(driver.x, driver.y, destX, destY);
- driver.earnings += fare;
- System.out.println("Ride booked with " + driverName + ". Fare: " + fare);
- return;
- }
- }
- System.out.println("Driver not available!");
- }
- private double calculateBill(int startX, int startY, int destX, int destY) {
- return getDistance(startX, startY, destX, destY) * 10; // Assume 10 currency units per distance unit
- }
- public double findTotalEarnings() {
- return drivers.stream().mapToDouble(d -> d.earnings).sum();
- }
- private double getDistance(int x1, int y1, int x2, int y2) {
- return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
- }
- }
- public class Main {
- public static void main(String[] args) {
- CabBookingApp app = new CabBookingApp();
- app.addUser("Alice", "12345", 0, 0);
- app.addDriver("Bob", "Toyota", 2, 3);
- app.addDriver("Charlie", "Honda", 5, 5);
- List<Driver> rides = app.findRide("Alice", 5, 5);
- System.out.println("Available Drivers: " + rides.size());
- if (!rides.isEmpty()) {
- app.chooseRide("Alice", rides.get(0).name, 5, 5);
- }
- System.out.println("Total Earnings: " + app.findTotalEarnings());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement