For this project you are to develop an object-oriented program for an online mail order bookstore. The bookstore sells books, music CDs, DVD videos and computer software. The following information needs to be available for each of these products:
Books: title, author, publisher, year published, edition, volume, SCN and price.
Music CDs: title, artist, publisher, year published, volume, SCN and price.
DVD videos: title, director, publisher, year published, actor(s) and/or actress(es), running time, SCN and price.
Computer software: title, publisher, year published, version, SCN and price.
(SCN is the Stock Control Number, in the case of books ISBN numbers are used for the SCN while a barcode number is used in the case of music CDs, DVD videos and software.)
Customers can be either private individuals or retailers, the following information is needed for each of these:
Individual: e-mail address, password, name, shipping address, billing address, telephone number and credit card details.
Retailers: e-mail address, password, company name, shipping address, billing address, name of contact person, telephone number and account number.
Customers are uniquely identified by their e-mail addresses.
Addresses contain the following fields: street and number, suburb, city, county and postcode.
Each customer has a shopping cart as well as zero, one or more orders.
The shopping cart is a temporary list of titles the customer intends to buy. The list also includes the number of each title the customer intends to buy.
Orders are identified by an order number and contain:
List of titles (and numbers) ordered.
Date the order was placed.
Cost of all the titles ordered, postage, tax and total cost of the order.
Status of the order. The status of an order is not yet shipped or shipped.
Expected date or actual date of shipping.
A customer would typically go through the following actions when placing an order:
Logon if the customer does not have an id then (s)he would first create it.
Search or browse for titles.
While searching/browsing some titles may be selected added to the shopping cart.
Once the customer is done searching (s)he displays his/her shopping cart and makes some changes.
The customer then confirms the order, billing address, shipping address and bank details or account number.
The customer then logs off.
A customer can also do the following:
Change any of his/her details.
Check existing orders.
Save a shopping cart for a later date and return to that shopping cart.
You should aim to develop a tiered design where the three basic components:
Data component - that is the data in the data store,
Business logic - the application that manipulates the data from the data store,
are logically de-coupled. It is advisable to develop your project in the sequence: first data component then logic or application and only then user interface. Start of with a (simple!) text based or menu driven user interface and only when everything works change it to a GUI!
Guidance on Deliverables
All of your source code should have consistent indentation and a clear style.
Each class should have a method main that instantiates that class and tests all the methods of the class.
Detailed UML diagrams. Diagrams to be included are: use case diagrams, class and object diagrams, sequence diagrams, collaboration diagrams, state-transition (statechart) diagrams and activity diagrams. Class diagrams are to contain all relationships that exist between classes.
All program listings and UML diagrams are to go into the students logbook.
All source code and data files to be stored in a directory named bookstore on a disk or CD.
Marking Criteria for Programming project
The following are indicative evidence for achieving the corresponding level. You must meet ALL the criteria for a level (as well as for all the previous levels!) to have reached that level.
Printout and UML not given.
Does not compile or execute.
Method main of the different classes fails to instantiate objects of that class.
Method main does not test all the member methods.
No UML given.
Coherent sets of classes, which include derived classes, have been designed to fulfil the chosen project outline.
Method main of the different classes instantiates objects of that class.
Method main tests all the member methods.
Most of the methods are provided as requested.
Class diagrams, but no relationships, given.
Comments are relevant to the code
A coherent set of classes, which includes derived classes, has been designed to fulfil the given project outline.
Class relationships given in class diagrams.
More, but not all UML diagrams given.
All functionality specified was implemented correctly.
Use of Javadoc to generate documentation.
Overriding of superclass methods (other than constructors).
Full UML diagrams.
File input/output is used with relevant data files.