Create a Form with a voting selector made up of a Radio button array or a Drop-down List, plus the other typical fileds. Access to this Form would be Permissioned to Registered visitors.
Typical Fields are:
- Record ID
It is normal (but not essential) to set the Behavior Editor of the Form to restrict voting to only one vote per Registered user by setting the
BE | Options | Settings
Maximum Replies Per User to 
It is normal (but not essential) to add the IP Address field to the Form to record the IP Address the voter is voting from. You can also embed this field on the voting page to say that their IP address has been noted and recorded to prevent voting fraud - or some such.
The Date Field is to allow restriction to voting within a given period (preventing pre and post election voting) and the Username Field is to allow you to keep track of voters; neither field is essential.
Create a Page* for the voter to visit once they have voted.
Set the BE | Options | Settings of the Form:
"Redirect target after record update"
to that Page.
Create a Query as shown below.
Note that the Vote field is entered twice, once with the Total set to 'Group By' and once set to 'Count'.
On the results *Page embed the Vote query with the embed properties as shown below.
It is often desirable to be able to see who has voted, what IP address they voted from, the date of voting etc to be able to resolve voting irregularities.
Create a 'Votes' Query configured as below with a join to the User Data Feed
(Note that the configuration extends to the right as shown in the panel below.)
Embed this 'Votes' Query on a Page with the Permissions restricted to a suitable level, to display who has voted, where from and when.