Problem Statement

Design a database and a set of Java applications to implement a quotations database. Quotations are organized into categories, and users can vote on quotations to establish a popularity ordering for the quotations in the database.

The Publisher Application

The publisher application is a simple Java application that allows users to publish new quotations to the database.

To publish a quotation, the user has to be logged in to the system. The user types a quotation, selects a category for that quotation from the combo box at top, and clicks the 'Publish' button to publish the quotation to the database.

The Viewer Application

The viewer application allows users to read quotations that have been published by other users.

The user selects a category from the combo box at the top of the window, and the system returns a list of quotations that have been published in that category, ranked by popularity. If a user likes a quotation, they can click the recommend button to vote for that quotation. Users must be logged in to recommend quotations, but they do not have to be logged in to view them. Quotations in each category are displayed in order based on how many recommendations they have received. To prevent vote stuffing, the system should limit each user to a single 'recommend' for each quotation in the system. Each quotation is also displayed along with the user name of the user who published it, so users can ask the administrator to remove users who post inappropriate material.

The Administrator Application

You should create a third application for the quotation system administrator. This application should allow the administrator to perform the following tasks:

Submitting Your Work

You can organize this assignment either as three separate projects or as a single large project containing all three applications. When you submit your homework, send me the compressed project folder(s) along with a compressed folder containing an export of your MySQL database.