Este é um sistema de votação distribuído desenvolvido em Java, com funcionalidades de cliente e servidor. Ele permite que os usuários votem em diferentes opções e visualizem resultados em tempo real da votação, além de gerar relatórios finais com informações detalhadas sobre a votação. O sistema permite a criação de novas votações, assim como seu gerenciamento, através de menus interativos.
- Compreender e implementar protocolos de comunicação de rede, utilizando TCP/IP para garantir a comunicação confiável entre os componentes de sistemas distribuídos.
- Desenvolver servidores multithread, adquirindo experiência em gerenciar conexões simultâneas de clientes de forma eficiente no servidor.
- Projetar e implementar interfaces gráficas de usuário (GUIs), praticando a criação de interfaces intuitivas e funcionais em Java.
- Aplicar os princípios de sistemas distribuídos, introduzindo a arquitetura distribuída, como o modelo cliente-servidor e a troca de dados pela rede.
- Gerenciar a entrada de dados de forma segura, validando o CPF para simular garantias de autenticidade e utilizando estruturas de dados que previnam a duplicação de informações.
- Lidar com o processamento e a apresentação de dados em tempo real, desenvolvendo sistemas que atualizam e exibem informações e geram relatórios.
- Conexão com o servidor de votação.
- Receber o pacote de votação.
- Interface gráfica para digitar o CPF e escolher uma opção de voto.
- Envoar o CPF e voto ao servidor.
- Desconectar-se do servidor após o término da interação.
- Menus interativos com opções de Ajuda e Créditos.
- Gerenciamento de votações:
- Criação de novas votações.
- Encerramento de votações existentes.
- Aceitar a conexão de clientes e enviar o pacote de votação.
- Receber e validar os CPFs e votos enviados.
- Exibição de resultados em tempo real na interface.
- Geração de relatórios finais detalhados contendo:
- Opções e a quantidade de votos recebidas.
- Informações dos votantes.
- Ganhador da votação ou opções empatadas.
- Suporte a múltiplos clientes simultaneamente.
- Linguagem: Java 17+
- Frameworks/Libs:
- Swing (Interface Gráfica)
lombok
- Arquitetura: Cliente-Servidor
- Java 17 ou superior instalado no sistema.
- IDE de sua escolha ou terminal para compilar e executar os arquivos.
-
Clone este repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git
-
Execute o arquivo ServerMain para iniciar o servidor de votação e crie uma nova votação.
-
Configure o IP do servidor no cliente, alterando a String serverAddress em VotingClient.java para o IP corrente do servidor.
-
Execute o arquivo ClientMain para iniciar o cliente de votação, insira o CPF e escolha uma das opções.
Os relatórios são gerados automaticamente após o encerramento da votação e salvos no arquivo relatorioFinal.txt. O relatório inclui:
- Ganhador da votação;
- Resultado individual de cada opção;
- CPFs dos votantes;