python购物车程序流程图_python作业:购物车(第二周)

一.作业需求:

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录

二.购物车用户信息:

{'name': {'password': '10000'}, 'cx': {'123': '725.0'}, 'even': {'qw': '1560'}, 'cv1': {'1': 100.5}}

以字典形式存储用户名,密码,余额

三.历史购物信息:

{'name': [['iphone', 5800], ['bike', 800]], 'cx': [['iphone', 5800], ['apple', 5], ['apple', 5], ['book', 75]]}

以字典形式,对应用户名和历史购物记录

四.流程图:

1099134-20170222205830538-341187888.png

五.代码:(python3.6,mac环境):

ContractedBlock.gif

ExpandedBlockStart.gif

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 #Author: Even

4

5 set = False #设置set 当输入为q就可以退出

6 file = open('购物车用户信息存档','r+',encoding='utf-8') #读取购物车用户信息文件

7 f = str(file.read()) #将文件内容转化成字符串

8 for line in f: #逐行读取

9 file_str =str(f)10 data= eval(file_str) #将字符串转换为字典data

11 name = input("请输入姓名:") #提示输入用户名

12 password = input("请输入密码:") #提示输入密码

13 whileTrue:14 if name in data: #用户名在字典data

15 if password in data[name]: #密码如果能对应用户名,就欢迎登录

16 salay =float(data[name][password])17 print('''\033[32;1m欢迎登录,当前余额为%s\033[0m'''%salay)18 break

19 else: #否则密码输入错误,提示重新输入

20 password = input("密码输入错误,请重新输入:")21 continue

22 else: #否则判断为首次登录,将用户名,密码,工资存到用户信息文件中

23 password_salay ={}24 salay_str = input("欢迎首次登录,请输入你的工资:") #输入工资数

25 salay = float(salay_str) #将输入的字符串转换为数字

26 password_salay[password] = salay #将工资对应到密码

27 data[name] = password_salay #将密码-工资对对应到用户名

28 file.seek(0) #文件的读取移到开头

29 file.write(str(data)) #写入新的字典信息

30 file.tell() #返回当前位置

31 break

32

33

34 list = [ #购物清单

35 ["iphone",5800],36 ["bike",800],37 ["macbook",17500],38 ["book",75],39 ["apple",5]40 ]41

42 file_list_r = open('历史购买记录','r+',encoding='utf-8') #读取历史购买记录文件

43 f_list_r =str(file_list_r.read())44 shoppinglist_dict = eval(f_list_r) #将历史记录信息转换为字典

45 if name not in shoppinglist_dict: #如果首次登录,会没有历史记录

46 shoppinglist_dict[name] = [] #首次登录历史记录留空

47 shoppinglist = shoppinglist_dict[name] #不是首次登录,将之前历史记录赋值到变量

48 shoppinglist_now = [] #本次购物记录留空

49 choose = input("\n是否需要查询历史购物记录(y/n):") #询问是否需要查询历史记录

50 if choose == 'y': #选y,输出历史购物记录

51 print("\n\n-----------历史购物记录------------")52 print(shoppinglist)53 print("--------------结束---------------\n\n")54

55 while not set: #购物车开始

56 print('-----------商品清单------------') #输出商品清单

57 for index,item in enumerate(list,1):58 print(index,item)59 print("-------------结束--------------")60 number = input("请输入想购买的商品编号:") #输入商品编号

61 if number == "q": #当输入为q,退出,打印本次购物清单

62 set =True63 data[name][password] = str(salay) #将字符串的工资给到对应用户名下的密码-工资对中

64 file.seek(0)65 file.write(str(data)) #将用户信息写入购物车用户信息存档中

66 file.tell()67 print("------------购物清单------------") #打印购物清单,提示余额

68 print(shoppinglist_now)69 print("您的余额为:",salay)70 print("-------------结束--------------")71 shoppinglist.extend(shoppinglist_now) #将本次购物记录追加到购物记录列表中

72 shoppinglist_dict[name] = shoppinglist #购物列表与用户名做对应

73 file_list_r.seek(0)74 file_list_r.write(str(shoppinglist_dict)) #写入字符串的购物历史记录

75 file_list_r.tell()76 elif number.isdigit() == False: #校验输入是否为整数

77 print("\033[31;1m输入不是编号内容,请重新输入\033[0m")78 elif int(number)>int(len(list)) or int(number)<= 0: #如果输入值不在清单中,提示报错

79 print("\033[31;1m您所购买的商品不在清单中\033[0m")80 else:81 number_buy = int(number)-1

82 if list[number_buy][1]<(salay): #如果余额够,提示成功购买,显示余额

83 salay = salay - int(list[number_buy][1])84 msg = '''

85 \033[32;1m您已将%s加入购物车中86 余额为%d\033[0m87 ''' %(list[number_buy][0],salay)88 print(msg)89 shoppinglist_now.append(list[number_buy]) #本次购物信息加到本次购买记录中

90 else:91 print("\033[31;1m您已没有余额可以购买\033[0m") #否则提示余额不足

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值