class Car:
def __init__(self, plate_number, entry_time):
self.plate_number = plate_number
self.entry_time = entry_time
self.exit_time = None
def set_exit_time(self, exit_time):
self.exit_time = exit_time
def calculate_parking_fee(self):
if self.exit_time is None:
return None # خروج ثبت نشده است
duration = self.exit_time - self.entry_time
hours = duration.total_seconds() / 3600
base_fee = 5000
if hours > 6:
extra_hours = hours - 6
total_fee = base_fee + (extra_hours * 1000)
else:
total_fee = base_fee
return total_fee
class ParkingLot:
def __init__(self):
self.cars = {}
def car_entry(self, plate_number, entry_time):
if plate_number in self.cars:
print(f"خودرو با پلاک {plate_number} قبلاً وارد شده است.")
else:
self.cars[plate_number] = Car(plate_number, entry_time)
print(f"خودرو با پلاک {plate_number} با ساعت ورود {entry_time} ثبت شد.")
def car_exit(self, plate_number, exit_time):
if plate_number not in self.cars:
print(f"خودرو با پلاک {plate_number} در پارکینگ نیست.")
else:
car = self.cars[plate_number]
car.set_exit_time(exit_time)
fee = car.calculate_parking_fee()
print(f"خودرو با پلاک {plate_number} با ساعت خروج {exit_time} ثبت شد.")
print(f"هزینه پارکینگ: {fee} تومان")
del self.cars[plate_number] # حذف خودرو از پارکینگ
def show_parking_status(self):
if not self.cars:
print("پارکینگ خالی است.")
else:
print("وضعیت خودروها در پارکینگ:")
for car in self.cars.values():
print(f"پلاک: {car.plate_number}, ساعت ورود: {car.entry_time}, وضعیت: در پارکینگ")
# مثال استفاده
from datetime import datetime
parking_lot = ParkingLot()
# ورود خودروها
parking_lot.car_entry("123-ABC", datetime(2023, 10, 1, 10, 0))
parking_lot.car_entry("456-DEF", datetime(2023, 10, 1, 12, 0))
# نمایش وضعیت پارکینگ
parking_lot.show_parking_status()
# خروج خودروها
parking_lot.car_exit("123-ABC", datetime(2023, 10, 1, 17, 0))
parking_lot.car_exit("456-DEF", datetime(2023, 10, 1, 14, 0))
# نمایش وضعیت پارکینگ بعد از خروج
parking_lot.show_parking_status()