程序要求
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
流程图
代码如下:
![](https://img-blog.csdnimg.cn/img_convert/3ea82d80be59d08021814a7dadea16dc.gif)
![](https://img-blog.csdnimg.cn/img_convert/aad3ce357679cccb1fcf1de9d9408a77.gif)
1 # -*- coding:utf-8 -*-
2 # Author:Zhan Chen
3 '''
4 程序要求>>>>>
5 1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
6 2、允许用户根据商品编号购买商品
7 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
8 4、可随时退出,退出时,打印已购买商品和余额
9 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
10 6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
11 7、允许查询之前的消费记录
12 '''
13 product_list=[
14 ('iphone',5800),
15 ('Mac Pro',9800),
16 ('bike',1000),
17 ('watch',10000),
18 ('Coffee',30),
19 ('ALex Python',99)
20 ]
21 fo=open('userinfo.txt','r+',encoding='utf-8')#打开用户信息文件
22 fo_r=fo.read()#读取文件得到字符串
23 fo_dict=eval(fo_r)#将字符串数据转化成数组
24 fo_his=open('histroy.txt','r+',encoding='utf-8')
25 fo_his_r=fo_his.read()
26 fo_his_dict=eval(fo_his_r)
27 # print(fo_dict)
28 username=input("请输入用户名:")
29 password=input("请输入密码:")
30 shoppinglist=fo_his_dict[username]
31 shoppinglist_now=[]
32 salary=fo_dict[username][password]
33 salary=int(salary)
34 if username in fo_dict:
35 if password in fo_dict[username]:
36 print("登陆成功")
37 # print("工资>>>",str(fo_dict[username][1]))
38 if fo_dict[username][password]=='':
39 salary=input("请输入你的工资:")
40 salary=int(salary)
41 #将工资写入文件中
42 fo_dict[username]={password:salary}
43 fo.seek(0)
44 fo.write(str(fo_dict))
45 fo.tell()
46 #购物程序开始
47 while True:
48 for index, item in enumerate(product_list):
49 # print(product_list.index(item),item)
50 print(index, item)
51 user_choice = input("选择您希望购买的商品>>>>>>:")
52 if user_choice.isdigit():
53 user_choice = int(user_choice)
54 if user_choice < len(product_list) and user_choice >= 0:
55 p_item = product_list[user_choice]
56 if p_item[1] <= salary:
57 shoppinglist_now.append(p_item)
58 salary -= p_item[1]
59 print("将商品%s添加入购物车,你的余额还剩:\033[31;1m%s\033[0m" % (p_item, salary))
60 else:
61 print("\033[41;1m你的余额只有[%s]啦,还买个P\033[0m" % (salary))
62 else:
63 print("商品不存在")
64 elif user_choice == "q":
65 print("-----购买的商品-----")
66 for p in shoppinglist_now:
67 print(p)
68 print("你的余额:", salary)
69 fo_dict[username]={password:salary}
70 fo.seek(0)
71 fo.write(str(fo_dict))
72 fo.tell()
73 shoppinglist.extend(shoppinglist_now)
74 fo_his_dict[username] = shoppinglist
75 fo_his.seek(0)
76 fo_his.write(str(fo_his_dict))
77 fo_his.tell()
78 exit()
79 else:
80 print("错误选项")
81 else:
82 print("您的工资余额为:",fo_dict[username][password])
83 print("------你目前所购买的物品如下------")
84 for p2 in shoppinglist:
85 print(p2)
86 print("您的余额为:",fo_dict[username][password])
87 print("-----请继续购物------")
88 while True:
89 for index, item in enumerate(product_list):
90 # print(product_list.index(item),item)
91 print(index, item)
92 user_choice = input("选择您希望购买的商品>>>>>>:")
93 if user_choice.isdigit():
94 user_choice = int(user_choice)
95 if user_choice < len(product_list) and user_choice >= 0:
96 p_item = product_list[user_choice]
97 if p_item[1] <= salary:
98 shoppinglist_now.append(p_item)
99 salary -= p_item[1]
100 print("将商品%s添加入购物车,你的余额还剩:\033[31;1m%s\033[0m" % (p_item, salary))
101 else:
102 print("\033[41;1m你的余额只有[%s]啦,还买个P\033[0m" % (salary))
103 else:
104 print("商品不存在")
105 elif user_choice == "q":
106 print("-----购买的商品-----")
107 for p in shoppinglist_now:
108 print(p)
109 print("你的余额:", salary)
110 print("--------结束--------")
111 fo_dict[username] = {password: salary}
112 fo.seek(0)
113 fo.write(str(fo_dict))
114 fo.tell()
115 shoppinglist.extend(shoppinglist_now)
116 fo_his_dict[username] = shoppinglist
117 fo_his.seek(0)
118 fo_his.write(str(fo_his_dict))
119 fo_his.tell()
120 exit()
121 else:
122 print("错误选项")
123 fo.close()
124 fo_his.close()
125
126 else:
127 print("输入的用户名或密码错误")
userinfo.txt
{'chenzhan': {'111111': 970}, 'test': {'111111': 111}}}
histroy.txt
{'chenzhan': [('iphone', 5800), ('Coffee', 30), ('Coffee', 30)]}