Course Project Information

Project Overview

As a team of five programmers, you will assist in the implementation of a data processing system that mimics the functionality of an online storefront. Your program must store both customer and product information and display a different interface depending on whether the user is a customer or employee of the store. The teams will be chosen in the first 2 weeks of class.

Each member of the team is to code one or more functional areas of the project. When complete, the individual components will be integrated into one program, which will be demonstrated in a project demonstration that will be held the last week of the quarter. While the final result is one integrated program, each team member’s work is to be maintained as separate file(s). If this is not possible, clearly document each function including the name of the developer.

image source

Data and Topic Requirements

Your team will select the products that your store is to carry depending on the interest of the team members. The "products" that your store carries will be your topic. Some topics might include:

  • Comic Books
  • Music
  • Clothing
  • Games

Note that you are not permitted to select Books, which will be the example used throughout the quarter. Try to come up with a novel or interesting idea. For example, the topic of movies and cars have already been used by many student teams in the past and will not be allowed as topics on this project.

Once you have selected a topic, your team will be responsible for finding a collection of data that falls within the specifications of your topic. The data collection is of your own choosing, with the requirement that each record in the system must contain a primary key (must be a string) and a secondary key, and at least four non-key fields, one of which must be the price entry for that particular record. For instance, given the Book topic, your fields might be:

Title - primary key

Author - secondary key





Your collection must have a minimum of 25 records with which to seed your project. Users of your system must be able to upload additional records contained in additional files.

Once you have gathered your collection of data, you will be required to create a class whose fields are the attributes of this data set. For example:

class Book {

    string title;

    string author;

    int year;

    int isbn;

    double price;

    string description;


Each record within your data set should be an instance of this class.

Menu Requirements

The goal of this project is to create an interactive data processing system, with a menu of options provided to the user. There should be separate menus presented to your user depending on whether he or she is a customer seeking to purchase from your store or an employee who is updating the stock or handling orders.

Your project must offer the following options for the customer user:

- Search for a product

- Find and display one record using the primary key

- Find and display one record using the secondary key

- List Database of Products

- List data sorted by primary key

- List data sorted by secondary key

- Place an Order

- Overnight Shipping

- Rush Shipping

- Standard Shipping

- View Purchases

- Determine whether or not an order has shipped

- Quit

Your project must offer the following options for the employee user:

- Search for a customer by name

- Display unsorted customer information, including first and last name, address, phone number, order history

- View Orders by Priority

- Ship an Order

- List Database of Products

- List data sorted by primary key

- List data sorted by secondary key

         - Add a new product
         - Remove a product
         - Quit

At the end of the program, you should write customer, order and product information to a file(s). This feature will allow the information to be read back into the system when the program starts up again.

Any missing menu option from above will lower the completeness score by at least 10% or one letter grade (see more grading information below).

Required Data Structures and Additional Specifications

The system’s data structure must contain a Binary Search Tree, sorted according to the primary key, and a second BST sorted according to the secondary key. The BST will contain the information about the products.

The system must also contained a hash table which will be used to store customer information. The hash table must resolve collisions using separate chaining as described in class. Note that you must have a Customer class to store customer information, similar to the following:

class Customer {


    string first_name;

    string last_name;

    string address;

    string city;

    string state;

    int zip;

    List<Order> orders;


    //getters, setters, constructors go here


Finally, you will create a Priority Queue to store order information. Orders are to be stored according to priority in a priority queue that is based on the Heap data structure. Priority is to be assigned according to the date and time of the order and the shipping speed selected by the customer.

Note that you should also have an Order class to store order information.

Part of the project will require you to draw a UML class diagram to show the Hash Table, the BSTs and the Priority Queue, in addition to the Customer, Order and Product classes and any additional classes you create as part of the project (make sure to show how data are shared).

Expectations for Team Members

Your grade for the project will be a factor of the team score weighted by a peer evaluation.

In addition to writing and debugging code, each member of the team will:

