Untitled

mail@pastecode.io avatar
unknown
csharp
2 years ago
26 kB
2
Indexable
Never
using System;
using System.Linq;
using System.Numerics;

namespace OtoGaleri02
{
    internal class Program
    {

        static Galeri G034 = new Galeri();


        static void Main(string[] args)
        {
            Uygulama();
        }

        static void Uygulama()
        {
            SahteVeriGir();
            Menu();

            while (true)
            {
                string secim = SecimAl();

                switch (secim)
                {
                    case "1":
                    case "K":
                        ArabaKirala();
                        break;
                    case "2":
                    case "T":
                        ArabaTeslimAl();
                        break;
                    case "3":
                    case "R":
                        ArabalarıListele(DURUM.Kirada);//KiradakiArabalarıListele();
                        break;
                    case "4":
                    case "M":
                        ArabalarıListele(DURUM.Galeride);//GaleridekiArabalarıListele();
                        break;
                    case "5":
                    case "A":
                        DURUM durum = DURUM.Galeride | DURUM.Kirada;
                        ArabalarıListele(durum);//TümArabalarıListele();
                        break;
                    case "6":
                    case "I":
                        KiralamaIptali();
                        break;
                    case "7":
                    case "Y":
                        ArabaEkle();
                        break;
                    case "8":
                    case "S":
                        //ArabaSil();
                        break;
                    case "9":
                    case "G":
                        BilgileriGoster();
                        break;
                }
            }
        }

        static void SahteVeriGir()
        {
            G034.ArabaEkle("23FGY25", "FORD", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23GY257", "RENAULT", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY25", "TOYOTA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY26", "TESLA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY29", "FERRARI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY21", "AUDI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY20", "VOLVO", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY28", "FIAT", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY30", "RANGE ROVER", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY31", "LAMBORGHINI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY32", "MAZDA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY33", "SKODA", 520f, ARABATIPI.SUV);
        }

        static void Menu()
        {
            Console.WriteLine("Galeri Otomasyon");
            Console.WriteLine("1- Araba Kirala(K)");
            Console.WriteLine("2- Araba Teslim Al(T)");
            Console.WriteLine("3- Kiradaki Arabaları Listele(R)");
            Console.WriteLine("4- Galerideki Arabaları Listele(M)");
            Console.WriteLine("5- Tüm Arabaları Listele(A)");
            Console.WriteLine("6- Kiralama İptali(I)");
            Console.WriteLine("7- Araba Ekle(Y)");
            Console.WriteLine("8- Araba Sil(S)");
            Console.WriteLine("9- Bilgileri Göster(G)");
        }

        static string SecimAl()
        {
            Console.WriteLine();
            string karakterler = "123456789KTRMAIYSG";
            while (true)
            {
                Console.Write("Seçiminiz:");
                string secim = Console.ReadLine().ToUpper();

                if (karakterler.IndexOf(secim) > -1 && secim.Length == 1)   //IndexOf() => Reports the zero-based index of the first occurrence of the specified string in this instance.
                {
                    return secim;
                }

                else
                {
                    Console.WriteLine("Hatalı giriş yaptınız. Lütfen tekrar deneyin.");
                }
            }
        }

        static void ArabaKirala()  
        {
            Console.WriteLine("-Araba Kirala-");
            bool isValid = false;
            string displayMessage = string.Empty;
            string plaka;
            //(bool, Araba) gecerlilikVeAraba = default;
            Araba aktifAraba= null;
            do
            {
                Console.Write(displayMessage + " Kiralanacak arabanın plakası: ");
                displayMessage = string.Empty;

                plaka = Console.ReadLine().ToUpper();

                if (!G034.PlakaKontrol(plaka))
                {
                    displayMessage = "Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin." + Environment.NewLine;
                    continue;
                }

                //gecerlilikVeAraba = G034.GalerideMi(plaka);
                aktifAraba = G034.GalerideMi2(plaka);

                if (aktifAraba is null) //(!gecerlilikVeAraba.Item1)
                {
                    displayMessage = "Galeriye ait bu plakada bir araba yok." + Environment.NewLine;
                    continue;
                }

                if (aktifAraba.Durum == DURUM.Kirada)
                {
                    displayMessage = "Araba şu anda kirada. Farklı araba seçiniz." + Environment.NewLine;
                    continue;
                }

                isValid = true;

            } while (!isValid);


            int sure;
            do
            {
                Console.Write("Kiralama süresi: ");
                string giris = Console.ReadLine();


                if (!int.TryParse(giris, out sure))
                {
                    Console.WriteLine("Hatalı giriş yaptınız. Lütfen tekrar deneyin."+Environment.NewLine);
                    isValid = false;
                }

            } while (!isValid);


            aktifAraba.Durum = DURUM.Kirada;
            aktifAraba.KiralanmaSureleri.Add(sure);
            Console.WriteLine();
            Console.WriteLine(plaka + " plakalı araba " + sure + " saatliğine kiralandı.");

            //G034.ArabaKiralama(plaka, sure);

        }

        static void ArabaTeslimAl()

        {
            Console.WriteLine("-Araba Teslim Al-");
            Araba aktifAraba = null;
            bool isValid = false;
            string plaka;

            do
            {
                
                Console.Write("Teslim edilecek arabanın plakası:");
                plaka = Console.ReadLine().ToUpper();

                if (!G034.PlakaKontrol(plaka))
                {
                    Console.WriteLine("Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin.");
                    continue;
                }


                aktifAraba = G034.GalerideMi2(plaka);

                if (aktifAraba is null)
                {
                    Console.WriteLine("Galeriye ait bu plakada bir araba yok.");
                    continue;
                }
                
                if (aktifAraba.Durum == DURUM.Galeride)
                {
                    Console.WriteLine("Hatalı giriş yapıldı. Araba zaten galeride.");
                    continue;
                }

               isValid = true;

            } while (!isValid);

            aktifAraba.Durum = DURUM.Galeride;
            Console.WriteLine();
            Console.WriteLine("Araba galeride beklemeye alındı.");
            //G034.ArabaTeslimAlim(plaka)

        }

        static void ArabalarıListele(DURUM durum)
        {
            string baslik = string.Empty;
            string liste = G034.ArabalarListele(durum);
            switch (durum)
            {

                case (DURUM.Kirada | DURUM.Galeride):
                    baslik = "-Tüm";

                    break;
                case DURUM.Kirada:
                    baslik = "-Kiradaki";

                    break;
                case DURUM.Galeride:
                    baslik = "-Galerideki";

                    break;
            }
            Console.WriteLine(baslik + " Arabalar-");
            Console.WriteLine("Plaka".PadRight(12) + "Marka".PadRight(12) + "K.Bedeli".PadRight(14) + "Araba Tipi".PadRight(16) + "K.Sayısı".PadRight(16) + "Durum".PadRight(8));
            Console.WriteLine("----------------------------------------------------------------------------------");
            Console.WriteLine(liste);
        }

        static void KiralamaIptali()
        {
            Console.WriteLine("-Kiralama İptali-");

            bool isValid = false;
            string plaka;
            Araba aktifAraba = null;

            do
            {

                Console.Write("Kiralaması iptal edilecek arabanın plakası:");
                plaka = Console.ReadLine().ToUpper();

                if (!G034.PlakaKontrol(plaka))
                {
                    Console.WriteLine("Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin.");
                    continue;
                }

                aktifAraba = G034.GalerideMi2(plaka);

                if (aktifAraba == null)
                {
                    Console.WriteLine("Galeriye ait bu plakada bir araba yok.");
                }

                if (aktifAraba.Durum == DURUM.Galeride)
                {
                    Console.WriteLine("Hatalı giriş yapıldı. Araba zaten galeride.");
                    continue;
                }

                isValid = true;

            } while (!isValid);

            aktifAraba.Durum = DURUM.Galeride;
            Console.WriteLine();
            Console.WriteLine("İptal gerçekleştirildi.");


           // G034.KiralamaIptal(plaka);

        }
         static void ArabaEkle()
        {
            bool isValid = false;
            string plaka;
            Araba aktifAraba;

            Console.WriteLine("-Araba Ekle-");

            do
            {
                Console.Write("Plaka: ");
                plaka = Console.ReadLine().ToUpper();
                

                if (!G034.PlakaKontrol(plaka))
                {
                    Console.WriteLine("Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin.");
                    continue;
                }

                aktifAraba = G034.GalerideMi2(plaka);


                if (aktifAraba.Durum == DURUM.Galeride)
                {
                    Console.WriteLine("Aynı plakada araba mevcut. Girdiğiniz plakayı kontrol edin.");
                    continue;
                }

                if (aktifAraba is null)
                {

                }
                

            } while (!isValid);

            string marka;

            do
            {
                Console.Write("Marka: ");
                marka = Console.ReadLine();
                marka = marka.Substring(0, 1).ToUpper() + marka.Substring(1).ToLower();

                if (!G034.HarfMi(marka))
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");
                    continue;
                }

                isValid = true;

            } while (!isValid);

            
            float kBedel;
            string kiralamaBedeli;
            do
            {
                Console.Write("Kiralama Bedeli");
                kiralamaBedeli = Console.ReadLine();

                if (G034.HarfMi(kiralamaBedeli))
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");
                    continue;
                }

                
                isValid = true;

            } while (!isValid);

