Advertisement
OldBeliver

Market_03

May 26th, 2021
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.77 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 FoodMarket_02
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Market market = new Market();
  14.             market.Work();
  15.         }
  16.     }
  17.  
  18.     class Market
  19.     {
  20.         private List<Product> _products;
  21.         private Queue<Shopper> _shoppers;
  22.         private Cart _cart;
  23.         Random rand;
  24.  
  25.         public Market()
  26.         {
  27.             _products = new List<Product>();
  28.             _shoppers = new Queue<Shopper>();
  29.             _cart = new Cart();
  30.  
  31.             rand = new Random();
  32.             int shoppersCount = 10;
  33.  
  34.             LoadProducts();
  35.  
  36.             CreateNewShopper(shoppersCount, rand);
  37.         }
  38.  
  39.         public void Work()
  40.         {
  41.             string splitbar = "--------------------------------------------";
  42.             while (_shoppers.Count > 0)
  43.             {
  44.                 Console.WriteLine($"До закрытия магазина и Нового Года остались считанные минуты.\nВы, как кассир единственно работающей кассы, с грустью смотрите на очередь из {_shoppers.Count} человек.");
  45.                 Console.WriteLine(splitbar);
  46.  
  47.                 Shopper shopper = _shoppers.Dequeue();
  48.                 _cart.FillWithProducts(_products);
  49.  
  50.                 Console.WriteLine($"Перед Вами очередной покупатель, за собой он тащит корзину с покупками:");
  51.                 _cart.ShowProducts();
  52.                 Console.WriteLine(splitbar);
  53.  
  54.                 Console.WriteLine($"на общую сумму {_cart.SumPrice():# ###} рублей");
  55.                 Console.WriteLine(splitbar);
  56.  
  57.                 Console.WriteLine($"как опытный кассир, по одному взгляду Вы понимаете, что у покупателя {shopper.Money:# ###} рублей");
  58.  
  59.                 while (CheckDeficit(shopper.Money))
  60.                 {
  61.                     int deficit = _cart.SumPrice() - shopper.Money;
  62.                     Console.WriteLine($"\nпокупателю не хватает {deficit:# ###} рублей.\nнажмите чтобы удалить случайный товар из корзины.");
  63.                     Console.ReadKey();
  64.  
  65.                     _cart.PutOut();
  66.                     Console.Clear();
  67.                     _cart.ShowProducts();
  68.                 }
  69.  
  70.                 Console.WriteLine($"\nДовольный покупатель оплатил по чеку.");
  71.  
  72.                 Console.ReadKey();
  73.                 Console.Clear();
  74.                 _cart.ToEmpty();
  75.             }
  76.  
  77.             Console.WriteLine(splitbar);
  78.             Console.WriteLine($"покупатели закончились, можно сделать перерыв на чай");
  79.             Console.WriteLine(splitbar);
  80.             Console.WriteLine($"нажмите любую чтобы завершить программу");
  81.             Console.ReadKey();
  82.         }
  83.  
  84.         private void LoadProducts()
  85.         {
  86.             _products.Add(new Product("Ломанный грош юбилейный", 1000));
  87.             _products.Add(new Product("Стельки с подогревом", 255));
  88.             _products.Add(new Product("Электроластик", 160));
  89.             _products.Add(new Product("Накладка на руль", 318));
  90.             _products.Add(new Product("Лампа для шкафа", 466));
  91.             _products.Add(new Product("Плоская фляга", 495));
  92.             _products.Add(new Product("Круговой нож", 433));
  93.             _products.Add(new Product("Карты", 340));
  94.             _products.Add(new Product("Мини бритва", 264));
  95.             _products.Add(new Product("Спирограф", 431));
  96.             _products.Add(new Product("Спортивная бутылка", 418));
  97.             _products.Add(new Product("Карманные шахматы", 344));
  98.             _products.Add(new Product("Щетка-ролик", 402));
  99.             _products.Add(new Product("Зонт", 492));
  100.             _products.Add(new Product("Ножницы с лазерным прицелом", 356));
  101.             _products.Add(new Product("Шампур-вилка", 351));
  102.             _products.Add(new Product("RGB-лампа", 244));
  103.             _products.Add(new Product("Складное ведёрко", 486));
  104.             _products.Add(new Product("Слайсер для ананаса", 275));
  105.             _products.Add(new Product("Ледоступы", 450));
  106.             _products.Add(new Product("Дорожные столовые приборы", 235));
  107.             _products.Add(new Product("Газовый паяльник", 476));
  108.             _products.Add(new Product("Губная гармошка", 286));
  109.             _products.Add(new Product("Водонепроницаемая флешка", 395));
  110.             _products.Add(new Product("Дозатор для напитков", 210));
  111.             _products.Add(new Product("Умный кошелёк", 603));
  112.             _products.Add(new Product("Комплект для выжигания", 883));
  113.             _products.Add(new Product("Дерево Бонсай", 1200));
  114.             _products.Add(new Product("Бумага мягкая", 68));
  115.             _products.Add(new Product("Атомная батарейка", 999));
  116.         }
  117.  
  118.         private void CreateNewShopper(int count, Random rand)
  119.         {
  120.             int minValue = 3000;
  121.             int maxValue = 4000;
  122.  
  123.             for (int i = 0; i < count; i++)
  124.             {
  125.                 _shoppers.Enqueue(new Shopper(rand.Next(minValue, maxValue)));
  126.             }
  127.         }
  128.  
  129.         private bool CheckDeficit(int cash)
  130.         {
  131.             return _cart.SumPrice() > cash;
  132.         }
  133.     }
  134.  
  135.     class Product
  136.     {
  137.         public string Name { get; private set; }
  138.         public int Price { get; private set; }
  139.  
  140.         public Product(string name, int price)
  141.         {
  142.             Name = name;
  143.             Price = price;
  144.         }
  145.  
  146.         public void ShowInfo()
  147.         {
  148.             Console.WriteLine($"{Name} - {Price} рублей");
  149.         }
  150.     }
  151.  
  152.     class Shopper
  153.     {
  154.         public int Money;
  155.  
  156.         public Shopper(int money)
  157.         {
  158.             Money = money;
  159.         }
  160.     }
  161.  
  162.     class Cart
  163.     {
  164.         private List<Product> _products;
  165.  
  166.         public Cart()
  167.         {
  168.             _products = new List<Product>();
  169.         }
  170.  
  171.         public void ShowProducts()
  172.         {
  173.             for (int i = 0; i < _products.Count; i++)
  174.             {
  175.                 Console.Write($"{i + 1}. ");
  176.                 _products[i].ShowInfo();
  177.             }
  178.         }
  179.  
  180.         public void FillWithProducts(List<Product> products)
  181.         {
  182.             Random rand = new Random();
  183.             int limit = 16;
  184.             int size = rand.Next(1, limit);
  185.  
  186.             for (int i = 0; i < size; i++)
  187.             {
  188.                 _products.Add(products[rand.Next(0, products.Count)]);
  189.             }
  190.         }
  191.  
  192.         public void ToEmpty()
  193.         {
  194.             _products.RemoveRange(0, _products.Count);
  195.         }
  196.  
  197.         public int SumPrice()
  198.         {
  199.             int sum = 0;
  200.  
  201.             for (int i = 0; i < _products.Count; i++)
  202.             {
  203.                 sum += _products[i].Price;
  204.             }
  205.  
  206.             return sum;
  207.         }
  208.  
  209.         public void PutOut()
  210.         {
  211.             Random rand = new Random();
  212.             int count = _products.Count;
  213.             int index = rand.Next(0, count);
  214.  
  215.             _products.RemoveAt(index);
  216.         }
  217.     }
  218. }
  219.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement