python自动售货机

这篇具有很好参考价值的文章主要介绍了python自动售货机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

分享python实现自动售货一个小作业

主要功能

python自动售货机

1.查询商品列表

python自动售货机

2.购买商品

输入2进行购买商品,输入商品id和数量,可以选择不同商品,最后进行结账操作。
python自动售货机

3.订单查询

可以有两种查询方式,全部查询和按时间条件查询
具体操作如下:
全部查询:

python自动售货机

时间条件查询:

python自动售货机

4.退出

就按4直接退出23333

实现思路

其实就是参考路边的自动售货机贩卖饮料啥的,也有借鉴其他人的代码。改进的地方在于购买商品功能,能选择不同商品和数量,最后再结账。

定义了商品类、订单类
一开始初始化商品的数据

完整代码块

import time
print('欢迎光临')



class Products:
    #商品类 定义名字、价格和存货数量
    def __init__(self, name, price, surplus_count):
        self.name = name
        self.price = price
        self.surplus_count = surplus_count

class Order:
    #订单类 包括购买物品名称、价格和时间 购买数量
    def __init__(self, name, price, buy_time,buy_count):
        self.name = name
        self.price = price
        self.buy_time = buy_time
        self.buy_count = buy_count

#字符串时间对比
def compare_time(time1,time2):
    s_time = time.mktime(time.strptime(time1,'%Y-%m-%d %H:%M:%S'))
    e_time = time.mktime(time.strptime(time2,'%Y-%m-%d %H:%M:%S'))
    return int(s_time) - int(e_time)

#全局变量 商品列表
products_list = [
    Products("乐事薯片", 5, 5),
    Products("卫龙辣条", 3, 6),
    Products("可乐", 3, 2),
    Products("橙汁", 4, 5),
    Products("波力海苔", 6, 0),
]

#订单list 存放订单数据
order_list = []

#打印商品列表
def show_products_list():
    print("序号\t\t商品名称\t\t价格\t\t存货数量")
    i = 1
    for products in products_list:
        print("%d\t\t%s\t\t%s\t\t%s" % (i, products.name, products.price,products.surplus_count))
        i += 1


#购买商品
def buy_products():
    buy_obj = {}
    while(True):
        op = input("1.购买商品 2.结账 3.退出 \n")
        if op == "1":
            products_id = int(input("请输入需要购买商品的序号:\n")) - 1
            if products_id > len(products_list) or products_id < 0:
                print("error!请输入正确的序号!")
            else:
                products = products_list[products_id]
                if products.surplus_count > 0:
                    buy_count = int(input("请输入购买数量:"))

                    #限制库存提示
                    if buy_count> products.surplus_count:
                        print("库存不足,请提醒补货!")
                    else:
                        buy_obj[products_id] = buy_count;
                else:
                    print("库存不足,请提醒补货!")
        elif op == "2":
            need_pay_money = 0;
            for products_id in buy_obj.keys():
                buy_count = buy_obj[products_id]
                products = products_list[products_id]
                need_pay_money += products.price * buy_count;

            if need_pay_money<=0:
                return ;

            print ("您购买了:")
            print("商品名\t\t商品价格\t\t购买数量")
            for products_id in buy_obj.keys():
                buy_count = buy_obj[products_id]
                products = products_list[products_id]
                print("%s\t\t%s\t\t%s\n" % (
                    products.name, products.price, buy_count))

            print ("需要支付金额:\t",need_pay_money)
            money = float(input("请输入支付金额:\n"))

            if money >= need_pay_money:

                #减库存
                for products_id in buy_obj.keys():
                    buy_count = buy_obj[products_id]
                    products = products_list[products_id]
                    products.surplus_count = products.surplus_count - buy_count
                    products_list[products_id] = products
                    #生成订单
                    timeArray = time.localtime(int(time.time()))
                    order_list.append(Order(products.name, products.price * buy_count, time.strftime("%Y-%m-%d %H:%M:%S", timeArray),buy_count))
                #清空
                buy_obj.clear()

                #大于0才提示找零
                if money - need_pay_money >0:
                    print("购买成功:找回%.2f元!" % (money - need_pay_money))
                else:
                    print("购买成功!")
                break;

            else:
                print("支付金额不足!")
        elif op == "3":
            break;

#打印订单列表
def show_order_list():
    is_query_all = int(input("请选择查询方式  1.查询全部销量 2.按时间查询销量\n"))

    query_order_list = []

    if is_query_all  == 2:

        time_str = time.localtime(int(time.time()))
        now_time = time.strftime("%Y-%m-%d %H:%M:%S", time_str)

        start_time = input("请输入开始时间 例如:"+now_time+"\n")
        end_time = input("请输入结束时间 例如:"+now_time+"\n")
        for order in order_list:
            compare_num1 = compare_time(order.buy_time,start_time)
            compare_num2 = compare_time(order.buy_time,end_time)
            if compare_num1>=0 and compare_num2<=0:
                query_order_list.append(order)
        i = 1;
        print("序号\t\t商品名\t\t支付金额\t\t购买数量\t\t购买时间")
        for order in query_order_list:
            print("%d\t\t%s\t\t%s\t\t%s\t\t%s" % (
                i, order.name, order.price,order.buy_count,order.buy_time))
            i += 1
    elif is_query_all  == 1:
        i = 1
        print("序号\t\t商品名\t\t支付金额\t\t购买数量\t\t购买时间")
        for order in order_list:
            print("%d\t\t%s\t\t%s\t\t%s\t\t%s" % (
                i, order.name, order.price,order.buy_count,order.buy_time))
            i += 1



if __name__ == '__main__':
    while(True):
        n = input("请输入相应数字:1.查询商品列表 2.购买商品  3.销售查询------打印销售明细  4.退出\n")
        if n == "1":
            #显示商品列表方法
            show_products_list();
        elif n == "2":
            #购买商品
            buy_products();
        elif n == "3":
            #显示订单列表
            show_order_list();
        elif n == "4":
            print("已退出,欢迎下次光顾!")
            break
        else:
            print("输入错误,请重新输入!")

结尾

治愈焦虑,一步一个脚印!文章来源地址https://www.toymoban.com/news/detail-503492.html

到了这里,关于python自动售货机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动售货机控制系统的FPGA设计与实现

            采用VHDL语言设计一个自动售货机控制系统,要求能在MaxPlus Ⅱ软件平台进行仿真模拟,技术指标如下: 1)有2元、3元、8元商品;有1元、5元、10元钱币; 2)当投入的总币值大于顾客购买的商品单价时,机器提供商品并将余币退出,回到初始状态;若投入的总币值小

    2024年02月06日
    浏览(33)
  • stm32毕设 自动售货机设计与实现(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月08日
    浏览(30)
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月08日
    浏览(53)
  • 基于FPGA的自动售货机

    目录 一、项目功能 二、设计思路 按键实现: 数码管 蜂鸣器 LED灯 三、流程图 四、代码实现 1、按键消抖  key_debounce.v  2、LED状态选择  led_drive.v 3、蜂鸣器模块   beep_drive.v 4、数码管位选信号选择  sel_drive.v 5、数码管段选信号选择     seg_drive.v 6、售货机按键选择处理

    2024年02月06日
    浏览(23)
  • 【FPGA入门八】自动售货机

    功能完整描述: KEY4:开关机按键,复位时,默认是关机状态,数码管和LED灯均不亮,同时蜂鸣器响,其余按键按下无效。 KEY3:在开机状态时,投币1元 KEY2:在开机状态时,投币为0.5元 KEY1:当投币但少于货物的价格时,取消订单,数码管显示为0.0,同时LED灯实现跑马灯2s然

    2024年02月08日
    浏览(27)
  • 如何用Java设计自动售货机?

    如何用Java设计自动售货机?是大多在高级Java开发人员面试中经常被问到的好问题之一。在典型的编码面试中,你会得到一个问题描述来开发一个售货机,在有限的时间内,通常2到3小时内,你需要在Java中编写设计文档、工作代码和单元测试。这种Java面试的一个关键优势是可以一次

    2024年02月05日
    浏览(85)
  • 自动售货机销售数据分析与应用

    本书不仅适用于零基础的读者自学,还适用于教师教学,为了帮助读者更加高效地掌握本书的内容,本书提供了以下10项附加价值: (1)建模平台:提供一站式大数据挖掘建模平台,免配置,包含大量案例工程,边练边学,告别纸上谈兵 (2)视频讲解:提供不少于600分钟

    2024年02月08日
    浏览(31)
  • Verilog设计实例(一):自动售货机设计实例

    本系列为FPGA设计实例,基于Verilog HDL,题目一般是我在网上看到的一些FPGA相关的实验题目,基本会是一个实际场景的系统实现,而不是简单单元的设计,这是为了能更全面的练习,这些实例一般是可以基于FPGA进行实现的,因为正好手里有一块zynq板子,所以想把这个东西用起

    2024年02月05日
    浏览(25)
  • 基于单片机的自动售货机系统设计

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式   本文设计基于单片机的自动售货机系统,分为硬件电路设计与软件设计。硬件电路设计,本系统由ST(意法半导体)公司设计和生产的STM32F103C8T6单片

    2024年02月03日
    浏览(32)
  • VIVADO自动售票机售货机verilog代码ego1开发板验证

    名称:VIVADO自动售票机售货机verilog代码ego1开发板验证 软件:VIVADO 语言:Verilog 代码功能: 自动售票机  1、自动售票机只出售1角、2角、5角和1元4种车票 2、只接收1角、5角和1元硬币,每次只能出售1张车  3、自动售票机具有累加销售额的功能 实验要求  出售车票用SW0~3分别

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包