一个干净的python项目(没连数据库啥的)

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