当前位置: 首页 > news >正文

一个干净的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 currentUserresult="失败"uname=input("请输入用户名:")upwd=input("请输入密码:")for user in usersList:if uname==user["用户名"] and upwd==user["密码"]:currentUser=userresult="成功"return result#显示菜品列表
def listAll():print("--编号----名称----价格----库存")for product in pruductsList:print("-"+product["编号"]+"----"+product["名称"]+"-----"+str(product["价格"])+"-----"+str(product["库存"]))#
def getOneByName():name = input("请输入要查询的菜品名称")exist=0print("--编号----名称----价格----库存")for product in pruductsList:if name==product["名称"]:exist=1print("-"+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=1pruductsList.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=1updata1=input("你要更新的是:1 价格 2 库存")updata2 = input("更新的值为:")if updata1=="1":product["价格"]=updata2elif updata1 == "2":product["库存"]=updata2print("---菜品"+product["名称"]+"已经更新成功")break  #菜品更新完之后不需要再循环菜品了了if exist==0:print("菜品不存在")choice=input("取消请按 1  重新输入请按 2 :")if choice=="1":breakelse:continueelse:  #不是0的时候,更新完了要退出更新break #外层循环停止#库存预警
def warning():exist=0print("一下菜品需要补充食材")print("--编号----名称----价格----库存")for product in pruductsList:if int(product["库存"]) < 10:exist=1print("-"+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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 华为 2024 届校园招聘-硬件通⽤/单板开发——第一套(部分题目分享,完整版带答案,共十套)
  • 游泳耳机哪个牌子好?四大爆款游泳耳机实测,优缺点秒懂!
  • flutter之image_picker上传图片
  • Memcached:单节点、集群案例;概念、工作原理
  • ubuntu 20.04系统安装pytorch
  • 阿里云发送短信功能(Java)
  • c++特殊类设计(重点单例模式)
  • Mysql客户端连接是报错:1045-Access denied for user
  • 方法的定义
  • Nuxt 入门实战 - 05:特性
  • vue项目中scss文件导出,js文件引入scss文件时为空{}
  • 代码随想录 -- 哈希表 -- 三数之和
  • Django 框架中F和Q的作用
  • 富格林:极力破除欺诈维护安全
  • 以太网PHY驱动调试笔记(KSZ8081)
  • 时间复杂度分析经典问题——最大子序列和
  • CentOS从零开始部署Nodejs项目
  • Invalidate和postInvalidate的区别
  • iOS 系统授权开发
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java小白进阶笔记(3)-初级面向对象
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MySQL的数据类型
  • Python socket服务器端、客户端传送信息
  • Python连接Oracle
  • Shadow DOM 内部构造及如何构建独立组件
  • SOFAMosn配置模型
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 聊聊hikari连接池的leakDetectionThreshold
  • 什么是Javascript函数节流?
  • 微服务核心架构梳理
  • 微信小程序设置上一页数据
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Maven错误Error executing Maven
  • #HarmonyOS:Web组件的使用
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Charles)如何抓取手机http的报文
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (备忘)Java Map 遍历
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (译)2019年前端性能优化清单 — 下篇
  • (转)memcache、redis缓存
  • (转)关于多人操作数据的处理策略
  • ***详解账号泄露:全球约1亿用户已泄露