Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Diagnostics;
- using System.Linq;
- using System.Reflection.PortableExecutable;
- using System.Security.AccessControl;
- using System.Threading.Channels;
- namespace Автосервис
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- CarService carService = new CarService();
- carService.Work();
- }
- }
- class CarService
- {
- private int _moneyBalance = 10000;
- private Dictionary<string, int> _priceList = new Dictionary<string, int>();
- private Dictionary<string, int> _partsFixPrices = new Dictionary<string, int>();
- //private Dictionary<string, string> _breakdownPart = new Dictionary<string, string>();
- private Car _car = new Car();
- private Warehouse _warehouse = new Warehouse();
- public CarService()
- {
- SetPrice();
- FillPartsFixPrices();
- }
- //private void FillBreakdownPart()
- //{
- // _partsFixPrices.Add("Скрежет, когда заводится", );
- //}
- private void FillPartsFixPrices()
- {
- _partsFixPrices.Add("Стартер", 3000);
- _partsFixPrices.Add("Рычаг подвески", 1500);
- _partsFixPrices.Add("Свечи", 500);
- _partsFixPrices.Add("Термостат", 2000);
- }
- public void Work()
- {
- while (true)
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine($"Баланс мастерской: {_moneyBalance}\n");
- Console.ForegroundColor = ConsoleColor.White;
- ShowPriceList();
- Console.WriteLine("");
- _warehouse.ShowQuantityParts();
- Console.WriteLine("");
- DoCarDiagnostic();
- FixCar();
- Console.ForegroundColor= ConsoleColor.Green;
- Console.WriteLine("Нажмите любую клавишу для приема следующего клиента");
- Console.ForegroundColor = ConsoleColor.White;
- Console.ReadKey();
- Console.Clear();
- }
- }
- private bool TrySelectRightPart()
- {
- for (int i = 0; i < _car.GetBreakdown().Count; i++)
- {
- //_car.GetBreakdown()[i] ==
- //TODO создать словарь ключ проблема в авто, значение <Имя поломки>
- // Создать словарь ключ нужная запчасть значение <Имя поломки>
- // Сравнивать по значениям и давать тру если совпадают
- }
- foreach (var breakdown in _car.GetBreakdown())
- {
- //breakdown.
- }
- return true;
- }
- private void SelectWrongPart()
- {
- if (_warehouse.GetListBreakdownAndParts().ContainsKey("Скрежет, когда заводится"))
- {
- //_warehouse.GetListBreakdownAndParts(). //вернуть тру если ок в методе
- }
- //private bool try select right part()
- //
- }
- //private void DoCarDiagnostic()
- //{
- // int finalPrice = 0;
- // string currentBreakdown = _car.GetRandomBreakdown();
- // Dictionary<string, CarPart> temp = _warehouse.GetListBreakdownAndParts();
- // if (temp.ContainsKey(currentBreakdown))
- // {
- // Console.Write("Требуемая запчасть: ");
- // Console.ForegroundColor = ConsoleColor.DarkYellow;
- // temp[currentBreakdown].ShowDescription();
- // Console.ForegroundColor = ConsoleColor.White;
- // finalPrice += temp[currentBreakdown].Price;
- // }
- // if (_priceList.ContainsKey(currentBreakdown))
- // {
- // Console.Write("Цена за работу: ");
- // Console.ForegroundColor = ConsoleColor.DarkYellow;
- // Console.WriteLine(_priceList[currentBreakdown]);
- // Console.ForegroundColor = ConsoleColor.White;
- // finalPrice += _priceList[currentBreakdown];
- // }
- // Console.Write($"Итого: ");
- // Console.ForegroundColor = ConsoleColor.DarkYellow;
- // Console.Write($"{finalPrice}");
- // Console.ForegroundColor = ConsoleColor.White;
- //}
- private string DoCarDiagnostic()
- {
- int finalPrice = 0;
- string currentBreakdown = _car.GetRandomBreakdown();
- Dictionary<string, CarPart> temp = _warehouse.GetListBreakdownAndParts();
- if (temp.ContainsKey(currentBreakdown))
- {
- Console.Write("Требуемая запчасть: ");
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- temp[currentBreakdown].ShowDescription();
- Console.ForegroundColor = ConsoleColor.White;
- finalPrice += temp[currentBreakdown].Price;
- }
- if (_priceList.ContainsKey(currentBreakdown))
- {
- Console.Write("Цена за работу: ");
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.WriteLine(_priceList[currentBreakdown]);
- Console.ForegroundColor = ConsoleColor.White;
- finalPrice += _priceList[currentBreakdown];
- }
- Console.Write($"Итого: ");
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.Write($"{finalPrice}");
- Console.ForegroundColor = ConsoleColor.White;
- return currentBreakdown;
- }
- public void FixCar()
- {
- const string StarterMenu = "1";
- const string SuspensionMenu = "2";
- const string SparkPlugsMenu = "3";
- const string ThermostatMenu = "4";
- Console.ForegroundColor = ConsoleColor.Yellow;
- Console.WriteLine($"\nВыбери запчасть: \n{StarterMenu} - стартер\n{SuspensionMenu} - рычаг подвески\n{SparkPlugsMenu} - свечи\n{ThermostatMenu} - термостат\n");
- Console.ForegroundColor= ConsoleColor.White;
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case StarterMenu:
- TryRepairCar("Стартер");
- break;
- case SuspensionMenu:
- TryRepairCar("Рычаг подвески");
- break;
- case SparkPlugsMenu:
- TryRepairCar("Свечи");
- break;
- case ThermostatMenu:
- TryRepairCar("Термостат");
- break;
- default:
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Неверная команда");
- Console.ForegroundColor = ConsoleColor.White;
- break;
- }
- }
- private void TryRepairCar(string selectedPart)
- {
- //if (DoCarDiagnostic() == "Скрежет, когда заводится")
- if (_warehouse.TryGetPart(selectedPart, out int partPrice))
- {
- Console.WriteLine("Запчасть в наличии, авто отремонтировали");
- Console.WriteLine($"Баланс мастерской {_moneyBalance} пополнился на {partPrice} (Стоимость запчасти)");
- _moneyBalance += partPrice;
- foreach (var part in _partsFixPrices)
- {
- if (_partsFixPrices.ContainsKey(selectedPart))
- {
- Console.WriteLine($"Баланс мастерской {_moneyBalance} пополнился на {part.Value} (Стоимость ремонта)");
- _moneyBalance += part.Value;
- break;
- }
- }
- Console.ForegroundColor= ConsoleColor.Green;
- Console.WriteLine($"\nБаланс мастерской {_moneyBalance}\n");
- Console.ForegroundColor = ConsoleColor.White;
- }
- else
- {
- int fine = 500;
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine($"Запчасть отсутствует, клиент не доволен, вам штраф {fine}");
- Console.ForegroundColor = ConsoleColor.White;
- _moneyBalance -= fine;
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine($"\nБаланс мастерской {_moneyBalance}\n");
- Console.ForegroundColor = ConsoleColor.White;
- }
- }
- private void ShowPriceList()
- {
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.WriteLine("Прайс лист: ");
- Console.ForegroundColor = ConsoleColor.White;
- foreach (var price in _priceList)
- {
- Console.WriteLine($"Поломка: {price.Key} || Цена починки: {price.Value}");
- }
- }
- private List<int> GetCreatedPrices()
- {
- int starterReplacement = 3000;
- int suspensionReplacement = 1500;
- int sparkPlugsReplacement = 500;
- int thermostatReplacement = 2000;
- List<int> prices = new List<int>()
- {
- starterReplacement,
- suspensionReplacement,
- sparkPlugsReplacement,
- thermostatReplacement
- };
- return prices;
- }
- private void SetPrice()
- {
- for (int i = 0; i < _car.GetBreakdown().Count; i++)
- {
- _priceList.Add(_car.GetBreakdown()[i], GetCreatedPrices()[i]);
- }
- }
- }
- class Warehouse
- {
- Car _car = new Car();
- private List<CarPart> _carParts = new List<CarPart>();
- private Dictionary<string, CarPart> _listBreakdownAndParts = new Dictionary<string, CarPart>();
- private Dictionary<string, string> _problemsNeedParts = new Dictionary<string, string>();
- private Dictionary<string, string> _partsNeedParts = new Dictionary<string, string>();
- private int _starterPrice = 4000;
- private int _suspensionPrice = 3000;
- private int _sparkPlugsPrice = 1000;
- private int _thermostatPrice = 2000;
- public Warehouse()
- {
- FillStorage();
- FillBreakdownList();
- FillProblemsPartsList();
- FillNeedPartsList();
- }
- public bool TryGetPart(string selectedPart)
- {
- Console.WriteLine(_car.Breakdown);
- Console.WriteLine("\nКакую запчасть установить на авто?\n");
- foreach (var problem in _problemsNeedParts)
- {
- foreach (var part in _partsNeedParts)
- {
- if (_car.Breakdown == problem.Key && problem.Value == selectedPart)
- {
- return true;
- }
- }
- }
- return false;
- foreach (var part in _carParts)
- {
- if (selectedPart == part.Title)
- {
- Console.WriteLine($"Со склада забрали {part.Title} стоимостью {part.Price}");
- partPrice = part.Price;
- //_carParts.Remove(part);
- return true;
- }
- }
- partPrice = 0;
- return false;
- }
- public Dictionary<string, CarPart> GetListBreakdownAndParts()
- {
- return new Dictionary<string, CarPart>(_listBreakdownAndParts);
- }
- public List<CarPart> GetCarParts()
- {
- return new List<CarPart>(_carParts);
- }
- public void ShowQuantityParts()
- {
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.WriteLine("Запчасти на складе:");
- Console.ForegroundColor = ConsoleColor.White;
- foreach (var part in _carParts)
- {
- Console.WriteLine($"Запчасть: {part.Title} || Цена: {part.Price}");
- }
- }
- private void FillNeedPartsList()
- {
- _partsNeedParts.Add("Стартер", "стартер");
- _partsNeedParts.Add("Рычаг подвески", "рычаг");
- _partsNeedParts.Add("Свечи", "свечи");
- _partsNeedParts.Add("Термостат", "термостат");
- }
- private void FillProblemsPartsList()
- {
- _problemsNeedParts.Add("Скрежет, когда заводится", "стартер");
- _problemsNeedParts.Add("Стучит подвеска", "рычаг");
- _problemsNeedParts.Add("Прыгают обороты двигателя", "свечи");
- _problemsNeedParts.Add("Перегревается двигатель", "термостат");
- }
- private void FillStorage()
- {
- _carParts.Add(new CarPart("Стартер", _starterPrice));
- _carParts.Add(new CarPart("Рычаг подвески", _suspensionPrice));
- _carParts.Add(new CarPart("Рычаг подвески", _suspensionPrice));
- _carParts.Add(new CarPart("Рычаг подвески", _suspensionPrice));
- _carParts.Add(new CarPart("Свечи", _sparkPlugsPrice));
- _carParts.Add(new CarPart("Свечи", _sparkPlugsPrice));
- _carParts.Add(new CarPart("Термостат", _thermostatPrice));
- _carParts.Add(new CarPart("Термостат", _thermostatPrice));
- _carParts.Add(new CarPart("Термостат", _thermostatPrice));
- _carParts.Add(new CarPart("Термостат", _thermostatPrice));
- }
- private void FillBreakdownList()
- {
- _listBreakdownAndParts.Add("Скрежет, когда заводится", new CarPart("Стартер", _starterPrice));
- _listBreakdownAndParts.Add("Стучит подвеска", new CarPart("Рычаг подвески", _suspensionPrice));
- _listBreakdownAndParts.Add("Прыгают обороты двигателя", new CarPart("Свечи", _sparkPlugsPrice));
- _listBreakdownAndParts.Add("Перегревается двигатель", new CarPart("Термостат", _thermostatPrice));
- }
- }
- class CarPart
- {
- public CarPart(string title, int price)
- {
- Title = title;
- Price = price;
- }
- public string Title { get; private set; }
- public int Price { get; private set; }
- public void ShowDescription()
- {
- Console.WriteLine($"{Title} || Цена - {Price}");
- }
- }
- class Car
- {
- private List<string> _breakdown = new List<string>();
- public Car()
- {
- CreateBreakdown();
- Breakdown = GetRandomBreakdown();
- }
- public string Breakdown { get; private set; }
- public List<string> GetBreakdown()
- {
- return new List<string>(_breakdown);
- }
- public string GetRandomBreakdown()
- {
- for (int i = Utility.GenerateRandomNumber(4); i < _breakdown.Count;)
- {
- Console.Write("Приехал автомобиль с поломкой: ");
- Console.ForegroundColor = ConsoleColor.DarkGreen;
- Console.WriteLine($"{new List<string>(_breakdown)[i]}");
- Console.ForegroundColor = ConsoleColor.White;
- return new List<string>(_breakdown)[i]; // можно просто вернуть стринг с поломкой
- }
- return null;
- }
- private void CreateBreakdown()
- {
- _breakdown.Add("Скрежет, когда заводится");
- _breakdown.Add("Стучит подвеска");
- _breakdown.Add("Прыгают обороты двигателя");
- _breakdown.Add("Перегревается двигатель");
- }
- }
- class Utility
- {
- private static Random s_random = new Random();
- public static int GenerateRandomNumber(int min, int max)
- {
- return s_random.Next(min, max);
- }
- public static int GenerateRandomNumber(int number)
- {
- return s_random.Next(number);
- }
- public static int ReturnInputNumber()
- {
- int number;
- while (int.TryParse(Console.ReadLine(), out number) == false)
- {
- Console.WriteLine("Введено не число, попробуйте еще раз: ");
- }
- return number;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement