Advertisement
NikaBang

Супермаркет ООП

Aug 18th, 2022 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.21 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. internal class Program
  5. {
  6.     //Написать программу администрирования супермаркетом.
  7.     //В супермаркете есть очередь клиентов.
  8.     //У каждого клиента в корзине есть товары, также у клиентов есть деньги.
  9.     //Клиент, когда подходит на кассу, получает итоговую сумму покупки и старается её оплатить.
  10.     //Если оплатить клиент не может, то он рандомный товар из корзины выкидывает до тех пор, пока его денег не хватит для оплаты.
  11.     //Клиентов можно делать ограниченное число на старте программы.
  12.     static void Main(string[] args)
  13.     {
  14.         new Store().ServeBuyer();
  15.  
  16.         Console.ReadKey();
  17.     }
  18.  
  19.     class Product
  20.     {
  21.         public string Name { get; private set; }
  22.         public int Price { get; private set; }
  23.  
  24.         public Product(string name, int price)
  25.         {
  26.             Name = name;
  27.             Price = price;
  28.         }
  29.  
  30.         public void ShowInfo()
  31.         {
  32.             Console.WriteLine(Name + " цена: " + Price);
  33.         }
  34.     }
  35.  
  36.     class Buyer
  37.     {
  38.         private List<Product> _products;
  39.         public int Money { get; private set; }
  40.  
  41.         public Buyer(Product[] products, int money)
  42.         {
  43.             _products = new List<Product>(products);
  44.             Money = money;
  45.         }
  46.  
  47.         public void ShowInfo()
  48.         {
  49.             foreach (Product product in _products)
  50.             {
  51.                 product.ShowInfo();
  52.             }
  53.  
  54.             Console.WriteLine("Денег: " + Money + "\n");
  55.         }
  56.  
  57.         public void PayMoney(int price)
  58.         {
  59.             Money -= price;
  60.         }
  61.  
  62.         public void RemoveProduct()
  63.         {
  64.             Random random = new Random();
  65.             int indexProduct = random.Next(0, _products.Count);
  66.  
  67.             if (_products.Count > 0)
  68.             {
  69.                 _products.RemoveAt(indexProduct);
  70.             }
  71.         }
  72.  
  73.         public int GetPriceProduct()
  74.         {
  75.             int totalPrice = 0;
  76.             foreach (var product in _products)
  77.             {
  78.                 totalPrice += product.Price;
  79.             }
  80.  
  81.             return totalPrice;
  82.         }
  83.     }
  84.  
  85.     class Store
  86.     {
  87.         private Queue<Buyer> _buyers;
  88.  
  89.         public Store()
  90.         {
  91.             _buyers = new Queue<Buyer>();
  92.  
  93.             FillQueue();
  94.         }
  95.  
  96.         public void ServeBuyer()
  97.         {
  98.             while (_buyers.Count > 0)
  99.             {
  100.                 bool hasBuyerPaid = false;
  101.                 Buyer buyer = _buyers.Dequeue();
  102.  
  103.                 while (hasBuyerPaid == false)
  104.                 {
  105.                     buyer.ShowInfo();
  106.                     int totalPrice = buyer.GetPriceProduct();
  107.                     Console.WriteLine("Итоговая сумма: " + totalPrice);
  108.  
  109.                     if (totalPrice <= buyer.Money)
  110.                     {
  111.                         buyer.PayMoney(totalPrice);
  112.                         Console.WriteLine("Покупатель расчитался.");
  113.                         hasBuyerPaid = true;
  114.                     }
  115.                     else
  116.                     {
  117.                         Console.WriteLine("Не хватает денег. Уберите продукт!");
  118.                         Console.ReadKey();
  119.  
  120.                         buyer.RemoveProduct();
  121.                         Console.Clear();
  122.                     }
  123.                 }
  124.  
  125.                 Console.ReadKey();
  126.                 Console.Clear();
  127.             }
  128.  
  129.             Console.WriteLine("Покупателей больше нет!");
  130.         }
  131.  
  132.         private void FillQueue()
  133.         {
  134.             int minRandom = 200;
  135.             int maxRandom = 1501;
  136.             Random random = new Random();
  137.  
  138.             Buyer buyerOne = new Buyer(new Product[]
  139.             {
  140.                 new Product("Хлеб", 50), new Product("Молоко", 70), new Product("Яйца", 85),
  141.                 new Product("Фарш", 200), new Product("Консервы", 150)
  142.             }, random.Next(minRandom, maxRandom));
  143.             Buyer buyerTwo = new Buyer(new Product[]
  144.             {
  145.                 new Product("Сигареты", 120), new Product("Водка", 300), new Product("Селедка", 100),
  146.                 new Product("Пиво", 100), new Product("Пиво", 100), new Product("Пиво", 100)
  147.             }, random.Next(minRandom, maxRandom));
  148.             Buyer buyerThree = new Buyer(new Product[]
  149.             {
  150.                 new Product("Торт", 800), new Product("Сок", 150), new Product("Шоколад", 100),
  151.                 new Product("Конфеты", 200), new Product("Яблоки", 200), new Product("Апельсины", 250)
  152.             }, random.Next(minRandom, maxRandom));
  153.  
  154.             _buyers.Enqueue(buyerOne);
  155.             _buyers.Enqueue(buyerTwo);
  156.             _buyers.Enqueue(buyerThree);
  157.         }
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement