Code Xiii Import Json

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

import json

from datetime import datetime

class Guest:

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

self.guest_id = guest_id

self.name = name

self.email = email

self.reservation = reservation

def to_dict(self):

return {

'guest_id': self.guest_id,

'name': self.name,

'email': self.email,

'reservation': self.reservation.to_dict()

@classmethod

def from_dict(cls, guest_dict):

guest_id = guest_dict['guest_id']

name = guest_dict['name']

email = guest_dict['email']

reservation_dict = guest_dict['reservation']

reservation = Reservation.from_dict(reservation_dict)

return cls(guest_id, name, email, reservation)

class Reservation:

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


self.reservation_id = reservation_id

self.room_type = room_type

self.check_in_date = check_in_date

self.check_out_date = check_out_date

def to_dict(self):

return {

'reservation_id': self.reservation_id,

'room_type': self.room_type,

'check_in_date': self.check_in_date,

'check_out_date': self.check_out_date

@classmethod

def from_dict(cls, reservation_dict):

reservation_id = reservation_dict['reservation_id']

room_type = reservation_dict['room_type']

check_in_date = reservation_dict['check_in_date']

check_out_date = reservation_dict['check_out_date']

return cls(reservation_id, room_type, check_in_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_id(self, guest_id):

for guest in self.guests:

if guest.guest_id == guest_id:

return guest

return None

def get_guest_by_email(self, email):

for guest in self.guests:

if guest.email == email:

return guest

return None

def get_total_guests(self):

return len(self.guests)

def generate_guest_report(self):

report = "Guest Report:\n\n"

for guest in self.guests:

report += f"Guest ID: {guest.guest_id}\n"

report += f"Name: {guest.name}\n"

report += f"Email: {guest.email}\n"

report += f"Reservation:\n"

report += f" Reservation ID: {guest.reservation.reservation_id}\n"

report += f" Room Type: {guest.reservation.room_type}\n"

report += f" Check-in Date: {guest.reservation.check_in_date}\n"

report += f" Check-out Date: {guest.reservation.check_out_date}\n"

report += "\n"
return report

def save_guests_to_file(self, filename):

data = []

for guest in self.guests:

data.append(guest.to_dict())

with open(filename, 'w') as file:

json.dump(data, file)

def load_guests_from_file(self, filename):

with open(filename, 'r') as file:

data = json.load(file)

self.guests = []

for guest_dict in data:

guest = Guest.from_dict(guest_dict)

self.add_guest(guest)

# Example usage

guest1 = Guest(1, 'Harrison Adom', 'hadom2607@example.com', Reservation(1, 'Standard', '2023-07-


10', '2023-07-15'))

guest2 = Guest(2, 'Robert Zigah', 'robzigah@example.com', Reservation(2, 'Deluxe', '2023-07-12', '2023-


07-17'))

tracker = GuestTracker()

tracker.add_guest(guest1)

tracker.add_guest(guest2)

# Save guests to file

tracker.save_guests_to_file('guests.json')
# Load guests from file

tracker.load_guests_from_file('guests.json')

# Get guest by email

guest = tracker.get_guest_by_email('hadom2607@example.com')

if guest:

print('Guest found:', guest.name)

else:

print('Guest not found')

# Get total number of guests

total_guests = tracker.get_total_guests()

print('Total guests:', total_guests)

# Generate guest report

guest_report = tracker.generate_guest_report()

print(guest_report)

# we've added new methods to the GuestTracker class:

 get_total_guests: Returns the total number of guests in the tracker.

 generate_guest_report: Generates a formatted report containing guest informatio

You might also like