Product - класс для создания товаров в интернет-магазине, у экземпляров этого класса можно посмотреть средний рейтинг с помощью getMeanRating(), а так же добавить оценку от пользователя с помощью addRating(rating, user).
Пользователи
Класс User создан для хранения ифнормации о пользователях интернет-магазина, и взаимодействия между пользователями и продуктами.
Функция rateProduct(product, rating) позволяет пользователю оценить какой-либо товар, а с помощью formOrder(product, delivery_date) пользователь формирует заказ.
Заказы
Order - класс, созданный для хранения информации о заказах. Функция makeOrder() проверяет, корректен ли составленный заказ и делает его, если это так.
Вспомогательные функции и классы:
formDeliveryDate(day, month, year, deferred_days=0) - для работы с датой я использую модуль datetime, а это вспомогательная функция. Если нужно заказать на определенную дату, то просто указываются день, месяц и год. Если же заказ нужно доставить через определенне время, то в качестве day, month и year указываются нули, а так же дополнительно указывается deferred_days - количество дней, на которые нужно отложить доставку заказа.
getProfit(period=None, category=None) - возвращает выручку магазина за определенное время (по товару определенной категории, если она задана), если period не задан, то возвращает выручку за текущий день
printProductList() - выводит список продуктов вместе с их ценой.
printProductMeanRating(product_name="") - выводит среднюю оценку товара. Если product_name не задан, то выводит средние оценки всех товаров.
printBadReviewsDetails(category) - выводит плохие оценки пользователей на товары, у которых среди категорий есть category.
announceSale(category, discount) - Объявляет скидку на товары определенной категории, 0 <= discount <= 100. Скидка остается навсегда, то есть эта функция меняет стоимость товаров определенной категории.
Пример взаимодействия:
# создание пользователяgerman=User("mitay", "germanthebest@gmail.com", "botanicheskaya 70k4")
# создание товаровesentuki=Product("esentuki", 50, "минеральная вода", "товары по акции")
tvorog=Product("tvorog", 69, "молочная продукция")
# вывод списка товаров на экранprintProductList()
# пользователь заказывает товарgerman.formOrder(esentuki, formDeliveryDate(28, 9, 2020))
# объявление скидки 50 процентов на всю молочную продукциюannounceSale("молочная продукция", 50)
german.formOrder(tvorog, formDeliveryDate(0, 0, 0, 5))
# пользователь оставлет отзыв о товарахgerman.rateProduct(esentuki, 5)
german.rateProduct(tvorog, 3)
# вывод средней оценки всех товаровprintProductMeanRating()