python开发购物车

1 业务需求

商品中心

显示库存的商品

商品能够加入到购物车

个人中心

购物车

修改购物车的商品

下单

完成的订单

订单详情

账户余额

2 代码实现

  1 # 定义全局变量信息
  2 # 商品编号信息
  3 goods_num = {'G1': '皮鞋', 'G2': '皮带', 'G3': '帽子', 'G4': '笔记本'}
  4 # 商品单价
  5 goods_price = {'皮鞋': 165, '皮带': 99, '帽子': 49, '笔记本': 3999}
  6 # 购物车
  7 shopping_car = {}
  8 # 完成的订单
  9 already_paid = {}
 10 # 个人编号的功能
 11 IdCenter_Num = {'M1':"shopping_car", 'M2':"already_paid"}
 12 # 个人中心的功能
 13 IdCenter_dict = {"shopping_car": shopping_car, 'already_paid': already_paid}
 14 # 账户余额
 15 AccountBalance = [400, ]
 16 
 17 
 18 # 商品选择页面
 19 def GoodsFunction():
 20     # 打印商品编号,商品以及对应价格,供选择
 21     print('序号\t\t\t商品\t\t\t价格')
 22     for i in goods_num:
 23         print('%s\t\t\t%s\t\t\t%s' % (i, goods_num.get(i), goods_price.get(goods_num.get(i))))
 24     result = input("请输入序号:").strip()
 25     # 判断传入参数
 26     if result == '':
 27         print("Error:不能为空")
 28     elif result == '0' or result == "1":
 29         return result
 30     elif result in goods_num:
 31         goodname = goods_num.get(result)
 32         # 参数为商品编号,传入到AddGood()函数
 33         AddGood(goodname)
 34     else:
 35         print("Error:指令错误,请重新输入")
 36     return '0'
 37 
 38 
 39 # 加入购物车
 40 def AddGood(goodname):
 41     N_1 = int(input('请输入%s的数量:' % goodname))
 42     if N_1 > 0:
 43         # 判断商品元素是否存在,存在则修改数量,不存在则追加
 44         if goodname in shopping_car:
 45             shopping_car[goodname] = N_1
 46             print(shopping_car)
 47         else:
 48             shopping_car.update({goodname:N_1})
 49             print(shopping_car)
 50     else:
 51         print('Error:商品数量有误')
 52 
 53 
 54 # 个人中心
 55 def GoIdCenter():
 56     print("欢迎来到个人中心,\n序号\t选项")
 57     for i in IdCenter_Num:
 58         print('%s\t\t%s' % (i, IdCenter_Num.get(i)))
 59     print("\n账户余额:%s\n0\t商品页\n1\t个人中心(购物车、订单、余额)" % AccountBalance[0])
 60     result = input("请输入序号:").strip()
 61     if result == '':
 62         print("Error:不能为空,请重新输入!")
 63     elif result == '0' or result == '1':
 64         return result
 65     elif result in IdCenter_Num:
 66         if result == 'M1':
 67             # 购物车操作函数,flag作为操作标识,如果返回不为空则将返回值在此返回并跳出循环
 68             flag = ''
 69             while True:
 70                 flag = ShopCartFun()
 71                 if flag != '':
 72                     return flag
 73                     continue
 74         elif result == 'M2':
 75             # 订单查看函数
 76             GoodOrder()
 77             return 1
 78     else:
 79         print("Error:指令错误,请重新输入!")
 80     return '1'
 81 
 82 
 83 # 购物车操作
 84 def ShopCartFun():
 85     # 判断购物车是否为空
 86     if shopping_car:
 87         print('购物车\n商品名\t\t数量\t\t单价\t\t总价')
 88         for i in shopping_car:
 89             # 打印购物车商品详单
 90             print('%s\t%s\t\t%s\t\t%s' % (i, shopping_car.get(i), goods_price.get(i), shopping_car.get(i) * goods_price.get(i)))
 91     else:
 92         print("你的购物车空旷如也")
 93     print('\n0\t商品页\n1\t个人中心(购物车、订单、余额)\n2\t清空购物车\n3\t结账\n修改商品数量请输入商品名。')
 94     result = input("请输入:").strip()
 95     if result == '':
 96         print("不能为空,请重新输入")
 97     elif result == '0' or result == '1' or result == '3':
 98         # 3为结账选项,返回到主函数,调用结账函数
 99         return result
100     elif result in shopping_car:
101         # 修改商品数量,再次调用AddGood()函数
102         AddGood(result)
103     else:
104         print("指令错误,请重新输入")
105     return ''
106 
107 
108 # 结账函数
109 def CheckOut():
110     # 购物车金额合计
111     Total = 0
112     for i in shopping_car:
113         Total += shopping_car.get(i) * goods_price.get(i)
114     print(Total)
115     # 判断是否满足结账条件
116     if Total > AccountBalance[0]:
117         print("余额不足")
118     else:
119         import time
120         # 生成时间戳,作为订单号
121         Date = int(time.time())
122         # 生成订单呢
123         already_paid.update({Date:shopping_car})
124         # 扣款
125         AccountBalance[0] = AccountBalance[0] - Total
126         # 购物车清空
127         shopping_car.clear()
128     return '1'
129 
130 
131 # 查看订单详情
132 def GoodOrder():
133     if already_paid:
134         print('完成订单\n订单号')
135         for i in already_paid:
136             print(i)
137         print('\n0\t商品页\n1\t个人中心(购物车、订单、余额)')
138         N_2 = int(input('\n输入要查看的订单号:').strip())
139         if N_2 == '':
140             print('不能为空,请重新输入')
141         elif N_2 == '0' or N_2 == '1':
142             return N_2
143         elif N_2 in already_paid:
144             print('订单%s详情商品名\t数量\t总价'%N_2)
145             for i in already_paid.get(N_2):
146                 print('%s\t%s\t%s' % (i, already_paid.get(N_2).get(i), goods_price.get(i) * already_paid.get(N_2).get(i)))
147         else:
148             print('输入有误')
149 
150 
151 if __name__ == "__main__":
152     N = GoodsFunction()
153     while True:
154         if N == '0':
155             N = GoodsFunction()
156         elif N == '1':
157             N = GoIdCenter()
158         elif N == '2':
159             shopping_car = {}
160             N = GoodsFunction()
161         elif N == '3':
162             N = CheckOut()
View Code

3 个人理解

  任何事物都可分为两个维度,属性和方法,属性可理解数据结构,方法就是对数据结构操作的动作。

  确定数据的结构,数据结构是用来存存储数据的地方,它本身也是对象。

  一个函数的返回结果可能是另外一个函数形式参数。

  无论是面向对象还是面向过程的编程,都是需要立足于现实的业务逻辑。

  对于程序,我们需要多写多练习,当你回头看的时候,你会发现原来困扰你的问题会很简单。

4 思路来源

http://www.cnblogs.com/ikmi/p/6195065.html

猜你喜欢

转载自www.cnblogs.com/pythonproject/p/8944135.html