Project Description: For project we are going to build a menu-driven application that will allow a user to maintain their collections. For example, I might have a coin collection, or a record collection, or a collection of all my valuable items.
An Item includes the following properties:
- Category - the category the item belongs to. For example, 'Records', 'Antiques', 'Coins', etc.
- Description - the description of the item. For example, 1940 Sewing machine
- Value - the value of the item in dollars
- Quantity - the number of items of this type that I have. For example, I might have two 1940 Sewing Machines
A Collection contains Item objects as described above.
The main menu is as follows:
Welcome to my Collection Manager
1. Display all items in my collection
2. Display all categories of my items
3. Display all items in a given category
4. Search for an item by description
5. Add an new item to my collection
6. Display all items above a given value
7. Calculate the total value of my collection S. Save to disk
L. Load data from disk
Q. Quit
Please enter a setection:
The following functionality should be implemented for the following menu items:
1. Display all items in my collection All items in the collection should be displayed in a nicely formatted table, for example:
Description
|
Category
|
Value |
Amount |
Moby Dick
|
Book
|
10.00
|
1
|
War and Peace
|
Book
|
50.00
|
1
|
Desk
|
Antique
|
250.00
|
1
|
1924 silver Dollar
|
Coins
|
37.50
|
5
|
Sewing Machine
|
Antique
|
450.00
|
1
|
Beatles - Let it Be
|
Record
|
125.00
|
1
|
2. Display all categories of my items
Please enter a selection: Categories
Book
Antique Coins
Record
3. Display all items of a given category
Please enter a selection: 3 Enter category: Antique
Items for category: Antique
Description Category Value Amount
Desk Antique 250.00 1
Sewing Machine Antique 450.00 1
If the provided category does not exist a message should be displayed to the user.
4. Search for an item by description
Please enter a selection: 4
Enter item's description: Desk
Description Category Value Amount
Desk Antique 250.00 1
If the provided item description does not exist a message should be displayed to the user.
5. Add a new item to my collection
Please enter a selection: 5
Enter the item's category: Coin
Enter the item's description: 1925 Sitver Dottar Enter the item's value: 75.00
Enter the item's quantity: 1
Item added
6. Display all items above a certain value
Please enter a selection: Enter the value: 100.00
Items over $100.00
Description Category Value Amount
Desk Antique 250.00 1
Sewing Machine Antique 450.00 1
Beatles - Let it Be Record 125.00 1
7. Display the total value of my collection
Please enter a selection: Collection value: $1072.50
S. Save data
Please enter a se'ection: Data saved...
Save the Collection data to a file on disk.
Note: this is already implemented by my using pickle
L. Load data from disk
Please enter a sel.ection: Data Loaded.
Load data from a disk file and initialize the collection from this data. Note: this is already implemented by my using pickle
Q. Quit
Please enter a selection:
Thanks for using my Collection Manager
Exit the application.
Implementation Details
This application must be implemented using the Object-Oriented features of Python. I will provide the main template for the assignment as a Python file.
Your solution MUST include classes for the Item and Collection. These are provided in the template. I have already implemented the Item class and I have also provided some of the implementation for the Collection class.
I am also providing the implementation for the main function, which handles user menu selection and calls the appropriate Collection class methods depending on the user selections.
You MUST complete the implementation of the Collection class. Please refer to the inline documentation in the provided Python file as well as the video demo that I will provide.
I chose to provide a partial implementation because it is important that you can understand someone else's code and be able to extend and modify it to solve a problem. Professional programmers spend most their time working with code that was written by someone else.
Attachment:- project.pdf