Other than that there is also the fact that, for a reasonable definition of "fair", it is impossible to make a fair voting mechanism. This is known as the Condorcet or Voting paradox.
It is also hard to make an electronic voting system that is trustworthy. You need to guarantee anonymity for the voter, verity that the voter is authorized to vote, ensure no voter can cast votes more than once, ensure that nobody can tamper with the totals in a manner that can't be detected and other similar concerns.
For example, ensuring anonymity of a vote along with confirming a user is authorized to vote, using the same device for both, while communicating over a connection being recorded by an adversary... that is probably quite tricky.