Mochamad Kolbi Nuron_5025231183_PBO A 12
Nama : Mochamad Kolbi Nuron
NRP : 5025231183
Kelas : PBO A tugas 12
IMPLEMENTASI TIKET PESAWAT
class Flight:
def __init__(self, flight_code, departure, arrival, economy_price, business_price, first_class_price):
self.flight_code = flight_code
self.departure = departure
self.arrival = arrival
self.economy_price = economy_price
self.business_price = business_price
self.first_class_price = first_class_price
def __str__(self):
return (f"{self.flight_code} | {self.departure} -> {self.arrival} "
f"| Ekonomi: Rp {self.economy_price} | Bisnis: Rp {self.business_price} | First Class: Rp {self.first_class_price}")
class TicketBooking:
def __init__(self):
self.flights = []
self.booked_tickets = []
def add_flight(self, flight):
self.flights.append(flight)
def show_flights(self):
print("\nDaftar Penerbangan yang Tersedia:")
for idx, flight in enumerate(self.flights, 1):
print(f"{idx}. {flight}")
def show_class_info(self, flight, class_type):
if class_type == 'Ekonomi':
base_fare = flight.economy_price
baggage = '15kg'
facilities = 'Kursi standar, makanan ringan, hiburan sederhana'
elif class_type == 'Bisnis':
base_fare = flight.business_price
baggage = '30kg'
facilities = 'Kursi lebih nyaman, makanan premium, hiburan lebih baik'
elif class_type == 'First Class':
base_fare = flight.first_class_price
baggage = '40kg'
facilities = 'Kursi tidur, makanan gourmet, layanan pribadi, hiburan kelas atas'
else:
print("Kelas tidak valid")
return
print(f"\nKelas {class_type} pada penerbangan {flight.flight_code}:")
print(f"Base Fare: Rp {base_fare}")
print(f"Batas Bagasi: {baggage}")
print(f"Fasilitas: {facilities}")
def calculate_total_fare(self, base_fare):
# Biaya tambahan (misalnya pajak dan biaya layanan)
tax_service_fee = 0.1 * base_fare # 10% dari base fare sebagai pajak dan layanan
total_fare = base_fare + tax_service_fee
return total_fare
def book_ticket(self, flight_index, class_type, passenger_name):
if 0 < flight_index <= len(self.flights):
flight = self.flights[flight_index - 1]
if class_type == 'Ekonomi':
base_fare = flight.economy_price
elif class_type == 'Bisnis':
base_fare = flight.business_price
elif class_type == 'First Class':
base_fare = flight.first_class_price
else:
print("Kelas tidak valid.")
return
total_fare = self.calculate_total_fare(base_fare)
ticket = {
'passenger': passenger_name,
'flight': flight,
'class': class_type,
'base_fare': base_fare,
'total_fare': total_fare
}
self.booked_tickets.append(ticket)
print(f"\nTiket berhasil dipesan untuk {passenger_name}!")
print(f"Detail Penerbangan: {flight.flight_code} | {class_type} | Base Fare: Rp {base_fare} | Total Fare: Rp {total_fare}")
else:
print("Pilihan tidak valid. Silakan pilih nomor penerbangan yang benar.")
def show_booked_tickets(self):
if not self.booked_tickets:
print("\nBelum ada tiket yang dipesan.")
else:
print("\nTiket yang sudah dipesan:")
for ticket in self.booked_tickets:
print(f"{ticket['passenger']} | {ticket['flight'].flight_code} | {ticket['class']} | Base Fare: Rp {ticket['base_fare']} | Total Fare: Rp {ticket['total_fare']}")
def main():
booking_system = TicketBooking()
# Menambahkan penerbangan
booking_system.add_flight(Flight("GA 101", "Jakarta", "Bali", 1500000, 3000000, 5000000))
booking_system.add_flight(Flight("GA 102", "Jakarta", "Surabaya", 1000000, 2500000, 4500000))
booking_system.add_flight(Flight("GA 103", "Bali", "Surabaya", 1200000, 2700000, 4800000))
while True:
print("\n--- Sistem Pemesanan Tiket Pesawat ---")
print("1. Lihat Penerbangan")
print("2. Pesan Tiket")
print("3. Lihat Tiket yang Dipesan")
print("4. Keluar")
choice = input("Pilih menu (1/2/3/4): ")
if choice == '1':
booking_system.show_flights()
elif choice == '2':
booking_system.show_flights()
flight_idx = int(input("Pilih penerbangan yang ingin dipesan (nomor): "))
class_type = input("Pilih kelas (Ekonomi/Bisnis/First Class): ").capitalize()
passenger_name = input("Masukkan nama penumpang: ")
booking_system.show_class_info(booking_system.flights[flight_idx - 1], class_type)
book_choice = input("Apakah Anda ingin melanjutkan pemesanan? (ya/tidak): ").lower()
if book_choice == 'ya':
booking_system.book_ticket(flight_idx, class_type, passenger_name)
elif choice == '3':
booking_system.show_booked_tickets()
elif choice == '4':
print("Terima kasih telah menggunakan sistem pemesanan tiket!")
break
else:
print("Pilihan tidak valid, silakan coba lagi.")
if __name__ == "__main__":
main()
Class Flight
(Penerbangan)
Tujuan:
Class Flight
digunakan untuk menyimpan data tentang penerbangan tertentu, seperti kode penerbangan, tempat keberangkatan, tempat tujuan, serta harga untuk setiap kelas penerbangan yang tersedia.
__init__
adalah konstruktor yang dipanggil saat objek Flight
baru dibuat. Konstruktor ini menerima beberapa parameter yang akan digunakan untuk mengisi atribut objek.flight_code
, departure
, arrival
, economy_price
, business_price
, dan first_class_price
adalah informasi yang disimpan dalam objek penerbangan, yang mencakup kode penerbangan, kota keberangkatan, kota tujuan, dan harga untuk masing-masing kelas penerbangan.__str__(self)
:Flight
akan dicetak jika dipanggil, misalnya menggunakan fungsi print()
.__str__
menghasilkan string yang menampilkan kode penerbangan, keberangkatan, kedatangan, serta harga untuk masing-masing kelas penerbangan (Ekonomi, Bisnis, First Class). Ini membuat objek Flight
lebih mudah dibaca dan ditampilkan kepada pengguna.Class TicketBooking
(Pemesan Tiket)
Tujuan:
Class ini menangani logika utama dari sistem pemesanan tiket. Class ini memungkinkan untuk menambah penerbangan, menampilkan penerbangan yang tersedia, memesan tiket, menghitung harga tiket, serta menampilkan tiket yang sudah dipesan.
flights
: Daftar yang menyimpan objekFlight
. Di dalamnya, terdapat penerbangan-penerbangan yang tersedia untuk pemesanan.booked_tickets
: Daftar yang menyimpan tiket yang sudah dipesan. Setiap tiket berisi informasi seperti nama penumpang, penerbangan, kelas yang dipilih, harga dasar (base fare), dan total harga (total fare).
add_flight(self, flight)
:Flight
ke dalam daftar flights
, yang berarti menambahkan penerbangan baru yang tersedia untuk pemesanan.show_flights(self)
:flights
. Fungsi enumerate
digunakan untuk memberikan nomor urut pada setiap penerbangan, dan print(f"{idx}. {flight}")
menampilkan informasi penerbangan, yang diformat dengan baik menggunakan method __str__
dari class Flight
.show_class_info(self, flight, class_type)
:- Fungsi ini menampilkan informasi tentang kelas penerbangan yang dipilih oleh pengguna (Ekonomi, Bisnis, atau First Class).
- Berdasarkan kelas yang dipilih, fungsi ini menentukan
base fare
(harga dasar) serta fasilitas yang disediakan dalam kelas tersebut (misalnya, kursi standar atau premium, batas bagasi, dan layanan). - Jika kelas yang dimasukkan tidak valid, fungsi ini akan memberikan pesan kesalahan.
calculate_total_fare(self, base_fare)
:- Fungsi ini menghitung total fare yang harus dibayar oleh penumpang.
base fare
(harga dasar) yang telah dipilih akan ditambah dengan biaya tambahan berupa pajak dan biaya layanan, yang dihitung 10% dari harga dasar. - Fungsi ini mengembalikan total fare yang telah dihitung.
Method
book_ticket(self, flight_index, class_type, passenger_name)
:- Fungsi ini memproses pemesanan tiket untuk penumpang yang memilih penerbangan dan kelas. Berdasarkan pilihan kelas (
class_type
), fungsi ini akan menetapkan base fare. - Fungsi ini juga memanggil
calculate_total_fare
untuk menghitung total biaya tiket, lalu menyimpan informasi pemesanan dalam bentuk dictionary di dalam listbooked_tickets
. - Setelah berhasil memesan tiket, sistem menampilkan informasi detail penerbangan yang dipesan, termasuk nama penumpang, kode penerbangan, kelas yang dipilih, base fare, dan total fare.
show_booked_tickets(self)
:- Fungsi ini menampilkan tiket yang telah dipesan. Jika tidak ada tiket yang dipesan, sistem akan memberitahukan bahwa belum ada pemesanan.
- Jika ada tiket yang dipesan, fungsi ini akan menampilkan informasi tiket yang sudah dipesan seperti nama penumpang, kode penerbangan, kelas yang dipilih, serta biaya dasar dan total biaya.
Fungsi main()
Fungsi main
adalah inti dari program yang menjalankan loop interaktif untuk berkomunikasi dengan pengguna dan memberikan menu pilihan, yaitu:
- Menampilkan daftar penerbangan yang tersedia.
- Memesan tiket berdasarkan input pengguna.
- Menampilkan tiket yang sudah dipesan.
Komentar
Posting Komentar