3 Replies - 12692 Views - Last Post: 09 October 2012 - 11:31 PM Rate Topic: -----

#1 j3243  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 09-October 12

Grocery Store Inventory

Posted 09 October 2012 - 06:30 PM

Write a C++ program to perform grocery check-out procedure for a simple store with max 100 products. Design & use a C++ product class in your program.
When the program starts, it should read the product information file - it contains product information (PLU code, product name, product sales type, price per pound or price per unit & current inventory level) - one product in each line.

Then, program should repeatedly invoke customer check-out functionality until the store associate (user) decides to quit. As part of checkout functionality, prompt for PLU code, validate it, then the user to input weight for each product if it is sold by weight, or # of units if sold by unit. Compute the price of the item and keep up the subtotal.
Once all purchased products are rung for a customer, output the total purchase amount. If the total purchase exceeds $50, apply 5% discount to the total.
We need to keep track of inventories automatically as well. So, keep updating the inventory data along with checkout operations. When the store closes every day, product information file should be saved in output.txt in the same format as input inventory file.

store.cpp

#include <iostream>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <vector>
#include "product.h"
using namespace std;

Product inv[100];	//array of 100 objects
int c = 100;	//maximum products is 100

int menu(void)	//display user options
{
	int option;
	cout << "Enter 1 to begin checkout or 0 to exit" << endl;
	
	
	cin >> option;
	return option;
};
void updateFile()	//output results to a new file
{
	ofstream newInvFile("newinventory.txt");
    
	for (int p = 0; p < c; p++)
	{
		newInvFile << inv[p].getPLU() << " " << inv[p].getProductName() << " " << inv[p].getType() << " " << inv[p].getPrice() << " " << inv[p].getInventory() << endl;
	}
    
}
void checkout(void)
{
	double total = 0;
	double quantity;
	int input;
	int PLU = 0;
    
	do
	{
		PLU = 0;
		cout << "Enter PLU code or (0) to exit" << endl;
		cin >> input;
		if (input == 0)
			break;
		for (int p = 0; p < c; p++)
		{
			if (inv[p].getPLU() == input)
			{
				PLU = p;
				break;
			}
		}
		/*if (PLU == -1)
		{
			cout << "Please enter a valid PLU" << endl;
			continue;
		}*/
        
		if (inv[PLU].getType() == 1)// Determine whether product is sold by weight or units
        {
            cout << "Weight: ";
        }
		else
        {
            cout << "Quantity: ";
        }
        
		cin >> quantity;
		total += quantity * inv[PLU].getPrice();
		inv[PLU].updateInventory(quantity);
	}
	while (input != 0);
    
	cout << "Total: $" << total << endl;
    
	if (total > 50)	//apply discount if total is over $50
    {
        total = total * 0.95;
        cout << "Your purchase of over $50 qualifies you for a 5% discount. Total: $" << total << endl;
    }
	
}
int main()
{
	int plu;
	string productName;
	int type;
	double price;
	double inventory;
	c = 0;
    
	ifstream original ("inventory.txt");	//read from original inventory file
	if (original.is_open())
	{
		while (!original.eof())	
		{
			original >> plu >> productName >> type >> price >> inventory;
            
			Product temp = Product(plu, productName, type, price, inventory);	
		    inv[c] = temp;
			c++;
		}
		original.close();
	}
	int option;
    
	do
	{
		cout << "WELCOME!" << endl;
        
		option = menu();
		if (option == 1)
			checkout();
		else 
			updateFile();
	} 
	while(option != 0);
    
	system ("pause");
}



product.cpp


#ifndef store_product_h
#define store_product_h

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

class Product
{
private:
	int plu;
	string productName;
	int type;
	double price;
	double inventory;
public:
	Product();
	Product(int, string, int, double, double);
	int getPLU();
	string getProductName();
	int getType();
	double getPrice();
	double getInventory();
	double updateInventory(double);
    
};
#endif




product.h


#include "product.h"

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

Product::Product()
{
	plu = 0;
	productName = "none yet";
	type = 0;
	price = 0;
	inventory = 0;
}
Product::Product(int pl, string pn, int t, double pr, double i)
{
	plu = pl;
	productName = pn;
	type = t;
	price = pr;
	inventory = i;
}
int Product::getPLU()
{	return plu;}

string Product::getProductName()
{	return productName;}

int Product::getType()
{	return type;}

double Product::getPrice()
{	return price;}

double Product::getInventory()
{	return inventory;}

double Product::updateInventory(double quantity)
{
    if (quantity > inventory)
        cout << "This item is not in stock." << endl;
    else inventory -= quantity;
    return inventory;
}



Inventory txt file
4101 BRAEBURN_REG 1 0.99 101.5
4021 DELICIOUS_GDN_REG 1 0.89 94.2
4020 DELICIOUS_GLDN_LG 1 1.09 84.2
4015 DELICIOUS_RED_REG 1 1.19 75.3 
4016 DELICIOUS_RED_LG  1 1.29 45.6
4167 DELICIOUS_RED_SM  1 0.89 35.4
4124 EMPIRE 1 1.14 145.2
4129 FUJI_REG 1 1.05 154.5
4131 FUJI_X-LGE 1 1.25 164.1
4135 GALA_LGE 1 1.35 187.7
4133 GALA_REG 1 1.45 145.2
4139 GRANNY_SMITH_REG 1 1.39 198.2
4017 GRANNY_SMITH_LGE 1 1.49 176.5
3115 PEACHES 1 2.09 145.5
4011 BANANAS 1 0.49 123.2
4383 MINNEOLAS 1 0.79 187.3
3144 TANGERINES 1 1.19 135.5
4028 STRAWBERRIES_PINT 0 0.99 104
4252 STRAWBERRIES_HALF_CASE 0 3.99 53
4249 STRAWBERRIES_FULL_CASE 0 7.49 67
94011 ORGANIC_BANANAS 1 0.99 56.3



My code will run and execute however whenever I type in a PLU number it always says the item is out of stock. How do I fix that?

Is This A Good Question/Topic? 0
  • +

Replies To: Grocery Store Inventory

#2 snoopy11  Icon User is offline

  • Engineering ● Software
  • member icon

Reputation: 840
  • View blog
  • Posts: 2,472
  • Joined: 20-March 10

Re: Grocery Store Inventory

Posted 09 October 2012 - 06:52 PM

The code runs fine

you did have your product.h and product.cpp files swapped
but I think that was just a posting error and not a real one.

do you have inventory.txt in the right place it should be alongside
your main.cpp..

Best Wishes

Snoopy.
Was This Post Helpful? 0
  • +
  • -

#3 j3243  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 09-October 12

Re: Grocery Store Inventory

Posted 09 October 2012 - 07:01 PM

I swapped them by accident, sorry about that. So you ran the whole program from start to finish and had no problems with checking out with products in the cart?
Was This Post Helpful? 0
  • +
  • -

#4 snoopy11  Icon User is offline

  • Engineering ● Software
  • member icon

Reputation: 840
  • View blog
  • Posts: 2,472
  • Joined: 20-March 10

Re: Grocery Store Inventory

Posted 09 October 2012 - 11:31 PM

View Postj3243, on 10 October 2012 - 02:01 AM, said:

I swapped them by accident, sorry about that. So you ran the whole program from start to finish and had no problems with checking out with products in the cart?



Yes it was fine.

Snoopy.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1