示例#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;
            }
        }
示例#2
0
文件: Firma.cs 项目: keron31/zadanko
 public void PrzyciskUsunTypSamolotu(TypSamolotu Wskazany)
 {
     if (Wskazany.GetListaSamolotow().Count() == 0)
     {
         ListaTypow.Remove(Wskazany);
     }
     else
     {
         throw new Wyjatek("Istnieją jeszcze samoloty tego typu, najpierw je usun");
     }
 }
示例#3
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);
        }
示例#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);
     }
 }
示例#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;
 }
示例#6
0
        /// <summary>
        /// Specialny konstruktor Lotu, zakłada powrót tego samego samolotu więc tworzony lot ma wszystko takie same prócz: IDLotu , daty wylotu, kolejności Lotnisk w trasie, po tym wywołaniu stary lot powinien zostac usunięty
        /// </summary>
        //public Lot(Lot IstniejacyLOt,string _IDLotu,TimeSpan IloscCzasuDoStartuLiczonaOdMomentuLondowania)
        //{
        //    this.LNIDRezerwacjiBiletow = new List<string>();
        //    this.ListaRezerwacji = new List<RezerwcjaBilet>();

        //    IstniejacyLOt.GetSamolot().CzyDostepny=true;// taki cheat żeby przez chwile samolt był dostępny ten cheat się komplikuje wiestety , lepiej nie ruszać
        //    this.SetPojazd(IstniejacyLOt.Pojazd);
        //    this.SetIDSamolotuWLocie(IstniejacyLOt.GetSamolot().GetIDWlasne());
        //    IstniejacyLOt.GetSamolot().CzyDostepny=false;// taki cheat
        //    this.DataGodzinaWylotu = IstniejacyLOt.DataLądowaniaDateTime().Add(IloscCzasuDoStartuLiczonaOdMomentuLondowania);
        //    this.CzasLotu = IstniejacyLOt.GetCzasLotu();
        //    this.Droga = new Trasa(IstniejacyLOt.GetDroga());
        //    CzyMaWracac = false;
        //}


        /// <summary>
        ///  Z racji że typ samolotu ma dany zasięg, trzeba sprawdazć czy dany samolot nadaje się do lotu
        ///  dla konkretnej trasy, podawy jest od razu id samolotu, bardzo ważna funkcja, bez niej lot nie mam maszyny!!
        ///  funkcja od razu liczy nowy czas przelotu danej trasy
        /// </summary>
        /// <returns></returns>
        public Boolean SetPojazd(TypSamolotu TypPojazdu)//  nie jest w konstruktorze ponieważ zwraca booleana
        {
            if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc())
            {
                Pojazd = TypPojazdu;
                double czas = Droga.GetOdleglosc() / Pojazd.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
                DataLadowania = this.DataLądowaniaDateTime();
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#7
0
文件: Firma.cs 项目: keron31/zadanko
        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        public void PrzyciskUsunSamolot(Samolot Wskazany, TypSamolotu JakiTyp)
        {
            if (Wskazany != null && JakiTyp != null)
            {
                if (Wskazany.CzyDostepny == true && Wskazany.Cykliczny == false)
                {
                    JakiTyp.GetListaSamolotow().Remove(Wskazany);
                }
                else
                {
                    throw new Wyjatek("Samolot obsługuje aktualnie jakis lot");
                }
            }
            else
            {
                throw new Wyjatek("Wybierz dwa obiekty");
            }
        }
示例#8
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!!");
     }
 }
示例#9
0
文件: Firma.cs 项目: keron31/zadanko
 /// <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!");
     }
 }
示例#10
0
文件: Firma.cs 项目: keron31/zadanko
 /// <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!");
     }
 }
示例#11
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;
 }