1
resposta

[Projeto] Senhas de Atendimento - Aprimorando

Aprimorei o projeto de senhas de atendimento, para garantir que o sistema não realize a chamada de senhas que não foram geradas.

List<int> senhas = new List<int>();

int decisao = 0;
int senhaGerada = 0;
int indice = 0;

do
{
    Console.WriteLine("1 - Gerar nova senha\n" +
                      "2 - Chamar próxima senha\n" +
                      "3 - Sair");
    decisao = int.Parse(Console.ReadLine()!);

    switch (decisao)
    {
        case 1:

            senhaGerada++;
            senhas.Add(senhaGerada);

            Console.WriteLine($"Senha Gerada {senhaGerada.ToString("D3")}\n");
            break;

        case 2:

            if (indice < senhas.Count)
            {
                int item = senhas[indice];
                Console.WriteLine($"Senha Chamada {item.ToString("D3")}\n");
                indice++;
            }
            else if (indice <= senhas.Count)
            {
                Console.WriteLine("Senhas finalizadas! necessário gerar mais senhas.\n");
            }
            else
            {
                Console.WriteLine("Não há senhas para serem chamadas! Favor gerar uma nova.");
            }
            break;
          
        case 3:
            Console.WriteLine("Encerrando Sistema");
            break;
    }

} while (decisao != 3);
1 resposta

Oi, Álvaro! Como vai?

A preocupação em garantir que o sistema não realize a chamada de senhas que não foram geradas mostra um pensamento muito maduro sobre segurança e integridade dos dados. Essa é exatamente a mentalidade de quem está evoluindo como desenvolvedor.

O uso da List<int> para armazenar as senhas geradas, combinado com o controle do indice, tornou o fluxo do sistema mais organizado e confiável. A estrutura com switch, case e break ficou bem clara, facilitando a leitura do código. Também vale destacar o uso do ToString("D3") no Console.WriteLine, que padroniza a exibição de cada senha com três dígitos, deixando o projeto bem mais próximo de uma aplicação real de atendimento.

A lógica que verifica indice < senhas.Count antes de chamar a próxima senha é o ponto central da sua melhoria, e ela está correta. A mensagem exibida quando não há senhas para serem chamadas também contribui para uma experiência mais clara para o usuário.

Uma sugestão para continuar evoluindo o projeto é exibir quantas senhas ainda estão aguardando atendimento. Você pode calcular isso com uma linha simples:


int senhasRestantes = senhas.Count - indice;
Console.WriteLine($"Restam {senhasRestantes} senhas na fila.");

Esse trecho subtrai o indice atual do total de senhas geradas e exibe a informação no console, tornando o sistema de atendimento ainda mais informativo e funcional.

Você já pensou em como seria implementar uma funcionalidade para cancelar uma senha específica que já foi gerada, mas ainda não foi chamada?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
Conteúdos relacionados
C#: Boas práticas de código e projeto
C# Async: aplique recursos de programação assíncrona em seu projetos