Advertisement
OldBeliver

Market_02

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