Voting System
Voting System

Voting System

Tags
Web Dev
School
ASP.NET
Published
May 11, 2021
Author
Kalen Wallin
api_v1_role
Web Developer
api_v1_company
University of Nebraska-Lincoln
api_v1_type
Student Course
api_v1_category
Websites
api_v1_year
2021
api_v2_order
15
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

  1. Clone the repository here: https://github.com/kalenwallin/Voting-System
  1. Open the solution file
  1. Press the play button at the top of the IDE (IIS Express/Voting System)
  1. Create an account or log in
  1. Select an election
  1. Vote
  1. Press continue and select the same election to view your race selections.
  1. Sign out when finished.

Public Voter List Instructions

  1. Click on Public Voter List in the navigation bar (No account required).
  1. 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).
notion image
 
notion image
 
notion image
 
notion image
 
notion image
Drawings of the UI

Discord Git Log

We used a webhook to send everything that happens to the GitHub Repository to our discord server.