Write a C++ program to implement a rudimentary inventory system for a hardware store.
Class PRODUCT should be designed as an abstract base class. Each type of product is derived from this base class. Thus, we have derived classes for HAMMERS, SAWS, and RAKES. The data members for each product object will comprise, at minimum, a product description, a product number, and product quantity. Each of these class objects must also have methods for receiving products, delivering products, and reordering products. Assume each product has a different reorder level.
Further, you must design and implement an INVENTORY class that functions as a 'container class'. This INVENTORY container class will contain an inventory for each type of product (perhaps an array of Product pointers). This class must provide methods for adding new products to the inventory and deleting products from the inventory. In order to add new products you will have to define additional product classes. You may define a product class HOES in a header file ( #include it in your program).
The INVENTORY object must be instantiated in main(). Provide a menu to enable the user to receive and issue out any product object. Further, provide a facility to add new products *e.g.*, HOES to the inventory or delete existing products from the inventory.
Your program will be a multi-file program. Each class definition will be written in a separate header file. All member function implementations will be written in another file. Finally, the client stub will be written in yet another file. Name each of the header files with the names of the classes *e.g.*, product.h, rakes.h, saws.h *etc*. The member function implementations file should be named inventory.C. The client file should be named inventory_client.C.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).