网络知识 娱乐 python封装,购物车完整案例

python封装,购物车完整案例

购物车

数据模型:建立ShoppingModel类

'''

class ShoppingModel:

'''

建立数据模型变量:

name商品名称

manay价钱

id产品编号

'''

def __init__(self,name="",manay="",id=0):

self.name=name

self.manay=manay

self.id=id

class ShoppingController:

def __init__(self):

self.id=100

self.add_set={}

def add_shopping(self,id,**kwargs):#调用__gebing_shpping()方法

'''

根据id添加商品信息

:param kwargs: 商品字典__gebing_shpping()方法

:return:

'''

self.add_set[self.id] = kwargs

def gebing_shopping(self,get_shop):#get_shop调用数据模型对象属性

'''

生成内部商品字典

:param get_shop: 调用数据模型对象属性

:return: 返回商品信息字典

'''

self.get_name=get_shop

if self.add_set=={}:

self.id+=1

self.add_shopping(self.id,商品名称= self.get_name.name,商品价格 = self.get_name.manay)

else:

self.id+=len(self.add_set)

self.add_shopping(self.id,商品名称= self.get_name.name,商品价格 = self.get_name.manay)

def del_shopp(self):

'''

删除指定序号的商品

:return: 删除成功为True,删除不成功为False

'''

number=int(input("请输入要删除的商品序号:"))

if number==self.id and self.add_set!={}:

del self.add_set[self.id]

return True

return False

def update_shopping(self,upvie):

'''

修改商品内容

先分离出键和值(内容字典)

再根据upvie对象修改内部字典内容

:param upvie: 数据模型对象

:return:

'''

#idk=int(input("输入要修改商品的序号:"))

for itme,ytem in self.add_set.items():

if upvie.id==itme:#idk==itme:

ytem["商品名称"]=upvie.name

ytem["商品价格"]=upvie.manay

def out_shopping(self,number):

self.shopp_dict={}

self.shopp_list=[]

self.shopp_dict[number]=self.add_set[number]

#测试开始

# mast=ShoppingModel("毛毛熊",25)

# get01=ShoppingController()

# get02=get01.gebing_shopping(mast)

# print(get02)

# # dict01=get01.add_set#添加商品

# # print(dict01)

# # #修改内容

# # masta=ShoppingModel("小汽车",85)

# # dict02=get01.update_shopping(masta)

# # print(dict01)

# # get01.del_shopp()#删除

# # print(dict01)

# get01.out_shopping(101,3)

# print(get01.shopp_dict)

# print((get01.shopp_list))

# #调试结束

class ShoppingView:

'''

学生管理器视图

'''

def __init__(self):

'''

定义商品数据模弄和逻辑方法的实便对象

'''

self.cont=ShoppingController()

def __display_menu(self):

'''

制作显示菜单

:return:

'''

print("1)添商品信息")

print("2)显示商品信息")

print("3)删除商品信息")

print("4)修改商品信息")

print("5)购买商品")

def __select_list(self):

'''

调用每个功能的实例对象

:return:

'''

xuanxiang=int(input("请选择菜单选项(1——5):"))

if xuanxiang == 1:

self.__input_shopping()

if xuanxiang == 2:

self.__outputshopping()

if xuanxiang == 3:

self.__deleteshopping()

if xuanxiang == 4:

self.__up_shopping()

if xuanxiang == 5:

self.__goushopping()

def main(self):

while True:

self.__display_menu()

self.__select_list()

next=input("y继续,n退出:")

if next=="y":

self.__display_menu()

self.__select_list()

elif next=="n":

break

def __input_shopping(self):

name=input("请输入商品名称:")

numbr=float (input("请输入商品价格:"))

menu=ShoppingModel(name,numbr)

self.cont.gebing_shopping(menu)

def __outputshopping(self):

for iv,ik in self.cont.add_set.items():

print(iv,end=" ")

for yv,yk in ik.items():

print(yv,yk,end=" ")

print()

def __deleteshopping(self):

self.cont.del_shopp()

def __up_shopping(self):

self.id=int(input("输入要修改的商品编号:"))

self.name=input("请输入要修改商品的名称:")

self.manay=int(input("请输入要修改商品价格:"))

self.cont.update_shopping(ShoppingModel(self.name,self.manay,self.id))

def __goushopping(self):

print(self.cont.add_set)

while True:

self.shangpin=int(input("请输入购买商品编号:"))

if self.shangpin==0:

break

self.shuliang = int(input("请输入购买数量"))

self.cont.out_shopping(self.shangpin)

for iv,ik in self.cont.add_set.items():

self.cont.shopp_list.append(ik["商品价格"] * self.shuliang)

print(iv,end=" ")

for yv,yk in ik.items():

print(yv,yk,end="")

print()

print("您购买了%d种商品,是%d"%(len(self.cont.shopp_list),sum(self.cont.shopp_list)))

menu=ShoppingView()

menu.main()