پایتون - فاکتوریسم


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

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

زمانی که در سیستم ثبت می‌شود فرمت زمان
‍‍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 را در این فایل کامل کنید به طوری که سه تابع زیر عملکردهای خواسته شده را داشته باشند.

تابع 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 است. توجه کنید که هیچ یک از توابع بالا را نباید استاتیک تعریف کنید.

مثال🔗

>>> 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

آن‌چه باید آپلود کنید🔗

یک فایل پایتون که کلاس FactorHandler در آن پیاده‌سازی شده است را آپلود کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.