希望你们写代码有用(直接可以拿来用,我只要您的一个关注和赞赞)
#用户数据
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
一个干净的python项目(没连数据库啥的)
raziya-askar2024-08-27 15:39
相关推荐
平行线也会相交1 分钟前
云图库平台(三)——后端用户模块开发灵槐梦3 分钟前
【速成51单片机】2.点亮LED想睡觉 . 我也想睡觉 .4 分钟前
【C++算法】1.【模板】前缀和天天要nx4 分钟前
D105【python 接口自动化学习】- pytest进阶参数化用法---wzy---13 分钟前
我的JAVA-Web基础(2)是十一月末14 分钟前
Opencv实现图片和视频的加噪、平滑处理伟大无须多言24 分钟前
企业资源规划系统(ERP)服务器上线项目实施指南逊嘘25 分钟前
【Java数据结构】LinkedList周盛欢26 分钟前
云服务器yum无法解析mirrorlist.centos.orglxyzcm38 分钟前
深入理解C++23的Deducing this特性(上):基础概念与语法详解