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;
- using System.Threading;
- namespace Task44
- {
- internal class Program
- {
- public static void Main(string[] args)
- {
- string welcomToWork =
- " Робот : Добро пожаловать на работу диспечера железнодорожных линий. \n" +
- "Действие: Вы проходите на своё рабочее место и садитесь в кресло перед огромным экраном.";
- string goodbye =
- "Вы завершили рабочую сессию и пошли домой.";
- Console.WriteLine(welcomToWork);
- Dispatcher dispatcher = new Dispatcher();
- dispatcher.Work();
- Console.WriteLine(goodbye);
- }
- }
- class Dispatcher
- {
- private List<Train> _trains = new List<Train>();
- private Conductor _conductor = new Conductor();
- public void Work()
- {
- string instruction =
- "Для успешной работы: \n" +
- "Шаг 1: Создать направление\n" +
- "Шаг 2: Продать билеты\n" +
- "Шаг 3: Сформировать поезд\n" +
- "Шаг 4: Отправить поезд\n";
- string requestCreateRoute =
- "Нажмите любую клавишу, чтобы создать направление.";
- string requestSellTickets =
- "Нажмите любую клавишу, чтобы продать билеты.";
- string requestCreateTrain =
- "Нажмите любую клавишу, чтобы создать состав.";
- string requestTrainDeparture =
- "Нажмите любую клавишу, чтобы отправить состав.";
- string youNeenExit =
- "Хочешь уйти? Если да пиши <<Да>>. Если нет нажми любую кнопку.";
- int passengers;
- bool isExit = false;
- while (isExit == false)
- {
- ShowInfo();
- Console.WriteLine(instruction);
- Console.WriteLine(requestCreateRoute);
- Console.ReadKey();
- Route route = new Route();
- Thread.Sleep(1000);
- Console.WriteLine(requestSellTickets);
- Console.ReadKey();
- passengers = _conductor.Sell();
- Thread.Sleep(1000);
- Console.WriteLine(requestCreateTrain);
- Console.ReadKey();
- Train train = new Train(passengers, route.DepartureCity, route.ArrivalСity);
- AddTrain(train);
- Thread.Sleep(1000);
- Console.WriteLine(requestTrainDeparture);
- Console.ReadKey();
- Thread.Sleep(1000);
- train.SayTrainDeparture();
- Console.WriteLine("=====================");
- Thread.Sleep(1000);
- Console.WriteLine(youNeenExit);
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case "Да":
- isExit = true;
- break;
- default:
- isExit = false;
- break;
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- public void AddTrain(Train train)
- {
- _trains.Add(train);
- train.ShowInfo();
- }
- private void ShowInfo()
- {
- string information =
- "Информация: ";
- string noTrain =
- "Поездов нет.";
- Console.WriteLine(information);
- if (_trains.Count == 0)
- {
- Console.WriteLine(noTrain);
- Console.ReadKey();
- }
- else
- {
- foreach (var train in _trains)
- {
- Console.WriteLine(
- $"Поезд №{train.Number} отправлен по маршруту {train.DepartureCity} - {train.ArrivalСity}.\t" +
- $"Количество вагонов: {train.WagonsCount}. Количество пассажиров: {train.PassengersCount}");
- }
- }
- Console.WriteLine("=====================================================");
- Console.WriteLine();
- }
- }
- class Conductor
- {
- private Random _random = new Random();
- private int _countMin = 1;
- private int _countMax = 1000;
- private int _count;
- public int Sell()
- {
- string sellTicket =
- "Было продано билетов в количестве - ";
- _count = _random.Next(_countMin, _countMax + 1);
- Console.WriteLine(sellTicket + _count);
- return _count;
- }
- }
- class Train
- {
- private int _count;
- private List<Wagon> _wagons = new List<Wagon>();
- private Dictionary<string, int> _wagonsByTypes = new Dictionary<string, int>();
- public int Number { get; private set; }
- public int WagonsCount { get; private set; }
- public int PassengersCount { get; private set; }
- public string DepartureCity { get; private set; }
- public string ArrivalСity { get; private set; }
- public Train(int passengersCount, string departureCity, string arrivalСity)
- {
- PassengersCount = passengersCount;
- DepartureCity = departureCity;
- ArrivalСity = arrivalСity;
- _wagonsByTypes.Add("Большой", 64);
- _wagonsByTypes.Add("Средний", 32);
- _wagonsByTypes.Add("Маленький", 16);
- _count++;
- Number = _count;
- Create();
- }
- public void ShowInfo()
- {
- foreach (var wagon in _wagons)
- {
- Console.WriteLine($"Вагон типа {wagon.Type} вместительностью {wagon.MaxPlaces}. Свободных мест: {wagon.FreePlaces}");
- }
- Console.WriteLine();
- }
- public void SayTrainDeparture()
- {
- Console.WriteLine($"Внимание! Поезд №{Number} отправляется по маршруту {DepartureCity} - {ArrivalСity}.");
- }
- private void Create()
- {
- string wasFormedTrain =
- "Был сформирован поезд. Количество вагонов: ";
- int numberOfPassengers = PassengersCount;
- foreach (var wagon in _wagonsByTypes)
- {
- while (numberOfPassengers >= wagon.Value)
- {
- _wagons.Add(new Wagon(wagon.Key, wagon.Value, wagon.Value));
- numberOfPassengers -= wagon.Value;
- }
- }
- if (numberOfPassengers > 0)
- {
- _wagons.Add(new Wagon("Маленький", numberOfPassengers, _wagonsByTypes["Маленький"]));
- }
- WagonsCount = _wagons.Count;
- Console.WriteLine(wasFormedTrain + WagonsCount);
- }
- }
- class Wagon
- {
- public string Type { get; private set; }
- public int NumberOfPassengers { get; private set; }
- public int MaxPlaces { get; private set; }
- public int FreePlaces { get; private set; }
- public Wagon(string type, int numberOfPassengers, int maxPlaces)
- {
- Type = type;
- NumberOfPassengers = numberOfPassengers;
- MaxPlaces = maxPlaces;
- FreePlaces = maxPlaces - numberOfPassengers;
- }
- }
- class Route
- {
- private string[] _directionsRoutes = { "Москва", "Санкт-Петербург", "Краснодар", "Сыктывкар", "Нижний-Новгород", "Новосибирск", "Пермь" };
- private Random _random = new Random();
- public string DepartureCity { get; private set; }
- public string ArrivalСity { get; private set; }
- public Route()
- {
- Create();
- }
- private void Create()
- {
- int departureCityIndex = 0;
- int arrivalCityIndex = 0;
- while (departureCityIndex == arrivalCityIndex)
- {
- departureCityIndex = _random.Next(0, _directionsRoutes.Length);
- arrivalCityIndex = _random.Next(0, _directionsRoutes.Length);
- }
- DepartureCity = _directionsRoutes[departureCityIndex];
- ArrivalСity = _directionsRoutes[arrivalCityIndex];
- Console.WriteLine($"Создан маршрут {DepartureCity} — {ArrivalСity}\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement