The Voting System is a website I created for my software engineering (CSCE 361) final project at the University of Nebraska-Lincoln. My team consisted of Thomas Walton, Jayden Carlon, Cameron Collingham, Thomas Walton, Joshua Bellmyer, and myself.
Features
The main feature of the Voting System is the ability to vote. After voting, a user can view their ballot. After an election, a user can view the results. Users must create an account and log in before accessing a ballot. Ballots contain multiple electoral races and an issue to vote on. A public voter list is made available to any third party to view who has or hasn’t voted. That third party, however, will not be able to view whom they have voted for.
Client-side Form Validation
Email must be between 8 and 60 characters and contain an ‘@’ symbol.
Password must be between 5 and 20 characters. While creating an account, users must confirm their password by typing it twice.
Full name must be between 5 and 20 characters.
Ballot must have an option selected for each race.
Elections and ballots are inaccessible unless users are signed in.
Getting Started
- Clone the repository here: https://github.com/kalenwallin/Voting-System
- Open the solution file
- Press the play button at the top of the IDE (IIS Express/Voting System)
- Create an account or log in
- Select an election
- Vote
- Press continue and select the same election to view your race selections.
- Sign out when finished.
Public Voter List Instructions
- Click on Public Voter List in the navigation bar (No account required).
- View whether a voter has voted on the ongoing election. It will be green if a user has voted and red if a user hasn’t voted.
Testing
There are MSTest Unit Tests for Elections, Issues, Candidates, Users, and Ballot controllers. Use Visual Studio’s Test Runner to run and display test results.
Team & Responsibilities
Kalen's team consisted of 5 student software engineers. He developed all of the front end and unit tested the controllers. Josh Bellmyer created the controllers and methods for using the database and handling user information. Thomas Walton and Jayden Carlon designed and implemented the database. Cameron Collingham helped Josh with some of the controllers and helped Kalen write unit tests.
Development Details
The project was developed using MVC and SOLID design principles.
Development Tools included ASP.NET Core 3.1 and the following languages: HTML, CSS, C#, and Javascript.
Testing Framework MSTest
Database Tools:
- Entity Framework Core which uses LINQ to query data and prevent attacks
- SQL Server/Local DB
Design
We followed a model-view-controller (MVC) architecture. Razor pages have a view and a controller to handle input from the user and output information from the database. There are additional controllers to separate concerns of each class (User, Election, Ballot, and Issues).
Drawings of the UI
Discord Git Log
We used a webhook to send everything that happens to the GitHub Repository to our discord server.