Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

ITSC 1213 Project 1 Bookstore Management System The main idea behind this activity is to create a system that allows a bookstore owner to keep

ITSC 1213 Project 1 Bookstore Management System

The main idea behind this activity is to create a system that allows a bookstore owner to keep track of their inventory and members.

Preliminaries

The owner of a bookstore has asked for your help designing a system that allows them to keep track of the stores inventory and members. The owner provides you with the following details about what the store offers:

The store sells three types of products: books, CDs, and DVDs.

The store offers two types of memberships to customers: regular memberships and premium memberships. The regular membership is free, while the premium members pay a fee every month.

The store keeps track of payment method for their premium members and whether the monthly fee is due or has been paid.

The system should keep track of the members and how much money each has spent at the store regardless if they are regular or premium members.

The system also keeps track of the inventory of each product.

Your design of this system must include 3 distinct functionality. A function, in this context, are abstract ideas like "register a new premium member", or "complete a purchase". While in many programming contexts a specific function refers to what we refer to as methods in Java, here function and method are NOT synonymous. Functions here refer to the holistic application/program/system that we are creating for managing a bookstore. To implement your functions it may take one or more methods and will likely involve 1 or more of your classes.

One of these functions MUST be to complete a purchase. In order for that to happen the user should be able to select one or more items, and those items should be deducted from the inventory after the purchase is completed. The other two functions are entirely your choice.

As you are thinking about these features, think of any application or a website you use to purchase something online. What functionality, you as the user, are able to complete using this application? Answering this question should give you plenty of options to choose from.

You are welcome to program or map out additional functions. These do NOT necessarily need to be implemented, but can be included using empty methods (stub methods) to make your system look more complete.

Important Considerations

We want you to take an Object-Oriented approach in this project. That means you will be creating a good number of classes that will all interact with each other, rather than having everything contained within one class and one main method. The FastFoodKitchen lab is a good example of this kind of design. In the same way that the FastFoodKitchen contained a list of BurgerOrders, the Bookstore may contain a list of members, or a list of books that can be purchased.

It is very important to consider what attributes a book would need, that a member would need, etc. This is especially important when you consider functionalities like purchasing.. which of these attributes do you need to access during a purchase, and if you need that information where/how can you find it?

Your project must contain the following classes (at minimum):

Book

CD

DVD

Member

PremiumMember

Bookstore

Part A UML Diagram and Feature Description

Examine the description of the system above. Using one of the UML Diagramming tools (See Course Resources), design the different classes of your system. Think of the various things (objects) that you need to represent in the system and what properties they need to have and actions to perform. For now we dont need to worry about relationships between the classes. We will add that in a later project.

Your diagram must show:

All of the classes, fields, and methods. Remember that you will need methods that accomplish appropriate functionality, not just getters and setters.

You must include visibility (i.e., public or private), data types, return types, and any other pertinent information.

Show the data types/structures (e.g., Strings, arrays or ArrayLists, Book,...) that your program will use to hold the important data.

In addition, you should also submit a document that describes the 3 functions your system will implement. This description should include any arguments, returns, or fields needed in order to make this functionality work. Save the description in a file (file format can be text, pdf or doc) with the name BookstoreDesign.

Part B Implementation and Test Harness

Create and write your project in the appropriate CodingRooms assignment

Create all of the classes you mapped out in the UML diagram from Part A

Add all the fields and methods described in your UML, including getters/setters/constructors.

Your project and its contents should match your UML exactly. If you name a method in the UML, I will expect to see it in the CodingRooms project.

Note that you can complete this step in its entirety before adding any functionality. You can use empty stub methods to start.

Now you need to add enough code and logic to your methods to implement the complete a purchase functionality and create a test harness so this function can be executed.

In order to test your functionality, you should create a Test Harness class. This should be a separate class titled TestHarness. This will be a class whose function is to create an object that represents the book store, and use Scanner objects to take input and direct the user through the system. For clues as to how this can be accomplished, look back at labs like the BurgerOrder project. Text menus should be presented to the user that will allow them to pick from options such as "Make a purchase" or "Create a new member". For options that are not implemented you can simply print a message and redisplay the menu options. This should be the only class that includes a main method.

Example of a book store system output/interaction

Make certain that your program runs in the CodingRooms environment. Programs that will not compile in CodingRooms, will not receive credit for the coding portion. Partial credit will only be awarded on the coding portion if the code compiles in CodingRooms. If your code doesn't run, I strongly encourage you to comment out portions that are causing issues so that you can receive partial credit on the portions you have completed.

Coding Style

This grade is awarded for proper coding styles. This includes:

Appropriate prompts and informative output

Appropriate method, variable and object names

Proper indentation

Good commenting (explains what code is doing)

Well-organized, elegant solution

Submission Requirements:

Submit the UML and functionality description from Part A.

Submit your CodingRooms assignment that includes your program to fulfill the requirements.

Submit a PDF document with the name project1Info.pdf that includes the following assignment information:

Explanation of any special or additional features you added, if any.

If your solution to this problem is incomplete, you may explain the status as of your submission and describe any issues that kept you from completing the assignment..

Discuss the easy and challenging parts of the assignment. How did you overcome all or some of the challenges?

Did you learn anything that will help you perform better on future assignments?

Ten percent is deducted out of the total points for the project for every day the work is late.

Rubric

Project1_Spring2022 (1) (1)

Project1_Spring2022 (1) (1)

Criteria Ratings Pts
This criterion is linked to a Learning OutcomePart A

UML

4 pts

Excellent

All classes are named with descriptive names. All data members are well described and include data types for all classes. All methods including constructors are well described and include the types of their parameters and the return type. Inheritance relationship represented properly.

3 pts

Good

Classes are named appropriately. Most data members are well described and include data types for all classes. Most methods including constructors are well described and include the types of their parameters and the return type. Inheritance relationship mostly correct.

2 pts

Fair

Some classes are named with descriptive names. Many data members are well described and include data types for all classes. Many methods including constructors are well described and include the types of their parameters and the return type. Inheritance relationship missing for some classes.

1 pts

Poor

Most names for the classes are not descriptive. Few or no data members are included. Few or no methods are included. No relationships present.

0 pts

No Marks

No meaningful or relevant UML.

4 pts

This criterion is linked to a Learning OutcomePart A

Feature description

1 pts

Excellent

Features implemented are described and clear.

0 pts

No Marks

No meaningful or relevant feature description.

1 pts

This criterion is linked to a Learning OutcomePart B

Project Structure

5 pts

Excellent

All classes and their members represented in the UML diagram exist in the project.

3 pts

Good

Project structure matches the UML class diagram with minor differences.

1 pts

Poor

Project structure matches the UML class diagram with major differences.

0 pts

No Marks

Project structure is not related to the UML class diagram.

5 pts

This criterion is linked to a Learning OutcomePart C

Implementation - use of classes

3 pts

Excellent

Effective use of classes defined to accomplish desired functionality.

2 pts

Good

Some of the classes defined are needed and used to accomplish desired functionality.

1 pts

Poor

Classes are not used properly to accomplish desired functionality.

0 pts

No Marks

3 pts

This criterion is linked to a Learning OutcomePart C

Complete purchase feature

4 pts

Excellent

Feature implementation executes correctly with no syntax or runtime errors

3 pts

Good

Feature executes with minor (easily fixed) errors (2-3)

2 pts

Poor

Feature executes but with major (not easily fixed, will require a lot of refactoring) errors (more than 3)

0 pts

No Marks

Feature missing

4 pts

This criterion is linked to a Learning OutcomePart C

Second feature

4 pts

Excellent

Feature implementation executes correctly with no syntax or runtime errors

3 pts

Good

Feature executes with minor (easily fixed) errors (2-3)

2 pts

Poor

Feature executes but with major (not easily fixed, will require a lot of refactoring) errors (more than 3)

0 pts

No Marks

Feature missing

4 pts

This criterion is linked to a Learning OutcomePart C

Third feature

4 pts

Excellent

Feature implementation executes correctly with no syntax or runtime errors

3 pts

Good

Feature executes with minor (easily fixed) errors (2-3)

2 pts

Poor

Feature executes but with major (not easily fixed, will require a lot of refactoring) errors (more than 3)

0 pts

No Marks

Feature missing

4 pts

This criterion is linked to a Learning OutcomeCoding Style

5 pts

Excellent

appropriate commenting, good naming conventions, excellent indentation, clear and organized solution

4 pts

Good

some commenting, acceptable naming conventions, mostly formatted code but solution is not as clear or organized as it could be

2 pts

Fair

some okay commenting, indentation and naming, but lots that is problematic

1 pts

Poor

Poor indentation, bad naming style, poor or no commenting

0 pts

No Marks

5 pts

Total Points: 30

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions