Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace TrainPlanner
- {
- class Program
- {
- static void Main(string[] args)
- {
- const int CommandNewTrainPlan = 1;
- const int CommandExit = 2;
- TrainPlan planner = new TrainPlan();
- bool isRunning = true;
- while (isRunning)
- {
- Console.Clear();
- planner.ShowCurrentRoute();
- Console.WriteLine($"{CommandNewTrainPlan} - Задать новый рейс\n{CommandExit} - Выход");
- int userInput = UserUtils.GetNumberFromUser();
- switch (userInput)
- {
- case CommandNewTrainPlan:
- planner.CreateTrainPlan();
- break;
- case CommandExit:
- isRunning = false;
- break;
- }
- }
- }
- class UserUtils
- {
- public static int GetNumberFromUser()
- {
- string userInput;
- int userNumber;
- bool isNumber = false;
- do
- {
- userInput = Console.ReadLine();
- isNumber = int.TryParse(userInput, out userNumber);
- }
- while (isNumber == false);
- return userNumber;
- }
- }
- class Car
- {
- public Car(int carCapacity)
- {
- Capacity = carCapacity;
- }
- public int Capacity { get; private set; }
- }
- class Train
- {
- private string _route;
- private List<Car> _cars;
- private bool _isEnRoute;
- private int _occupiedPlaces;
- public Train()
- {
- _cars = new List<Car>();
- }
- public int Capacity { get; private set; }
- public void SetRoute(string routeTitle)
- {
- _route = routeTitle;
- }
- public void InsertCar(Car car)
- {
- Capacity += car.Capacity;
- _cars.Add(car);
- }
- public void Run()
- {
- _isEnRoute = true;
- Console.WriteLine("Поезд отправлен");
- }
- public void RegisterPassengers(int passengersNum)
- {
- _occupiedPlaces = passengersNum;
- }
- public void ShowInfo()
- {
- if (_isEnRoute)
- {
- Console.WriteLine($"Поезд <{_route}> - всего мест:{Capacity} - из них занято: {_occupiedPlaces}");
- }
- else
- {
- Console.WriteLine("Состав не сформирован");
- }
- }
- }
- class TrainPlan
- {
- private Train _processedTrain;
- private int _soldTickets;
- private int _maxCarCapacity = 50;
- private int _minCarCapacity = 30;
- private int _maxTickets = 1000;
- private int _minTickets = 10;
- public void CreateRoute()
- {
- _processedTrain = new Train();
- Console.WriteLine("Введите маршрут");
- _processedTrain.SetRoute(Console.ReadLine());
- }
- public void SellTickets()
- {
- Random rand = new Random();
- _soldTickets = rand.Next(_minTickets, _maxTickets);
- Console.WriteLine($"Продано {_soldTickets} билетов");
- }
- public void FormTrain()
- {
- Random rand = new Random();
- int carCapacity;
- while (_processedTrain.Capacity < _soldTickets)
- {
- carCapacity = rand.Next(_minCarCapacity, _maxCarCapacity);
- _processedTrain.InsertCar(new Car(carCapacity));
- }
- _processedTrain.RegisterPassengers(_soldTickets);
- }
- public Train RunTrain()
- {
- _processedTrain.Run();
- _processedTrain.ShowInfo();
- return _processedTrain;
- }
- public void CreateTrainPlan()
- {
- CreateRoute();
- SellTickets();
- FormTrain();
- RunTrain();
- Console.ReadKey();
- }
- public void ShowCurrentRoute()
- {
- if(_processedTrain == null)
- Console.WriteLine("Рейсы отсутствуют");
- else
- _processedTrain.ShowInfo();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement