/*************************************************/
// R. A. Hillyard
// partList.cpp
// November 2001
//
// Test program to demonstrate the use
// of a class as a member of another class
/*************************************************/
#include<iostream>
#include "inventory.h"
using namespace std;
const int MaxListSize = 10;
class PartList
{
public:
PartList();
void addPart(Inventory item);
void deletePart(int num);
void upDateCost(int num);
void display();
int lookupByPartNum(int num);
public:
Inventory partsList[MaxListSize];
int size;
};
/*************************************************/
//default constructor
/*************************************************/
PartList::PartList()
{ size = 0; }
/*************************************************/
//add a part to the list
/*************************************************/
void PartList::addPart(Inventory part)
{
if(size < MaxListSize)
{
partsList[size] = part;
size++;
}
else
cout << "The List is full. Entry not added\n";
}
/*************************************************/
//delete a part from the list
//shift each element below delete index up by one
//this overwrites the deletion and shortens the array by one
/*************************************************/
void PartList::deletePart(int num)
{
for(int i = 0; i < size; i++)
{
if(partsList[i].getPartNum() == num) //first find index to delete
{
for(int j = i; j < size; j++) //then shift all entries up one
{partsList[j] = partsList[j+1];}
size--; //and reduce size of array
}
}//end for i
}
/*************************************************/
//display each entry in list
/*************************************************/
void PartList::display()
{
cout << "The List contains the following " << size << " parts\n";
for(int i = 0; i < size; i++)
{cout << partsList[i];}
cout << endl;
}
/*************************************************/
void PartList::upDateCost(int num)
{
double newPrice;
int index = lookupByPartNum(num);
if(index >= 0)
{
cout << "Current price: "<< partsList[index].getCost() << endl;
cout << "Enter new price: ";
cin >> newPrice;
partsList[index].setCost(newPrice);
}
else
{cout << num << " not in the list - unable to update\n";}
}
/*************************************************/
int PartList::lookupByPartNum(int num)
{
for(int i = 0; i < size; i++)
{
if(partsList[i].getPartNum() == num)
{ return i;}
}//end for i
return -1;
}
/*************************************************/
/*************************************************/
int main()
{
//declare a variable of type PartList
PartList inventoryList;
//declare variables of type Inventory
Inventory part1(1234, 542, 1022.99);
Inventory part2(2345, 234, 77.69);
Inventory part3(3567, 734, 22.34);
Inventory part4(5678, 124, 337.69);
Inventory part5(2333, 433, 57.69);
//add parts to list
inventoryList.addPart(part1);
inventoryList.addPart(part2);
inventoryList.addPart(part3);
inventoryList.addPart(part4);
inventoryList.addPart(part5);
int num; //variable for user input
//test of delete member function
inventoryList.display(); //display list before delete
cout << "Enter part number to delete: ";
cin >> num;
inventoryList.deletePart(num);
inventoryList.display(); //dispaly list after delete
//test of upDateCost
cout << "enter part number to update cost: ";
cin >> num;
inventoryList.upDateCost(num);
inventoryList.display(); //dispaly list after update
}
/*********************Program Output******************
The List contains the following 5 parts
1234 542 1022.99
2345 234 77.69
3567 734 22.34
5678 124 337.69
2333 433 57.69
Enter part number to delete: 3567
The List contains the following 4 parts
1234 542 1022.99
2345 234 77.69
5678 124 337.69
2333 433 57.69
enter part number to update cost: 2345
Current price: 77.69
Enter new price: 88.98
The List contains the following 4 parts
1234 542 1022.99
2345 234 88.98
5678 124 337.69
2333 433 57.69
*/