Project2: Voting

Project Description-Level 1

Your assignment is to create a program where a group of users can login using their respective passwords and vote either “YES” or “NO” on a a single issue. Once a user votes, s/he cannot change the votes. When the outcome of the vote is obvious, the program should print the result of the vote and terminate. You can assume that the program does not quit or terminate before the vote ends Use your own student IDs as usernames Initial passwords can appear as string literals in your source code.

Project Description-Level 2

On top of the requirements from the previous levels: The voters can now also abstain instead of voting “YES” or “NO” The users can change their passwords The users can change their votes. If the program quits before the vote ends, it should be able to retrieve the last state of the vote when it restarts. (This requires you to write data to a file)

Project Description- Bonus

On top of the requirements from the previous levels: There should be an admin account which can add new users The program should keep track of multiple votes. Any user can start a vote on a new issue When the result of the vote on any issue is obvious, the result should be printed. The program should keep running for the remaining issues. If the program quits before all the votes ends, it should be able to retrieve the last state of all remaining issues when it restarts. It does not have to retrieve the state of terminated votes.

Due dates

Your presentations will be on the week that starts with the 25th of April HOWEVER, you are to submit the code for Level 1 one week before the presentation At 23.59 two days before the lab session (Rougly 36 hours before the presentation): Report and all the code is to be submitted The day of your next Lab session: Presentations Create a GitHub repository for your project that you update as soon as you make any progress