1
resposta

Hora da Prática: Restaurante

class Cardapio
{
public string Nome { get; set; }
public float Preco { get; set; }
public string Categoria { get; set; }
}

class Pedido
{
    public int numeroMesa { get; set; }

    public List<Cardapio> itensPedidos = new List<Cardapio>();
    public bool EstaAberto { get; set; }

    public float SomarPedidos()
    {
        
        float total = 0f;
        foreach(Cardapio preco in itensPedidos)
        {
            total = total + preco.Preco;
            
        }
        return total;
    }


}
class Mesa
{
    public int NumeroDaMesa { get; set; }

    public bool estaOcupada { get; set; }
}
using System.IO;

List<Mesa> mesasParaReservar = new();
List<Pedido> novosPedidos = new();


for(int i = 0; i<10; i++)
{
    Mesa novaMesa = new Mesa();
    novaMesa.NumeroDaMesa = i + 1;
    novaMesa.estaOcupada = false;

    mesasParaReservar.Add(novaMesa);
}
Menu();
void Menu()
{
    Console.Clear();
    Console.WriteLine("Digite 1 para reservar uma mesa\n");
    Console.WriteLine("Digite 2 lançar pedidos\n");
    Console.WriteLine("Digite 3 fechar conta\n");

    int escolhaUsuario = int.Parse(Console.ReadLine()!);

    switch (escolhaUsuario)
    {
        case 1: ReservarMesa();
            break;
        case 2: FazerPedidos();
            break;
        case 3: FecharConta();
            break;
    }
}
void ReservarMesa()
{
    Console.Clear();
    Console.Write("Digite o número da mesa: ");
    int numeroMesaDigitado = int.Parse(Console.ReadLine()!);
    Mesa mesaEncontrada = null;
    foreach (Mesa mesa in mesasParaReservar)
    {
        if (mesa.NumeroDaMesa == numeroMesaDigitado)
        {
            mesaEncontrada = mesa;
            break;
        }
    }
    if (mesaEncontrada != null)
    {
        if (mesaEncontrada.estaOcupada)
        {
            Console.WriteLine($"A mesa {numeroMesaDigitado} já está ocupada no momento.");
        }
        else
        {
            mesaEncontrada.estaOcupada = true;
            Console.WriteLine($"A mesa {numeroMesaDigitado} foi reservada com sucesso!");
        }

    }
    else
    {
        Console.WriteLine("Erro: esse número de mesa não existe.");
    }

    Thread.Sleep(2000);
    Menu();
}
void FazerPedidos()
{
    Console.Clear();
    Console.WriteLine("Digite 1 para incluir um prato principal.");
    Console.WriteLine("Digite 2 para incluir uma bebida.");
    Console.WriteLine("Digite 3 para incluir uma sobremesa.");

    int escolhaDoUsuario = int.Parse(Console.ReadLine()!);
    switch (escolhaDoUsuario)
    {
        case 1: LancarItem("Prato Principal");
            break;
        case 2: LancarItem("Bebida");
            break;
        case 3: LancarItem("Sobremesa");
            break;
    }
}

void LancarItem(string categoria)
{
    Console.WriteLine($"--- Lançando {categoria} ---");
    Console.WriteLine("Digite o número da mesa:");
    int numMesa = int.Parse(Console.ReadLine()!);

    Pedido pedidoDaMesa = null;

    foreach (Pedido p in novosPedidos)
    {
        if (p.numeroMesa == numMesa && p.EstaAberto)
        {
            pedidoDaMesa = p;
            break;
        }
    }

    if (pedidoDaMesa == null)
    {
        pedidoDaMesa = new Pedido();
        pedidoDaMesa.numeroMesa = numMesa;
        pedidoDaMesa.EstaAberto = true;
        novosPedidos.Add(pedidoDaMesa);
    }

  
    Cardapio item = new Cardapio();
    item.Categoria = categoria;

    Console.WriteLine($"Digite o nome do(a) {categoria}:");
    item.Nome = Console.ReadLine()!;
    Console.WriteLine("Digite o preço:");
    item.Preco = float.Parse(Console.ReadLine()!);

    pedidoDaMesa.itensPedidos.Add(item);

    Console.WriteLine($"{item.Nome} adicionado com sucesso!");
    Thread.Sleep(2000);
    Menu();
}
void FecharConta()
{
    Console.Clear();
    Console.Write("Digite o número da mesa: ");
    int numMesa = int.Parse(Console.ReadLine()!);

    Pedido pedidoDaMesa = null;

    foreach (Pedido p in novosPedidos)
    {
        if (p.numeroMesa == numMesa && p.EstaAberto)
        {
            pedidoDaMesa = p;
            break;
        }
    }
    if(pedidoDaMesa != null)
    {
        Console.Clear();
        Console.WriteLine("Itens consumidos\n");

        foreach(Cardapio item in pedidoDaMesa.itensPedidos)
        {
            Console.WriteLine($"{item.Nome} ------ {item.Preco}\n");
        }
        Console.WriteLine("-----------------------------------------");
        float total = pedidoDaMesa.SomarPedidos();
        Console.WriteLine($"Total a pagar: R$ {total:F2}\n");
        Console.WriteLine("Pressione qualquer tecla para volta ao menu.");
        Console.ReadKey();
        Menu();
    }
    else
    {
        Console.WriteLine("Mesa nao encontrada");
       
        Console.ReadKey();
        Menu();
    }
}

1 resposta

Ola, colega

ficou otimo! parabéns