our final project will involve creating an auction web site, like ebay (although considerably simpler). Below you will find a listing of requirements.
Entities/Relationships
You can always add more data to any entity if you want, or more entities if needed
Users: Users can join the site, and for each user you keep their username, real name, password, shipping address, and optionally credit card info.
Auction/Item (item for auction): Items are offered for auction; the db keeps track of the auctions, and the item description may be an attribute of the auction. For each auction, you need to keep a title, item description (or relationship with item), which user started it, and its start and ending time. Registered users (and optionally 'guests') can view all items for auction. Notice than on sites like ebay, the auction has all the info for the item, so there's only one entity (in other sites, the item may be a separate entity from the auction).
Categories: this is used to categorize the items for auction. Many items can belong to the same category. Optionally, categories can be organized in a hierarchy of subcategories.
Bidding: Registered users can bid on an item, until the ending time for the item has passed. Each bid needs to be higher than previous bids for the same item.
Functionality
You need to provide the following functionality (each item may correspond to one or more pages, or a page may implement several items). The Reports would probably not be useful to a normal user, but to the auction site employees.
Main page
List all categories. (Categories have to come from the database)
Report: Table dump. List current info on all your tables. This is useful for debugging and should be one of the first you implement
Given a category, provide a list of all items on it.
Given the id, display an item (show the item, and a history of bids)
Bid on item (users need to be registered, and identify themselves with their username and password before bidding)
Put item up for bid (users need to be registered, and identify themselves with their username and password before bidding)
User registration
Report: Items bought. List all items that have been bought, with their description, final sale price, and name of the winner
Report: All Items currently on sale, including their description ,current winner and current sale price.
Milestones
The project is graded at the end; but to help you get organized, here are a few milestones that may help you keep on track. Some of these will be assigned on WebCT
ER Diagram
Page flow diagrams (which html/php pages do you have, which ones link to other ones)
Table structure (SQL for create tables)
PHP for add/list/delete ONE table (say category or users)
User registration and login (maybe last one)
Adding item for auction
Item listing and bidding
Reports
Additional functionality/prettyfication etc
Verify ER diagram correspond with table structure
Grading
the basic functionality, correctly implemented (including validation for all data entered, and good ER diagrams and SQL schema) will give you a grade of 85. You need to implement some of the extra functionality to get 100. Grades for the project are capped at 105.
Some ideas for extra functionality:
Hierarchical Categories Categories can be organized in sub-categories, witd unlimited levels. there is a way to display tdis hierarchy of categories. Items can only belong to categories in the leaves of the hierarchy.
html polish Your web pages are visually appealing, your site is usable, everything works without a hitch. (I will use Mozilla on Linux to view your pages).
Statistical reports Produce a report that lists, for a given range of dates, all categories, with the number of items sold in the category, and the average price per item. If you're doing hierarhical categories, you get 2 additional points if the totals for the supercategory are obtained by adding/averaging its sub-categories.
user management and cookies/sessions Users only need to log on once per session to the site, and their info is stored in session variables, and used (if needed) in other pages.
Useful references for the project
php.net main site for php, includes reference manual.
Sample PHP app (emails)
Sequences Use of sequences and auto-generated identifiers in PostgreSQL
HTML and PHP Intro
SQL injections
How to submit
Intro pageEach student should create a page called index.html (all lowercase) and put it in its public_html folder, so that the page is viewed from
http://okaram.spsu.edu/~yourname (of course, substitute your actual user name). This page should contain the student's name, the student's teammates (if any) a link to the documentation page (or the documentation included in this page) and a link to the actual project initial page.
Documentation page with all team members' names, any special instructions about your program, a list of features implemented, highlighting the extra features (if any) and links to:
ER diagram
SQL code to create tables
SQL code to insert initial data (if any)
Table dump (php page that displays all the data currently in your tables)
The actual project initial page
Notice that the documentation page may be the same as the intro page, especially for students working alone; for teams, the documentation (and project) may be in one student's space, with the other teammates linking to it on their intro page
Actual project