Torgach

supermarket

Apr 13th, 2021
399
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace supermarket
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Supermarket supermarket = new Supermarket();
  14.             supermarket.Work();
  15.         }
  16.     }
  17.  
  18.     class Supermarket
  19.     {
  20.         private Queue<Client> _clients = new Queue<Client>();
  21.  
  22.         Random rand = new Random();
  23.         public void Work()
  24.         {
  25.             bool isRun = true;
  26.             SetQueue();
  27.  
  28.             while (isRun)
  29.             {
  30.                 Console.Write("[1] - Задать очередь\n[2] - Обслужить клиента\n[3] - Выход" +
  31.                     "Ввод: ");
  32.  
  33.                 switch (Console.ReadLine())
  34.                 {
  35.                     case "1":
  36.                         SetQueue();
  37.                         break;
  38.                     case "2":
  39.                         ServeCustomers();
  40.                         break;
  41.                     case "3":
  42.                         isRun = false;
  43.                         break;
  44.                     default:
  45.                         Console.WriteLine("Ошибка!");
  46.                         break;
  47.                 }
  48.             }
  49.         }
  50.  
  51.         private void SetQueue()
  52.         {
  53.             Console.Write("Задайте число клиентов или оставьте по умолчанию.\n ВВод: ");
  54.             if (int.TryParse(Console.ReadLine(), out int number))
  55.             {
  56.                 _clients = new Queue<Client>(number);
  57.             }
  58.             else
  59.             {
  60.                 Console.WriteLine("Ошибка, устанавливаем по умолчанию...");
  61.                 number = 2;
  62.             }
  63.  
  64.             for (int i = 0; i < number; i++)
  65.             {
  66.                 Client newClient = new Client(rand);
  67.                 _clients.Enqueue(newClient);
  68.             }
  69.  
  70.             Console.Clear();
  71.         }
  72.  
  73.         private void ServeCustomers()
  74.         {
  75.             if(_clients.Count == 0)
  76.             {
  77.                 Console.WriteLine("Задайте число клиентов!");
  78.             }
  79.  
  80.             while (_clients.Count > 0)
  81.             {
  82.                 Console.WriteLine("\nОбслуживаем клиента...");
  83.                 for (int i = 0; i < _clients.Count; i++)
  84.                 {
  85.                     Console.WriteLine("Деньги клиента: " + _clients.ElementAt(i).CurrentMoney);
  86.                     Console.WriteLine("Сумма тележки: " + _clients.ElementAt(i).GetSum());
  87.                     _clients.ElementAt(i).TryToPay(rand);
  88.  
  89.                     Console.ReadKey(true);
  90.                     _clients.Dequeue();
  91.                 }
  92.             }
  93.         }
  94.     }
  95.  
  96.     class Client
  97.     {
  98.         public int CurrentMoney { get; private set; }
  99.         public int Wallet { get; private set; }
  100.         private List<int> _goods = new List<int>();
  101.         public Client(Random rand)
  102.         {
  103.             CurrentMoney = rand.Next(500, 5000);
  104.             Wallet = CurrentMoney;
  105.  
  106.             for (int i = 0; i < rand.Next(1, 10); i++)
  107.             {
  108.                 _goods.Add(rand.Next(100, 1000));
  109.             }
  110.         }
  111.  
  112.         public void TryToPay(Random rand)
  113.         {
  114.             for (int i = 0; i < _goods.Count;)
  115.             {
  116.                 if (_goods[i] <= CurrentMoney)
  117.                 {
  118.                     Console.WriteLine("Оплачиваем товар на сумму " + _goods[i]);
  119.                     CurrentMoney -= _goods[i];
  120.                     i++;
  121.                    
  122.                 }
  123.                 else if (_goods[i] > CurrentMoney)
  124.                 {
  125.                     Console.WriteLine("Не хватает денег заплатить за товар! Освобождаем корзину...");
  126.                     i = 0;
  127.                     DeleteGoods(rand);
  128.                     Console.WriteLine("Сумма итоговой покупки: " + GetSum() + "\n");
  129.                 }
  130.             }
  131.  
  132.             if (GetSum() > 0)
  133.             {
  134.                 Console.WriteLine("Покупка оплачена, обслуживаем следующего клиента\n");
  135.             }
  136.             else
  137.             {
  138.                 Console.WriteLine("Покупка НЕ оплачена, клиенту приходится уйти из очереди!\n");
  139.             }
  140.         }
  141.  
  142.         public int GetSum()
  143.         {
  144.             return _goods.Sum();
  145.         }
  146.  
  147.         private void DeleteGoods(Random rand)
  148.         {
  149.             int number = rand.Next(0, _goods.Count);
  150.  
  151.             Console.WriteLine("Убираем товар со стоимостью " + _goods[number]);
  152.             _goods.RemoveAt(number);
  153.  
  154.             CurrentMoney = Wallet;
  155.         }
  156.     }
  157. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×