1
resposta

[Projeto] Solução

Reduzi o máximo de código no programa.cs:

  1. Program
using ScreenSound.Menus;
using ScreenSound.Modelos;

Menu menu = new Menu();
menu.ExibirOpcoesDoMenu();
  1. Menu

namespace ScreenSound.Menus
{
    internal class Menu
    {
        Dictionary<string, Banda> bandasIniciais = new();

        public void ExibirOpcoesDoMenu()
        {
            if (bandasIniciais.Count == 0)
                bandasIniciais = InserirBandasIniciais();

            ExibirLogo();
            Console.WriteLine("\nDigite 1 para registrar uma banda");
            Console.WriteLine("Digite 2 para registrar o álbum de uma banda");
            Console.WriteLine("Digite 3 para mostrar todas as bandas");
            Console.WriteLine("Digite 4 para avaliar uma banda");
            Console.WriteLine("Digite 5 para exibir a média de notas de uma banda");
            Console.WriteLine("Digite -1 para sair");

            try
            {
                Console.Write("\nDigite a sua opção: ");
                string opcaoEscolhida = Console.ReadLine()!;
                int opcaoEscolhidaNumerica = int.Parse(opcaoEscolhida);

                switch (opcaoEscolhidaNumerica)
                {
                    case 1:
                        new MenuRegistrarBanda().Executar(bandasIniciais);
                        ExibirOpcoesDoMenu();
                        break;
                    case 2:
                        new MenuRegistrarAlbum().Executar(bandasIniciais);
                        ExibirOpcoesDoMenu();
                        break;
                    case 3:
                        new MenuExibirBandas().Executar(bandasIniciais);
                        ExibirOpcoesDoMenu();
                        break;
                    case 4:
                        new MenuAvaliarBanda().Executar(bandasIniciais);
                        ExibirOpcoesDoMenu();
                        break;
                    case 5:
                        new MenuExibirDetalhes().Executar(bandasIniciais);
                        ExibirOpcoesDoMenu();
                        break;
                    case -1:
                        Console.WriteLine("Tchau tchau :)");
                        break;
                    default:
                        Console.WriteLine("Opção inválida");
                        break;
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("Por favor, insira uma opção válida (número).");
                Thread.Sleep(3000);
                Console.Clear();
                ExibirOpcoesDoMenu();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Ocorreu um erro: {ex.Message}");
                Thread.Sleep(4000);
                Console.Clear();
                ExibirOpcoesDoMenu();
            }
        }

        public Dictionary<string, Banda> InserirBandasIniciais()
        {
            Banda ira = new("Ira!");
            ira.AdicionarNota(new Avaliacao(8));
            ira.AdicionarNota(new Avaliacao(9));
            ira.AdicionarNota(new Avaliacao(10));
            Banda ironMaiden = new("Iron Maiden");
            ironMaiden.AdicionarNota(new Avaliacao(10));
            bandasIniciais = new Dictionary<string, Banda>
            {
                { ira.Nome, ira },
                { ironMaiden.Nome, ironMaiden }
            };
            return bandasIniciais;
        }

        void ExibirLogo()
        {
            Console.WriteLine(@"
            [LOGO]
            Boas vindas ao Screen Sound 2.0!");
        }
    }
}
1 resposta

Olá Guilherme, tudo bem com você?

Obrigado por compartilhar com a comunidade sua solução. Sempre há diversas maneiras de se chegar a um resultado na área da programação e não há problema em você ter utilizado um código mais sucinto e direto, muito pelo contrário, isso facilita o entendimento da lógica.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!