Advertisement
Comrade_Sharikov

CarService

Apr 8th, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.06 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp1
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             CarService carService = new CarService();
  10.             Car car = new Car();
  11.             bool isOpen = true;
  12.  
  13.             Console.WriteLine("Добро пожаловать в автосервис");
  14.  
  15.             while (isOpen)
  16.             {
  17.                 Console.WriteLine("Выберите команду");
  18.                 Console.WriteLine("1 - Автосервис\n" + "0 - Выход из программы\n");
  19.                 int userInput = Convert.ToInt32(Console.ReadLine());
  20.                 Console.Clear();
  21.  
  22.                 switch (userInput)
  23.                 {
  24.                     case 1:
  25.                         Detail brokenDetail = car.GetBrokenDetail();
  26.                         float priceForRepair = carService.GetRepairPrice(brokenDetail);
  27.                         Console.WriteLine("Цена починки автомобиля " + priceForRepair + "\n");
  28.                         carService.CheckMoneyBalance();
  29.  
  30.                         Console.WriteLine("Выберите какую деталь машины заменить");
  31.                         car.ShowDetailsInfo();
  32.                         int userIndex = Convert.ToInt32(Console.ReadLine()) - 1;
  33.                         bool isRepaired = carService.IsDetailRepaired(car.GetDetail(userIndex));
  34.  
  35.                         if (isRepaired == true)
  36.                         {
  37.                             if (brokenDetail == car.GetDetail(userIndex))
  38.                             {
  39.                                 carService.Checklist();
  40.                             }
  41.                             else
  42.                             {
  43.                                 Console.WriteLine("\nВы заменили не ту деталь\nАвтосервис должен возместить ущерб клиенту");
  44.                                 carService.PayForDamage();
  45.                             }
  46.                         }
  47.                         break;
  48.                     case 0:
  49.                         isOpen = false;
  50.                         break;
  51.                     default:
  52.                         Console.WriteLine("Недопустимое значение");
  53.                         break;
  54.                 }
  55.             }
  56.         }
  57.     }
  58.  
  59.     class Car
  60.     {
  61.         private Random _random = new Random();
  62.  
  63.         private Detail[] _details = new Detail[]
  64.         {
  65.             new Motor(), new Suspension(), new Battery(), new Wheel(), new Shaft()
  66.         };
  67.  
  68.         public void ShowDetailsInfo()
  69.         {
  70.             for (int i = 0; i < _details.Length; i++)
  71.             {
  72.                 Console.WriteLine(i + 1 + ") " + _details[i].Name);
  73.             }
  74.         }
  75.  
  76.         public Detail GetDetail(int index)
  77.         {
  78.             return _details[index];
  79.         }
  80.  
  81.  
  82.         public Detail GetBrokenDetail()
  83.         {
  84.             int index = _random.Next(0, _details.Length);
  85.             Console.WriteLine("У автомобиля сломался(сь): " + _details[index].Name);
  86.          
  87.             return _details[index];
  88.         }
  89.     }
  90.  
  91.     class CarService
  92.     {
  93.         private Warehouse _warehouse = new Warehouse();
  94.         private float _money = 5000f;
  95.         private int _fine = 1000;
  96.         private float _priceForRepair;
  97.  
  98.         public float GetRepairPrice(Detail brokenDetail)
  99.         {
  100.             _priceForRepair = brokenDetail.Price + brokenDetail.Price / 2f;
  101.             return _priceForRepair;
  102.         }
  103.  
  104.         public bool IsDetailRepaired(Detail brokenDetail)
  105.         {
  106.             bool isFind = false;
  107.  
  108.             for (int i = 0; i < _warehouse.GetDetails().Length; i++)
  109.             {
  110.                 if (_warehouse.GetDetails()[i].Name == brokenDetail.Name)
  111.                 {
  112.                     _warehouse.DeleteDetail(i);
  113.                     Console.WriteLine("\nДеталь заменена");
  114.                     isFind = true;
  115.                     break;
  116.                 }
  117.             }
  118.  
  119.             if (isFind == false)
  120.             {
  121.                 Console.WriteLine("\nДетали нет на складе\nАвтосервис должен выплатить штраф");
  122.                 PayFine();
  123.             }
  124.  
  125.             return isFind;
  126.         }
  127.  
  128.         public void PayForDamage()
  129.         {
  130.             Console.WriteLine("Оплата ущерба " + _priceForRepair);
  131.             _money -= _priceForRepair;
  132.             CheckMoneyBalance();
  133.         }
  134.  
  135.         private void PayFine()
  136.         {
  137.             Console.WriteLine("Оплата штрафа " + _fine);
  138.             _money -= _fine;
  139.             CheckMoneyBalance();
  140.         }
  141.  
  142.         public void Checklist()
  143.         {
  144.             Console.WriteLine("Выплата за ремонт " + _priceForRepair);
  145.             _money += _priceForRepair;
  146.             CheckMoneyBalance();
  147.         }
  148.  
  149.         public void CheckMoneyBalance()
  150.         {
  151.             if(_money <= 0)
  152.             {
  153.                 _money = 0;
  154.             }
  155.  
  156.             Console.WriteLine("Баланс денег автосервиса " + _money + "\n");
  157.         }
  158.     }
  159.  
  160.     class Warehouse
  161.     {
  162.         private Car car = new Car();
  163.         private Detail[] _details = new Detail[]
  164.         {
  165.             new Motor(), new Motor(), new Motor(),
  166.             new Suspension(),
  167.             new Battery(), new Battery(), new Battery(),
  168.             new Wheel(), new Wheel(), new Wheel(), new Wheel(),
  169.             new Shaft(), new Shaft()
  170.         };
  171.  
  172.         public Detail[] GetDetails()
  173.         {
  174.             return (Detail[])_details.Clone();
  175.         }
  176.  
  177.  
  178.         public void DeleteDetail(int index)
  179.         {
  180.             Detail[] tempArray = new Detail[_details.Length - 1];
  181.  
  182.             for (int i = 0; i < index; i++)
  183.             {
  184.                 tempArray[i] = _details[i];
  185.             }
  186.  
  187.             for (int i = index; i < tempArray.Length; i++)
  188.             {
  189.                 tempArray[i] = _details[i + 1];
  190.             }
  191.             _details = tempArray;
  192.         }
  193.     }
  194.  
  195.     abstract class Detail
  196.     {
  197.         public string Name { get; protected set; }
  198.         public int Price { get; protected set; }
  199.     }
  200.  
  201.     class Motor : Detail
  202.     {
  203.         public Motor() : base()
  204.         {
  205.             Name = "Мотор";
  206.             Price = 1500;
  207.         }
  208.     }
  209.  
  210.     class Suspension : Detail
  211.     {
  212.         public Suspension() : base()
  213.         {
  214.             Name = "Подвеска";
  215.             Price = 2000;
  216.         }
  217.     }
  218.  
  219.     class Battery : Detail
  220.     {
  221.         public Battery() : base()
  222.         {
  223.             Name = "Аккумулятор";
  224.             Price = 200;
  225.         }
  226.     }
  227.  
  228.     class Wheel : Detail
  229.     {
  230.         public Wheel() : base()
  231.         {
  232.             Name = "Колесо";
  233.             Price = 100;
  234.         }
  235.     }
  236.  
  237.     class Shaft : Detail
  238.     {
  239.         public Shaft() : base()
  240.         {
  241.             Name = "Вал";
  242.             Price = 250;
  243.         }
  244.     }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement