Example #1
0
        /// <summary>
        /// Podstawowy konstruktor do lotu pojedynczego
        /// </summary>
        public Lot(string ID, Trasa _Droga, DateTime DataWylotu, Boolean _CZyMawracac, Samolot MaszynaObslugujaca, TypSamolotu RodzajSamolotu)
        {
            Pojazd  = RodzajSamolotu;
            Maszyna = MaszynaObslugujaca;
            LNIDRezerwacjiBiletow = new List <string>();
            ListaRezerwacji       = new List <RezerwcjaBilet>();
            SetID(ID);
            Droga               = _Droga;
            DataGodzinaWylotu   = DataWylotu;            //ostatnia liczna to sekundy- nieistotna wartość w programie
            Pojazd              = null;                  // to też pomaga stwierdzić czy istnieje samolot który jest zapisany do trasy
            CzasLotu            = new TimeSpan(0, 0, 0); //dzięki temu wiemy że na początku nie ma konkretnego samolotu który obsługuje ta trase
            CzyMaWracac         = _CZyMawracac;
            Maszyna.Cykliczny   = false;
            Maszyna.CzyDostepny = false;
            CzasLotu            = PlanLotu.ILeleciWjednaStrone(RodzajSamolotu, _Droga);
            DataLadowania       = this.DataLądowaniaDateTime();

            if (CzyMaWracac == true && Maszyna.CoObsluguje != null)
            {
                Maszyna.Coobsluguje2 = this;
            }
            else
            {
                Maszyna.CoObsluguje = this;
            }
        }
Example #2
0
 /// <summary>
 /// konstruktor kopiujący, który odwraca kierunek poróży
 /// </summary>
 /// <param name="Droga"></param>
 public Trasa(Trasa Droga)
 {
     this.Lotnisko1 = Droga.Lotnisko2;
     this.Lotnisko2 = Droga.Lotnisko1;
     Odleglosc      = Droga.Odleglosc;
     this.IDTrasy   = Lotnisko1.GetIDLotniska() + "-" + Lotnisko2.GetIDLotniska();
 }
Example #3
0
        /// <summary>
        /// Funkcja dodająca do listy dwa obiekty Tras: Lotnisko1-Lotnisko2 oraz Lotnisko2-Lotnisko1
        /// </summary>
        /// <param name="Lotnisko1"></param>
        /// <param name=""></param>
        public void DodajTrase(Lotnisko Lotnisko1, Lotnisko Lotnisko2, int odleglosc)// można przetestować
        {
            Trasa tmp1 = new Trasa(Lotnisko1, Lotnisko2, odleglosc);
            Trasa tmp2 = new Trasa(tmp1);

            ListaTras.Add(tmp1);
            ListaTras.Add(tmp2);
        }
Example #4
0
 /// <summary>
 /// Metoda statyczna , Po to żeby sprawdzać czy wybrany samolot i trasa będą dobre- metode stayczną da się wywoływać jak nie istnieje obiekt
 /// </summary>
 /// <param name="TypPojazdu"></param>
 /// <param name="Droga"></param>
 public static Boolean CzyDoleci(TypSamolotu TypPojazdu, Trasa Droga)
 {
     if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc())
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #5
0
 public PlanLotu(DateTime PierwszyLot, TimeSpan _CoIleLata, Trasa Kierunek, TypSamolotu _RodzajSamolotu, TimeSpan NajakiPrzedzialCzasuTworzyc, Samolot _Pojazd)
 {
     NaJakiPrzedzialczasu = NajakiPrzedzialCzasuTworzyc;
     Polaczenie           = Kierunek;
     CZasBazowy           = PierwszyLot;
     CoIleLata            = _CoIleLata;
     RodzajSamolotu       = _RodzajSamolotu;
     PierwszyLot          = PierwszyLot.Subtract(CoIleLata);// te odjęcie czasu wiąże się z sposobem dodawania nowych lotów
     Pojazd           = _Pojazd;
     Pojazd.Cykliczny = true;
 }
Example #6
0
 /// <summary>
 /// Usunięcie trzasy wiąże się z usunięciem trasy odwróconej!!!
 /// </summary>
 /// <param name="Wskazana"></param>
 public void PrzyciskUsunTrase(Trasa Wskazana)////////////////////////////////////////////// Nie wiem czy zadzaiła!!!!!!!
 {
     if (Wskazana != null)
     {
         foreach (Lot Obiekt in ListaLotow)
         {
             if (Obiekt.Droga == Wskazana || Obiekt.Droga == new Trasa(Wskazana))// to można uprościc prawdopodobnie do tylko wskazania , bo trase w drugą stronę samoloty robią sobie same
             {
                 throw new Wyjatek("Istnieją loty które mają tą trasę , lub trasę odwróconą");
             }
         }
         ListaTras.Remove(Wskazana);
         ListaTras.Remove(new Trasa(Wskazana));// gdyby to nie działało to można usunąć tylko jedną trasę , Każdy samolot otrzymuje w konstruktorze nowy obiekt odwróconej trasy
     }
     else
     {
         throw new Wyjatek("Wybierz obiekt z listy");
     }
 }
Example #7
0
 /// <summary>
 ///  Funkcja wywala
 /// </summary>
 public void PrzyciskDodajLot(Trasa Droga, DateTime DataWylotu, Boolean CzyMawracac, TypSamolotu _WybranytypSamolotu, Samolot WybranaMaszyna)
 {
     if (Droga != null && DataWylotu != null && _WybranytypSamolotu != null && WybranaMaszyna != null)
     {
         if (_WybranytypSamolotu.GetZasieg() >= Droga.Odleglosc)
         {
             Lot tmp = new Lot(PrzydzielanieID(ListaLotow, LNIDLotow), Droga, DataWylotu, CzyMawracac, WybranaMaszyna, _WybranytypSamolotu);
             if (CzyMawracac == true)
             {
                 Lot tmp2 = new Lot(PrzydzielanieID(ListaLotow, LNIDLotow), Droga, DataWylotu.Add(tmp.CzasLotu.Add(new TimeSpan(3, 0, 0))), CzyMawracac, WybranaMaszyna, _WybranytypSamolotu);
                 DodawanieDoListy(ListaLotow, tmp2);
             }
             DodawanieDoListy(ListaLotow, tmp);
         }
         else
         {
             throw new Wyjatek("Samolot nie doleci do celu, zmień jego rodzaj!");
         }
     }
     else
     {
         throw new Wyjatek("Wypełnij wszystkie pola!");
     }
 }
Example #8
0
 /// <summary>
 /// Funkcja do dodawanie PlanuLotu, zwraca 3 wyjątki: albo nie wszystkie pola pełne , albo że zdąży wrócić przed nsateonym lotem, że nie
 /// dolec ponieważ typ samolotu ma za mały sasięg , lub też że nie zdąży wrócić przed następnym lotem
 /// </summary>
 public void PrzyciskDodajPlanLotu(DateTime _PierwszyLot, TimeSpan _CoIlelata, Trasa Kierunek, TypSamolotu _RodzajSamolotu, TimeSpan NaJakiPrzedzialCzasu, Samolot _PojazdPermamentny)
 {
     if (_PierwszyLot != null && _CoIlelata != null && Kierunek != null && _RodzajSamolotu != null && NaJakiPrzedzialCzasu != null && _PojazdPermamentny != null)
     {
         if (PlanLotu.CzyDoleci(_RodzajSamolotu, Kierunek) == true)
         {
             if (PlanLotu.CzyzdarzyWrocic(_RodzajSamolotu, Kierunek, _CoIlelata) == true)
             {
                 ListaPlanowLotu.Add(new PlanLotu(_PierwszyLot, _CoIlelata, Kierunek, _RodzajSamolotu, NaJakiPrzedzialCzasu, _PojazdPermamentny));
             }
             else
             {
                 throw new Wyjatek("Samolot nie zdąży wrócić do Lotniska bazoewgo");
             }
         }
         else
         {
             throw new Wyjatek("Samolot ma za mały zasięg");
         }
     }
     else
     {
         throw new Wyjatek("Wypełnij wszystkie pola!");
     }
 }
Example #9
0
 /// <summary>
 /// Konstruktor dla lotów cyklicznych
 /// </summary>
 public Lot(string ID, Trasa Droga, DateTime Datawylotu, TypSamolotu TypPrzypisanyDoPlanu, Samolot Maszyna, PlanLotu JakiPlan) : this(ID, Droga, Datawylotu, true, Maszyna, TypPrzypisanyDoPlanu)
 {
     Maszyna.Cykliczny          = true;
     Maszyna.CoObsluguje        = null;
     Maszyna.PlanLotuPrzypisany = JakiPlan;
 }
Example #10
0
 /// <summary>
 /// Zwraca true jeżeli samolot zdąrzy rócić przed nastepnym lotem, wywala wyjatek jeżeli nie ma wystarczająco dużo pul wypełnionych
 /// więc wystarczy ładnie obsłurzyć
 /// </summary>
 public static Boolean CzyzdarzyWrocic(TypSamolotu TypSamolotuKtorychcemyDodac, Trasa TrasaCochemydodac, TimeSpan CoIleMaLatac)// ta funkcja jest do poprawy musi być statyczna
 {
     if (TypSamolotuKtorychcemyDodac != null && TrasaCochemydodac != null && CoIleMaLatac != null)
     {
         TimeSpan CalkowityCzas = PlanLotu.ILeleciWjednaStrone(TypSamolotuKtorychcemyDodac, TrasaCochemydodac);
         CalkowityCzas = CalkowityCzas.Add(CalkowityCzas);
         CalkowityCzas = CalkowityCzas.Add(new TimeSpan(3, 0, 0));
         if (CalkowityCzas.CompareTo(CoIleMaLatac) >= 0)
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
     else
     {
         throw new Wyjatek("Dodaj wymagane pola!!");
     }
 }
Example #11
0
        /// <summary>
        /// Funkcja liczy ile samolot leci w jedną stronę
        /// </summary>
        /// <returns></returns>
        public static TimeSpan ILeleciWjednaStrone(TypSamolotu TypSamolotuKtorychcemydodac, Trasa TrasaCochcemydodac)
        {
            TimeSpan CzasLotu;
            double   czas = TrasaCochcemydodac.GetOdleglosc() / TypSamolotuKtorychcemydodac.GetPredkosc();// czas wychodzi w godz z minutamie po przecinku

            czas = Math.Round(czas, 2);
            double min = (czas % 1) * 60;                    // minuty w formiacie 0,xx więc trzeba pomnożyć razy 60

            CzasLotu = new TimeSpan((int)czas, (int)min, 0); // zero na końcu- to sekundy nieistotne w programie
            return(CzasLotu);
        }