student presentation voting system

0 downloads 0 Views 300KB Size Report
lesson. Aside from a Wi-Fi connection, a web server should be set up either on ... LAMP (Linux, Apache, MySQL, PHP) software pack installed will be enough to ...
STUDENT PRESENTATION VOTING SYSTEM In response to Mr Tolga Soyata’s question on Research Gate regarding the implementation of up/down voting for students’ presentations held in class before peers this is a possible solution.

1

INFRASTRUCTURE

This implementation could take advantage of existing infrastructure provided it exists within the complex where lessons are being held. I assume that the complex had an available wireless connection available for students to which they can connect at any time during a lesson. Aside from a Wi-Fi connection, a web server should be set up either on a physical machine or on a virtual machine (I’d suggest this approach). A simple and free instance of Debian, Ubuntu, Fedora, CentOS or any other distribution of a GNU/Linux operating system with LAMP (Linux, Apache, MySQL, PHP) software pack installed will be enough to host the service. If possible, the IP address of the web server (virtual machine) should be statically assigned and set and preferably, if available, in an Intranet DNS a domain would be created to point traffic to this IP address. For example, if the IP address of the web server is 192.168.20.234 and a domain is vote.class, the DNS would treat them as aliases, so that students would type http://vote.class in their web browser and would be served a web page from the aforementioned IP address.

2

WEB SERVICE

The web service would be a very simple PHP application connected to a simple MySQL database. A sample structure of the database could be built around a set of tables as follow: vote_students id

INT(10)

PK AUTO_INCREMENT

index

VARCHAR(9)

UNIQUE

forename VARCHAR(64) surname

VARCHAR(64)

This is a sample table holding student login information which will be used for student login to the voting system.

vote_courses id

INT(10)

PK AUTO_INCREMENT

name VARCHAR(64) UNIQUE This is a table listing all available courses.

vote_presentations id

INT(10)

PK AUTO_INCREMENT

course_id INT(10)

FK -> vote_courses.id

name

VARCHAR(64)

date

DATE

active

TINYINT(1)

DEFAULT 0

This is a table listing all presentations. The application will display only presentations for a selected course which are registered under the current date and which are active. SELECT id, name FROM vote_presentations WHERE course_id = :selected_course_id AND date = DATE(NOW()) AND active = 1

Sample SQL query:

vote_votes id

INT(10)

PK AUTO_INCREMENT

student_id

INT(10)

FK -> vote_students.id

presentation_id INT(10)

FK -> vote_presentation.id

timestamp

TIMESTAMP

CURRENT_TIMESTAMP

vote

ENUM(1, -1)

INDICES

UNIQUE INDEX ( student_id, presentation_id )

This is a table which will hold vote information. Every student can vote for each presentation only once and the vote can be either -1 or 1, down or up vote, respectively.

3

USER INTERFACE

The user interface should be simple and intuitive, without unnecessary text, images and colours outside the required branding and visual identity requirements of the University.

3.1 LOGIN PAGE

Student ID Login

3.2 COURSE SELECTION PAGE

Select the course RESEARCH ON ANTISOCIAL BEHAVIOR SOCIAL COGNITION AN APPROACH TO HUMAN MOTIVATION RESEARCH LAB IN SOCIAL PSYCH PSYCHOLOGY OF HEALTH

3.3 VOTING UP/DOWN AN CURRENT PRESENTATION

Vote for the active presentation Presentation name Team members

Moral development Jane Doe Joe Bloggs Mary Major

Click to vote

These layouts are simple and would look very well on mobile phone and tablet layouts, yet still informative and straight forward even on a netbook or laptop size device.

4

VOTE RESULTS

Presenting the vote results for a certain selected presentation would be a simple matter of writing out an adequate SQL query. An example based on the suggested base table design follows: SELECT SUM(U.down) downs, SUM(U.up) ups FROM ( SELECT COUNT(id) down, up = 0 FROM vote_votes WHERE presentation_id = :selected AND vote = -1 UNION SELECT 0 down, COUNT(id) up FROM vote_votes WHERE presentation_id = :selected AND vote = 1 ) AS U