Advertisement
StreetKatya

Скидки

Dec 26th, 2022
1,250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Скидки
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             /* На кассу приходит покупатель, кассир создаёт новый чек.
  14.              * В чеке есть возможность:
  15.              * 1. Добавить продукт*, если этот продукт уже есть в чеке, то у него просто увеличится количество.
  16.              * 2. Добавить новую персональную скидку (с учётом того, что если до этого какая-либо скидка данного типа
  17.              *    применялась, то берётся большая)
  18.              * 3. Установить дневную скидку с нижним пределом общей стоимости чека.
  19.              * 4. Распечатать чек с учётом пунктов 2 и 3.
  20.              * *под продуктом подразумевается его полная информация: название, стоимость, скидка единицу товара*
  21.              */
  22.         }
  23.     }
  24.     #region Система классов
  25.     #region Interfaces
  26.     interface ICalculateDiscount
  27.     {
  28.         void CalculateDiscount();
  29.     }
  30.     interface IProductManager
  31.     {
  32.         void AddProductThisType();
  33.     }
  34.     #endregion
  35.     #region Class Product
  36.     public class Product: ICalculateDiscount, IProductManager
  37.     {
  38.         public string _productName;
  39.         public double _price;
  40.         public int _discount;
  41.         public int _count;
  42.         public double _totalPrice;
  43.         public Product(string name, double price, int discount, int count)
  44.         {
  45.             _productName = name;
  46.             _price = price;
  47.             _discount = discount;
  48.             _count = count;
  49.             _totalPrice = price * count;
  50.         }
  51.         public void AddProductThisType()
  52.         {
  53.             _count++;
  54.             _totalPrice += _price;
  55.         }
  56.  
  57.         public void CalculateDiscount() //считает цену на товар в рублях с учетом скидки на данный товар
  58.         {
  59.             this._totalPrice -= _totalPrice * (_discount/100);
  60.         }
  61.     }
  62.     #endregion
  63.     public struct DayDiscount
  64.     {
  65.         public int _discount;
  66.         public double _infTotalSum;
  67.         public DayDiscount(int discount, double infTotalSum)
  68.         {
  69.             _discount = discount;
  70.             _infTotalSum = infTotalSum;
  71.         }
  72.     }
  73.     public class Check : ICalculateDiscount
  74.     {
  75.         public List<Product> _products;
  76.         int _discountPersonal;
  77.         double _totalSumCheck;
  78.         DayDiscount dayDiscount;
  79.  
  80.         public Check()
  81.         {
  82.             _products = new List<Product>();
  83.             _totalSumCheck = 0;
  84.             dayDiscount = new DayDiscount(0, int.MaxValue);
  85.         }
  86.         public void AddElementToCheck(Product newProduct)
  87.         {
  88.             bool FindElement = false;
  89.             foreach(var product in _products)
  90.             {
  91.                 if(newProduct._productName == product._productName)
  92.                 {
  93.                     product.AddProductThisType();
  94.                     FindElement = true;
  95.                     break;
  96.                 }
  97.             }
  98.             if(!FindElement)
  99.             {
  100.                 _products.Add(newProduct);
  101.             }
  102.             _products.Add(newProduct);
  103.         }
  104.         public void SetDayDiscount(DayDiscount dayDiscountInThisDay)
  105.         {
  106.             dayDiscount = dayDiscountInThisDay;
  107.         }
  108.         public void PrintCheck()
  109.         {
  110.             CalculateDiscount();
  111.             Console.WriteLine("*Пииип-пииип* Идет печать чека...");
  112.             Console.WriteLine($"С Вас {_totalSumCheck}, пожалуйста!");
  113.         }
  114.         public void CalculateDiscount()
  115.         {
  116.             _totalSumCheck -= _totalSumCheck * (_discountPersonal/100);
  117.             if (dayDiscount._infTotalSum < _totalSumCheck)
  118.             {
  119.                 _totalSumCheck -= _totalSumCheck * (dayDiscount._discount / 100);
  120.             }
  121.         }
  122.         public void AddNewTypeDiscount(int newDiscount)
  123.         {
  124.             if(newDiscount>_discountPersonal)
  125.             {
  126.                 _discountPersonal = newDiscount;
  127.             }
  128.         }
  129.     }
  130.     #endregion
  131. }
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement