Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
21 kB
4
Indexable
Never
using System;
using System.Linq;

namespace OtoGaleri02
{
    internal class Program
    {

        static Galeri G034 = new Galeri();
        static Araba A034 = new Araba();
        

        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":
                        ArabalarıListele(DURUM.Kirada);
                        ArabalarıListele(DURUM.Galeride);//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("23FGY256", "FORD", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY257", "RENAULT", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY258", "TOYOTA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY259", "TESLA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY260", "FERRARI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY261", "AUDI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY262", "VOLVO", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY263", "FIAT", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY264", "RANGE ROVER", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY265", "LAMBORGHINI", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY266", "MAZDA", 520f, ARABATIPI.SUV);
            G034.ArabaEkle("23FGY267", "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.2222");
                }
            }
        }

        static void ArabaEkle()
        {
            Console.WriteLine("-Araba Ekle-");
            string temp = G034.PlakaKontrol("Plaka: ");
            string plaka = G034.PlakaKontrol2(temp, "Aynı plakada araba mevcut. Girdiğiniz plakayı kontrol edin.");
            string marka = G034.MarkaKontrol("Marka: ");
            int kbedel = G034.BedelKontrol("Kiralama Bedeli: ");
            ARABATIPI aTip = G034.ArabaTipiSecimi();

            G034.ArabaEkle(plaka, marka, kbedel, aTip);
            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 ArabaKirala()  //ulaşılamayan koda bak (G034)
        {
            Console.WriteLine("-Araba Kirala-");
            string plaka = G034.PlakaKontrol("Kiralanacak arabanın plakası: ");
            int output, sure;


            while (true)
            {
                Console.Write("Kiralama süresi: ");
                string giris = Console.ReadLine();


                if (!int.TryParse(giris, out output))
                {
                    Console.WriteLine("Hatalı giriş yaptınız. Lütfen tekrar deneyin.");
                }
                else
                {
                    sure = output;
                }
                // galeride bu plakada bir araç var mı kontrol edilmeli. Yoksa uyarı mesajı çıkmalı.
                // araba kirada mı yoksa galeride mi kontrol edilmeli . Yoksa uyaru mesajı çıkmalı.
                // ok ise "34US2342  Plakalı araba 7 saatliğine kiralandı." gibi bir mesaj çıkmalı 
            }

            G034.ArabaKiralama(plaka, sure);

        }

        static string ArabaTeslimAl() //ulaşılamayan koda bak (G034)

        {
            Console.WriteLine("-Araba Teslim Al-");
            Console.Write("Teslim edilecek arabanın plakası:");
            string plaka = Console.ReadLine();

            while (true)
            {
                if (plaka.Length != 8)
                {
                    Console.WriteLine("Bu şekilde plaka girişi yapamazsınız. Tekrar deneyin.");

                }
                else
                {
                    return plaka;
                }
            }

            G034.ArabaTeslimAlim(plaka);

        }


        static void KiralamaIptali()
        {
            Console.WriteLine("-Kiralama İptali-");
            string temp = G034.PlakaKontrol("Kiralaması iptal edilecek arabanın plakası: ");
            string plaka = G034.PlakaKontrol2(temp, "Hatalı giriş yapıldı. Araba zaten galeride.");

            G034.KiralamaIptal(plaka);
            Console.WriteLine();
            Console.WriteLine("İptal gerçekleştirildi.");
            Console.WriteLine();

        }

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

            switch (durum)
            {
                case DURUM.Kirada:
                    baslik = "Kiradaki";
                    break;
                case DURUM.Galeride:
                    baslik = "Galerideki";
                    break;

            }
            Console.WriteLine(baslik + " Arabalar-");
            Console.WriteLine("Plaka" + "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 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: " +  A034.ToplamKiralanmaSuresi);
            Console.WriteLine("Toplam araba kiralama adedi: " + A034.KiralamaSayisi);
            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;


        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 Araba()
        {
            this.Durum = DURUM.Galeride;
        }

        public Araba(string plaka)
        {
            this.Plaka = plaka;
        }

     

        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
    }

    public enum DURUM
    {
        Kirada, 
        Galeride
    }
}

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 string PlakaKontrol2(string plaka, string hataMesaji)
        {
            do
            {
                foreach (Araba araba in Arabalar)
                {
                    if (araba.Plaka == plaka)
                    {
                        Console.WriteLine(hataMesaji);
                    }

                    else
                    {
                        return plaka;

                    }
                }
            } while (true);
            
        }

        public string PlakaKontrol3(string plaka)
        {
            do
            {
                    foreach (Araba araba in Arabalar)
                    {
                     

                        if (araba.Plaka != plaka)
                        {
                            Console.WriteLine("Galeriye ait bu plaka bir araba yok.");
                        }

                        else
                        {

                            return plaka;
                            
                        }
                    }

            } while (true);

        }

        public string MarkaKontrol(string text)
        {
            do
            {
                Console.Write(text);
                string temp = Console.ReadLine();
                temp = temp[0].ToString().ToUpper() + temp.Substring(1).ToLower();
                int temp2;
                string marka;

                if (int.TryParse(temp, out temp2))
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin.");
                }

                else
                {
                    marka = temp;
                    return marka;
                }

            } while (true);


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

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

            //}

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

        public ARABATIPI ArabaTipiSecimi()
        {

            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 secim = Console.ReadLine();

                ARABATIPI aTip;

                if (secim == "1")
                {
                    return aTip = ARABATIPI.SUV;
                }

                else if (secim == "2")
                {
                    return aTip = ARABATIPI.Hatchback;
                }

                else if (secim == "3")
                {
                    return aTip = ARABATIPI.Sedan;
                }

                else
                {
                    Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin. ");  // hata verirse tekrar araba tipini sorsun
                }
            } while (true);
        }   //kullanılmayan variable gösteriyor. Buna bak. 

        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)
                {
                    arabaListesi += (araba.Plaka + 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;

            }

        }
    }


}