Spring 2009 Project

Revision history
DateSummary
October 26Original Specification Published
November 6Data definitions added
November 13Stock definitions added

Overview

The recent collapse of the stock market has many people concerned about their savings. Should they get out? Should they invest more? Too much uncertainty is bad for the markets, and bad for the economy! You are to write a project to let people analyze, buy and sell stocks (although with only play money).

Requirements

You are to build a web-based database system that uses 71 million records for all stocks over the past 70 years. The data fields are defined in this document Data relevant to individual stocks is now available.

The system is a simulated online stock investment program. Users register and then transfer money to open their account. Users can buy and sell stocks, assuming they have enough money to buy the stock and actually own the stocks when they sell (no short selling). Your system should provide an online report of all of the transactions performed by the user as well as the user's current portfolio (including cash). As part of the simulation, the actual price for the stock is randomly generated between the high and the low for the day.

Of course, we are not in this for free. Your system should charge commissions. Commissions are based on settings by an administrator (via an online dashboard) that allows multiple granularity for commissions (even down to setting specific rates for specific customers for specific transacitons). Commissions may be flat rate or percentage of the total dollar amount.

Finally, you should allow users to analyze stocks by showing information about individual stocks over a specific time frame. This information should be presented in an intuitive manner, as opposed to long lists of numbers. It would be very nice if a user could compare two stocks in some meaningful way.

It is critical that you check this page every day. These requirements are SUBJECT TO CHANGE AT ANY TIME. Note that you will not be starting a webservice, but instead will only be accessing the database from the localhost.

Your project must use MySQL as a database backend, with Tomcat as the webserver. Either JSP or PHP may be used to connect the database to Tomcat. Note that Tomcat supports JSP directly. See Mithcell Mebane's instructions on using PHP in Tomcat. The database must be populated via JDBC programs.

Database Design

You must provide an ER-diagram of your database, with all required cardinality and appropriate specification. Include a notes section if needed. You must also provide a table diagram of each table, along with the normalization analysis of each table (the normal form of the table). For any table in less than 3NF, you must provide a defense of the design.

Interface Design and Documentation

Your site must be intuitive and easy to use. You must supply an online help function. You must also provide documentation as to how to download, setup and install your system. The TA will follow your instructions EXACTLY AS WRITTEN, so make sure they work. You must also provide use case reports on each function provided by your site.

Presentation

The presentations are designed to sell your site. You should explain why it is better than the others, and it should provide a demonstration of its capabilities. There will be two presentations per day, except for the first day when we will have three. All presentations must be handed in on a flash drive on Monday, November 30. You will present from the flash drive handed in. Presentations are limited to 15 minutes.

Evaluation

The project will be evaluated 40% on requirements, 20% on database design, 20% on interface design and documentation, and 20% on presentation.