/*************************************************/
// R. A. Hillyard
// inventory02.cpp
// November 2001
//
//inventory class with constructors
/*************************************************/

#include <iostream>
#include <iomanip>
using namespace std;

class Inventory
  {
  public:
    //constructors
    Inventory();
    Inventory (int num);
    Inventory (int num, int stock, double price);

    void input();
    void output();
    int getPartNum();
    int getInStock();
    double getCost();

  private:
    int partNum;
    int inStock;
    double cost;
  };
/****************************************************************/
Inventory::Inventory()
  {
  cout << "In default Constructor\n";
  partNum = -1;
  inStock = 0;
  cost = 0.0;
  }
/****************************************************************/
Inventory::Inventory (int num)
  {
  cout << "In 1 arg Constructor\n";
  partNum = num;
  inStock = 0;
  cost = 0.0;
  }
/****************************************************************/
Inventory::Inventory (int num, int stock, double price)
  {
  cout << "In 3 arg Constructor\n";
  partNum = num;
  inStock = stock;
  cost = price;
  }
/****************************************************************/
void Inventory::input()
  {
  cout << "\nenter part number, number in stock, and the cost:\n>";
  cin >> partNum >> inStock >> cost;
  }
/****************************************************************/
void Inventory::output()
  {
  cout << setw(8) << partNum << setw(8) << inStock 
       << setw(10) << cost << endl;
  }
/****************************************************************/
int Inventory::getPartNum()
  {  return partNum;  }
/****************************************************************/
int Inventory::getInStock()
  {  return inStock;  }
/****************************************************************/
double Inventory::getCost()
  {  return cost;  }
/****************************************************************/

/****************************************************************/

int main()
  {
  Inventory part1(1234, 542, 12.99);
  Inventory part2(2345, 234, 77.69);
  Inventory part3;
  Inventory part4(7655);

  part3.input();
  double value = (part1.getInStock() * part1.getCost())
               + (part2.getInStock() * part2.getCost())
               + (part3.getInStock() * part3.getCost()); 

  cout << "*** Inventory Database ***\n";
  cout <<  "    Part#   Stock    Cost" << endl;
  part1.output();
  part2.output();
  part3.output();
  part4.output();
  cout << "\nTotal value of inventory: " << value << endl;
  }
/****************************************************************/

/**********************Program Output***************************
In 3 arg Constructor
In 3 arg Constructor
In default Constructor
In 1 arg Constructor

enter part number, number in stock, and the cost:
>7634 82 99.88
*** Inventory Database ***
    Part#   Stock    Cost
    1234     542     12.99
    2345     234     77.69
    7634      82     99.88
    7655       0         0

Total value of inventory: 33410.2

/****************************************************************/