希望你们写代码有用(直接可以拿来用,我只要您的一个关注和赞赞) #用户数据 user1={"用户名":"aaa","密码":"123","姓名":"热孜娅","类型":"客户"} user2={"用户名":"bbb","密码":"456","姓名":"那迪尔","类型":"客户"} user3={"用户名":"ccc","密码":"789","姓名":"艾斯卡尔","类型":"管理员"} usersList=[user1,user2,user3] #菜品数据 p1={"编号":"1001","名称":"牛肉","价格":30,"库存":7,"更新人":"ccc"} p2={"编号":"1002","名称":"千张","价格":10,"库存":122,"更新人":"ccc"} p3={"编号":"1003","名称":"土豆","价格":12,"库存":103,"更新人":"ccc"} p4={"编号":"1004","名称":"汽水","价格":6,"库存":34,"更新人":"ccc"} p5={"编号":"1008","名称":"啤酒","价格":4,"库存":9,"更新人":"ccc"} pruductsList=[p1,p2,p3,p4,p5] currentUser={} #当前用户 #-------------------------------功能函数 #验证管理员 def checkAdmin(fun): def wrapper(): if currentUser["类型"]=="管理员": fun() else: print("没有权限") return wrapper #登录 def login(): global currentUser result="失败" uname=input("请输入用户名:") upwd=input("请输入密码:") for user in usersList: if uname==user["用户名"] and upwd==user["密码"]: currentUser=user result="成功" return result #显示菜品列表 def listAll(): print("--编号----名称----价格----库存") for product in pruductsList: print("-"+product["编号"]+"----"+product["名称"]+"-----"+str(product["价格"])+"-----"+str(product["库存"])) # def getOneByName(): name = input("请输入要查询的菜品名称") exist=0 print("--编号----名称----价格----库存") for product in pruductsList: if name==product["名称"]: exist=1 print("-"+product["编号"]+"----"+product["名称"]+"-----"+str(product["价格"])+"-----"+str(product["库存"])) if exist==0: print("未查询到该菜品") #菜品上架(仅限管理员) @checkAdmin #这个装饰器相当于 add=checkAdmin(add) def add(): #生成新编号 lista=[] for p in pruductsList: lista.append(int(p["编号"])) newNum=str(max(lista)+1) updatedPerson=currentUser["用户名"] name=input("请输入菜品名称:") price = input("请输入菜品单价:") stock = input("请输入菜品库存:") newPro={"编号":newNum,"名称":name,"价格":price,"库存":stock,"更新人":updatedPerson} pruductsList.append(newPro) print(newPro["名称"] + "上架成功!") listAll() # @checkAdmin #这个装饰器相当于 add=checkAdmin(add) def delete(): num=input("请输入要下架的菜品编号:") exist=0 #是否存在 for p in pruductsList: if num==p["编号"]: exist=1 pruductsList.remove(p) print(p["名称"]+"下架成功!") if exist==0: print("没有此菜品,下架失败!") listAll() #设置菜品库存与价格(仅限管理员) @checkAdmin #这个装饰器相当于 add=checkAdmin(add) def update(): while True: #不存在或输入错误时让重新输入 exist=0#是否存在 num=input("请输入要更新的菜品编号") for product in pruductsList: if num==product["编号"]: exist=1 updata1=input("你要更新的是:1 价格 2 库存") updata2 = input("更新的值为:") if updata1=="1": product["价格"]=updata2 elif updata1 == "2": product["库存"]=updata2 print("---菜品"+product["名称"]+"已经更新成功") break #菜品更新完之后不需要再循环菜品了了 if exist==0: print("菜品不存在") choice=input("取消请按 1 重新输入请按 2 :") if choice=="1": break else: continue else: #不是0的时候,更新完了要退出更新 break #外层循环停止 #库存预警 def warning(): exist=0 print("一下菜品需要补充食材") print("--编号----名称----价格----库存") for product in pruductsList: if int(product["库存"]) < 10: exist=1 print("-"+product["编号"]+"----"+product["名称"]+"-----"+str(product["价格"])+"-----"+str(product["库存"])) if exist==0: print("库存充足") #按照价格排序 def sortByPrice(): choice=input("请选择升序或降序(1.升序 2.降序)") plist=[] for product in pruductsList: plist.append(product["价格"]) plist=list(set(plist)) #价格去重 if choice=="1": plist.sort() else: plist.sort(reverse=True) print("--编号----名称----价格----库存") for price in plist: for product in pruductsList: if price==product["价格"]: print("-" + product["编号"] + "----" + product["名称"] + "-----" + str( product["价格"]) + "-----" + str(product["库存"])) #显示主菜单,并调用相关功能 print("******************************51菜品管理系统 1.0**********************************") while True: #为了重复登录 result1=login() if result1=="失败": print("登录失败,请重新登录") continue #业务功能 while True: print("--------功能列表---------") print("1.显示菜品列表") print("2.根据名称查询菜品信息") print("3.菜品上架") print("4.菜品下架") print("5.设置菜品库存和价格") print("6.库存预警") print("7.按价格排序显示") print("8.退出") choice=input("-----请输入功能编号(1-8):") if choice=="1": listAll() elif choice=="2": getOneByName() elif choice=="3": add() elif choice=="4": delete() elif choice=="5": update() elif choice=="6": warning() elif choice=="7": sortByPrice() elif choice=="8": break #内层循环退出,退到登录页面 else: print("没有功能,请重新选择!") continue