q12
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class DeliveryStatusUpdate {
// Simulated database for parcel details
static Map<String, ParcelDetails> parcelDatabase = new HashMap<>();
public static void main(String[] args) {
// Prepopulate the database with sample parcel data
populateSampleData();
Scanner scanner = new Scanner(System.in);
System.out.println("Officer: Enter Booking ID to update Delivery Status: ");
String bookingId = scanner.nextLine().trim();
// Validate and display details
if (bookingId.isEmpty()) {
System.out.println("Error: Booking ID cannot be empty. Please provide a valid ID.");
} else if (parcelDatabase.containsKey(bookingId)) {
ParcelDetails details = parcelDatabase.get(bookingId);
displayParcelDetails(details);
// Allow the officer to update the status
System.out.println("\nEnter new Delivery Status (Booked | In Transit | Delivered | Returned): ");
String newStatus = scanner.nextLine().trim();
if (validateStatus(newStatus)) {
details.setParcelStatus(newStatus);
System.out.println("Success: Delivery Status updated successfully!");
displayParcelDetails(details);
} else {
System.out.println("Error: Invalid status entered. Allowed values are: Booked, In Transit, Delivered, Returned.");
}
} 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() {
ParcelDetails parcel1 = new ParcelDetails(
"BKG12345", "John Doe", "123 Main St, Springfield, USA",
"Alice Smith", "456 Elm St, Shelbyville, USA",
"2024-12-01", "In Transit"
);
ParcelDetails parcel2 = new ParcelDetails(
"BKG54321", "Jane Doe", "789 Maple Ave, Springfield, USA",
"Bob Brown", "321 Oak St, Shelbyville, USA",
"2024-12-02", "Booked"
);
parcelDatabase.put(parcel1.getBookingId(), parcel1);
parcelDatabase.put(parcel2.getBookingId(), parcel2);
}
// Method to display parcel details
private static void displayParcelDetails(ParcelDetails details) {
System.out.println("\nCurrent Parcel Details:");
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());
}
// Method to validate the new delivery status
private static boolean validateStatus(String status) {
return status.equalsIgnoreCase("Booked") ||
status.equalsIgnoreCase("In Transit") ||
status.equalsIgnoreCase("Delivered") ||
status.equalsIgnoreCase("Returned");
}
}
// Class to represent parcel details
class ParcelDetails {
private String bookingId;
private String fullName;
private String senderAddress;
private String receiverName;
private String receiverAddress;
private String dateOfBooking;
private String parcelStatus;
// Constructor
public ParcelDetails(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 and Setters
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; }
public void setParcelStatus(String parcelStatus) { this.parcelStatus = parcelStatus; }
}