程序需求:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
流程图:
先用json创建一个以字典形式存贮用户信息的文件user_info{}:
import json
#创建user_info文件,保存用户信息字典user_info{}
user_info={'user1':["123",[],"0"]}
user_info=json.dumps(user_info)
with open('user_info','w+',encoding='utf-8') as f:
f.write(user_info)
购物车程序代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Sign
import json
#商品列表:
product_list=[
('iphone8',5888),
('iphone8plus',6888),
('iphone x',8388),
('小米mix2',3299),
('小米note3',2499),
('小米mix2至尊版',4699)
]
#购物车商品列表:
bought_list=[]
#从文件中读取用户信息
f=open('user_info','r+',encoding="utf-8")
user_info=eval(f.read())
f.close()
#用户登录
while True:
user = input("请输入你的账号:\n")
if user in user_info:
password = input("请输入你的密码:\n")
if password == user_info[user][0]:
#登录成功 读取购物车列表和余额
salary = int(user_info[user][-1])
bought_list = user_info[user][1]
if bought_list==[]:#初次登录
salary=input("欢迎来到京东,首次登录请输入你的工资:\n")
if salary.isdigit():
salary=int(salary)
break
else:#老用户登录
print("欢迎回来继续购物")
print("你已选择商品:")
for p in bought_list:#打印购物车里的商品
print(p)
choice2=input("继续购物g,退出q\n")
if choice2=='g':
break
elif choice2=='q':
exit()
else:
print("密码错误,重新输入")
while True:
for index,item in enumerate(product_list):#取下标,打印商品列表
print(index,item)
choice = input("请输入你想要购买的商品标号,退出请输q:\n")
if choice.isdigit():
choice = int(choice)
if choice < len(product_list) and choice>=0:
p_item = product_list[choice]
if p_item[1] <= salary: #
bought_list.append(p_item)#添加商品到购物车列表
salary -= p_item[1] #余额
print("添加%s到购物车,你的余额为\033[31;1m%s\033[0m\n" % (p_item, salary))
else:
print("\033[41;1m你的余额为[%s],无法购买\033[0m" % salary)
else:
print("商品不存在")
elif choice == "q":
print("已选择商品:\n")
for p in bought_list:#打印购物车列表
print(p)
print("你的余额为%s" % salary)
#将用户新的信息(购物车列表,余额)保存到文件中
user_info[user][1]=bought_list
user_info[user][-1]=salary
user_info= json.dumps(user_info)
with open('user_info', 'r+', encoding='utf-8') as f:
f.write(user_info)
exit()
else:
print("无效选项")