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 option ainda não existir na enquete, ela deve ser adicionada à enquete com um Set vazio como seu valor para rastrear os eleitores. Você também deve retornar a mensagem Option "<option>" added to the poll.
  • Se o option já existir, deve retornar a mensagem Option "<option>" already exists.
  • Se você tentar adicionar uma opção vazia, a função deve retornar a mensagem Option cannot be empty.
4. Você deve ter uma função 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 option não existir na enquete, a função deve retornar a mensagem Option "<option>" does not exist.
  • Se a option existir, a função deve verificar se o voterId já votou nesta option.
  • 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, voterId deve ser adicionado ao Set de voters para esta opção. A função deve retornar a mensagem Voter <voterId> voted for "<option>".
6. Você deve ter pelo menos três opções na sua 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