1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author:Ahappier
4
5 set = False
6 f =open ("user","r+",encoding="utf-8") #读取user文件
7 f_str = str(f.read()) #文件内容转字符串
8 for line in f_str:
9 f_str_str= str(f_str) #逐行读取
10 data = eval(f_str_str) #字符串转字典
11 name = input ("请输入账号:")
12 password = input ("请输入密码:")
13 while True:
14 if name in data: #判断用户名在字典
15 if password in data[name]: #判断密码在字典内与用户对应
16 salary = int (data[name][password])
17 print ("\033[31;1m欢迎登陆,当前余额:%s\033[0m"%salary)
18 break
19 else:
20 print ("输入密码错误,请重新输入")
21 password = input ("请重新输入密码:")
22 continue
23 else:
24 salary_p ={} #定义密码、工资空字典
25 salary_input = input("请输入你的工资:")
26 salary = int (salary_input) #输入的工资转成数字
27 salary_p[password] = salary #密码与工资对应
28 data[name] =salary_p #用户名和密码 工资对应
29 f.seek(0) #文件读取移到开头
30 f.write(str(data)) #写入字典
31 f.tell() #返回到当前位置
32 break
33
34 h =open("history","r+",encoding="utf-8")
35 h_str =str(h.read())
36 for line in h_str:
37 h_str_str=str(h_str)
38 data1=eval(h_str_str) #把history文件内容转成字典
39 if name not in data1:
40 data1[name]=[] #如果用户名第一次登陆名字不在字典内,历史记录为空
41 shoppinglist = data1[name]
42 shoppinglist_new =[] #再次购物的记录为空
43 choose = input ("\033[32;1m是否需要查询历史购物记录(y/n)\033[0m") #询问是否查询历史记录
44 if choose == "y":
45 print("----历史购物记录-----")
46 print (shoppinglist)
47
48
49 list =[
50 ["Apple Iphone",6000],
51 ["Apple Watch",4600],
52 ["Books",600],
53 ["Bike",750],
54 ["cups",120],
55 ["Apple",50],
56 ["banana",60],
57 ] #购物清单
58
59 while not set:
60 print ("----商品清单----")
61 for index,i in enumerate(list):
62 print(index,i) #输入商品清单
63 number = input("输入你选择的商品标号") #选择编号
64 if number =="q": #当输入q时,退出,并打印清单
65 set =True
66 data[name][password]= salary #工资给对应的用户密码位置
67 f.seek(0)
68 f.write(str(data)) #用户信息写入到文件中
69 f.tell()
70 print("----已购商品清单----")
71 print (shoppinglist_new) #打印清单
72 print ("\033[31;1m你的余额:%s\033[0m"%salary)#打印余额
73 shoppinglist.extend(shoppinglist_new)#本次购物记录追加到购物列表中
74 data1[name]=shoppinglist #购物列表和用户名对应
75 h.seek(0)
76 h.write(str(data1)) #购物记录写入文件
77 h.tell()
78 elif number.isdigit == False:
79 print("\033[31;1m输入的不是编号,请重新输入\033[0m")
80 elif int(number)>int(len(list)) or int(number)<0:
81 print("\033[31;1m你购买的商品不在清单中\033[0m")
82 else:
83 number_buy =int(number)-1
84 if list[number_buy][1]<salary:
85 salary=salary-int(list[number_buy][1])
86 shoppinglist_new.append(list[number_buy])
87 else:
88 print ("\033[31;1m你的余额不足\033[0m")