码迷,mamicode.com
首页 > 编程语言 > 详细

python开发购物车

时间:2018-05-05 14:20:12      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:逻辑   实现   imp   log   cti   欢迎来到   fun   余额   com   

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

python开发购物车

标签:逻辑   实现   imp   log   cti   欢迎来到   fun   余额   com   

原文地址:https://www.cnblogs.com/pythonproject/p/8944135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!