Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I need help in converting this program from C++ to Python. I have started working on it in Python, but I am not able to

I need help in converting this program from C++ to Python. I have started working on it in Python, but I am not able to understand it that well. I have provided the instructions and as well the C++ code I did. Thank you for your help, if possible!

You will be writing a (rather primitive) online store simulator. It will have three classes: Product, Customer, and Store. All data members of each class should be marked as private, and the classes should have any get or set methods that will be needed to access them.

Code:

import mystats # you don't need ".py" here some_li = [20, 38, 3, 43, 10, 74] mean_val = mystats.find_mean(some_li) print(mean_val)#include #include"store.hpp" using namespace std; //Product ---------- Product::Product(string id, string t, string d, double p, int qa){ idCode = id; title = t; description = d; price = p; quantityAvailable = qa; } string Product::getIdCode(){ return idCode; } string Product::getTitle(){ return title; } int Product::getQuantityAvailable(){ return price; } void Product::decreaseQuantity(){ quantityAvailable--; } string Product::getDescription(){ return description; } double Product::getPrice(){ return price; } //Customer ------------ Customer::Customer(string n, string a, bool pm){ name = n; accountID = a; premiumMember = pm; } void Customer::addProductToCart(string p){ cart.push_back(p); } void Customer::emptyCart(){ cart.clear(); } string Customer::getAccountID(){ return accountID; } vector Customer::getCart(){ return cart; } bool Customer::isPremiumMember(){ return premiumMember; } //Store---------------- void Store::addMember(Customer* c){ members.push_back(c); } void Store::addProduct(Product* p){ inventory.push_back(p); } void Store::addProductToMemberCart(string pID, string mID){ //check product Product *p = Store::getProductFromID(pID); if(p == NULL){ cout<<" Product #"< return; } //check customer Customer *c = Store::getMemberFromID(mID); if(c == NULL){ cout<<" Member #"< return; } //if available add to cart if(p->getQuantityAvailable() > 0){ c->addProductToCart(pID); } else{ cout<<"Sorry, product #"< } } void Store::checkOutMember(string mID){ Customer *c = Store::getMemberFromID(mID); if(c == NULL){ cout<<"Member #"< return; } //print cart if(c->getCart().size() == 0){ cout<<"There are no items in the cart."; return; } cout<<" "; //generate cart double stotal = 0, total = 0, ship = 0; for(int i=0;igetCart().size();i++){ Product *p = Store::getProductFromID(c->getCart()[i]); if(p->getQuantityAvailable() <= 0) cout<<"Sorry, product #"getPrice(); coutdecreaseQuantity(); } } //check premium if(c->isPremiumMember()) total = stotal; else{ ship = (stotal * 0.07); total = stotal + ship; } cout<<" Subtotal: $"< cout<<" Shipping Cost: $"< cout<<" Total: $"< } void Store::productSearch(string str){ bool found = false; for(int i=0;i //first search for exact string in string if (inventory[i]->getTitle().find(str) != string::npos) { found = true; } else if (inventory[i]->getDescription().find(str) != string::npos) { found = true; } //try toggling case of first alphabet if(str[0] < 'a') str[0] += 32; else str[0] -= 32; //search again with new string if (inventory[i]->getTitle().find(str) != string::npos) { found = true; } else if (inventory[i]->getDescription().find(str) != string::npos) { found = true; } if(found){ cout<<" "getAccountID()){ return members[i]; } } return NULL; } //iterate through inventory Product* Store::getProductFromID(string str){ for(int i=0;i if(str == inventory[i]->getIdCode()){ return inventory[i]; } } return NULL; } int main() { //dummy products Product p1("11", "cocoa", "yummy", 55, 3); Product p2("31", "milk", "umm yummy", 23, 1); //dummy customer Customer c("kush", "2233", false); Store s; s.addProduct(&p1); s.addProduct(&p2); s.addMember(&c); s.addProductToMemberCart("11", "2233"); s.addProductToMemberCart("31", "2233"); s.productSearch("Milk"); s.checkOutMember("2233"); return 0; }

Here are the descriptions of methods for the three classes:

Product:

A Product object represents a product with an ID code, title, description, price, and quantity available.

  • init method - takes as parameters five values with which to initialize the Product's id_code, title, description, price, and quantity_available.
  • get methods for each of the data members, named get_id_code, get_title, get_description, get_price, and get_quantity_available
  • decrease_quantity - decreases the quantity available by one

Customer:

A Customer object represents a customer with a name and an account ID. Customers must be members of the Store to make a purchase. Premium members get free shipping.

  • init method - takes as parameters three values with which to initialize the Customer's name, account_ID, and whether the customer is a premium_member.
  • you decide how to represent a Customer's cart
  • get methods named get_name and get_account_ID
  • is_premium_member - returns whether the customer is a premium member
  • add_product_to_cart - adds the product ID code to the Customer's cart
  • empty_cart - empties the Customer's cart

Store:

A Store object represents a store, which has some number of products in its inventory and some number of customers as members.

  • you decide how to represent a Store's inventory and members
  • init method - whatever initialization needs to be done for your Store
  • add_product - adds a product to the inventory
  • add_member - adds a customer to the members
  • get_product_from_ID - returns the Product with the matching ID. If no matching ID is found, it returns the special value None
  • get_member_from_ID - returns the Customer with the matching ID. If no matching ID is found, it returns the special value None
  • product_search - return a sorted list of ID codes for every product whose title or description contains the search string. The first letter of the search string should be case-insensitive, i.e., a search for "wood" should match Products that have "Wood" in their title or description, and a search for "Wood" should match Products that have "wood" in their title or description. You may assume that the search string will consist of a single word.
  • add_product_to_member_cart - If the product isn't found in the inventory, return "product ID not found." If the product was found, but the member isn't found in the members, return "member ID not found." If both are found, and the product is still available, call the member's addProductToCart method to add the product and then return "product added to cart." If the product was not still available, return "product out of stock." This function does not need to check how many of that product are available - just that there is at least one. It should not change how many are available - that happens during checkout. The same product can be added multiple times if the customer wants more than one of something.
  • check_out_member - If the member ID isn't found, raise an InvalidCheckoutError (you'll need to define this exception class). Otherwise, return the charge for the member's cart. This will be the total cost of all the items in the cart, not including any items that are not in the inventory or are out of stock, plus the shipping cost. If a product is not out of stock, you should add its cost to the total and decrease the available quantity of that product by 1. Note that an item can go out of stock during checkout. For example, if the customer has two of the same product in their cart, but the store only has one of that product left, the customer will be able to buy the available one, but won't be able to buy a second one, because it's now out of stock. For premium members, the shipping cost is $0. For normal members, the shipping cost is 7% of the total cost of the items in the cart. When the charge for the member's cart has been tabulated, the member's cart should be emptied, and the charge amount returned.

You must include a main function that runs if the file is run as a script, but not if the file is imported. The main function should try to check out a member. If an InvalidCheckoutError is raised, an explanatory message should be printed for the user (otherwise, the checkout should proceed normally).

The file must be named Store.py

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Main Memory Database Systems

Authors: Frans Faerber, Alfons Kemper, Per-Åke Alfons

1st Edition

ISBN: 1680833243, 978-1680833249

More Books

Students also viewed these Databases questions