Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace ConsoleApp22
- {
- class CarService
- {
- public int WorkPrice { get; } = 300;
- public int CompensationForAbscence { get; } = -200;
- public int CompensationForBreakage { get; } = -300;
- public int Money { get; private set; } = 1000;
- public List<Detail> Details { get; private set; } = new List<Detail>();
- public Detail DetailForReplacement {get; private set;}
- public void CreateDetailsInWarehouse()
- {
- Random random = new Random();
- Detail detail1 = new Detail("двигатель", 700, random.Next(0,30));
- Details.Add(detail1);
- Detail detail2 = new Detail("коробка передач", 600, random.Next(0, 30));
- Details.Add(detail2);
- Detail detail3 = new Detail("задний мост", 400, random.Next(0, 30));
- Details.Add(detail3);
- Detail detail4 = new Detail("трансмиссия", 500, random.Next(0, 30));
- Details.Add(detail4);
- }
- public bool SuccsessfulRepair()
- {
- Random random = new Random();
- int breakChance = random.Next(1, 101);
- if (breakChance>20)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public void ChangeMoneyCount(int price)
- {
- if ((price>0)||((price < 0) && (Math.Abs(price) <= Money)))
- {
- Money += price;
- }
- else
- {
- Console.WriteLine("В кассе не осталось денег");
- }
- }
- public void ShowWarehouse()
- {
- Console.WriteLine($"В кассе {Money} наличными.");
- Console.WriteLine();
- foreach (var detail in Details)
- {
- Console.WriteLine($"В наличии на складе: {detail.Name} стоимостью {detail.DetailPrice} долларов - {detail.DetailCount} штук.");
- }
- Console.WriteLine();
- Console.WriteLine($"Стоимость работы по замене детали составляет {WorkPrice} долларов.");
- Console.WriteLine($"Компенсация за поломку механиком {Math.Abs(CompensationForBreakage)} долларов.");
- Console.WriteLine($"Компенсация за отсутствие товара {Math.Abs(CompensationForAbscence)} долларов.");
- Console.WriteLine();
- }
- public bool WeHaveDetail(Car car)
- {
- foreach(var detail in Details)
- {
- if (car.DetailBreakage == detail.Name && detail.DetailCount > 0)
- {
- Console.WriteLine($"{detail.Name} есть в наличии в количестве {detail.DetailCount} штук.");
- DetailForReplacement = detail;
- return true;
- }
- }
- return false;
- }
- public int RepairPrice()
- {
- int price = DetailForReplacement.DetailPrice + WorkPrice;
- return price;
- }
- public void WriteOffFromStock()
- {
- DetailForReplacement.ChangeDetailCount();
- }
- }
- class Detail
- {
- public string Name { get; private set; }
- public int DetailPrice { get; private set; }
- public int DetailCount { get; private set;}
- public Detail(string name, int price, int count)
- {
- Name = name;
- DetailPrice = price;
- DetailCount = count;
- }
- public void ChangeDetailCount()
- {
- if(DetailCount>0)
- {
- DetailCount--;
- }
- }
- }
- class Car
- {
- public string DetailBreakage { get; private set; }
- public Car() { }
- public Car(string breakage)
- {
- DetailBreakage = breakage;
- }
- public Car CreateRandomBrokenCar()
- {
- Random random = new Random();
- int breakage = random.Next(1, 6);
- switch(breakage)
- {
- case 1:
- Car car1 = new Car("двигатель");
- return car1;
- case 2:
- Car car2 = new Car("коробка передач");
- return car2;
- case 3:
- Car car3 = new Car("задний мост");
- return car3;
- case 4:
- Car car4 = new Car("трансмиссия");
- return car4;
- case 5:
- Car car5 = new Car("бензобак");
- return car5;
- default:
- Car car6 = new Car("все равно сюда никогда не попадет, но надо что-то вернуть :)");
- return car6;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- CarService service = new CarService();
- Car car = new Car();
- service.CreateDetailsInWarehouse();
- while (service.Money>0)
- {
- car = car.CreateRandomBrokenCar();
- service.ShowWarehouse();
- Console.WriteLine($"Приехала новая машина. Поломка - {car.DetailBreakage}.");
- if (service.WeHaveDetail(car))
- {
- int price = service.RepairPrice();
- if (service.SuccsessfulRepair())
- {
- Console.WriteLine($"Замена произведена. Стоимость починки составит {price} долларов.");
- service.ChangeMoneyCount(price);
- service.WriteOffFromStock();
- }
- else
- {
- Console.WriteLine($"Замена произведена. Стоимость починки составит {price} долларов. Механик повредил деталь при ремонте. Будет выплачен штраф");
- service.ChangeMoneyCount(price);
- service.WriteOffFromStock();
- service.ChangeMoneyCount(service.CompensationForBreakage);
- }
- }
- else
- {
- Console.WriteLine($"{car.DetailBreakage} нет в наличии. Будет выплачена компенсация.");
- service.ChangeMoneyCount(service.CompensationForAbscence);
- }
- Console.WriteLine("Для приема следующего клиента нажмите любую клавишу");
- Console.ReadKey();
- Console.Clear();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement