python自动售货机

说明

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

主要功能

在这里插入图片描述

1.查询商品列表

在这里插入图片描述

2.购买商品

输入2进行购买商品,输入商品id和数量,可以选择不同商品,最后进行结账操作。
在这里插入图片描述

3.订单查询

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

在这里插入图片描述

时间条件查询:

时间条件查询

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("输入错误,请重新输入!")

结尾

治愈焦虑,一步一个脚印!

  • 5
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个简单的自动售货机程序,可以出售多种价格不同的货物: ```C #include <stdio.h> int main() { int balance = 0; int choice; int price; // 显示商品列表 printf("商品列表:\n"); printf("1. 饮料($2)\n"); printf("2. 零食($3)\n"); printf("3. 糖果($1)\n"); // 循环购买流程 while (1) { // 显示余额和操作选项 printf("当前余额:%d元\n", balance); printf("请选择操作:\n"); printf("1. 投币\n"); printf("2. 购买商品\n"); printf("3. 退款\n"); // 获取用户选择 scanf("%d", &choice); switch (choice) { case 1: // 投币 printf("请输入投币金额:"); int amount; scanf("%d", &amount); balance += amount; break; case 2: // 购买商品 printf("请输入商品编号:"); int id; scanf("%d", &id); switch (id) { case 1: price = 2; break; case 2: price = 3; break; case 3: price = 1; break; default: printf("商品编号错误!\n"); continue; } if (balance >= price) { balance -= price; printf("购买成功!\n"); } else { printf("余额不足,继续投币或退款?\n"); } break; case 3: // 退款 printf("退款%d元,欢迎再次光临!\n", balance); return 0; default: printf("输入错误,请重新输入!\n"); break; } } return 0; } ``` 该程序使用一个循环来模拟购买流程。在每次循环中,程序会显示当前余额和操作选项,然后等待用户输入选择。用户可以选择投币、购买商品或退款。 如果用户选择投币,则程序会要求用户输入投币金额,并将其加入余额中。 如果用户选择购买商品,则程序会要求用户输入商品编号,并根据编号确定商品价格。如果余额足够支付商品价格,则程序会从余额中扣除相应金额,并显示购买成功信息。如果余额不足,则程序会提示用户继续投币或退款。 如果用户选择退款,则程序会显示退款金额,并结束程序。 注意:这只是一个简单的示例程序,可能存在一些错误和不足之处,仅供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值