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

news/2024/9/18 1:52:09/ 标签: 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

http://www.ppmy.cn/news/1516995.html

相关文章

Python 爬虫框架

Python 中有许多强大且主流的爬虫框架&#xff0c;这些框架提供了更高级的功能&#xff0c;使得开发和维护爬虫变得更加容易。以下是一些常用的爬虫框架&#xff1a; 1. Scrapy - 简介: Scrapy 是 Python 最流行的爬虫框架之一&#xff0c;设计用于快速、高效地从网站中提取…

【Rust光年纪】文本分析利器:探索Rust语言的多功能文本处理库

从情感分析到关键词提取&#xff1a;Rust语言文本分析库详解 前言 随着自然语言处理技术的不断发展&#xff0c;对各种文本数据进行分析和处理的需求也在不断增加。本文将介绍一些用于Rust语言的文本分析和处理库&#xff0c;包括情感分析、自然语言处理、中文转换、语言检查…

SQL,给连续的行加上标识序号

postgresql 数据库的表 tmp 有 2 个分组字段&#xff0c;source_id 和 event_user&#xff0c;将该表按 source_id 分组&#xff0c;组内按 event_date 排序后&#xff0c;event_user 相同的值会形成有序的小组&#xff1a; idsource_idevent_userevent_date11A05-03-201421A0…

DSB调制与解调仿真实验

一、实验目的&#xff1a; 熟悉使用SystemView软件&#xff0c;了解各部分功能模块的操作和使用方法。 通过实验进一步观察、了解模拟信号DSB调制、解调原理。 掌握DSB调制信号的主要性能指标。 比较、理解DSB调制的相干解调原理。 二、实验器材&#xff1a; 装有SystemV…

spring security怎么生成JWT返回前端,以及怎么自定义JWT认证过滤器

怎么生成JWT返回前端 1.先写一个类,里面含有jwt的生成解析验证过期时间的方法 package com.lzy.util;import io.jsonwebtoken.*; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.…

黑神话悟空用什么编程语言

《黑神话&#xff1a;悟空》作为一款备受瞩目的国产单机动作游戏&#xff0c;其背后的开发涉及了多种编程语言和技术。根据公开信息和游戏开发行业的普遍做法&#xff0c;可以推测该游戏主要使用了以下几种编程语言&#xff1a; C&#xff1a; 核心编程语言&#xff1a;作为《黑…

从行为面试问题(behavioral questions)看中美程序员差异。

中美程序员在职场中的工作状态和职能、福利等有很大区别&#xff0c;从面试中的BQ轮就可见一斑。 中美程序员的面试轮差异&#xff1f; 国内的面试轮在不同公司间差异很大&#xff0c;但总体的问题类型包含笔试面试&#xff08;算法题、概念题、项目深挖、职业目标、职场文化…

【刷题笔记】leetCode448找到缺失的数

常规解法 public List<Integer> findDisappearedNumbers(int[] nums) {HashMap<Integer,Integer> numMap new HashMap<>();for (int i 0;i<nums.length;i){if (numMap.get(nums[i]) null){numMap.put(nums[i],i);}}List<Integer> result new A…

物联网关创业之路:从梦想到现实

在物联网大潮涌动的时代&#xff0c;李明看到了无限的机遇。他一直对科技充满热情&#xff0c;坚信物联网将改变人们的生活和工作方式。各类设备 IoT 的兴起&#xff0c;让他意识到一个强大的物联网关对于实现设备互联和数据传输的重要性。 李明决定投身于物联网关的设计开发创…

Apache Druid日志实时分析

业务分析 ​ 秒杀业务中&#xff0c;通常会有很多用户同时蜂拥而上去抢购热卖商品&#xff0c;经常会出现抢购人数远大于商品库存。其实在秒杀过程中&#xff0c;热卖商品并不多&#xff0c;几乎只占1%&#xff0c;而99%的流量都源自热卖商品&#xff0c;很有可能因为这1%的热…

Stream DATA From openai GPT-3 API using php

题意&#xff1a;“使用 PHP 从 OpenAI GPT-3 API 流式传输数据” 问题背景&#xff1a; Im having trouble with the OpenAI API, Basically what Im trying to do is stream each data node that is streamed back from the openai API response and output each data node …

综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型&#xff08;Matlab&#xff09; AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析…

Qt:玩转QPainter序列一

前言 最近想潜心研究一下QPainter这个类&#xff0c;最好把QPainter所有的函数都敲一遍&#xff0c;特地记录一下。 在说QPainter之前我们需要了解两个非常重要的东西 第一个坐标系 我用两张图来表示 代码实操的结果 更加详细的坐标系内容请看我的另一篇博客 第二个是有…

VCTP(Visual Chain-of-Thought Prompting for Knowledge-Based Visual Reasoning)论文

目录 摘要介绍相关工作方法总体模型细节 实验 摘要 知识型视觉推理仍然是一个艰巨的任务&#xff0c;因为它不仅要求机器从视觉场景中解释概念和关系&#xff0c;而且还需要将它们与外部世界知识联系起来&#xff0c;对开放世界问题进行推理链。然而&#xff0c;以前的工作将视…

【区块链 + 智慧文旅】鲜檬内容生态平台 | FISCO BCOS应用案例

基于鲜檬&#xff08;虎彩集团旗下的“鲜檬摄影有限公司”&#xff0c;简称鲜檬&#xff09;的业务规划&#xff0c;除了婚拍摄影外&#xff0c;以定制化家纺、 餐具、陶瓷品为主的产品诉求也日渐增加。为了支撑庞大的业务体量&#xff0c;设计能力的连接和整合迫在眉睫。同时&…

[C++番外] 抛异常

一、C语言的时候我们怎么判断错误的呢&#xff1f; C语言的错误处理机制&#xff1a; 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除0错误时就会终止程序。返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查…

如何下载jmeter旧版本

如何下载jmeter旧版本 推荐先用旧版本做好测试基本操作&#xff0c;因为高版本不适合做压力测试&#xff0c;需要证书&#xff0c;有点麻烦。 1.百度或直接打开jmeter官网&#xff1a;https://jmeter.apache.org/ 2.向下拖到Archives一栏&#xff0c;点击Apache Jmeter archi…

SpringCache源码解析(一)-Annotation

〇、常用注解 包地址注解名作用域作用org.springframework.cache.annotationCacheConfig类级别s设置缓存的公共配置Cacheable方法级别缓存读取操作CacheEvict方法级别缓存失效操作CachePut方法级别缓存更新操作Caching方法级别h混合读取、失效、更新操作CacheConfig方法级别统…

springboot-从0开始创建一个starter

创建一个Spring Boot Starter是一个很好的方式来封装常用的配置和依赖&#xff0c;以便在多个项目中重用。以下是一个简单的指南&#xff0c;教你如何开发一个自己的Spring Boot Starter。 一、创建步骤 1. 创建项目 首先&#xff0c;你需要创建一个Maven或Gradle项目。这里我…

QMT量化+通道快速,完美结合应对市场!

关注韭菜修养&#xff08;同名全拼音&#xff09;&#xff0c;投资道路我们一起成长&#xff01;第一&#xff1a;国内的量化交易软件众多&#xff0c;我们可以参考这几个维度①全内存极速交易&#xff1a;全内存交易&#xff0c;单笔延时&#xff1c;1ms满足量化高频交易客户对…