Java Code
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class AirlineReservationSystem { private static final String DATABASE_FILE = "database.xml"; private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { try { loadDatabase(); while (true) { System.out.println("Airline Reservation System"); System.out.println("1. Make a reservation"); System.out.println("2. Cancel a reservation"); System.out.println("3. Display reservations"); System.out.println("4. Exit"); System.out.print("Enter your choice: "); int choice = scanner.nextInt(); scanner.nextLine(); // Consume newline switch (choice) { case 1: makeReservation(); break; case 2: cancelReservation(); break; case 3: displayReservations(); break; case 4: saveDatabase(); System.exit(0); break; default: System.out.println("Invalid choice. Please try again."); } } } catch (ParserConfigurationException | SAXException | IOException e) { e.printStackTrace(); } } private static void makeReservation() throws IOException { System.out.print("Enter passenger name: "); String passengerName = scanner.nextLine(); System.out.print("Enter flight number: "); String flightNumber = scanner.nextLine(); System.out.print("Enter date of travel: "); String dateOfTravel = scanner.nextLine(); System.out.print("Enter seat number: "); String seatNumber = scanner.nextLine(); Element reservation = createReservationElement(passengerName, flightNumber, dateOfTravel, seatNumber); appendReservationToDatabase(reservation); System.out.println("Reservation created successfully."); } private static Element createReservationElement(String passengerName, String flightNumber, String dateOfTravel, String seatNumber) { Document doc = getDocument(); Element reservation = doc.createElement("Reservation"); Element passengerNameElement = doc.createElement("PassengerName"); passengerNameElement.appendChild(doc.createTextNode(passengerName)); reservation.appendChild(passengerNameElement); Element flightNumberElement = doc.createElement("FlightNumber"); flightNumberElement.appendChild(doc.createTextNode(flightNumber)); reservation.appendChild(flightNumberElement); Element dateOfTravelElement = doc.createElement("DateOfTravel"); dateOfTravelElement.appendChild(doc.createTextNode(dateOfTravel)); reservation.appendChild(dateOfTravelElement); Element seatNumberElement = doc.createElement("SeatNumber"); seatNumberElement.appendChild(doc.createTextNode(seatNumber)); reservation.appendChild(seatNumberElement); return reservation; } private static void appendReservationToDatabase(Element reservation) throws IOException { Document doc = getDocument(); Node root = doc.getDocumentElement(); root.appendChild(reservation); saveDatabase(); } private static void cancelReservation() throws IOException { System.out.print("Enter flight number: "); String flightNumber = scanner.nextLine(); System.out.print("Enter seat number: "); String seatNumber = scanner.nextLine(); boolean reservationCancelled = removeReservationFromDatabase(flightNumber, seatNumber); if (reservationCancelled) { System.out.println("Reservation cancelled successfully."); } else { System.out.println("No matching reservation found."); } } private static boolean removeReservationFromDatabase(String flightNumber, String seatNumber) throws IOException { Document doc = getDocument(); Node root = doc.getDocumentElement(); NodeList reservationList = root.getChildNodes(); for (int i = 0; i < reservationList.getLength(); i++) { Node reservationNode = reservationList.item(i); if (reservationNode.getNodeType() == Node.ELEMENT_NODE) { Element reservation = (Element) reservationNode; String savedFlightNumber = reservation.getElementsByTagName("FlightNumber").item(0).getTextContent(); String savedSeatNumber = reservation.getElementsByTagName("SeatNumber").item(0).getTextContent(); if (savedFlightNumber.equals(flightNumber) && savedSeatNumber.equals(seatNumber)) { root.removeChild(reservation); saveDatabase(); return true; } } } return false; } private static void displayReservations() throws IOException { Document doc = getDocument(); Node root = doc.getDocumentElement(); NodeList reservationList = root.getChildNodes(); System.out.println("Reservations:"); for (int i = 0; i < reservationList.getLength(); i++) { Node reservationNode = reservationList.item(i); if (reservationNode.getNodeType() == Node.ELEMENT_NODE) { Element reservation = (Element) reservationNode; String passengerName = reservation.getElementsByTagName("PassengerName").item(0).getTextContent(); String flightNumber = reservation.getElementsByTagName("FlightNumber").item(0).getTextContent(); String dateOfTravel = reservation.getElementsByTagName("DateOfTravel").item(0).getTextContent(); String seatNumber = reservation.getElementsByTagName("SeatNumber").item(0).getTextContent(); System.out.println("Passenger: " + passengerName); System.out.println("Flight: " + flightNumber); System.out.println("Date of Travel: " + dateOfTravel); System.out.println("Seat Number: " + seatNumber); System.out.println("---------------------"); } } } private static Document getDocument() throws ParserConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); try { doc = builder.parse(DATABASE_FILE); doc.getDocumentElement().normalize(); } catch (SAXException | IOException e) { // Database file does not exist, create a new document with root element Element rootElement = doc.createElement("Reservations"); doc.appendChild(rootElement); } return doc; } private static void loadDatabase() throws ParserConfigurationException, SAXException, IOException { File file = new File(DATABASE_FILE); if (!file.exists()) { // Database file does not exist, create a new document with root element DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element rootElement = doc.createElement("Reservations"); doc.appendChild(rootElement); saveDatabase(); } } private static void saveDatabase() throws IOException { Document doc = getDocument(); FileWriter writer = new FileWriter(DATABASE_FILE); XmlUtils.writeDocument(doc, writer); writer.close(); } }