You are on page 1of 5

import pandas as pd

class Guest:

def __init__(self, name, email, reservation):

self.name = name

self.email = email

self.reservation = reservation

class Reservation:

def __init__(self, room_type, check_in_date, check_out_date):

self.room_type = room_type

self.check_in_date = check_in_date

self.check_out_date = check_out_date

class GuestTracker:

def __init__(self):

self.guests = []

def add_guest(self, guest):

self.guests.append(guest)

def remove_guest(self, guest):

self.guests.remove(guest)

def get_guest_by_email(self, email):

for guest in self.guests:

if guest.email == email:

return guest

return None
def get_guests_by_date_range(self, start_date, end_date):

result = []

for guest in self.guests:

reservation = guest.reservation

if reservation.check_in_date >= start_date and reservation.check_out_date <= end_date:

result.append(guest)

return result

def generate_report(self):

data = []

for guest in self.guests:

data.append({

'Name': guest.name,

'Email': guest.email,

'Room Type': guest.reservation.room_type,

'Check-in Date': guest.reservation.check_in_date,

'Check-out Date': guest.reservation.check_out_date

})

df = pd.DataFrame(data)

return df

# Example usage

tracker = GuestTracker()

while True:

print("1. Add guest")

print("2. Remove guest")


print("3. Get guest by email")

print("4. Get guests by date range")

print("5. Generate guest report")

print("6. Exit")

choice = input("Enter your choice: ")

if choice == "1":

name = input("Enter guest name: ")

email = input("Enter guest email: ")

room_type = input("Enter room type: ")

check_in_date = input("Enter check-in date (YYYY-MM-DD): ")

check_out_date = input("Enter check-out date (YYYY-MM-DD): ")

reservation = Reservation(room_type, check_in_date, check_out_date)

guest = Guest(name, email, reservation)

tracker.add_guest(guest)

print("Guest added successfully.")

elif choice == "2":

email = input("Enter guest email to remove: ")

guest = tracker.get_guest_by_email(email)

if guest:

tracker.remove_guest(guest)

print("Guest removed successfully.")

else:

print("Guest not found.")

elif choice == "3":

email = input("Enter guest email: ")


guest = tracker.get_guest_by_email(email)

if guest:

print("Guest found:")

print("Name:", guest.name)

print("Email:", guest.email)

print("Room Type:", guest.reservation.room_type)

print("Check-in Date:", guest.reservation.check_in_date)

print("Check-out Date:", guest.reservation.check_out_date)

else:

print("Guest not found.")

elif choice == "4":

start_date = input("Enter start date (YYYY-MM-DD): ")

end_date = input("Enter end date (YYYY-MM-DD): ")

guests = tracker.get_guests_by_date_range(start_date, end_date)

if guests:

print("Guests in date range:")

for guest in guests:

print("Name:", guest.name)

print("Email:", guest.email)

print("Room Type:", guest.reservation.room_type)

print("Check-in Date:", guest.reservation.check_in_date)

print("Check-out Date:", guest.reservation.check_out_date)

else:

print("No guests found in the specified date range.")

elif choice == "5":

guest_report = tracker.generate_report()

print(guest_report)
elif choice == "6":

print("Exiting...")

break

else:

print("Invalid choice. Please try again.")

# a menu-driven interface is implemented using a while loop. The user can select various options to
perform operations on the guest tracker, such as adding a guest, removing a guest, retrieving guest
information, getting guests within a specified date range, generating a guest report, and exiting the
program.

The input from the user is validated and processed accordingly. The guest tracker functionalities are
invoked based on the user's choices.

You might also like