Tiket Pesawat

 

Nama           : Hafidz Panji Ashari
NRP             : 5025231278
Kelas            : PBO-A


Kode ini membuat sistem reservasi tiket pesawat yang mendukung tiga kelas penerbangan (Ekonomi, Bisnis, First Class), menghitung tarif berdasarkan kebijakan diskon atau tambahan biaya, dan menampilkan detail tiket yang dimasukkan oleh pengguna.


  • Superclass Ticket:

    • Kelas abstrak yang berfungsi sebagai template dasar untuk semua jenis tiket.
    • Memiliki atribut passengerName (nama penumpang) dan baseFare (tarif dasar).
    • Metode abstrak calculateFare() harus diimplementasikan oleh subclass.
    • displayTicketDetails() menampilkan detail tiket.
  • Subclass EconomyTicket, BusinessTicket, FirstClassTicket:

    • Masing-masing subclass mewarisi dari Ticket dan mengoverride metode calculateFare():
      • EconomyTicket: Memberikan diskon 10% dari tarif dasar.
      • BusinessTicket: Menambahkan biaya 25% ke tarif dasar.
      • FirstClassTicket: Menambahkan biaya 50% ke tarif dasar.
    • Setiap subclass menampilkan informasi tambahan seperti diskon atau biaya tambahan.
  • Kelas AirlineReservationSystem (Main Class):

    • Menggunakan Scanner untuk membaca input dari pengguna: nama penumpang, tarif dasar, dan pilihan kelas.
    • Berdasarkan pilihan pengguna, program membuat objek dari kelas tiket yang sesuai.
    • Menampilkan detail tiket menggunakan metode displayTicketDetails().
    • Menutup Scanner untuk menghindari kebocoran sumber daya.

    import java.util.Scanner;

    abstract class Ticket {
        protected String passengerName;
        protected double baseFare;

        public Ticket(String passengerName, double baseFare) {
            this.passengerName = passengerName;
            this.baseFare = baseFare;
        }

        public abstract double calculateFare();

        public void displayTicketDetails() {
            System.out.println("Passenger Name: " + passengerName);
            System.out.println("Base Fare: $" + baseFare);
            System.out.println("Total Fare: $" + calculateFare());
        }
    }

    class EconomyTicket extends Ticket {
        private final double discountRate = 0.10;

        public EconomyTicket(String passengerName, double baseFare) {
            super(passengerName, baseFare);
        }

        @Override
        public double calculateFare() {
            return baseFare - (baseFare * discountRate);
        }

        @Override
        public void displayTicketDetails() {
            super.displayTicketDetails();
            System.out.println("Class: Economy");
            System.out.println("Discount Applied: " + (discountRate * 100) + "%");
        }
    }

    class BusinessTicket extends Ticket {
        private final double additionalChargeRate = 0.25;

        public BusinessTicket(String passengerName, double baseFare) {
            super(passengerName, baseFare);
        }

        @Override
        public double calculateFare() {
            return baseFare + (baseFare * additionalChargeRate);
        }

        @Override
        public void displayTicketDetails() {
            super.displayTicketDetails();
            System.out.println("Class: Business");
            System.out.println("Additional Charge: " + (additionalChargeRate * 100) + "%");
        }
    }

    class FirstClassTicket extends Ticket {
        private final double additionalChargeRate = 0.50;

        public FirstClassTicket(String passengerName, double baseFare) {
            super(passengerName, baseFare);
        }

        @Override
        public double calculateFare() {
            return baseFare + (baseFare * additionalChargeRate);
        }

        @Override
        public void displayTicketDetails() {
            super.displayTicketDetails();
            System.out.println("Class: First Class");
            System.out.println("Additional Charge: " + (additionalChargeRate * 100) + "%");
        }
    }

    public class AirlineReservationSystem {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            System.out.print("Enter passenger name: ");
            String passengerName = scanner.nextLine();

            System.out.print("Enter base fare: ");
            double baseFare = scanner.nextDouble();

            System.out.println("Select class (1: Economy, 2: Business, 3: First Class): ");
            int classChoice = scanner.nextInt();

            Ticket ticket;
            switch (classChoice) {
                case 1:
                    ticket = new EconomyTicket(passengerName, baseFare);
                    break;
                case 2:
                    ticket = new BusinessTicket(passengerName, baseFare);
                    break;
                case 3:
                    ticket = new FirstClassTicket(passengerName, baseFare);
                    break;
                default:
                    System.out.println("Invalid choice. Defaulting to Economy.");
                    ticket = new EconomyTicket(passengerName, baseFare);
                    break;
            }

            System.out.println("\nTicket Details:");
            ticket.displayTicketDetails();

            scanner.close();
        }
    }


    output

















    Comments

    Popular posts from this blog

    Daily Task Manager

    EAS

    DisplayClock