From ac4ac6741456c766261084fa6ea4274b932de144 Mon Sep 17 00:00:00 2001 From: sebi Date: Mon, 24 Mar 2025 17:04:59 +0100 Subject: [PATCH] E28 Ex7 *noch nicht fertig!* --- Exercises/E28_Classes/Exercise_7.cs | 114 +++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 3 deletions(-) diff --git a/Exercises/E28_Classes/Exercise_7.cs b/Exercises/E28_Classes/Exercise_7.cs index d57d0c6..c67b0b1 100644 --- a/Exercises/E28_Classes/Exercise_7.cs +++ b/Exercises/E28_Classes/Exercise_7.cs @@ -13,25 +13,104 @@ namespace Exercises_C_Sharp.E28_Classes { while(true) { - //Schreiben Sie ein Menü (auch gerne in einer neuen Methode), in dem der Nutzer Auswählen kann, ob er einen Kunden, ein Produkt oder eine Rechnung erstellen kann. Geben Sie ihm auch die Möglichkeit, zu einer Rechnung Produkte hinzuzufügen und zu löschen. + //Schreiben Sie ein Menü (auch gerne in einer neuen Methode), in dem der Nutzer Auswählen kann, ob er einen Kunden, ein Produkt oder eine Rechnung erstellen will. Geben Sie ihm auch die Möglichkeit, zu einer Rechnung Produkte hinzuzufügen und zu löschen. //Code Start + Console.Clear(); + switch(Menu()) + { + case 1: + CreateNewCustomerAndAddToList(); + break; + case 2: + CreateNewProductAndAddToList(); + break; + case 3: + CreateNewInvoiceAndAddToList(); + break; + case 4: + var input = userSelectInvoice(); + if(input != null) AddElementToInvoice(input); + break; + case 5: + var input2 = userSelectInvoice(); + if(input2 != null) DeleteElementToInvoice(input2); + break; + } //Code Ende } } + static int Menu() + { + Console.WriteLine("***** MENÜ ******"); + Console.WriteLine("* Bitte wählen *"); + Console.WriteLine("*****************"); + Console.WriteLine("* 1. Kunde erstellen "); + Console.WriteLine("* 2. Produkt erstellen "); + Console.WriteLine("* 3. Rechnung erstellen "); + Console.WriteLine("* 4. Produkt zu einer Rechnung hinzufügen "); + Console.WriteLine("* 5. Produkt zu einer Rechnung löschen "); + + while(true) + { + var key = Console.ReadKey().Key; + if(key == ConsoleKey.D1) return 1; + if(key == ConsoleKey.D2) return 2; + if(key == ConsoleKey.D3) return 3; + if(key == ConsoleKey.D4) return 4; + if(key == ConsoleKey.D5) return 5; + Console.WriteLine("Falsche Eingabe! Bitte nochmal versuchen:"); + } + } + + static Invoice? userSelectInvoice() + { + if(InvoiceList == null || InvoiceList.Count == 0) return null; + + Console.WriteLine("Bitte wählen Sie eine Rechnung:"); + for(int i = 0; i < InvoiceList.Count; i++) + Console.WriteLine(i + ".) " + InvoiceList[i]?.Cust?.Name); + + string? userinput = Console.ReadLine(); + if(string.IsNullOrWhiteSpace(userinput)) return null; + + int temp; + if(!int.TryParse(userinput, out temp)) return null; + + return InvoiceList[temp]; + } + //Ergänzen Sie diese Methode, sodass ein Anwender hier einen neuen Kunden erstellen kann. Dieser soll dann in die CustomerList gespeichert werden. static void CreateNewCustomerAndAddToList() { //Code Start + Customer cust = new(); + int id = -1; + Console.WriteLine("Bitte geben Sie eine individuelle ID an:"); + while(!int.TryParse(Console.ReadLine(), out id) || CustomerList.Any(k => k.ID == id)); + cust.ID = id; + Console.WriteLine("Bitte geben Sie einen Kundennamen an:"); + cust.Name = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie eine Kundenadresse an:"); + cust.Address = Console.ReadLine(); + CustomerList.Add(cust); //Code Ende } //Ergänzen Sie diese Methode, sodass ein Anwender hier einen neues Produkt erstellen kann. Dieser soll dann in die ProductList gespeichert werden. static void CreateNewProductAndAddToList() { //Code Start + Product prod = new(); + Console.WriteLine("Bitte geben Sie einen Namen an:"); + prod.Name = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie einen Preis ein:"); + decimal temp = -1; + while(!decimal.TryParse(Console.ReadLine(), out temp)); + prod.Price = temp; + ProductList.Add(prod); //Code Ende } @@ -39,18 +118,47 @@ namespace Exercises_C_Sharp.E28_Classes static void CreateNewInvoiceAndAddToList() { //Code Start + for(int i = 0; i < CustomerList.Count; i++) + Console.WriteLine(i + ".) " + CustomerList[i].Name); + Console.WriteLine("Bitte wählen Sie einen Kunden aus:"); + int temp = -1; + while(!int.TryParse(Console.ReadLine(), out temp) || temp < 0 || temp >= CustomerList.Count); + + InvoiceList.Add(new(){ Cust = CustomerList[temp]}); //Code Ende } //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt zu einer Rechnung hinzufügen kann. static void AddElementToInvoice(Invoice inv) { - + Item item = new(); + item.Product = GetProductFromUser(); + Console.WriteLine("Bitte geben Sie eine Menge an:"); + int temp = -1; + while(!int.TryParse(Console.ReadLine(), out temp) || temp < 1); + item.Amount = temp; + inv.Items.Add(item); } //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt von einer Rechnung löschen kann. static void DeleteElementToInvoice(Invoice inv) { - + for(int i = 0; i < inv.Items.Count; i++) + Console.WriteLine(i + ".) " + inv.Items[i]?.Product?.Name + " - " + inv.Items[i]?.Product?.Price); + int temp = -1; + while(!int.TryParse(Console.ReadLine(), out temp) || temp < 0 || temp >= inv.Items.Count); + + inv.Items.RemoveAt(temp); + } + + static Product GetProductFromUser() + { + for(int i = 0; i < ProductList.Count; i++) + Console.WriteLine(i + ".) " + ProductList[i].Name); + Console.WriteLine("Bitte wählen Sie ein Product aus:"); + int temp = -1; + while(!int.TryParse(Console.ReadLine(), out temp) || temp < 0 || temp >= ProductList.Count); + + return ProductList[temp]; } } class Product