InternetShop

Товары

  • Product - класс для создания товаров в интернет-магазине, у экземпляров этого класса можно посмотреть средний рейтинг с помощью getMeanRating(), а так же добавить оценку от пользователя с помощью addRating(rating, user).

Пользователи

  • Класс User создан для хранения ифнормации о пользователях интернет-магазина, и взаимодействия между пользователями и продуктами. Функция rateProduct(product, rating) позволяет пользователю оценить какой-либо товар, а с помощью formOrder(product, delivery_date) пользователь формирует заказ.

Заказы

  • Order - класс, созданный для хранения информации о заказах. Функция makeOrder() проверяет, корректен ли составленный заказ и делает его, если это так.

Вспомогательные функции и классы:

  1. formDeliveryDate(day, month, year, deferred_days=0) - для работы с датой я использую модуль datetime, а это вспомогательная функция. Если нужно заказать на определенную дату, то просто указываются день, месяц и год. Если же заказ нужно доставить через определенне время, то в качестве day, month и year указываются нули, а так же дополнительно указывается deferred_days - количество дней, на которые нужно отложить доставку заказа.
  2. getProfit(period=None, category=None) - возвращает выручку магазина за определенное время (по товару определенной категории, если она задана), если period не задан, то возвращает выручку за текущий день
  3. printProductList() - выводит список продуктов вместе с их ценой.
  4. printProductMeanRating(product_name="") - выводит среднюю оценку товара. Если product_name не задан, то выводит средние оценки всех товаров.
  5. printBadReviewsDetails(category) - выводит плохие оценки пользователей на товары, у которых среди категорий есть category.
  6. 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()