Com base nos conhecimentos adquiridos nos cursos introdutórios de desenvolvimento em C#, e aproveitando um período sem acesso à internet, desenvolvi um programa de linha de comando voltado para a gestão de recordes de strongmans do século XIX e XX.
O sistema foi implementado utilizando estruturas fundamentais da linguagem, com ênfase em dicionários (Dictionary). A modelagem adotada simula o registro de levantamentos historicamente populares como o Bent Press e o Floor Press, amplamente utilizados por atletas como Eugen Sandow e George Hackenschmidt.
O projeto não utiliza orientação a objetos, tendo sido desenvolvido com abordagem procedural para consolidar fundamentos da linguagem. O código está disponível no GitHub: https://github.com/diegotassodev/Strongmans
Sugestões são bem-vindas, especialmente no que se refere a:
- Melhoria no algoritmo
- Coesão e separação de responsabilidades
Todavia, deixo abaixo uma versão refinada do algoritmo originalmente utilizado, fundamentada nos princípios de pensamento computacional.
Especificações Técnicas: Sistema de Cadastro e Consulta de Strongmans
1. Estruturas de Dados
1.1 Dicionário de Usuários (LoginUsuario)
Estrutura responsável pelo armazenamento das credenciais de acesso ao sistema.
- Chave (Key): Nome do usuário
- Valor (Value): Senha do usuário
Finalidade: Permitir autenticação baseada em correspondência exata de chave e valor.
1.2 Dicionário de Strongmans (Strongmans)
Estrutura responsável pelo armazenamento dos registros de atletas e seus respectivos recordes.
- Chave externa: Nome do strongman
- Valor: Dicionário interno contendo os levantamentos:
Dicionário interno:
"BentPress"→ Peso levantado no Bent Press"FloorPress"→ Peso levantado no Floor Press
Finalidade: Organizar dados de forma simples.
2. Funções do Sistema
2.1 Funções de Abstração
ExibirTitulo()
Responsável por padronizar a apresentação visual dos títulos das interfaces.AdicionandoUsuarios()
Responsável por popular o dicionárioLoginUsuariocom dados pré-configurados.AdicionandoStrongmans()
Responsável por popular o dicionárioStrongmanscom dados iniciais.
2.2 Fluxo de Autenticação
ExibirInterfaceLogin()
Apresenta a interface de login ao usuário.EntradaNomeUsuario(()
Captura o nome do usuário via entrada padrão.EntradaSenhaUsuario()
Captura a senha via entrada padrão.ValidandoLogin()
Processo:- Verifica se o nome do usuário existe como chave no dicionário
LoginUsuario. - Caso exista, compara a senha informada com o valor associado à chave.
- Se ambas as verificações forem verdadeiras → autenticação concedida.
- Caso contrário → exibe mensagem:
"Usuário ou senha incorretos".
- Verifica se o nome do usuário existe como chave no dicionário
ExibirInterfacePrincipal()
Exibe o menu principal após autenticação bem-sucedida.
3. Menu Principal do Sistema
Após login válido, o sistema apresenta as seguintes opções:
3.1 Adicionar Strongman
Fluxo:
- Solicita o nome do strongman.
- Cria nova chave no dicionário
Strongmans. - Solicita o peso no Bent Press.
- Solicita o peso no Floor Press.
- Armazena os valores no dicionário interno associado ao nome.
- Retorna ao menu principal.
3.2 Mostrar Strongmans
Fluxo:
- Percorre todas as chaves do dicionário
Strongmans. - Exibe a lista completa de nomes cadastrados.
- Retorna ao menu principal.
3.3 Pesquisar Strongman
Fluxo:
Solicita o nome do strongman.
Verifica se a chave existe no dicionário
Strongmans.- Se não existir → exibe mensagem de erro.
- Se existir → recupera diretamente o dicionário interno associado.
Obtém:
- Valor de
"BentPress": Conforme a chave do dicionário dentro do dicionário. - Valor de
"FloorPress": Conforme o valor do dicionário dentro do dicionário.
- Valor de
Exibe ficha técnica do atleta contendo seus recordes.
Retorna ao menu principal.
3.4 Excluir Strongman
Fluxo:
- Solicita o nome do strongman.
- Verifica se a chave existe.
- Remove o Strongman
- Retorna ao menu principal.
3.5 Sair
- Exibe mensagem informando encerramento do sistema.
- Finaliza a execução do programa.
4. Fluxo Geral do Algoritmo
Inicialização
│
├── Popular dicionários iniciais
│
├── Exibir Tela de Login
│ ├── Solicitar Usuário
│ ├── Solicitar Senha
│ └── Validar Credenciais
│
└── Se autenticado:
└── Exibir Menu Principal
├── Adicionar Strongman
├── Mostrar Strongmans
├── Pesquisar Strongman
├── Excluir Strongman
└── Sair