Exemplo de menu em C# em console
Boa tarde! Gostaria de compartilhar um exemplo de menu em C# que se assemelha ao apresentado pelo professor Hugo durante a explicação sobre o CRUD ontem.
using SistemaPizzaria.Controller;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SistemaPizzaria.View
{
public class SubMenuAdicionarPizza
{
public static void SubMenuPizza()
{
Console.Clear();
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Black;
DrawScreen();
WriteOptions();
Console.ReadKey();
}
public static void DrawScreen()
{
Linhas();
Colounas();
Linhas();
}
public static void Colounas()
{
for (int lines = 0; lines <= 30; lines++)
{
Console.Write("|");
for (int i = 0; i <= 60; i++)
Console.Write(" ");
Console.Write("|");
Console.Write("\n");
}
}
public static void Linhas()
{
Console.Write("+");
for (int i = 0; i <= 60; i++)
Console.Write("-");
Console.Write("+");
Console.Write("\n");
}
public static void WriteOptions()
{
Console.SetCursorPosition(3, 2);
Console.Write("=================Sabores=================");
Console.SetCursorPosition(3, 3);
Console.Write(" Esolha a opção que deseja realizar");
Console.SetCursorPosition(3, 4);
Console.Write(" [1]Cadastrar novo pedido de pizza");
Console.SetCursorPosition(3, 5);
Console.Write(" [2]Buscar ");
Console.SetCursorPosition(3, 6);
Console.Write(" [3]Excluir sabor");
Console.SetCursorPosition(3, 7);
Console.Write(" [4]Voltar para o menu principal");
Console.SetCursorPosition(3, 8);
Console.Write(" [5]Sair");
Console.SetCursorPosition(3, 9);
Console.Write("--------------------------------------------");
Console.SetCursorPosition(3, 10);
Console.Write("Digite a opção desejada:");
Console.SetCursorPosition(3, 11);
Console.Write("Opção: ");
Console.SetCursorPosition(3, 12);
var menu = short.Parse(Console.ReadLine());
HandleMenuOption(menu);
}
public static void HandleMenuOption(short option)
{
switch (option)
{
case 1:
PizzaController.InserirSaborPizza();
break;
case 2:
PizzaController.BuscaPizza();
break;
case 3:
PizzaController.DeletarSaborPizza();
break;
case 4:
CoresPadrao();
MenuPrincipal.MenuPrinc();
System.Environment.Exit(0); //sair
break;
case 5:
System.Environment.Exit(0); //sair
break;
default:
CoresPadrao();
MenuPrincipal.MenuPrinc();
break;
}
}
private static void CoresPadrao()
{
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
}
}
}
Segue a explicação do código:
SubMenuAdicionarPizza é uma classe pública:
Contém métodos estáticos relacionados a um sub-menu específico para operações relacionadas a pizzas.
SubMenuPizza Método:
Limpa a tela do console, define as cores de fundo e de texto e chama DrawScreen() e WriteOptions().
DrawScreen Método:
Chama Linhas() e Colunas() para desenhar uma estrutura de borda simples para dar um estilo diferente ao console.
Colunas Método:
Desenha as colunas laterais da borda.
Linhas Método:
Desenha as linhas superior e inferior da borda.
WriteOptions Método:
Define a posição do cursor para escrever opções do menu.
Exibe um menu com opções numeradas, solicita ao usuário que digite uma opção e chama HandleMenuOption().
HandleMenuOption Método:
Recebe a opção do menu e executa a ação correspondente usando switch.
Opções:
1: Chama PizzaController.InserirSaborPizza() para cadastrar um novo pedido de pizza.
2: Chama PizzaController.BuscaPizza() para buscar informações.
3: Chama PizzaController.DeletarSaborPizza() para excluir um sabor de pizza.
4: Retorna ao menu principal e encerra o programa.
5: Encerra o programa.
CoresPadrao Método:
Define as cores de fundo e de texto de volta aos padrões.
Esse código representa um menu interativo para operações relacionadas a pedidos de pizza, onde o usuário pode escolher entre cadastrar, buscar, excluir ou sair. O código faz uso de classes do tipo PizzaController para executar as operações associadas a pizzas.
Segue a imagem do código em execução:
Se surgirem dúvidas ou curiosidades, estou aqui para ajudar e fornecer esclarecimentos adicionais. Sintam-se à vontade para questionar ou compartilhar qualquer dúvida que possam ter.☺
- PPétrus Teixeira @Petrus_Goncalves
Ficou bem bacana @Brenda, é sempre bom montar outros exemplos para fixar o assunto.
Em resposta aBrenda⬆:Wander Matheus Pacheco Nóbrega @WMatheus2022Ficou show, mano! Vou praticar mais, pegar alguns projetos em Java e adaptar para C#.