  1. Give suggestions for the application data: think about original/interesting/educational data that matches the program requirements. During the first team meeting, every student will bring his proposal, then the team will assign a preference number to each proposal (1 – the first choice, etc.); the final decision will be made by the instructor (no two teams should process the same data). 
  2. Participate in designing a solution to the problem: Data Diagrams, Structure Charts, UML Diagram
  3. Participate in writing the project reports. 
  4. Provide relevant test cases for the final presentation. 
  5. Individually test his/her part of the program (as much as possible). This implies writing test drivers (code that will not be included in the final project, but it will be used to test parts of the project).
  6. Participate in all of the team meetings. Come prepared to the meetings. If a team member must be absent from a meeting, he/she should inform the other team members in advance; also he/she could keep in touch by phone or email. 
  7. Turn in his/her part of the project on the scheduled date. 
  8. Work with the team coordinator and other members in the team to integrate his/her part of the code. 
  9. Prepare for and participate during his/her team presentation. 
  10. Actively attend all of the presentation sessions. (Ask questions/provide answers). 
  11. Write the peer evaluations.

Suggested Team Assignments

Each member of the team must write at least one unit of code. If the team is small, team members may have to write multiple units.

Team Member 1: Pro Team Coordinator: Data structure design coordination, main(), Integration, Testing, Project presentation coordination, making sure reports submitted on time, setting up meetings, keeping everyone on track, interfacing with the instructor about any issues that arise.

Team Member 2: BST Algorithms Specialist: Implement BST Insert, Delete, Display or Primary Key and Product Class

Team Member 3: Hash Table Whiz: Implement Hash Table and Customer Class

Team Member 4: Priorty Queue Expert: Implement the Priority Queue and the Order Class. This person should be your strongest programmer and a reliable member of the team. Do not assign this portion to someone who frequently misses team meetings or is not a confident programmer.

Team Member 5: File I/O and User Interface Ace: Create user interface. Connect menu of options to the data structures. Write data to a file

Project Reports

The following reports are required. The due dates will be announced in class, as well as written on the course schedule. These are as follows:

Peer Evaluation

Each member of the team is to rate the contribution of the other team members using the Peer Evaluation Form. These evaluation forms are to be turned in individually. There will be two (2) peer evaluations in total. 

The peer evaluations are an opportunity for any team member who is not pulling his or her weight to make improvements. Therefore, the score for the first peer evaluation will count towards one quarter (1/4) of each team member's score, while the second peer evaluation will count towards three quarters (3/4) of each team member's score.

Any member who does not complete a peer evaluation will receive a five (5) points deduction from his/her score for the project, two and a half (2.5) for each missing evaluation. 

Note that you are not to rate yourself. 

These evaluations will be used to determine a tentative score for each individual on the project. You will receive an average of the scores assigned by your team mates. The instructor, however, is responsible for marking the final determination of each person’s grade on the project and will use the teams’ score only as one input in the grading process. See the Project Score section below for more information.

Here is a link to the peer evaluation form that will be used for both peer evaluations:

What to Do If Someone on Your Team is Not Doing His or Her Part

If someone on the team is not doing his or her part, it is the responsibility of the team leader to talk to that person and encourage him/her to take the project more seriously. If this teammate is unresponsive, the next step is to meet with the instructor to explain the situation. The instructor will intervene and talk to the student. Ultimately, however, if your teammate refuses to work, his/her portion of the project should be reassigned to another member(s) so that the team doesn't fall behind or fail. In this case, the other members of the team should give a score of 0 to this teammate on the peer evaluation.

Do not be afraid to give a low peer evaluation score to a teammate who is not meeting his or her responsibilities!

Project Score

A team score will be calculated as shown below.

  • Completeness and Accuracy (80%).

-The project runs without errors

-All portions of the project are complete and functional

-The BST, Hash Table, Heap, and Interface are each worth 25% of the project. If any of these components is missing, a deduction of 25% will be made.

  • Reports (10%). All Reports are complete, thorough and well-written.
  • Presentation (10%). See presentation section below for grading criteria.

A tentative individual grade will be determined: by multiplying the project score by an average rating factor and using a score factor as shown below. After the individual’s tentative score, up or down adjustments may be made based on individual performance as observed in the presentations or based on the individual’s program code and documentation.

Average Peer Rating

Score Factor

16 – 20


12 – 15


10 – 12










Personal Score = Project Score x Score Factor

Schedule of Due Dates

1. Report 1: Project Proposal and Team Member Document
    Hard copy due on Thursday, April 27
    Note: One document per team required.

2. Report 2: Requirements Analysis and High-level Design
    Hard copy due in class on Thursday, May 18
    Note: One Requirements Analysis Document per team required.

3. Report 3: Low-Level Design + Peer Evaluation 1
    Hard copy of Low-Level Design Document due in class on Tuesday, March 7
    Hard Copy of Peer Evaluation 1 due in class on Tuesday, June 6
    Note: One Low-Level Design Document per team required, one peer evaluation per team member required.

4. Report 4: Test Plan
    Hard copy due in class on Thursday, June 15
    Note: One Test Plan Document per team required 

5. Report 5: Walk-through and Test Results + (Peer Evaluation 2 <-- due on Final Exam date Tues December 13)
    Hard copy due in class on Tuesday, June 27
    Hard copy of Peer Evaluation 2 due in class on Tuesday, June 27
    Note: One Walk-through and Test Results Document per team required + one peer evaluation per team member required.

6. Project Demonstration/Presentation and Project Report 6
    Demonstration in class on Tuesday, June 27
    Instructor will test your code to note what is working and what is not on this date. No extensions.
    Make sure that you at least have
a running version, even if it is incomplete or you will receive a 0 on the course project.
    Also, you will test other team projects and submit Project Report 6 in class


  • At the end of the quarter, you will need to present the final version of your project to the instructor who will also test out your code.
  • This demonstration will occur on the day scheduled for the final exam.
  • Each team member will need to be present to answer questions from the instructor and present the project.
  • Your project will also be evaluated by the instructor on this day.
  • As no extensions are allowed, make sure that you at least have a running version of your project (even if it is incomplete) or you will receive a 0 on your project (no exceptions!).
  • Your presentation will be graded on a 20 point scale as follows:

 Requirement Description Point Value
Slide 1

Your first slide must display your topic and the full names of all presenters. At this point in the presentation, each team member should introduce him or herself and one person should state the topic of the presentation.

Slide 2
Your second slide must provide an outline of what you will cover in your presentation. This outline must be a list in either bullet point or numerical form. One member of the team should briefly go over what will be discussed during the presentation.

Slide 3
Your third slide must give an overview or brief summary of what your chosen topic is. In other words, define your topic.

Slide 4
In the fourth slide, you will need to give an overview of your data set, where you found it and what are the fields contained in the data set.

Slide 5-6 or 7
In the next 2-3 slides, give an overview of the data structures used in your presentation. You must present these by using the UML diagrams that you created in your project reports. You may update the UML diagrams if your data structures have changed since submitting the reports.

Slide 7 or 8
In the next slide, list the results from your walk-throughs. What errors did you notice and what feedback did you get from your participants? Did you make any changes since completing the walk-throughs?

Live Demo of Project
During the live demo, you should display the main functionality of your system, including all required menu options, as well as any special features you would like to show off.

Q & A
Accurately handle Q & A from the instructor


Presentation Aesthetics
Is your presentation laid out nicely with lots of images and clear, readable text?

Is the presentation delivered in a practiced and professional manner?