USER_FILE = "users.txt"GOODS_FILE= "goods.txt"
def rw_file(filename, content=0): #读和写文件
if content: #若content不为空,则判定为写文件
with open(filename,"w") as f:
f.write(str(content))else: #若content为空,则判定为读文件
with open(filename,"r") as f:
f=eval(f.read())returnfdefbuyer(username):
menu={"1": find,"2": buy,"3": get,"4": exit
}whileTrue:
choice= input("请输入你想执行的操作(输入【1】查看所有商品,输入【2】添加商品,输入【3】查询购物车和余额,输入【4】退出):")if choice not inmenu:print("输入错误,请重新输入")else:
menu[choice](username)defadmin():
menu={"1": addgoods,"2": recharge,"3": exit
}#role为1时,为管理员
whileTrue:
choice= input("请输入你想执行的操作(输入【1】添加商品,输入【2】充值,输入【3】退出):")if choice not inmenu:print("输入错误,请重新输入")else:
menu[choice]()def login(): #定义用户登录函数,根据用户角色提供指定操作
users =rw_file(USER_FILE)for i in range(3):
username= input("请输入账号:")
passwd= input("请输入密码:")if username in users and passwd == users[username]["passwd"] :if users[username]["role"] == "2": #如果role为2,则为普通用户
print("欢迎光临")
buyer(username)else:print("您已管理员身份登录")
admin( )else:print("账号或密码错误,还能尝试%d次"%(2-i))
i+= 1
def find(*args): #普通查看所有商品
with open("goods.txt") as f:print("所有商品和价格列表:", f.read())def buy(username): #普通用户添加商品到购物车
users =rw_file(USER_FILE)
goods_all=rw_file(GOODS_FILE)
goods= input("请输入你要添加的商品:")if goods ingoods_all:if goods not in users[username]["carts"]:if users[username]["money"] >=goods_all[goods]:
users[username]["carts"].append(goods)
users[username]["money"] =float("%.2f"%(users[username]["money"] -goods_all[goods]))
with open("users.txt","w") as f2:
f2.write(str(users))print("商品已成功添加到购物车")else:print("您的余额不足,请充值")else:print("购物车中已添加该商品,无需重复添加")else:print("您输入的商品不存在")def get(username): #普通用户查询购物车中的商品和余额
users =rw_file(USER_FILE)if len(users[username]["carts"]) >0:print("您的购物车中已有商品:{goods}".format(goods = users[username]["carts"]))else:print("您还未添加任何商品")print("您的余额:{money}".format(money=users[username]["money"]))def addgoods( ): #管理员添加商品
goods_all =rw_file(GOODS_FILE)
goods_name= input("请输入商品名称:")
goods_price= input("请输入商品价格:")if len(goods_name.strip()) !=0:if goods_name not ingoods_all:ifisprice(goods_price):
goods_all[goods_name]= float("%.2f"%float(goods_price))
rw_file(GOODS_FILE,goods_all)print("商品添加成功")else:print("商品价格必须是正数,请重新输入")else:print("该商品已存在,无需重复添加")else:print("商品名称不能为空,请重新输入")def recharge(): #管理员给指定账号充值
users =rw_file(USER_FILE)
username= input("请输入要充值的账号:")
money= input("请输入要添加的金额:")if username in users andisprice(money):
users[username]["money"] = float("%.2f"%(users[username]["money"] +float(money)))
rw_file(USER_FILE, users)print("操作成功")else:print("输入账号或金额有误,请重新输入")def isprice(price): #判断金额是否有效
if price.count(".") == 1 and price.split(".")[0].isdigit() and price.split(".")[1].isdigit():returnTrueelif price.count(".") == 0 andprice.isdigit():returnTrueelse:returnFalse
login()