            kBedel = float.Parse(kiralamaBedeli);

            ARABATIPI aTip;
            string secim;

            Console.WriteLine("Araba Tipleri:       ");
            Console.WriteLine(" - SUV için 1         ");
            Console.WriteLine(" - Hatchback için 2  ");
            Console.WriteLine(" - Sedan için 3      ");

            do
            {
                Console.Write("Araba Tipi: ");
                string karakterler = "123";
                secim = Console.ReadLine();

                if (karakterler.IndexOf(secim) == -1 && secim.Length > 1)
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");
                }

                isValid = true;

            } while (!isValid);

            aTip = G034.ArabaTipiSecimi(secim);

            G034.ArabaEkle(plaka, marka, kBedel, aTip);

            Console.WriteLine();
            Console.WriteLine("Araba başarılı bir şekilde eklendi.");

        }


        /*static void ArabaSil()
        {
            Console.WriteLine("-Araba Sil -");
            string temp = G034.PlakaKontrol("Silmek istediğiniz arabanın plakasını giriniz: ");
            string plaka = G034.PlakaKontrol3(temp);
            G034.ArabaSil(plaka);
            Console.WriteLine();
            Console.WriteLine("Araba silindi.");
            Console.WriteLine();

        }
        */

        static void BilgileriGoster()   // 2 item daha eklemek gerekiyor. 
        {
            Console.WriteLine("-Galeri Bilgileri -");
            Console.WriteLine("Toplam araba sayısı: " + G034.Arabalar.Count());
            Console.WriteLine("Kiradaki araba sayısı: " + G034.ArabalarListele(DURUM.Kirada).Count());
            Console.WriteLine("Bekleyen araba sayısı: " + G034.ArabalarListele(DURUM.Galeride).Count());
            Console.WriteLine("Toplam araba kiralama süresi: ");
            Console.WriteLine("Toplam araba kiralama adedi: ");
            Console.WriteLine("Ciro: " + G034.Ciro);

        }
        


    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OtoGaleri02
{
    internal class Araba
    {
        public List<int> KiralanmaSureleri = new List<int>();

        public string Plaka;
        public string Marka;
        public float KiralamaBedeli;
        public ARABATIPI ArabaTipi;
        public DURUM Durum = DURUM.Galeride;


        public Araba(string plaka, string marka, float k_bedeli, ARABATIPI a_Tipi)
        {
            this.Plaka = plaka;
            this.Marka = marka;
            this.KiralamaBedeli = k_bedeli;
            this.ArabaTipi = a_Tipi;

        }




        public int KiralamaSayisi

        {

            get
            {
                return KiralanmaSureleri.Count;
            }

        }

        public int ToplamKiralanmaSuresi
        {
            get
            {
                int toplam = 0;
                foreach (int sure in KiralanmaSureleri)
                {
                    toplam += sure;
                }
                return toplam;

            }
        }



    }



    public enum ARABATIPI
    {
        Empty, SUV, Hatchback, Sedan
    }


    [Flags]
    public enum DURUM
    {
        None = 0,
        Kirada = 1,
        Galeride = 2
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames;

namespace OtoGaleri02
{
    internal class Galeri
    {


        public List<Araba> Arabalar = new List<Araba>();

        public void ArabaEkle(string plaka, string marka, float kBedel, ARABATIPI aTip)
        {
            Araba a = new Araba(plaka, marka, kBedel, aTip);
            this.Arabalar.Add(a);

        }

        //public void ArabaKiralama(string plaka, int sure)
        //{
        //    Araba a = null;
        //    foreach (Araba item in Arabalar)
        //    {
        //        if (item.Plaka == plaka)
        //        {
        //            a = item;
        //        }
        //    }

        //    if (a != null)
        //    {
        //        a.Durum = DURUM.Kirada;
        //        a.KiralanmaSureleri.Add(sure);
        //    }


        //}

        //public void ArabaTeslimAlim(string plaka)
        //{
        //    Araba a = null;
        //    foreach (Araba item in Arabalar)
        //    {
        //        if (item.Plaka == plaka)
        //        {
        //            a = item;
        //        }
        //    }

        //    if (a != null)
        //    {
        //        a.Durum = DURUM.Galeride;
        //    }
        //}

        //public string PlakaKontrol(string text)
        //{
        //    do
        //    {
        //        Console.Write(text);
        //        string plaka = Console.ReadLine().ToUpper();

        //        int ilkİkiKarakter;
        //        int sonDortKarakter;
        //        int ortadakiKarakter;
        //        bool sayiMi = int.TryParse(plaka.Substring(0, 2), out ilkİkiKarakter); //baştaki iki karakter sayı DEĞİLSE hata versin diye.
        //        bool sayiMi2 = int.TryParse(plaka.Substring(4, 4), out sonDortKarakter); //sondaki iki karakter sayı DEĞİLSE hata versin diye.
        //        bool sayiMi3 = int.TryParse(plaka.Substring(2, 2), out ortadakiKarakter);   // ortadaki iki karakter sayıysa hata versin diye.

        //        if (plaka.Length != 8 || !sayiMi || !sayiMi2 || sayiMi3)
        //        {
        //            Console.WriteLine("Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin.");
        //        }
        //        else
        //        {
        //            return plaka;
        //        }


        //    } while (true);

        //}
        public bool PlakaKontrol(string text) //3 4 G H T 3 4 
        {
            if (text.Length != 7) return false;

            char[] plaka = text.ToCharArray();
           
            for (int i = 0; i < plaka.Length; i++)
            {
                
                if ((i == 0 || i == 1 || i == 5 || i == 6) && !Char.IsDigit(plaka[i]))
                {
                    
                    return false;
                }
                else if ((i == 4 && !Char.IsLetterOrDigit(plaka[i])))
                {
                    
                    return false;
                }
                else if ((i == 2 || i == 3) && !Char.IsLetter(plaka[i]))
                {
                    
                    return false;
                }
            }
            return true;
        }



        public (bool, Araba) GalerideMi(string plaka)
        {
            foreach (Araba araba in Arabalar)
            {
                if (araba.Plaka == plaka)
                {

                    return (true, araba);

                }

            }
            return (false, null);

        }

        public Araba GalerideMi2(string plaka)
        {
            foreach (Araba araba in Arabalar)
            {
                if (araba.Plaka == plaka)
                {

                    return  araba;

                }

            }
            return null;

        }

        /*public string DurumKontrol(string plaka)
        {
           
                foreach (Araba araba in Arabalar)
                {

                Araba a = Empty;
                    if (araba.Plaka != plaka)
                    {
                    
                    }

                    else
                    {

                        return plaka;

                    }
                }

        }*/

        public bool HarfMi(string text)
        {

                if (int.TryParse(text, out int result))
                {
              
                return false;

                }

                else
                {
                return true;
                }

            //bool isIntString = marka.All(char.IsDigit);

            //if (isIntString)
            //{
            //    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");

            //}

            //else
            //{
            //    return marka;
            //}
        }

        public ARABATIPI ArabaTipiSecimi(string secim)
        {
            ARABATIPI aTip;

            switch (secim)
            {
                case "1":
                    return aTip = ARABATIPI.SUV;

                case "2":
                    return aTip = ARABATIPI.Hatchback;

                case "3":
                    return aTip = ARABATIPI.Sedan;

                default:
                    return aTip = ARABATIPI.Empty;
            }

        }

        public int BedelKontrol(string text)
        {
            do
            {
                Console.Write(text);
                string bedel = Console.ReadLine();
                int kbedel;

                if (int.TryParse(bedel, out kbedel))
                {
                    return kbedel;
                }

                else
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");
                }
            } while (true);

        }

        public void ArabaSil(string plaka)
        {
            Araba a = null;
            foreach (Araba araba in Arabalar)
            {
                if (araba.Plaka == plaka)
                {
                    a = araba;
                }
            }

            if (a != null)
            {
                if (a.Durum == DURUM.Kirada)
                {
                    Console.WriteLine("Araba kirada olduğu için silme işlemi gerçekleştirilemedi.");
                }

                else if (a.Durum != DURUM.Kirada)
                {
                    Arabalar.Remove(a);
                }
            }



        }

        public void KiralamaIptal(string plaka)  // =>>>> buraya süre bilgisi de eklemek gerekmez mi ? Ama süre bilgisini nereden bulacağız ? 
        {
            Araba a = null;
            foreach (Araba araba in Arabalar)
            {
                if (araba.Plaka == plaka)
                {
                    a = araba;
                }
            }

            if (a != null)
            {
                if (a.Durum == DURUM.Kirada)
                {
                    a.Durum = DURUM.Galeride;
                }
            }

            //public void KiralanmisArabalar()
            //{
            //    foreach (Araba item in Arabalar)
            //    {
            //        if (item.Durum == DURUM.Kirada)
            //        {
            //            Console.WriteLine(item.Plaka + item.Marka.PadRight(12) + item.KiralamaBedeli.ToString().PadRight(14) + item.ArabaTipi.ToString().PadRight(16) + item.KiralamaSayisi.ToString().PadRight(16) + item.Durum.ToString().PadRight(8));
            //        }
            //    }
            //}

            //public string KiralanmisArabalar()
            //{
            //    string arabaListesi = string.Empty;
            //    foreach (Araba item in Arabalar)
            //    {
            //        if (item.Durum == DURUM.Kirada)
            //        {
            //            arabaListesi += (item.Plaka + item.Marka.PadRight(12) + item.KiralamaBedeli.ToString().PadRight(14) + item.ArabaTipi.ToString().PadRight(16) + item.KiralamaSayisi.ToString().PadRight(16) + item.Durum.ToString().PadRight(8) + Environment.NewLine);
            //        }
            //    }
            //    return arabaListesi;
            //}

            //public void GaleridekiArabalar()
            //{
            //    foreach (Araba item in Arabalar)
            //    {
            //        if (item.Durum == DURUM.Galeride)
            //        {
            //            Console.WriteLine(item.Plaka + item.Marka.PadRight(12) + item.KiralamaBedeli.ToString().PadRight(14) + item.ArabaTipi.ToString().PadRight(16) + item.KiralamaSayisi.ToString().PadRight(16) + item.Durum.ToString().PadRight(8));
            //        }
            //    }
            //}
        }

        public string ArabalarListele(DURUM durum)

        {
            string arabaListesi = string.Empty;
            foreach (Araba araba in Arabalar)
            {
                if ((araba.Durum & durum) != 0)
                {
                    arabaListesi += (araba.Plaka.PadRight(12) + araba.Marka.PadRight(12) + araba.KiralamaBedeli.ToString().PadRight(14) + araba.ArabaTipi.ToString().PadRight(16) + araba.KiralamaSayisi.ToString().PadRight(16) + araba.Durum.ToString().PadRight(8) + Environment.NewLine);
                }

            }
            return arabaListesi;
        }

        public float Ciro   // "return" doğru veriyi mi geri döndürüyor ? YANİ => Hesaplanan meblağ mı yoksa 0 mı döndürüyor ? Kontrol et! 
        {
            get
            {
                float ciro = 0;
                foreach (Araba araba in Arabalar)
                {

                    if (araba.Durum == DURUM.Kirada)
                    {
                        ciro += araba.KiralamaBedeli;
                    }
                }

                return ciro;

            }

        }
    }
}