Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Task50
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- AutoService autoService = new AutoService();
- autoService.Work();
- }
- }
- class AutoService
- {
- private Random _random = new Random();
- private Storage _details;
- private Queue<Car> _cars;
- private float _money;
- public AutoService()
- {
- int minCountCar = 1;
- int maxCountCar = 5;
- int countCar = _random.Next(minCountCar, maxCountCar);
- int minCountMoney = 2000;
- int maxCountMoney = 10000;
- _money = _random.Next(minCountMoney, maxCountMoney);
- _details = new Storage();
- _cars = new Queue<Car>();
- AddCars(countCar);
- }
- public void Work()
- {
- bool isExit = false;
- while (isExit == false && _cars.Count > 0)
- {
- Console.WriteLine($"На вашем балансе - {_money} денег");
- Console.Write(
- $"У вас очередь в мастерской из {_cars.Count} машин, ожидающих ремонт\n" +
- $"Домтупные команды:\n" +
- $"Обслужить - обслужить машины\n" +
- $"Выход - закрыть мастерскую." +
- $"Введите действие: ");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case "Обслужить":
- ServiceCar();
- break;
- case "Выход":
- isExit = true;
- break;
- default:
- Console.WriteLine("Такой команды нет.");
- break;
- }
- }
- }
- private void AddCars(int countCar)
- {
- for (int i = 0; i < countCar; i++)
- {
- _cars.Enqueue(new Car());
- }
- }
- private void ShowBrokeDetail(Car car)
- {
- Console.WriteLine($"У автомобиля поломан(-о) - {car.BrokenDetail}.");
- Console.WriteLine($"Цена за работу будет - {_details.GetRepairPrice(car)} денег.");
- }
- private void ServiceCar()
- {
- Console.Clear();
- Car car = _cars.Dequeue();
- ShowBrokeDetail(car);
- Console.Write(
- "У вас доступно два действия: \n" +
- "Ремонтировать и отказать\n" +
- "Введите действие: ");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case "Ремонтировать":
- Repair(car);
- break;
- case "Отказать":
- RefuseClient();
- break;
- default:
- Console.WriteLine("Такого действия нет.");
- break;
- }
- }
- private void Repair(Car car)
- {
- int indexDetail;
- if (TryRepairCar(car, out indexDetail))
- {
- Console.WriteLine($"Вы починили. Вам заплатили {_details.GetRepairPrice(car)} денег");
- _money += _details.GetRepairPrice(car);
- _details.RemoveAt(indexDetail);
- }
- else
- {
- Console.WriteLine(
- $"Вы установили не ту деталь. \n" +
- $"Вы возместили ущерб в размере - {_details.GetRepairPrice(car)} денег");
- _money -= _details.GetRepairPrice(car);
- }
- }
- private void RefuseClient()
- {
- int fine = 500;
- Console.WriteLine($"Вы отказали клиенту и оплачиваете штраф в размере {fine} денег");
- _money -= fine;
- }
- private bool TryRepairCar(Car car, out int indexDetail)
- {
- _details.Show();
- string requestNumberIndexDetail =
- "Введите номер детали которую хотите заменить.";
- indexDetail = GetInt(requestNumberIndexDetail);
- if (indexDetail >= 0 && indexDetail <= _details.GetCount() - 1 && car.BrokenDetail == _details.GetName(indexDetail))
- {
- return true;
- }
- else if (indexDetail >= 0 && indexDetail <= _details.GetCount() - 1)
- {
- Console.WriteLine("Эта не та деталь.");
- return false;
- }
- else
- {
- Console.WriteLine("Такой детали нет.");
- return false;
- }
- }
- private int GetInt(string requestInputNumber)
- {
- string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
- string userInput;
- bool resultConverted = false;
- int number = 0;
- while (resultConverted == false)
- {
- Console.Write(requestInputNumber);
- userInput = Console.ReadLine();
- resultConverted = int.TryParse(userInput, out int numberConvert);
- if (resultConverted != true)
- Console.WriteLine(errorConversion);
- else
- number = numberConvert;
- }
- return number;
- }
- }
- class Car
- {
- private Random _random = new Random();
- private List<string> _causeFailure = new List<string>();
- public string BrokenDetail { get; private set; }
- public Car()
- {
- AddCauseFailure();
- CreateBrokenDetail();
- }
- private void CreateBrokenDetail()
- {
- int detailIndex = _random.Next(0, _causeFailure.Count-1);
- BrokenDetail = GetBrokenDetail(detailIndex);
- }
- private string GetBrokenDetail(int detailIndex)
- {
- return _causeFailure[detailIndex];
- }
- private void AddCauseFailure()
- {
- _causeFailure.Add("Колесо");
- _causeFailure.Add("Фары");
- _causeFailure.Add("Коробка передач");
- _causeFailure.Add("Тормоза");
- _causeFailure.Add("Бампер");
- }
- }
- class Storage
- {
- private List<Detail> _storage = new List<Detail>();
- public Storage()
- {
- AddDetail();
- }
- public void Show()
- {
- Console.WriteLine("Детали которые есть на складе: ");
- for (int i = 0; i < _storage.Count; i++)
- {
- Console.WriteLine($"{i+1}. {_storage[i].Name} стоимостью - {_storage[i].Price}");
- }
- }
- public int GetRepairPrice(Car car)
- {
- int repairPrice = 0;
- int costWork = 10;
- foreach (var detail in _storage)
- {
- if (car.BrokenDetail == detail.Name)
- {
- repairPrice += detail.Price * costWork;
- break;
- }
- }
- return repairPrice;
- }
- public void RemoveAt(int index)
- {
- _storage.RemoveAt(index);
- }
- public int GetCount()
- {
- return _storage.Count;
- }
- public string GetName(int index)
- {
- return _storage[index].Name;
- }
- private void AddDetail()
- {
- _storage.Add(new Detail("Колесо", 50));
- _storage.Add(new Detail("Фары", 25));
- _storage.Add(new Detail("Коробка передач", 85));
- _storage.Add(new Detail("Тормоза", 60));
- _storage.Add(new Detail("Бампер", 10));
- }
- private int GetInt(string requestInputNumber)
- {
- string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
- string userInput;
- bool resultConverted = false;
- int number = 0;
- while (resultConverted == false)
- {
- Console.Write(requestInputNumber);
- userInput = Console.ReadLine();
- resultConverted = int.TryParse(userInput, out int numberConvert);
- if (resultConverted != true)
- Console.WriteLine(errorConversion);
- else
- number = numberConvert;
- }
- return number;
- }
- }
- class Detail
- {
- public string Name { get; private set; }
- public int Price { get; private set; }
- public Detail(string name, int price)
- {
- Name = name;
- Price = price;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement