CPSC 304, Final Project Submission


The goal of the final project is to build on what you have accomplished in the other project checkpoints. This document will show both what you are expected to turn in, and what functionality you should have for your project to be successful. There are three components to the final project:Please read the following carefully to make sure that you don't miss anything. One piece of advice: start early; it is hard to imagine that you will be able to pull this off if you start only a few days before the deadline. Do one operation at a time and use the interactive SQL interface to first make sure that you have the right SQL query. Finally, you can implement the embedded SQL part with the GUI.

Note that while you can see what we expect you to show us at the demo in the notes below, it is not enough to hard code the application to just run that set of specific queries - we will be looking at your files as well to show that you've implemented the whole application that you have said that you have.

The files

One person from each project team must turn the following into the handin directory "project-final" by 11:59 pm on the due date - the full command is "handin cs304 project-final", which assumes that the files that you are submitting are in a directory called ~/cs304/project-final. To do so, you'll need to get an account on the CS ugrad machines.

The demo

Test your system with enough data to make sure that it works well. To evaluate your project better, we will ask each group to give a demo which will be scheduled for 20 minutes. Because it is important for us to verify that each team member can explain the project, all team members are required to attend the demo, and should be prepared to present and answer questions Presentation sign up will happen later.

During the demo, you will first show that no part of the code has been changed since the deadline. Then you will compile the code (if using Java) and run the script to create and populate the tables. The TA will use your interface to test each of the aforementioned operations. Prepare a demonstration plan to make sure that the entire demo will finish in 20 minutes. You should also bring a printout of the relation instances. During the demo, we will ask to see the following:

  1. (1 point) Selection and projection query: pick one query of this category and provide an interface for the user to specify the selection condition and the attributes to be returned.
  2. (1 point) Join query: pick one query of this category and provide an interface for the user to choose this query.
  3. (1 point) Division query: pick one query of this category and provide an interface for the user to choose this query.
  4. (1 point) Aggregation query: pick one query that requires the use of aggregation (min, max, average, or count are all fine).
  5. (2 points) Nested aggregation with group-by: pick one query that finds the average for each group and then finds either the minimum or maximum across all those averages. Provide an interface for the user to specify whether the minimum or maximum is requested.
  6. (1 point) Delete operation: implement a cascade-on-delete situation. Provide an interface for the user to specify some input for the deletion operation.  Some input values would fail the cascade specification but others would successfully follow the cascade specification. Provide an interface for the user to display the relation instance after the operation.
  7. (1 point) Update operation: implement a constraint using the check statement. Provide an interface for the user to specify some input for the update operation. Some input values would successfully satisfy a constraint while others would fail. Provide an interface for the user to display the relation relation after the operation.Note that MySQL 5.5 does not support the Check constraint. If your team is using MySQL 5.5, keep the check in the SQL statement, but actually do the check at the application level (and comment it in the code).
  8. (2 points)  Graphical user interface: create an easy to use GUI  that allows the users to execute all the above operations and transactions. Use the menu facility provided by the graphics environment you use to define appropriate menus and submenus. Make sure to design your interface in such a way that all the error messages appear in separate pop-up boxes, or in a designated area of the main window, so that they do not interfere with the other activities. Whenever user input is requested, make sure that there is sufficient type checking.
  9. (3 points) Extra features: Create unique features that your application supports. You can really be creative about this. Some examples are using Bootstrap to prettify your UI, implementing Triggers and Privileges in the database, using any cloud-based databases. See the marking scheme for more examples and the breakdown.

GUIs normally require a lot of time and multiple tries to get them right. We expect you to produce a simple but adequate interface. You should not spend a lot of time on the interface itself. You should concentrate on the coding of the functionality of your project rather than the GUI. The goal of the project is to give you some experience with SQL and JDBC.

Here are a few tips on how to do well in your (project) demo:

Please note that while your project demo is often the grade that each member will receive for your project grade, grades may be modified if there are problems with the code or if there are individuals who have not participated well within their groups.

The individual reports

By the due date, each group member must submit their own individual report using the handin directory "individual-project-reports". The full command is "handin cs304 individual-project-reports", which assumes that the files that you are submitting are in a directory called ~/cs304/individual-project-reports. To do so, you'll need to get an account on the CS ugrad machines.

Please note that this is not group work, and must be done individually. please put your name and your group's name on the top of everything that you submit. Please also submit this report in plain text. The project report should contain the answers to the following questions: