MHB Creating a Public Item & Cart Class

  • Thread starter Thread starter needOfHelpCMath
  • Start date Start date
  • Tags Tags
    Cart Class
Click For Summary
The discussion centers around the implementation of an "Item" class and a "Cart" class in C++. The "Item" class includes public members for item name, price, and quantity, along with setter and getter functions. The "Cart" class is designed to manage a collection of items, featuring methods for inserting items, deleting items, calculating average prices, and printing the cart contents.Key points include the suggestion to create constructors for both classes to initialize objects properly. It is noted that return statements in void functions are unnecessary unless exiting a loop. Additionally, passing variables by constant reference is recommended to enhance efficiency and avoid unnecessary copying. The code provided has several syntax errors and logical issues, such as incorrect vector usage and missing function definitions, which need to be addressed for proper functionality. Overall, the discussion emphasizes the importance of structuring classes effectively and adhering to best coding practices.
needOfHelpCMath
Messages
70
Reaction score
0
Make everything in public to save time or have public and private data members and functions:

1) Create a "Item" class with the following members and functions:
HTML:
 Item_name
   Item_price
   item_qty
   get/set functions

2) Create a "Cart" class with the following members and functions:

vector to hold items
HTML:
insertToCart // also should update item prices by qty amount when inserting
deleteItem //  searches for items and deletes it
averagePrice //  adds all items prices and computes the average price
cartTotal //  adds all items prices and returns total
printtCart

3) show how to create two items and insert it to the cart.

OUTPUT example:
HTML:
Items: Pens
Prices: $3  // pens price $1.50
Qty: 2
etc...
This is my code and so far I am not sure if I am on the right track. May anyone help guide me please. I have also decided to just input all the functions into public to save time.

HTML:
#include<iostream>
#include<string>
#include<vector>

class Item{
	
	public:
		
		string item_name;
		int item_price;
		int item_qty; 
		
		void setNamePriceQty(string a, int b , int c)
		void Print();
		int getPrice();
		int getQty();
		
	void Item::setNamePriceQty(string a, int b, int c) {
		item_name = a;
		item_price = b;
		item_qty =  c;
		
		return;
	}
	
	
	void Item::Print() {
		
		cout << item_name;
		cout << item_price << item_qty;
		
		return;
	}
};
	class Cart {
		public:
			
		vector<int>list;
		
		int total();
		
		void deleteItem (string a); // also should update item prices by qty amount when inserting
		void insertToCart(item b); // seaches for items and deletes  it
		void averagePrice; // adds all item prices and computers average price
		void printCart(); 
		void cartTotal; // adds all items prices and returns total
		
		
		void Cart::insertToCart(item b) {
		
			for (int i = 0; i <= list.size(); ++i) {
				if (list.at(i).item_name == b.item_name) {
					items.at(i).item_qty += b.itme_qty;
					items.at(i).item_price += b.item_price
					return(); }
					
					items.push_back(b)
					
					return; }
				}
				
		void Cart::deleteItem(string a) {
			for (int i = 0; i < list_size();++i) {
				if (list.at(i).item_name == b.item) {
					temp = list.at(i);
					list.at(i) =  list.at(list.size()-1);
					list.at(list.size() = temp;
					list.pop_back();
				}
			}
				}
			};
	
	
		
		

int main () {
	
	
	return 0;
}
 
Technology news on Phys.org
You know you can test your own code right? One of the great things about it. A few notes:

1. You haven't declared constructors for each class. How will you create objects? What will their initial values be?
2. There's no need to have a return statement in a void function unless you're exiting from a loop perhaps. When you `insertToCart`, the item list will be updated within the class.
3. It's a good habit to pass constant references to variables when possible. e.g.

C++:
    // a,b,c are not modified by the function so they're constants.
    // Passing by reference avoids copying objects around the place.
    void Item::setNamePriceQty(const string& a, const int& b, const int& c) {
        item_name = a;
        item_price = b;
        item_qty =  c;
    }
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 35 ·
2
Replies
35
Views
4K
  • · Replies 0 ·
Replies
0
Views
508
  • · Replies 36 ·
2
Replies
36
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 36 ·
2
Replies
36
Views
5K
  • · Replies 19 ·
Replies
19
Views
1K
  • · Replies 23 ·
Replies
23
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K