Advertisement
yargee

Homework 5-8

Apr 9th, 2020
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace ConsoleApp22
  5. {
  6.     class CarService
  7.     {
  8.         public int WorkPrice { get; } = 300;
  9.         public int CompensationForAbscence { get; } = -200;
  10.         public int CompensationForBreakage { get; } = -300;
  11.         public int Money { get; private set; } = 1000;
  12.         public List<Detail> Details { get; private set; } = new List<Detail>();
  13.         public Detail DetailForReplacement {get; private set;}
  14.         public void CreateDetailsInWarehouse()
  15.         {
  16.             Random random = new Random();
  17.             Detail detail1 = new Detail("двигатель", 700, random.Next(0,30));
  18.             Details.Add(detail1);
  19.             Detail detail2 = new Detail("коробка передач", 600, random.Next(0, 30));
  20.             Details.Add(detail2);
  21.             Detail detail3 = new Detail("задний мост", 400, random.Next(0, 30));
  22.             Details.Add(detail3);
  23.             Detail detail4 = new Detail("трансмиссия", 500, random.Next(0, 30));
  24.             Details.Add(detail4);            
  25.         }
  26.  
  27.         public bool SuccsessfulRepair()
  28.         {
  29.             Random random = new Random();
  30.             int breakChance = random.Next(1, 101);
  31.             if (breakChance>20)
  32.             {
  33.                 return true;
  34.             }
  35.             else
  36.             {
  37.                 return false;
  38.             }
  39.         }
  40.  
  41.         public void ChangeMoneyCount(int price)
  42.         {
  43.             if ((price>0)||((price < 0) && (Math.Abs(price) <= Money)))
  44.             {
  45.                 Money += price;
  46.             }            
  47.             else
  48.             {
  49.                 Console.WriteLine("В кассе не осталось денег");
  50.             }
  51.  
  52.         }
  53.  
  54.         public void ShowWarehouse()
  55.         {
  56.             Console.WriteLine($"В кассе {Money} наличными.");
  57.             Console.WriteLine();
  58.             foreach (var detail in Details)
  59.             {
  60.                 Console.WriteLine($"В наличии на складе: {detail.Name} стоимостью {detail.DetailPrice} долларов - {detail.DetailCount} штук.");
  61.             }
  62.             Console.WriteLine();
  63.             Console.WriteLine($"Стоимость работы по замене детали составляет {WorkPrice} долларов.");
  64.             Console.WriteLine($"Компенсация за поломку механиком {Math.Abs(CompensationForBreakage)} долларов.");
  65.             Console.WriteLine($"Компенсация за отсутствие товара {Math.Abs(CompensationForAbscence)} долларов.");
  66.             Console.WriteLine();
  67.         }
  68.  
  69.         public bool WeHaveDetail(Car car)
  70.         {
  71.             foreach(var detail in Details)
  72.             {
  73.                 if (car.DetailBreakage == detail.Name && detail.DetailCount > 0)
  74.                 {
  75.                     Console.WriteLine($"{detail.Name} есть в наличии в количестве {detail.DetailCount} штук.");
  76.                     DetailForReplacement = detail;
  77.                     return true;                
  78.                 }                
  79.             }            
  80.             return false;
  81.         }
  82.  
  83.         public int RepairPrice()
  84.         {
  85.             int price = DetailForReplacement.DetailPrice + WorkPrice;
  86.             return price;
  87.         }      
  88.        
  89.         public void WriteOffFromStock()
  90.         {
  91.             DetailForReplacement.ChangeDetailCount();
  92.         }
  93.     }
  94.  
  95.     class Detail
  96.     {
  97.         public string Name { get; private set; }
  98.         public int DetailPrice { get; private set; }                
  99.         public int DetailCount { get; private set;}              
  100.  
  101.         public Detail(string name, int price, int count)
  102.         {
  103.             Name = name;
  104.             DetailPrice = price;
  105.             DetailCount = count;
  106.         }
  107.  
  108.         public void ChangeDetailCount()
  109.         {
  110.             if(DetailCount>0)
  111.             {
  112.                 DetailCount--;
  113.             }
  114.         }
  115.     }
  116.  
  117.     class Car
  118.     {
  119.         public string DetailBreakage { get; private set; }
  120.  
  121.         public Car() { }
  122.         public Car(string breakage)
  123.         {
  124.             DetailBreakage = breakage;
  125.         }
  126.  
  127.         public Car CreateRandomBrokenCar()      
  128.         {            
  129.             Random random = new Random();
  130.             int breakage = random.Next(1, 6);
  131.             switch(breakage)
  132.             {
  133.                 case 1:
  134.                     Car car1 = new Car("двигатель");
  135.                     return car1;              
  136.                 case 2:
  137.                     Car car2 = new Car("коробка передач");
  138.                     return car2;                    
  139.                 case 3:
  140.                     Car car3 = new Car("задний мост");
  141.                     return car3;                    
  142.                 case 4:
  143.                     Car car4 = new Car("трансмиссия");
  144.                     return car4;
  145.                 case 5:
  146.                     Car car5 = new Car("бензобак");
  147.                     return car5;
  148.                 default:
  149.                     Car car6 = new Car("все равно сюда никогда не попадет, но надо что-то вернуть :)");
  150.                     return car6;
  151.             }            
  152.         }
  153.     }
  154.  
  155.     class Program
  156.     {        
  157.         static void Main(string[] args)
  158.         {
  159.             CarService service = new CarService();
  160.             Car car = new Car();
  161.             service.CreateDetailsInWarehouse();
  162.             while (service.Money>0)
  163.             {
  164.                 car = car.CreateRandomBrokenCar();
  165.                 service.ShowWarehouse();
  166.                 Console.WriteLine($"Приехала новая машина. Поломка - {car.DetailBreakage}.");
  167.                 if (service.WeHaveDetail(car))
  168.                 {
  169.                     int price = service.RepairPrice();
  170.                     if (service.SuccsessfulRepair())
  171.                     {                        
  172.                         Console.WriteLine($"Замена произведена. Стоимость починки составит {price} долларов.");
  173.                         service.ChangeMoneyCount(price);
  174.                         service.WriteOffFromStock();                        
  175.                     }
  176.                     else
  177.                     {
  178.                         Console.WriteLine($"Замена произведена. Стоимость починки составит {price} долларов. Механик повредил деталь при ремонте. Будет выплачен штраф");
  179.                         service.ChangeMoneyCount(price);
  180.                         service.WriteOffFromStock();
  181.                         service.ChangeMoneyCount(service.CompensationForBreakage);
  182.                     }                    
  183.                 }
  184.                 else
  185.                 {
  186.                     Console.WriteLine($"{car.DetailBreakage} нет в наличии. Будет выплачена компенсация.");                    
  187.                     service.ChangeMoneyCount(service.CompensationForAbscence);                    
  188.                 }
  189.                 Console.WriteLine("Для приема следующего клиента нажмите любую клавишу");
  190.                 Console.ReadKey();
  191.                 Console.Clear();
  192.             }
  193.         }
  194.     }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement