Anonim_999

4

May 9th, 2022
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using System.IO;
  5.  
  6. namespace WindowsFormsApplication1
  7. {
  8.     public partial class Form4 : Form
  9.     {
  10.         TrainStation station = new TrainStation();
  11.         Basket basket = new Basket();
  12.  
  13.         private string _path = "Tickets.txt";
  14.         private int _price;
  15.         private Random _random;
  16.         public Date Date { get; private set; }
  17.  
  18.         public Form4(Date date)
  19.         {
  20.             Date = date;
  21.             InitializeComponent();
  22.             _random = new Random();
  23.             _price = _random.Next(3000,7000);
  24.         }
  25.  
  26.         private void TrainNumberToolStripMenuItem_Click(object sender, EventArgs e)
  27.         {
  28.  
  29.         }
  30.  
  31.         private void FastetToolStripMenuItem_Click(object sender, EventArgs e)
  32.         {
  33.  
  34.         }
  35.  
  36.         private void ReservedSeatToolStripMenuItem_Click(object sender, EventArgs e)
  37.         {
  38.  
  39.         }
  40.  
  41.         private void Form4_Load(object sender, EventArgs e)
  42.         {
  43.             if (!File.Exists(_path))
  44.                 File.CreateText(_path).Close();
  45.         }
  46.  
  47.         private void richTextBox1_TextChanged(object sender, EventArgs e)
  48.         {
  49.  
  50.         }
  51.  
  52.         private void ShowPlaceInCarriages_Click(object sender, EventArgs e)
  53.         {
  54.             CarriageListInfo.Text = "";
  55.             station.ShowPlaceInCarriageByIndex(NumberTrainNumeric,NumberCarriageNumeric,CarriageListInfo);
  56.         }
  57.  
  58.         private void ShowAllTrain_Click(object sender, EventArgs e)
  59.         {
  60.             TrainsList.Text = "";
  61.             station.ShowTrains(TrainsList);
  62.         }
  63.  
  64.         private void numericUpDown1_ValueChanged(object sender, EventArgs e)
  65.         {
  66.  
  67.         }
  68.  
  69.         private void richTextBox3_TextChanged(object sender, EventArgs e)
  70.         {
  71.  
  72.         }
  73.  
  74.         private void ShowCarriagesButton_Click(object sender, EventArgs e)
  75.         {
  76.             CarriagesInfoTextBox.Text = "";
  77.             station.ShowInfoCarriagesByindexTrain(NumberTrainNumeric, CarriagesInfoTextBox);
  78.         }
  79.  
  80.         private void ShowTrain_Click(object sender, EventArgs e)
  81.         {
  82.             station.ShowInfoTrainByIndex(NumberTrainNumeric, TrainInfoTextBox);
  83.         }
  84.  
  85.         private void ShowFreePlaceButton_Click(object sender, EventArgs e)
  86.         {
  87.             CarriageListInfo.Text = "";
  88.             station.ShowFreePlaceInCarriageByIndex(NumberTrainNumeric,NumberCarriageNumeric,CarriageListInfo);
  89.         }
  90.  
  91.         private void AddTicketButton(object sender, EventArgs e)
  92.         {
  93.             BasketTextBox.Text = "";
  94.             basket.TryAddTicket(NumberTrainNumeric,NumberCarriageNumeric,NumberPlaceNumeric,station);
  95.             basket.WriteInfo(BasketTextBox);
  96.         }
  97.  
  98.         private void label5_Click(object sender, EventArgs e)
  99.         {
  100.  
  101.         }
  102.  
  103.         private void button7_Click(object sender, EventArgs e)
  104.         {
  105.             if (basket.TicketCount > 0)
  106.             {
  107.                 if (!File.Exists("CountTicket.txt"))
  108.                     File.CreateText("CountTicket.txt").Close();
  109.                
  110.                 File.WriteAllText("CountTicket.txt", $"{basket.TicketCount}");
  111.                 File.WriteAllText(_path,"");
  112.                 basket.LoadData(_path);
  113.  
  114.                 Form6 Final = new Form6(this,_price);
  115.                 Final.Show();
  116.                 this.Visible = false;
  117.             }
  118.             else
  119.             {
  120.                 MessageBox.Show("Выберите билет");
  121.             }
  122.         }
  123.     }
  124.  
  125.     class Basket
  126.     {
  127.         private List<Ticket> _tickets;
  128.  
  129.         public int TicketCount => _tickets.Count;
  130.  
  131.         public Basket()
  132.         {
  133.             _tickets = new List<Ticket>();
  134.         }
  135.  
  136.         public void TryAddTicket(NumericUpDown numberTrain, NumericUpDown numberCarriage, NumericUpDown numberPlace, TrainStation station)
  137.         {
  138.             try
  139.             {
  140.                 if (station.GetBoolPlace((int)numberTrain.Value - 1,(int)numberCarriage.Value - 1,(int)numberPlace.Value - 1))
  141.                 {
  142.                     Train train = station.GetTrainByIndex((int)numberTrain.Value - 1);
  143.                     Carriage carriage = train.GetCarriageByIndex((int)numberCarriage.Value - 1);
  144.                     Place place = carriage.GetPlaceByIndex((int)numberPlace.Value - 1);
  145.                     _tickets.Add(new Ticket(train,carriage,place));
  146.                     carriage.SetBoolPlace((int)numberPlace.Value -1,false);
  147.                 }
  148.                 else
  149.                 {
  150.                     MessageBox.Show("Билет на это место уже занят");
  151.                 }
  152.             }
  153.             catch (Exception)
  154.             {
  155.                 MessageBox.Show("Проверьте введенные данные");
  156.             }
  157.         }
  158.  
  159.         public void WriteInfo(RichTextBox textbox)
  160.         {
  161.             textbox.Text = GetInfo();
  162.         }
  163.  
  164.         public void LoadData(string path)
  165.         {
  166.             File.WriteAllText(path,"");
  167.             string text = "";
  168.  
  169.             foreach (Ticket ticket in _tickets)
  170.                 text += ticket.GetInfo() + "\n";
  171.  
  172.             File.WriteAllText(path,text);
  173.         }
  174.  
  175.         private string GetInfo()
  176.         {
  177.             string info = "";
  178.  
  179.             foreach (Ticket ticket in _tickets)
  180.                 info += ticket.GetInfo();
  181.  
  182.             return info;
  183.         }
  184.     }
  185.  
  186.     class Ticket
  187.     {
  188.         private Train _train;
  189.         private Carriage _carriage;
  190.         private Place _place;
  191.  
  192.         public Ticket(Train train,Carriage carriage,Place place)
  193.         {
  194.             _train = train;
  195.             _carriage = carriage;
  196.             _place = place;
  197.         }
  198.  
  199.         public string GetInfo()
  200.         {
  201.             string info = $"Номер поезда - {_train.Number} Тип поезда - {_train.TypeTrain}\nНомер вагона - {_carriage.Number} Тип вагона - {_carriage.TypeCarriage}\nМесто - {_place.Number}\n\n";
  202.             return info;
  203.         }
  204.     }
  205.  
  206.     class TrainStation
  207.     {
  208.         private List<Train> _trains;
  209.         private const int CountTrains = 10;
  210.         private Random random;
  211.  
  212.         public List<Train> Trains => _trains;
  213.  
  214.         public TrainStation()
  215.         {
  216.             random = new Random();
  217.             _trains = new List<Train>();
  218.  
  219.             for (int i = 0; i < CountTrains; i++)
  220.                 _trains.Add(new Train(i + 1, ref random));
  221.         }
  222.  
  223.         public Train GetTrainByIndex(int index)
  224.         {
  225.             return _trains[index];
  226.         }
  227.  
  228.         public void ShowTrains(RichTextBox trainsList)
  229.         {
  230.             foreach (Train train in _trains)
  231.                 trainsList.Text += train.ShowInfo();
  232.         }
  233.  
  234.         public void ShowInfoTrainByIndex(NumericUpDown trainsNumber, RichTextBox trainInfo)
  235.         {
  236.             try
  237.             {
  238.                 trainInfo.Text = _trains[(int)trainsNumber.Value - 1].ShowInfo();
  239.             }
  240.             catch (Exception)
  241.             {
  242.                 MessageBox.Show("Такого поезда нет!");
  243.             }
  244.         }
  245.  
  246.         public void ShowInfoCarriagesByindexTrain(NumericUpDown trainsNumber, RichTextBox carriagesInfo)
  247.         {
  248.             try
  249.             {
  250.                 _trains[(int)trainsNumber.Value - 1].SowInfoCarriages(carriagesInfo);
  251.             }
  252.             catch (Exception)
  253.             {
  254.                 MessageBox.Show("Указан не вернный поезд");
  255.             }
  256.         }
  257.  
  258.         public void ShowPlaceInCarriageByIndex(NumericUpDown trainNumber, NumericUpDown carriageNumber, RichTextBox carriagePlacesTextBox)
  259.         {
  260.             try
  261.             {
  262.                 _trains[(int)trainNumber.Value-1].OnShowAllPlace((int)carriageNumber.Value-1,carriagePlacesTextBox);
  263.             }
  264.             catch (Exception)
  265.             {
  266.                 MessageBox.Show("Нету такого вагона!");
  267.             }
  268.         }
  269.  
  270.         public void ShowFreePlaceInCarriageByIndex(NumericUpDown trainNumber, NumericUpDown carriageNumber, RichTextBox carriageFreePlacesTextBox)
  271.         {
  272.             try
  273.             {
  274.                 _trains[(int)trainNumber.Value-1].OnShowFreePlace((int)carriageNumber.Value-1, carriageFreePlacesTextBox);
  275.             }
  276.             catch (Exception)
  277.             {
  278.                 MessageBox.Show("Нету такого вагона!");
  279.             }
  280.         }
  281.  
  282.         public bool GetBoolPlace(int numberTrain, int numberCarriage,int numberPlace)
  283.         {
  284.             return _trains[numberTrain].Carriages[numberCarriage].Places[numberPlace].GetInfo();
  285.         }
  286.     }
  287.  
  288.     class Train
  289.     {
  290.         private int _number;
  291.         private List<Carriage> _carriages;
  292.         private string _typeTrain;
  293.         private int _minCountCarriages = 15;
  294.         private int _maxCountCarriages = 20;
  295.         private List<string> _exampleType;
  296.  
  297.         public List<Carriage> Carriages => _carriages;
  298.         public int Number => _number;
  299.         public string TypeTrain => _typeTrain;
  300.  
  301.         public Train(int number,ref Random random)
  302.         {
  303.             _number = number;
  304.             _carriages = new List<Carriage>();
  305.             _exampleType = new List<string>() { "Пассажирский", "Скоростной"};
  306.             _typeTrain = _exampleType[random.Next(0,_exampleType.Count)];
  307.             int count = random.Next(_minCountCarriages,_maxCountCarriages);
  308.  
  309.             for (int i = 0; i < count; i++)
  310.                 _carriages.Add(new Carriage(i + 1, ref random));
  311.         }
  312.  
  313.         public Carriage GetCarriageByIndex(int index)
  314.         {
  315.             return _carriages[index];
  316.         }
  317.  
  318.         public void SowInfoCarriages(RichTextBox textBox)
  319.         {
  320.             foreach (Carriage carriage in _carriages)
  321.                 textBox.Text += carriage.ShowInfo();
  322.         }
  323.  
  324.         public string ShowInfo()
  325.         {
  326.             string info = $"Номер поезда - {_number}\nКоличество вогонов - {_carriages.Count}\nТип поезда - {_typeTrain}\n\n";
  327.             return info;
  328.         }
  329.  
  330.         public void OnShowAllPlace(int numberCarriage, RichTextBox carriagePlaces)
  331.         {
  332.             _carriages[numberCarriage].ShowAllPlace(carriagePlaces);
  333.         }
  334.  
  335.         public void OnShowFreePlace(int numberCarriage, RichTextBox carriageFreePlaces)
  336.         {
  337.             _carriages[numberCarriage].ShowFreePlace(carriageFreePlaces);
  338.         }
  339.     }
  340.  
  341.     class Carriage
  342.     {
  343.         private List<Place> _places;
  344.         private int _number;
  345.         private int _countFreePlace = 54;
  346.         private string _typeCarriage;
  347.         private List<string> _exampleType;
  348.  
  349.         public int Number => _number;
  350.         public string TypeCarriage => _typeCarriage;
  351.         public List<Place> Places => _places;
  352.  
  353.         public Carriage(int number, ref Random random)
  354.         {
  355.             _number = number;
  356.             _places = new List<Place>();
  357.             _exampleType = new List<string> { "Плацкарт", "Купе"};
  358.             _typeCarriage = _exampleType[random.Next(0,_exampleType.Count)];
  359.  
  360.             if (_typeCarriage == "Купе")
  361.                 _countFreePlace = 36;
  362.  
  363.             for (int i = 0; i < _countFreePlace; i++)
  364.                 _places.Add(new Place(i + 1,ref random));
  365.         }
  366.  
  367.         public Place GetPlaceByIndex(int index)
  368.         {
  369.             return _places[index];
  370.         }
  371.  
  372.         public void ShowAllPlace(RichTextBox textBox)
  373.         {
  374.             for (int i = 0; i < _places.Count; i++)
  375.                 textBox.Text += $"{i + 1}.Место - {_places[i].GetInfo()}\n";
  376.         }
  377.  
  378.         public string ShowInfo()
  379.         {
  380.             string info = $"Номер вагона - {_number}, Мест - {_places.Count} Тип - {_typeCarriage}\n";
  381.             return info;
  382.         }
  383.  
  384.         public void ShowFreePlace(RichTextBox textBox)
  385.         {
  386.             for (int i = 0; i < _places.Count; i++)
  387.             {
  388.                 if (_places[i].GetInfo())
  389.                     textBox.Text += $"{i + 1}.Место - {_places[i].GetInfo()}\n";
  390.             }
  391.         }
  392.  
  393.         public void SetBoolPlace(int index, bool free)
  394.         {
  395.             _places[index].SetIsFree(free);
  396.         }
  397.     }
  398.  
  399.     class Place
  400.     {
  401.         private bool _isFree;
  402.         private int _number;
  403.  
  404.         public int Number => _number;
  405.  
  406.         public Place(int number,ref Random random)
  407.         {
  408.             _number = number;
  409.             _isFree = random.Next(0,2) > 0;
  410.         }
  411.  
  412.         public void SetIsFree(bool free)
  413.         {
  414.             _isFree = free;
  415.         }
  416.  
  417.         public bool GetInfo()
  418.         {
  419.             return _isFree;
  420.         }
  421.     }
  422. }
Advertisement
Add Comment
Please, Sign In to add comment