Untitled
unknown
csharp
2 years ago
30 kB
1
Indexable
Never
using Microsoft.VisualBasic.FileIO; 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() { int hataSayaci = 0; Console.WriteLine(); string karakterler = "123456789KTRMAIYSG"; do { 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; } if (hataSayaci == 9) { Console.WriteLine("Üzgünüm sizi anlayamıyorum. Program sonlandırılıyor."); Environment.Exit(0); } else { Console.WriteLine(); Console.WriteLine("Hatalı işlem gerçekleştirildi. Tekrar deneyin." + Environment.NewLine); hataSayaci++; } } while (true); } static void ArabaKirala() { Console.WriteLine(); Console.WriteLine("-Araba Kirala-" + Environment.NewLine); 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; continue; } isValid = true; } 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(); Console.WriteLine("-Araba Teslim Al-" + Environment.NewLine); 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(); Console.WriteLine(baslik + " Arabalar-" + Environment.NewLine); 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(); Console.WriteLine("-Kiralama İptali-" + Environment.NewLine); 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."); 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("İptal gerçekleştirildi."); // G034.KiralamaIptal(plaka); } static void ArabaEkle() { bool isValid = false; string plaka; Araba aktifAraba; Console.WriteLine(); Console.WriteLine("-Araba Ekle-" + Environment.NewLine); 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; } foreach (Araba araba in G034.Arabalar) { if (araba.Plaka == plaka) { Console.WriteLine("Aynı plakada araba mevcut. Girdiğiniz plakayı kontrol edin."); } } //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) //{} isValid = true; } 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."); isValid = false; 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."); isValid = false; 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: "); secim = Console.ReadLine(); if (secim != "1" && secim != "2" && secim != "3") { Console.WriteLine("Giriş tanımlanamadı. Tekrar deneyin."); isValid = false; continue; } 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() { string plaka; bool isValid = false; Araba aktifAraba = null; Console.WriteLine(); Console.WriteLine("-Araba Sil -" + Environment.NewLine); do { Console.Write("Silmek istediğiniz arabanın plakasını giriniz: "); 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.Kirada) { Console.WriteLine("Araba kirada olduğu için silme işlemi gerçekleştirilemedi."); continue; } isValid = true; } while (!isValid); G034.Arabalar.Remove(aktifAraba); //G034.ArabaSil(plaka); Console.WriteLine(); Console.WriteLine("Araba silindi."); Console.WriteLine(); } static void BilgileriGoster() // 2 item daha eklemek gerekiyor. { int kiradakiAracSayisi = G034.KiradakiAracNo(0); Console.WriteLine(); Console.WriteLine("-Galeri Bilgileri-"); Console.WriteLine("Toplam araba sayısı: " + G034.Arabalar.Count()); Console.WriteLine("Kiradaki araba sayısı: " + kiradakiAracSayisi); Console.WriteLine("Bekleyen araba sayısı: " + (G034.Arabalar.Count()-kiradakiAracSayisi)); Console.WriteLine("Toplam araba kiralama süresi: " + G034.ToplamArabaKiralamaSuresi()); Console.WriteLine("Toplam araba kiralama adedi: " + G034.ToplamArabaKiralamaSayisi()); 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 Araba() { } 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.Numerics; 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 int KiradakiAracNo (int KiralananAraclarNo) { foreach (Araba araba in Arabalar) { if (araba.Durum == DURUM.Kirada) { KiralananAraclarNo++; } } return KiralananAraclarNo; } /*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) { char[] marka = text.ToCharArray(); for (int i = 0; i < marka.Length; i++) { if (Char.IsLetter(marka[i])) { return true; } } return false; //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 int ToplamArabaKiralamaSayisi() { int toplam = 0; foreach (Araba araba in Arabalar) { toplam += araba.KiralamaSayisi; } return toplam; } public int ToplamArabaKiralamaSuresi() { int toplamSure = 0; foreach (Araba araba in Arabalar) { toplamSure += araba.ToplamKiralanmaSuresi; } return toplamSure; } /* 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*araba.KiralamaSayisi; } } return ciro; } }*/ 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) { ciro += araba.KiralamaSayisi * araba.KiralamaBedeli; //if (araba.Durum == DURUM.Kirada) //{ // ciro += araba.KiralamaBedeli * araba.KiralamaSayisi; //} } return ciro; } } } }