q13
import java.time.LocalDate;
import java.util.*;
public class PreviousBookingDetails {
// Simulated database for booking details
static Map<String, List<BookingDetails>> bookingDatabase = new HashMap<>();
public static void main(String[] args) {
// Prepopulate the database with sample booking data
populateSampleData();
Scanner scanner = new Scanner(System.in);
System.out.println("Officer: Enter Customer ID to view Previous Bookings: ");
String customerId = scanner.nextLine().trim();
// Validate and retrieve previous bookings
if (customerId.isEmpty()) {
System.out.println("Error: Customer ID cannot be empty. Please provide a valid ID.");
} else if (bookingDatabase.containsKey(customerId)) {
List<BookingDetails> bookings = bookingDatabase.get(customerId);
// Sort bookings by date in descending order
bookings.sort((b1, b2) -> b2.getBookingDate().compareTo(b1.getBookingDate()));
// Display the sorted bookings
displayBookingDetails(bookings);
} else {
System.out.println("Error: Customer ID not found in the system. Please verify the ID.");
}
scanner.close();
}
// Method to populate sample data
private static void populateSampleData() {
List<BookingDetails> customer1Bookings = Arrays.asList(
new BookingDetails("CUST001", "BKG001", LocalDate.of(2024, 12, 1), "Alice Smith", "456 Elm St, Shelbyville, USA", 50.0, "Delivered"),
new BookingDetails("CUST001", "BKG002", LocalDate.of(2024, 11, 25), "Bob Brown", "321 Oak St, Springfield, USA", 30.0, "In Transit"),
new BookingDetails("CUST001", "BKG003", LocalDate.of(2024, 11, 20), "Charlie Davis", "789 Maple Ave, Springfield, USA", 70.0, "Booked")
);
List<BookingDetails> customer2Bookings = Arrays.asList(
new BookingDetails("CUST002", "BKG004", LocalDate.of(2024, 11, 15), "David Evans", "123 Main St, Shelbyville, USA", 45.0, "Delivered"),
new BookingDetails("CUST002", "BKG005", LocalDate.of(2024, 11, 10), "Eve Foster", "987 Birch St, Springfield, USA", 60.0, "Returned")
);
bookingDatabase.put("CUST001", customer1Bookings);
bookingDatabase.put("CUST002", customer2Bookings);
}
// Method to display booking details
private static void displayBookingDetails(List<BookingDetails> bookings) {
System.out.printf("\n%-12s %-12s %-15s %-20s %-30s %-10s %-10s\n",
"Customer ID", "Booking ID", "Booking Date", "Receiver Name", "Delivered Address", "Amount", "Status");
System.out.println("---------------------------------------------------------------------------------------------------------");
for (BookingDetails booking : bookings) {
System.out.printf("%-12s %-12s %-15s %-20s %-30s %-10.2f %-10s\n",
booking.getCustomerId(), booking.getBookingId(), booking.getBookingDate(),
booking.getReceiverName(), booking.getDeliveredAddress(),
booking.getAmount(), booking.getStatus());
}
}
}
// Class to represent booking details
class BookingDetails {
private String customerId;
private String bookingId;
private LocalDate bookingDate;
private String receiverName;
private String deliveredAddress;
private double amount;
private String status;
// Constructor
public BookingDetails(String customerId, String bookingId, LocalDate bookingDate,
String receiverName, String deliveredAddress,
double amount, String status) {
this.customerId = customerId;
this.bookingId = bookingId;
this.bookingDate = bookingDate;
this.receiverName = receiverName;
this.deliveredAddress = deliveredAddress;
this.amount = amount;
this.status = status;
}
// Getters
public String getCustomerId() { return customerId; }
public String getBookingId() { return bookingId; }
public LocalDate getBookingDate() { return bookingDate; }
public String getReceiverName() { return receiverName; }
public String getDeliveredAddress() { return deliveredAddress; }
public double getAmount() { return amount; }
public String getStatus() { return status; }
}