Instruções
Construir um Sistema de Votação
Neste laboratório, você construirá um sistema de votação que usa
Map para criar uma enquete e Set para evitar votos duplicados.
Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório.
Histórias de Usuário:
1. Você deve inicializar uma variável poll para um novo objeto Map.
2. Você deve ter uma função addOption que aceita um parâmetro option.
3. Na função addOption:
- Se a
optionainda não existir na enquete, ela deve ser adicionada à enquete com umSetvazio como seu valor para rastrear os eleitores. Você também deve retornar a mensagemOption "<option>" added to the poll. - Se o
optionjá existir, deve retornar a mensagemOption "<option>" already exists. - Se você tentar adicionar uma opção vazia, a função deve retornar a mensagem
Option cannot be empty.
vote que aceita dois parâmetros, option (a opção para a qual votar) e voterId (um ID único para o eleitor).
5. Na função vote:
- Se a
optionnão existir na enquete, a função deve retornar a mensagemOption "<option>" does not exist. - Se a
optionexistir, a função deve verificar se ovoterIdjá votou nestaoption. - Se o eleitor já votou, a função deve retornar a mensagem
Voter <voterId> has already voted for "<option>". - Se o eleitor não votou,
voterIddeve ser adicionado aoSetdevoterspara esta opção. A função deve retornar a mensagemVoter <voterId> voted for "<option>".
poll.
7. Sua poll deve ter pelo menos três votos.
8. Você deve ter uma função displayResults que retorne os resultados da pesquisa no seguinte formato:
Poll Results:
OptionA: N votes
OptionB: N votes
.
.
/*
sample output
Poll Results:
Turkey: 2 votes
Morocco: 1 votes
*/
O que fazer:
Testes:
- Você deve ter uma variável `poll` inicializada com um novo objeto `Map`.
- Você deve definir uma função `addOption` que aceita um parâmetro `option`.
- Você deve definir uma função `vote` que aceita dois parâmetros, `option` e `voterId`.
- Você deve definir uma função `displayResults` para exibir os resultados da enquete.
- Você deve ter pelo menos três opções na sua `poll`.
- Sua `poll` deve ter pelo menos três votos.
- Você deve garantir que cada opção de votação corresponda a um objeto `Set`.
- `addOption("Egito")` deve retornar `Opção "Egito" adicionada à enquete.`
- Adicionar uma opção vazia deve retornar `"A opção não pode estar vazia."`
- Quando `Turkey` já estiver adicionado, `addOption("Turkey")` deve retornar `Option "Turkey" already exists.`
- Quando `Malaysia` existir nas opções de votação, `vote("Malaysia", "traveler1")` deve retornar `Voter traveler1 voted for "Malaysia".`
- `vote` deve atualizar o `Set` de eleitores para uma opção.
- Quando `traveler1` tenta votar novamente em `Algeria`, `vote("Algeria", "traveler1")` deve retornar `Voter traveler1 has already voted for "Algeria".`
- Votos duplicados não devem aumentar o tamanho do `Set`.
- Quando `Nigeria` não estiver nas opções de votação, `vote("Nigeria", "traveler2")` deve retornar `Opção "Nigeria" não existe.`
- Uma opção única deve ser capaz de receber múltiplos votos.
- Quando a opção `Turkey` recebe dois votos, a opção `Morocco` recebe um voto e a opção `Spain` não recebe nenhum voto, `displayResults()` deve retornar `"Poll Results:\nTurkey: 2 votes\nMorocco: 1 votes\nSpain: 0 votes"`.
- `displayResults()` deve retornar os resultados no formato correto.
Preview