CS145 - Spring 2002
Introduction to Databases
Assignment #7   --   Due Wednesday May 29

Project Part 6
In the sixth and last part of the project you are to (finally) create a fully functioning AuctionBase system accessed by users exclusively through a Web interface. You may use your Web-database code for Project Part 2 as a starting point for this project part, or you may start from scratch.

Functionality

The functionality of your AuctionBase system is quite flexible and open-ended. However, we do expect all students to implement some basic capabilities: Notes:

User interface

While the functionality of your AuctionBase system is quite open-ended, the interface itself is extremely open-ended. CS145 is not a user interface class and you can certainly get full credit for a solid system with simple input boxes, menus, and/or radio buttons, and simple HTML output tables, similar in style to what you implemented in Project Part 2. (However, as in Project Part 2, you definitely should not be exposing SQL to the end user.) Of course we welcome much snazzier interfaces, with the zenith being a near-replica of eBay itself.

Browser compatibility

As in Project Parts 1 and 2, before turning in your final project please ensure that it operates correctly using the Netscape browser on the Sweet Hall Solaris workstations. If there is a compelling reason you cannot make your system work in the Solaris Netscape browser environment (e.g., you really want to exploit certain features in Internet Explorer), you must get "preapproval" from the course staff to use a different browser environment. Send an email message to cs145-staff@cs telling us precisely what browser environment you wish to use for your project. The message must be sent by Sunday May 27 so that we have time to work things out if your browser environment poses a problem for us. You will receive a reply within 24 hours of your message, and you do need to receive a positive confirmation message before assuming that your alternate environment is okay.

When the preapproval process is not followed, projects that have problems on the Sweet Hall Solaris Netscape browsers may lose points, possibly all points if we cannot run your project at all.

System testing and runaway queries

We strongly suggest that you debug your queries directly on Oracle before hooking them into your Web interface. JDBC and Pro*C are not particularly friendly when it comes to "runaway" queries, so you will benefit yourself and the rest of the class by using sqlplus first (through which runaway queries are easy to kill using Ctrl-C) to ensure that your queries are working properly and are finishing in a reasonable amount of time. Once you are certain your queries are working correctly, incorporate them into your Web interface.

Even with prior debugging, it is prudent to set a timeout mechanism in JDBC for all of your queries. Use setQueryTimeout([time in seconds]) on each of your statement objects, for example:

   Statement stmt = conn.createStatement( );
   stmt.setQueryTimeout(180);
   ...
Normally, CGI will kill runaway processes automatically, although this timeout behavior is not reliable, and we know of no reliable solution for C users.

Finally, you should never close an ssh or telnet session or an xterm window without stopping all queries and Java servlets first. Otherwise, queries may continue to run on Oracle long after you've turned in for the night. Specifically:

What to submit

As usual, prepare a submission directory containing a text file called README along with all your code, using the same structure you used for Project Parts 1 and 2.

C users should submit all source files, your Makefile, and all relevant .html files. Java users should submit your entire servletdir directory.

Your README should include at least the following, in this order:

  1. The line "I WOULD LIKE TO ENTER THE AUCTIONBASE CONTEST." if you want your project to be considered for the contest. Otherwise leave blank.
  2. The URL for the main page of your system if you are a C user, otherwise leave blank.
  3. A short description of all the input parameters that a user can provide when browsing auctions.
  4. A short description of the different statistics that can be computed.
  5. How the user gets to each of the capabilities required by the assignment, if there's any chance at all it's not obvious from the user interface.
  6. A list of any additional capabilities in your system, and how the user gets to them if it's not obvious.
Submission instructions are as usual, points may be deducted if you do not follow the submission procedures exactly as specified, and if you submit more than once, all submissions except your last will be ignored.

The (Optional) CS145 AuctionBase Contest
We will select a small number of AuctionBase systems as winners of our first annual (and, for now, experimental) CS145 AuctionBase Contest. Winners of the contest will:

The criteria for selection will be some combination of beyond-the-basics functionality and a good user interface.

Important - If you want your project to be considered for the contest, you must:

  1. Submit your project no later than one day late, i.e., by Thursday May 30 before midnight. This deadline is to allow sufficient time for us to carefully select winners. Please note that you may NOT submit one version of your project for grading and one for the contest. Your last submission will be the one used for grading and late penalty calculations, and it can be considered for the contest only if it is submitted before Thursday midnight.

  2. As specified in What to submit, clearly indicate at the top of your README file your desire to be considered for the contest.