Brief Task Description
You are required to design and implement a stock management system for a small music shop. You should use UML diagrams to design the software. You should use Git to version control the software with regular commits and a repository on BitBucket. There should be multiple classes (for the various types of products) and a base class for all products. You should not use any third party libraries or code as a part of your solution and all code should be written by you, i.e. not automatically generated.
A music shop sells CDs, DVDs, magazines and books. It is in need of a stock management system to maintain stock records with a text (command line) menu with options to allow the user to perform the following functionality: • sell items • restock items (increase stock quantity)
• add new items
• update stock quantity (correct stock levels)
• view a report of sales
It should also be possible to load and save the stock data to/from a file.
It is recommended that you complete the tasks in the following order as the later sub-tasks will require the earlier ones.
Begin by planning which classes you need and how the software will work using UML diagrams, you should include: • use case diagram(s)
• class diagram(s)
• activity diagram(s)
• sequence diagram(s)
Create a Git Repository
Create a Git repository for your coursework on BitBucket. As you create new files, you should add them to the Git repository.
Once you are happy with your design, you should implement the classes, you should have a base class for the product with any shared member variables and member functions, and derived classes with product specific members. You should test these classes before using them.
Create a Makefile to compile the classes. As you implement other source code files add them to the Makefile. Your Makefile should be able to compile you project using the command make and should be able to clean your project (remove any compiled files) using make clean.
Implement the Program
Implement the stock management system using objects of the various classes mentioned above. Test any methods work correctly and implement a menu for the user to interact with the program. The user input should be validated.