E28 Ex7 *noch nicht fertig!*

This commit is contained in:
sebi 2025-03-24 17:04:59 +01:00
parent c7f8d8eb28
commit ac4ac67414

View File

@ -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