Uebungsaufgaben_ITFA_2_SS_2025/Exercises/E28_Classes/Exercise_7.cs

192 lines
7.3 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
namespace Exercises_C_Sharp.E28_Classes
{
class Exercise_7
{
static List<Customer> CustomerList = new();
static List<Product> ProductList = new();
static List<Invoice> 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 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
}
//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
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
{
public string? Name = null;
public decimal Price = 0;
}
class Invoice
{
public Customer? Cust = null;
public List<Item> Items = new List<Item>();
//Schreiben Sie hier eine Methode, die die Anzahl aller einzelnen Elemente zurückgibt
//Schreiben Sie hier eine Methode, die die Anzahl der verschiedenen Produkte zurückgibt
//Schreiben Sie hier eine Methode, die den Gesamtpreis der Rechnung zurück gibt
}
class Item
{
public Product? Product = null;
public int Amount = 0;
}
class Customer
{
public int ID = -1;
public string? Name = null;
public string? Address = null;
}
}