Advertisement
Alexander_Maximov

Untitled

Mar 31st, 2023
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.67 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Avtoservice
  5. {
  6.     public class Autoservice
  7.     {
  8.         private int _money = 1000;
  9.         private List<Gear> _gears = new List<Gear>();
  10.         private Queue<Client> _clients = new Queue<Client>();
  11.         private int _penalty = 100;
  12.  
  13.         public Autoservice(int gearsCount)
  14.         {
  15.             Random random = new Random();
  16.  
  17.             for (int i = 0; i < gearsCount; i++)
  18.             {
  19.                 _gears.Add(new Gear(random.Next(50, 126), random.Next(0, 10), random.Next(50, 126)));
  20.             }
  21.            
  22.             CreateNewClients(10, random);
  23.         }
  24.  
  25.         public void Work()
  26.         {
  27.             while (_clients.Count > 0)
  28.             {
  29.                 Client newClient = _clients.Dequeue();
  30.                 Console.WriteLine($"Баланс Автосервиса {_money} руб. Ждем нового клиента.");
  31.                 Console.WriteLine($"У вас новый клиент, и он хочет купить Деталь по номером -{newClient.DesiredGear}-.");
  32.                 Console.WriteLine($"Полная стоимость ремонта: {_gears[newClient.DesiredGear - 1].PriceForItem + _gears[newClient.DesiredGear - 1].PriceForAssembling} руб.");
  33.                 ShowAllGearsState();
  34.                
  35.                 Console.Write("\nВы предлагаете клиенту Деталь под номером: ");
  36.                 CheckInputNumber(newClient);
  37.                
  38.                 Console.WriteLine("Чтобы перейти к следующему клиенту, нажмите любую клавишу.");
  39.                 Console.ReadKey();
  40.                 Console.Clear();
  41.             }
  42.         }
  43.  
  44.         private void ShowAllGearsState()
  45.         {
  46.             Console.WriteLine("\nСписок всех деталей на складе: ");
  47.             for (int i = 0; i < _gears.Count; i++)
  48.             {
  49.                 Console.Write($"{i + 1} - ");
  50.                 _gears[i].ShowState();
  51.             }
  52.         }
  53.        
  54.         private void CreateNewClients(int newClietsCount, Random random)
  55.         {
  56.             for (int i = 0; i < newClietsCount; i++)
  57.             {
  58.                 _clients.Enqueue(new Client(random.Next(100, 251), random));
  59.             }
  60.         }
  61.  
  62.         private void CheckSolvency(Client newClient, int gearNumber)
  63.         {
  64.             if (newClient.CheckSolvency(_gears[gearNumber]))
  65.             {
  66.                 Console.WriteLine($"Клиент пересчитав деньги, оплатил ремонт и замену Детали -{gearNumber + 1}-.");
  67.                 _money += newClient.Pay();
  68.                 _gears[gearNumber].BecomeTaken();
  69.             }
  70.             else
  71.             {
  72.                 Console.WriteLine("У клиента не хватило денег и он ушел.");
  73.             }
  74.         }
  75.        
  76.         private void IsRanOut(int gearNumber, Client newClient)
  77.         {
  78.             if (_gears[gearNumber].IsRanOut)
  79.             {
  80.                 Console.WriteLine($"Вы предложили клиенту Деталь, которой нет на складе. Клиент разозлился и ушел. " +
  81.                                   $"Вы заплатили штраф - {_penalty / 2} руб.");
  82.                 _money -= _penalty / 2;
  83.             }
  84.             else
  85.             {
  86.                 CheckSolvency(newClient, gearNumber);
  87.             }
  88.         }
  89.  
  90.         private void CheckGearNumber(int gearNumber, Client newClient)
  91.         {
  92.             if (gearNumber >= 0 && gearNumber < _gears.Count && gearNumber + 1 == newClient.DesiredGear)
  93.             {
  94.                 IsRanOut(gearNumber, newClient);
  95.             }
  96.             else
  97.             {
  98.                 Console.WriteLine($"Вы сами не знаете какую деталь предложить клиенту. Он разозлился и ушел. " +
  99.                                   $"Вы заплатили штраф {_penalty} руб.");
  100.                 _money -= _penalty;
  101.             }
  102.         }
  103.  
  104.         private void CheckInputNumber(Client newClient)
  105.         {
  106.             string userInput = Console.ReadLine();
  107.            
  108.             if (int.TryParse(userInput, out int gearNumber))
  109.             {
  110.                 gearNumber -= 1;
  111.                    
  112.                 CheckGearNumber(gearNumber, newClient);
  113.             }
  114.             else
  115.             {
  116.                 CreateNewClients(1, new Random());
  117.                 Console.WriteLine("Не верный ввод! Повторите снова.");
  118.             }
  119.         }
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement