Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- internal class Program
- {
- //У вас есть программа, которая помогает пользователю составить план поезда.
- //Есть 4 основных шага в создании плана:
- //-Создать направление - создает направление для поезда(к примеру Бийск - Барнаул)
- //-Продать билеты - вы получаете рандомное кол-во пассажиров, которые купили билеты на это направление
- //-Сформировать поезд - вы создаете поезд и добавляете ему столько вагонов(вагоны могут быть разные по вместительности),
- //сколько хватит для перевозки всех пассажиров.
- //-Отправить поезд - вы отправляете поезд, после чего можете снова создать направление.
- //В верхней части программы должна выводиться полная информация о текущем рейсе или его отсутствии
- static void Main(string[] args)
- {
- Station station = new Station();
- string userInput;
- bool inProgram = true;
- while (inProgram)
- {
- station.ShowInfo();
- Console.Write("\n\n1 - Создать направление.\n2 - Продать билеты.\n" +
- "3 - Сформировать поезд.\n4 - Отправить поезд.\n5 - Выход.\nВыбери необходимый пункт: ");
- userInput = Console.ReadLine();
- Console.WriteLine();
- switch (userInput)
- {
- case "1":
- station.CreateDirection();
- break;
- case "2":
- station.SellTickets();
- break;
- case "3":
- station.FormTrain();
- break;
- case "4":
- station.SendTrain();
- break;
- case "5":
- inProgram = false;
- break;
- default:
- Console.WriteLine("Не верный ввод.");
- break;
- }
- Console.Clear();
- }
- }
- class Station
- {
- private Train _train;
- private int _countPassengers;
- private bool _isFree;
- public string DepartureStation { get; private set; }
- public string ArrivalStation { get; private set; }
- public Station()
- {
- _train = null;
- _isFree = true;
- _countPassengers = 0;
- }
- public void CreateDirection()
- {
- if (_isFree == false)
- {
- Console.WriteLine("Терминал ЗАНЯТ! отправьте поезд.");
- }
- else
- {
- Console.Write("Введите станцию отправления: ");
- DepartureStation = Console.ReadLine();
- Console.Write("Введите станцию прибытия: ");
- ArrivalStation = Console.ReadLine();
- _isFree = false;
- }
- Console.ReadKey();
- }
- public void SellTickets()
- {
- if (_isFree == true)
- {
- Console.WriteLine("Что бы продать билеты, нужно создать направление.");
- }
- else if (_countPassengers > 0)
- {
- Console.WriteLine("Билеты проданы, сформируйте поезд");
- }
- else
- {
- int minPlace = 0;
- int maxPlace = 300;
- Random random = new Random();
- _countPassengers = random.Next(minPlace, maxPlace);
- }
- Console.ReadKey();
- }
- public void FormTrain()
- {
- if (_countPassengers == 0)
- {
- Console.WriteLine("Сперва продайте хоть 1 билет.");
- }
- else if (_train != null)
- {
- Console.WriteLine("Поезд уже сформирован.");
- }
- else
- {
- int maxPlace = 0;
- int countWagon;
- while (maxPlace == 0)
- {
- Console.Write("Укажите количество мест в одном вагоне: ");
- maxPlace = ReadInt(Console.ReadLine());
- if (maxPlace == 0)
- {
- Console.WriteLine("Вагоны с {0} мест, экономически не выгодны!", maxPlace);
- }
- }
- countWagon = _countPassengers / maxPlace;
- if (_countPassengers % maxPlace != 0)
- {
- countWagon++;
- }
- _train = new Train(countWagon, maxPlace);
- }
- Console.ReadKey();
- }
- public void SendTrain()
- {
- if (_train == null)
- {
- Console.WriteLine("Нет поезда для отправления.");
- }
- else
- {
- Console.WriteLine("\n\nПоезд отправился в путь, теперь терминал свободен!\nМожно создать новое направление или уйти.");
- _countPassengers = 0;
- _isFree = true;
- _train = null;
- }
- Console.ReadKey();
- }
- public void ShowInfo()
- {
- Console.WriteLine("ИНФОРМАЦИОННОЕ ТАБЛО\n");
- if (_isFree == true)
- {
- Console.WriteLine("В данный момент рейсов нет.");
- }
- else
- {
- Console.WriteLine("Создан рейс {0} - {1}", DepartureStation, ArrivalStation);
- if (_countPassengers > 0)
- {
- Console.WriteLine("Куплено {0} билетов.", _countPassengers);
- }
- if (_train != null)
- {
- Console.Write("Поезд из ");
- _train.ShowInfo();
- Console.WriteLine(" вагонов готов к отправлению!");
- }
- }
- }
- private int ReadInt(string convert)
- {
- bool success = int.TryParse(convert, out int number);
- while (success == false)
- {
- Console.Write("Ошибка конвертации, повторите ввод: ");
- success = int.TryParse(Console.ReadLine(), out number);
- }
- return number;
- }
- }
- class Wagon
- {
- public int MaxPlace { get; private set; }
- public Wagon(int maxPlace)
- {
- MaxPlace = maxPlace;
- }
- }
- class Train
- {
- private List<Wagon> _structure = new List<Wagon>();
- public Train(int countWagon, int maxPlace)
- {
- Fill(countWagon, maxPlace);
- }
- public void ShowInfo()
- {
- Console.Write(_structure.Count);
- }
- private void Fill(int countWagon, int maxPlace)
- {
- while (countWagon > 0)
- {
- _structure.Add(new Wagon(maxPlace));
- countWagon--;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement