using System; using System.IO; using System.Collections.Generic; namespace Exercises_C_Sharp.E28_Classes { class Exercise_7 { static List CustomerList = new(); static List ProductList = new(); static List InvoiceList = new(); public static void Start() { 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. //Code Start Console.WriteLine("Bitte wählen Sie aus:"); Console.WriteLine("1.) Kunden erstellen"); Console.WriteLine("2.) Produkt erstellen"); Console.WriteLine("3.) Rechnung erstellen"); Console.WriteLine("4.) Produkt zur Rechnung hinzufügen"); Console.WriteLine("5.) Produkt in Rechnung löschen"); Console.WriteLine(); string userinput = Console.ReadLine() ?? throw new Exception(""); if (userinput == "1") { CreateNewCustomerAndAddToList(); } else if (userinput == "2") { CreateNewProductAndAddToList(); } else if (userinput == "3") { CreateNewInvoiceAndAddToList(); } else if (userinput == "4") { AddElementToInvoice(GetInvoiceFromUser()); } else if (userinput == "5") { DeleteElementToInvoice(GetInvoiceFromUser()); } //Code Ende } } static Invoice GetInvoiceFromUser() { int i = 0; Console.WriteLine("Bitte wählen Sie die Rechnung aus:"); foreach (var element in InvoiceList) Console.WriteLine(i++ + ".) " + element.Cust!.Name); return InvoiceList[Convert.ToInt32(Console.ReadLine())]; } //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(); Console.WriteLine("Bitte geben Sie eine ID ein:"); cust.ID = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Bitte geben Sie einen Namen ein:"); cust.Name = Console.ReadLine(); Console.WriteLine("Bitte geben Sie eine Adresse ein:"); cust.Address = Console.ReadLine(); CustomerList.Add(cust); //Code Ende } //Ergänzen Sie diese Methode, sodass ein Anwender hier ein 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 ein:"); prod.Name = Console.ReadLine(); Console.WriteLine("Bitte geben Sie einen Preis ein:"); prod.Price = Convert.ToDecimal(Console.ReadLine()); ProductList.Add(prod); //Code Ende } //Ergänzen Sie diese Methode, sodass ein Anwender hier eine neue Rechnung erstellen kann. Dieser soll dann in die InvoiceList gespeichert werden. static void CreateNewInvoiceAndAddToList() { //Code Start Invoice inv = new(); int i = 0; Console.WriteLine("Bitte wählen Sie einen Kunden aus:"); foreach (var element in CustomerList) Console.WriteLine(i++ + ".) " + element); inv.Cust = CustomerList[Convert.ToInt32(Console.ReadLine())]; InvoiceList.Add(inv); //Code Ende } //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt zu einer Rechnung hinzufügen kann. static void AddElementToInvoice(Invoice inv) { int i = 0; Console.WriteLine("Bitte wählen Sie einen Kunden aus:"); foreach (var element in ProductList) Console.WriteLine(i++ + ".) " + element); Item it = new(); it.Product = ProductList[Convert.ToInt32(Console.ReadLine())]; Console.WriteLine("Bitte geben Sie die Menge ein:"); it.Amount = Convert.ToInt32(Console.ReadLine()); inv.Items.Add(it); } //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt von einer Rechnung löschen kann. static void DeleteElementToInvoice(Invoice inv) { int i = 0; Console.WriteLine("Bitte wählen Sie das zu löschende Objekt aus:"); foreach (var element in inv.Items) Console.WriteLine(i++ + ".) " + element); inv.Items.RemoveAt(Convert.ToInt32(Console.ReadLine())); } } class Product { public string? Name = null; public decimal Price = 0; } class Invoice { public Customer? Cust = null; public List Items = new List(); //Schreiben Sie hier eine Methode, die die Anzahl aller einzelnen Elemente zurückgibt public int AmountElements() { return Items.Sum(k => k.Amount); } //Schreiben Sie hier eine Methode, die die Anzahl der verschiedenen Produkte zurückgibt public int AllElements() { return Items.Count; } //Schreiben Sie hier eine Methode, die den Gesamtpreis der Rechnung zurück gibt public decimal GetPrice() { decimal sum = 0; foreach (var element in Items) sum += element.Product!.Price * element.Amount; return sum; //return Items.Sum(k => k.Product.Price * k.Amount); } } class Item { public Product? Product = null; public int Amount = 0; } class Customer { public int ID = -1; public string? Name = null; public string? Address = null; } }