11.12 LAB*: Program: Online shopping cart (continued)
This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program).
(1) Extend the ItemToPurchase class to contain a new attribute. (2 pts)
Implement the following method for the ItemToPurchase class.
Ex. of print_item_description() output:
Bottled Water: Deer Park, 12 oz.
(2) Build the ShoppingCart class with the following data attributes and related methods. Note: Some can be method stubs (empty methods) initially, to be completed in later steps.
Ex. of print_total() output:
John Doe's Shopping Cart - February 1, 2016 Number of Items: 8 Nike Romaleos 2 @ $189 = $378 Chocolate Chips 5 @ $3 = $15 Powerbeats 2 Headphones 1 @ $128 = $128 Total: $521
Ex. of print_descriptions() output:
John Doe's Shopping Cart - February 1, 2016 Item Descriptions Nike Romaleos: Volt color, Weightlifting shoes Chocolate Chips: Semi-sweet Powerbeats 2 Headphones: Bluetooth headphones
(3) In main section of your code, prompt the user for a customer's
name and today's date. Output the name and date. Create an object
of type ShoppingCart. (1 pt)
Ex.
Enter customer's name: John Doe Enter today's date: February 1, 2016 Customer name: John Doe Today's date: February 1, 2016
(4) Implement the print_menu() function. print_menu() has a
ShoppingCart parameter, and outputs a menu of options to manipulate
the shopping cart. Each option is represented by a single
character. Build and output the menu within the function.
If the an invalid character is entered, continue to prompt for a
valid choice. Hint: Implement Quit before implementing other
options. Call print_menu() in the main() function. Continue to
execute the menu until the user enters q to Quit. (3 pts)
Ex:
MENU a - Add item to cart r - Remove item from cart c - Change item quantity i - Output items' descriptions o - Output shopping cart q - Quit Choose an option:
(5) Implement Output shopping cart menu option. (3 pts)
Ex:
OUTPUT SHOPPING CART John Doe's Shopping Cart - February 1, 2016 Number of Items: 8 Nike Romaleos 2 @ $189 = $378 Chocolate Chips 5 @ $3 = $15 Powerbeats 2 Headphones 1 @ $128 = $128 Total: $521
(6) Implement Output item's description menu option. (2 pts)
Ex.
OUTPUT ITEMS' DESCRIPTIONS John Doe's Shopping Cart - February 1, 2016 Item Descriptions Nike Romaleos: Volt color, Weightlifting shoes Chocolate Chips: Semi-sweet Powerbeats 2 Headphones: Bluetooth headphones
(7) Implement Add item to cart menu option. (3 pts)
Ex:
ADD ITEM TO CART Enter the item name: Nike Romaleos Enter the item description: Volt color, Weightlifting shoes Enter the item price: 189 Enter the item quantity: 2
(8) Implement remove item menu option. (4 pts)
Ex:
REMOVE ITEM FROM CART Enter name of item to remove: Chocolate Chips
(9) Implement Change item quantity menu option. Hint: Make new
ItemToPurchase object before using ModifyItem() method. (5
pts)
Ex:
CHANGE ITEM QUANTITY Enter the item name: Nike Romaleos Enter the new quantity: 3
'''
Python version : 2.7
Python program to implement a shopping cart
'''
class ItemToPurchase:
def __init__(self, name='none', price=0, quantity=0, description='none'):
self.item_name=name
self.item_description=description
self.item_price=price
self.item_quantity=quantity
def print_item_cost(self):
total = self.item_price * self.item_quantity
print('%s %d @ $%d = $%d' % (self.item_name, self.item_quantity, self.item_price, total))
def print_item_description(self):
print('%s: %s' % (self.item_name, self.item_description))
class ShoppingCart:
def __init__(self, customer_name = 'none', current_date = 'January 1, 2016', cart_items = []):
self.customer_name = customer_name
self.current_date = current_date
self.cart_items = cart_items
def add_item(self, itemToPurchase):
self.cart_items.append(itemToPurchase)
def get_cost_of_cart(self):
total_cost = 0
cost = 0
for item in self.cart_items:
cost = (item.item_quantity * item.item_price)
total_cost += cost
return total_cost
def print_total():
total_cost = self.get_cost_of_cart()
if (total_cost == 0):
print('SHOPPING CART IS EMPTY')
else:
self.output_cart()
def print_descriptions(self):
if len(self.cart_items) == 0:
print('SHOPPING CART IS EMPTY')
else:
print('\nOUTPUT ITEMS\' DESCRIPTIONS')
print('{}\'s Shopping Cart - {}'.format(self.customer_name, self.current_date))
print('\nItem Descriptions')
for item in self.cart_items:
item.print_item_description()
def output_cart(self):
print('\nOUTPUT SHOPPING CART')
print('{}\'s Shopping Cart - {}'.format(self.customer_name, self.current_date))
print('Number of Items:'+ str(self.get_num_items_in_cart())+'\n')
if len(self.cart_items) == 0:
print('SHOPPING CART IS EMPTY')
else:
tc = 0
for item in self.cart_items:
print('{} {} @ ${} = ${}'.format(item.item_name, item.item_quantity, item.item_price, (item.item_quantity * item.item_price)))
tc += (item.item_quantity * item.item_price)
print('\nTotal: ${}'.format(tc))
def remove_item(self, itemName):
tremove_item = False
for item in self.cart_items:
if item.item_name == itemName:
self.cart_items.remove(item)
tremove_item = True
break
if not tremove_item:
print('Item not found in the cart. Nothing removed')
def modify_item(self, itemToPurchase):
tmodify_item = False
for i in range(len(self.cart_items)):
if self.cart_items[i].item_name == itemToPurchase.item_name:
tmodify_item = True
if(itemToPurchase.item_price == 0 and itemToPurchase.item_quantity == 0 and itemToPurchase.item_description == 'none'):
break
else:
if(itemToPurchase.item_price != 0):
self.cart_items[i].item_price = itemToPurchase.item_price
if(itemToPurchase.item_quantity != 0):
self.cart_items[i].item_quantity = itemToPurchase.item_quantity
if(itemToPurchase.item_description != 'none'):
self.cart_items[i].item_description = itemToPurchase.item_description
break
if not tmodify_item:
print('Item not found in the cart. Nothing modified')
def get_num_items_in_cart(self):
num_items = 0
for item in self.cart_items:
num_items = num_items + item.item_quantity
return num_items
def print_menu(newCart):
customer_Cart = newCart
menu = ('\nMENU\n'
'a - Add item to cart\n'
'r - Remove item from the cart\n'
'c - Change item quantity\n'
"i - Output item's descriptions\n"
'o - Output shopping cart\n'
'q - Quit\n')
command = ''
while(command != 'q'):
string=''
print(menu)
command = raw_input('Choose an option: ')
while(command != 'a' and command != 'o' and command != 'i' and command != 'q' and command != 'r' and command != 'c'):
command = raw_input('Choose an option: ')
if(command == 'a'):
print("\nADD ITEM TO CART")
item_name = raw_input('Enter the item name: ')
item_description = raw_input('Enter the item description: ')
item_price = float(raw_input('Enter the item price: '))
item_quantity = int(raw_input('Enter the item quantity: '))
itemtoPurchase = ItemToPurchase(item_name, item_price, item_quantity, item_description)
customer_Cart.add_item(itemtoPurchase)
if(command == 'o'):
customer_Cart.output_cart()
if(command == 'i'):
customer_Cart.print_descriptions()
if(command == 'r'):
print('REMOVE ITEM FROM CART')
itemName = raw_input('Enter the name of the item to remove : ')
customer_Cart.remove_item(itemName)
if(command == 'c'):
print('\nCHANGE ITEM QUANTITY')
itemName = raw_input('Enter the name of the item : ')
qty = int(raw_input('Enter the new quantity : '))
itemToPurchase = ItemToPurchase(itemName,0,qty)
customer_Cart.modify_item(itemToPurchase)
if __name__ == "__main__":
customer_name = raw_input("Enter customer's name:")
current_date = raw_input("Enter today's date:")
print("\nCustomer name:"+ customer_name)
print("Today's date:"+ current_date)
newCart = ShoppingCart(customer_name, current_date)
print_menu(newCart)
#end of program
Code Screenshot:
Output:
Get Answers For Free
Most questions answered within 1 hours.