OneCompiler

q10

677

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class OfficerParcelTracking {

// Simulated database for tracking parcel details
static Map<String, TrackingDetails> trackingDatabase = new HashMap<>();

public static void main(String[] args) {
    // Prepopulate the database with sample tracking data
    populateSampleData();

    Scanner scanner = new Scanner(System.in);
    System.out.println("Officer: Enter Booking ID to check tracking status: ");
    String bookingId = scanner.nextLine().trim();

    // Fetch and display tracking details
    if (bookingId.isEmpty()) {
        System.out.println("Error: Booking ID cannot be empty. Please provide a valid ID.");
    } else if (trackingDatabase.containsKey(bookingId)) {
        TrackingDetails details = trackingDatabase.get(bookingId);
        displayTrackingStatus(details);
    } else {
        System.out.println("Error: Booking ID not found in the system. Please verify the ID.");
    }

    scanner.close();
}

// Method to populate sample data
private static void populateSampleData() {
    TrackingDetails tracking1 = new TrackingDetails(
        "BKG12345", "John Doe", "123 Main St, Springfield, USA",
        "Alice Smith", "456 Elm St, Shelbyville, USA", 
        "2024-12-01", "In Transit"
    );

    TrackingDetails tracking2 = new TrackingDetails(
        "BKG54321", "Jane Doe", "789 Maple Ave, Springfield, USA",
        "Bob Brown", "321 Oak St, Shelbyville, USA", 
        "2024-12-02", "Delivered"
    );

    trackingDatabase.put(tracking1.getBookingId(), tracking1);
    trackingDatabase.put(tracking2.getBookingId(), tracking2);
}

// Method to display tracking status
private static void displayTrackingStatus(TrackingDetails details) {
    System.out.println("\nTracking Status:");
    System.out.println("Booking ID: " + details.getBookingId());
    System.out.println("Full Name: " + details.getFullName());
    System.out.println("Sender Address: " + details.getSenderAddress());
    System.out.println("Receiver Name: " + details.getReceiverName());
    System.out.println("Receiver Address: " + details.getReceiverAddress());
    System.out.println("Date of Booking: " + details.getDateOfBooking());
    System.out.println("Parcel Status: " + details.getParcelStatus());
    System.out.println("Status: Tracking details retrieved successfully.");
}

}

// Class to represent tracking details
class TrackingDetails {
private String bookingId;
private String fullName;
private String senderAddress;
private String receiverName;
private String receiverAddress;
private String dateOfBooking;
private String parcelStatus;

// Constructor
public TrackingDetails(String bookingId, String fullName, String senderAddress,
                       String receiverName, String receiverAddress, String dateOfBooking,
                       String parcelStatus) {
    this.bookingId = bookingId;
    this.fullName = fullName;
    this.senderAddress = senderAddress;
    this.receiverName = receiverName;
    this.receiverAddress = receiverAddress;
    this.dateOfBooking = dateOfBooking;
    this.parcelStatus = parcelStatus;
}

// Getters
public String getBookingId() { return bookingId; }
public String getFullName() { return fullName; }
public String getSenderAddress() { return senderAddress; }
public String getReceiverName() { return receiverName; }
public String getReceiverAddress() { return receiverAddress; }
public String getDateOfBooking() { return dateOfBooking; }
public String getParcelStatus() { return parcelStatus; }

}