MSc (Software Engineering)

CS613: C++ & Object Oriented Programming Project.


Electronic voting is an issue that has received much attention in Ireland in the past year. Your task is to design and implement (in C++) a software system that will handle electronic voting in an election similar to the Irish electoral system. The Irish electoral system uses a system of proportional representation as outlined at An example of how proportional representation operates may be found at


Your software system should allow elections to take place in several constituencies. Each constituency has a number of election candidates associated with it where each candidate can belong to one constituency and one political party. Each constituency has an allocated number of positions (seats) that may be filled by the elected candidates. Your electoral process should allocate seats to the available candidates until all seats in the constituency have been filled. Candidates are elected according to the system of proportional representation as described at the URL provided above.


The combined result of all these constituencies generates the overall election result determining what political party obtain the most number of seats and hence win the election.


Your system should allow an election to be set up by generating ballot papers for each constituency, take in votes for each candidate (first preference, second preference, etc), determine who has been elected and transfer surplus votes to candidates that have not been elected. This process continues until the number of candidates elected in a constituency equals the number of seats available in the constituency.


Your system should generate statistics about the election such as the number of vote’s cast, the number of 1st preferences, 2nd preferences etc, for each candidate and for each party, both at a constituency and at a national level.  An example of the type of data that should be available can be seen at (No graphics necessary!). Information about candidates elected and eliminated on the 1st count, 2nd count etc should also be available.


Your implementation should include a substantial testing module (e.g. incorporating random casting of votes) that demonstrates that your electronic voting system works correctly. Marks will be allocated for this test module. It should be possible to run your electoral system using this module to test the system. It should also be possible to run your electoral system by obtaining data from the user (e.g. votes) and files (constituencies and candidates).



Deadline: 9.30am Monday 7th October 2002. 10% will be deducted for each day that the project is late unless you have been granted permission to submit the project at a later date.

Project code and documentation (a document explaining how you have designed you system, assumptions you have made and limitations, if there are any) should be emailed from your smsc mail account to with the subject title MSc Project Submission.


Marks will be awarded for code documentation (including code comments) and use of object oriented techniques as discussed in lectures. Project submissions that do not compile will result in a mark of 0%. Therefore, it is better to submit a simple system that does something that a complicated system that achieves nothing.


It is permitted to work in pairs on the project as long as you indicate so on your submission. If you do work together please be aware that the project will be marked harder as if two people are working on a project, twice as much work should be achieved. Plagiarism will result in a mark of 0%.


Best of Luck!