فاکتوریسم


در این سوال شما باید یک کلاس مدیریت فاکتورهای فروش برای شرکت سجادینه طراحی کنید. در شرکت سجادینه افراد زیادی می‌توانند فاکتورهای مالی را ثبت کنند و هر کدام از این افراد تاریخ فاکتور را به یکی از ۶ فرمتی که در جدول پایین آمده ثبت می‌کنند.

برای مثال یک فاکتور که روز دوم ماه ششم سال ۲۰۲۰ ثبت شود، می‌تواند طبق یکی از فرمت‌های زیر ثبت شود:

زمانی که در سیستم ثبت می‌شود فرمت زمان
‍‍02/06/2020 dd/mm/yyyy‍
‍‍02/2020/06 dd/yyyy‍/mm
‍‍2020/06/02 yyyy‍/mm/dd
‍‍2020/02/06 yyyy‍/dd/mm
‍‍ 06/2020/02 mm/yyyy‍/dd
‍‍ 06/02/2020 mm/dd/yyyy‍

شما باید کلاس ‍‍FactorHandler را در این فایل کامل کنید به طوری که سه تابع زیر عملکردهای خواسته شده را داشته باشند (عملکرد تابع __init__ اهمیت ندارد).

extensionFromNamesolution.py
class FactorHandler:
    def __init__(self):
        pass

    def add_factor(self, time_format, time, value):
        pass

    def remove_all_factors(self, time_format, time):
        pass

    def get_sum(self, time_format, start_time, finish_time):
        pass
Python
تابع add_factor

این تابع به ترتیب سه ورودی time_format و time و value را ورودی می‌گیرد. مقدار time_format یکی از ۶ رشته جدول بالا است و time تاریخ ثبت فاکتور بر حسب فرمت داده شده است. مقدار value هم، هزینه فروش فاکتور داده شده برای آن تاریخ را مشخص می‌کند.

تابع remove_all_factors

این تابع به ترتیب سه ورودی time_format و time را ورودی می‌گیرد که هر دویشان مانند تابع add_factor هستند؛ این تابع تمام فاکتورهایی که در تاریخ داده شده ثبت شده‌اند را از لیست فاکتورها حذف می‌کند.

تابع get_sum

این تابع به ترتیب سه ورودی time_format و start_time و finish_time را ورودی می‌گیرد و جمع هزینه فاکتورهایی که از تاریخ ‍‍start_time تا finish_time ثبت‌شده‌اند (شامل خود این دو تاریخ) را برمی‌گرداند.

در همه توابع تضمین می‌شود که time حتما بر حسب فرمت time_format است. توجه کنید که هیچ یک از توابع بالا را نباید استاتیک تعریف کنید.

نمونه🔗

extensionFromNameterminal
>>> fh = FactorHandler()
>>> fh.add_factor("dd/mm/yyyy", "02/10/2019", 10)
>>> fh.add_factor("dd/mm/yyyy", "03/10/2019", 20)
>>> fh.add_factor("dd/mm/yyyy", "03/10/2019", 30)
>>> fh.add_factor("dd/mm/yyyy", "05/10/2019", 5)
>>> fh.get_sum("yyyy/dd/mm", "2019/02/10", "2019/03/10")
60
>>> fh.remove_all_factors("mm/dd/yyyy", "10/03/2019")
>>> fh.get_sum("yyyy/dd/mm", "2019/02/10", "2019/05/10")
15
Python

نکات🔗

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • تابع get_sum نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.

نحوه ارسال🔗

شما باید کلاس FactorHandler موجود در فایل solution.py را تکمیل و سپس این فایل را ارسال کنید.