public static bool CzyJestNaStanie(List <Produkt> ListaProduktow, string szukany_nazwa, int szukany_ilosc) { if (ListaProduktow.Exists(x => x.nazwa_produktu == szukany_nazwa)) { Produkt produkt = new Produkt(); produkt = ListaProduktow.Find(x => x.nazwa_produktu == szukany_nazwa); //TODO: w metodach boolean możesz zwracać jako wynik wyrażenie które jest w if bo prawdopodobnie wyzej znow bedziesz sprawdzał ifem w ten sposób zminimalizujesz ilośc instrukcji skoku a kod będzie bardziej czytelny if (produkt.ilosc >= szukany_ilosc) { return(true); } else { Console.WriteLine("Za malo sztuk na stanie!"); return(false); } } else { Console.WriteLine("Nie ma takiego produktu!!!"); return(false); } }
static void Main(string[] args) { List <Klient> ListaKlientow = new List <Klient>(); List <Produkt> ListaProduktow = new List <Produkt>(); //TODO: bardziej eleganckie jest zastosowanie while(Wykonuj) i zmienienie wartosci na false jak chcemy wyjsc z programu nie korzystamy z instrukcji goto!!! for (; ;) { Console.WriteLine("MENU \nCo chcesz zrobić?\n1. Wyswietl liste produktow\n2. Wyswietl liste klientow\n3. Wyswietl liste zakupow klienta\n4. Kup\n5. Dodaj Produkt\n6. Dodaj Klienta \n7. Edytuj...\n0. Wyjscie z programu"); //TODO: Ta sama sytuacja znów będzie błąd int wybor = int.Parse(Console.ReadLine()); switch (wybor) { case 1: { Console.Clear(); foreach (Produkt produkt in ListaProduktow) { produkt.WyswietlProdukt(); } Console.ReadLine(); break; } case 2: { Console.Clear(); foreach (Klient klient in ListaKlientow) { Console.WriteLine(klient.imie + " " + klient.nazwisko); } Console.ReadLine(); break; } case 3: { Console.Clear(); string szukany_imie, szukany_nazwisko; Console.WriteLine("Podaj imie klienta, ktorego liste chcesz wyswietlic"); szukany_imie = Console.ReadLine(); Console.WriteLine("Podaj nazwisko klienta, ktorego liste chcesz wyswietlic"); szukany_nazwisko = Console.ReadLine(); if (Klient.CzyKlientIstnieje(ListaKlientow, szukany_imie, szukany_nazwisko)) { Klient.ZnajdzKlienta(ListaKlientow, szukany_imie, szukany_nazwisko).WyswietlListeZakupow(); } Console.ReadLine(); break; } case 4: { Console.Clear(); string szukany_imie, szukany_nazwisko; Console.WriteLine("Podaj imie klienta, ktory dokonuje zakupu"); szukany_imie = Console.ReadLine(); Console.WriteLine("Podaj nazwisko klienta, ktory dokonuje zakupu"); szukany_nazwisko = Console.ReadLine(); if (Klient.CzyKlientIstnieje(ListaKlientow, szukany_imie, szukany_nazwisko)) { DodajDoZakupu: Console.Clear(); Console.WriteLine("Podaj nazwe produktu"); string nazwa = Console.ReadLine(); Console.WriteLine("Podaj ilosc sztuk"); int sztuki = int.Parse(Console.ReadLine()); if (Produkt.CzyJestNaStanie(ListaProduktow, nazwa, sztuki)) { Klient.ZnajdzKlienta(ListaKlientow, szukany_imie, szukany_nazwisko).Kup(ListaProduktow, nazwa, sztuki); } Console.WriteLine("Czy chcesz dodać kolejny produkt?\n1. Tak\n2. Nie"); int wybrano = int.Parse(Console.ReadLine()); switch (wybrano) { case 1: { //TODO: NIE MOZE BYC ZADNYCH INSTRUKCJI SKOKU W ZADNYM TWOIM PROGRAMIE!!!! TO JEST COS CO STOSUJE SIE W ASEMBLERZE NIGDZIE INDZIEJ goto DodajDoZakupu; //TODO: instrukcja która nigdy się nie wykona zabiera jedynie miejsce break; } case 2: { break; } } } //TODO: Pełno pustej przestrzeni break; } case 5: { Console.Clear(); Produkt produkt = new Produkt(); produkt.DodajProdukt(); ListaProduktow.Add(produkt); Console.WriteLine("Dodano Produkt"); Console.ReadLine(); break; } case 6: { Console.Clear(); Klient klient = new Klient(); klient.DodajKlienta(); ListaKlientow.Add(klient); Console.WriteLine("Dodano Klienta"); Console.ReadLine(); break; } case 0: { System.Diagnostics.Process.GetCurrentProcess().Kill(); break; } default: { Console.WriteLine("Nie ma takiej opcji"); } break; } Console.Clear(); } }