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 TrainDispatcher_02
- {
- class Program
- {
- static void Main(string[] args)
- {
- Yardmaster yardmaster = new Yardmaster();
- yardmaster.Work();
- }
- }
- class Yardmaster
- {
- private List<Station> _stations = new List<Station>();
- private Train _train;
- private int[] _soldedTickets;
- public Yardmaster()
- {
- AddStations();
- }
- public void Work()
- {
- bool isOpen = true;
- string header = "Центр формирования поездов Белорусской железной дороги\n";
- string trainDirection;
- while (isOpen)
- {
- Console.WriteLine($"{header}");
- Console.WriteLine($"Текущий рейс не сформирован");
- Console.Write($"\nНажмите любую для автоматического формирования направления или exit для выхода: ");
- string userInput = Console.ReadLine();
- if(userInput == "exit")
- {
- isOpen = false;
- break;
- }
- Console.Clear();
- trainDirection = CreateTrainDirection();
- Console.WriteLine($"{header}");
- Console.WriteLine($"Сформировано направление: {trainDirection}");
- _train = new Train(trainDirection);
- Console.WriteLine($"\nВ данном направлении продано: ");
- SellTickets();
- ShowSoldedTickets();
- Console.Write($"\nНажмите любую для расчета необходимого количества вагонов: ");
- Console.ReadKey();
- _train.CalculateWagons(_soldedTickets);
- Console.WriteLine($"\n\nНеобходимое количество вагонов добавлено к поезду");
- _train.ShowRightNumberOfWagons();
- Console.WriteLine($"\nНажмите для отправки поезда по маршруту {trainDirection}");
- Console.ReadKey();
- _train = null;
- Console.WriteLine($"поезд отправлен");
- Console.ReadKey();
- Console.Clear();
- }
- }
- private void AddStations()
- {
- _stations.Add(new Station("Барановичи"));
- _stations.Add(new Station("Бобруйск"));
- _stations.Add(new Station("Брест"));
- _stations.Add(new Station("Витебск"));
- _stations.Add(new Station("Гомель"));
- _stations.Add(new Station("Гродно"));
- _stations.Add(new Station("Минск"));
- _stations.Add(new Station("Могилев"));
- _stations.Add(new Station("Мозырь"));
- _stations.Add(new Station("Пинск"));
- _stations.Add(new Station("Полоцк"));
- _stations.Add(new Station("на Берлин"));
- }
- private string CreateTrainDirection()
- {
- string departurePoint = "";
- string arrivePoint = "";
- bool isSame = true;
- Random rand = new Random();
- while (isSame)
- {
- departurePoint = _stations[rand.Next(0, _stations.Count)].Name;
- arrivePoint = _stations[rand.Next(0, _stations.Count)].Name;
- if (departurePoint != arrivePoint)
- {
- isSame = false;
- }
- }
- return departurePoint + " - " + arrivePoint;
- }
- private void SellTickets()
- {
- int maxTickets = 271;
- int size = _train.TakeSizehWagonTypes();
- _soldedTickets = new int[size];
- Random rand = new Random();
- for (int i = 0; i < _soldedTickets.Length; i++)
- {
- _soldedTickets[i] = rand.Next(0, maxTickets);
- }
- }
- private void ShowSoldedTickets()
- {
- for (int i = 0; i < _soldedTickets.Length; i++)
- {
- Console.WriteLine($"{_train.TakeWagonTypes(i)}х билетов:\t{_soldedTickets[i]}");
- }
- }
- }
- class Train
- {
- private string _direction;
- private List<Wagon> _wagonsTypes = new List<Wagon>();
- private int[] _numberOfWagons;
- public Train(string direction)
- {
- _direction = direction;
- _wagonsTypes.Add(new Wagon("спальны", 18));
- _wagonsTypes.Add(new Wagon("купейны", 36));
- _wagonsTypes.Add(new Wagon("плацкартны", 54));
- _numberOfWagons = new int[_wagonsTypes.Count];
- }
- public string TakeWagonTypes(int index)
- {
- return _wagonsTypes[index].WagonType;
- }
- public int TakeSizehWagonTypes()
- {
- return _wagonsTypes.Count;
- }
- public void CalculateWagons(int[] soldedTickets)
- {
- for (int i = 0; i < _wagonsTypes.Count; i++)
- {
- _numberOfWagons[i] = soldedTickets[i] / _wagonsTypes[i].Seats + 1;
- if(soldedTickets[i] % _wagonsTypes[i].Seats == 0)
- {
- _numberOfWagons[i]--;
- }
- }
- }
- public void ShowRightNumberOfWagons()
- {
- for (int i = 0; i < _numberOfWagons.Length; i++)
- {
- Console.WriteLine($"{_wagonsTypes[i].WagonType}х вагонов: {_numberOfWagons[i]}");
- }
- }
- }
- class Wagon
- {
- private int _soldedTickets;
- public string WagonType { get; private set; }
- public int Seats { get; private set; }
- public Wagon(string wagonType, int seats)
- {
- WagonType = wagonType;
- Seats = seats;
- }
- public Wagon(string wagonType, int seats, int soldedTickets)
- {
- WagonType = wagonType;
- Seats = seats;
- _soldedTickets = soldedTickets;
- }
- }
- class Station
- {
- public string Name { get; private set; }
- public Station(string name)
- {
- Name = name;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement