繁体   English   中英

我想使用类和数据结构创建一个简单的库存管理系统。 我是 python 中 OOP 的新手

[英]I want to create a simple inventory management system using classes and data structures. I am new to OOP in python

代码应捕获库存产品(即名称、价格、供应日期、供应商名称、数量),检索每次购买时给出名称时的价格并扣除库存数量,计算每次购买的总价格并打印指示值购买日期和时间,当数量达到5时向店主发送警报,并向供应商下订单。

我的代码现在没有循环,因此我可以添加许多产品然后能够访问它们,我尝试使用 while 循环,但它会永远运行。 请帮助

import datetime
class Stock:
    def __init__(self, name, price, supplier, quantity,date):
        self.name = name
        self.price = price
        self.date = date
        self.supplier = supplier
        self. quantity = quantity

    def check_item(self, name):
        for i in range(len(ls)):
            if (ls[i].name == name):
                return i

    def sale(self):
        n = int(input("How many products to sale: "))
        total = 0
        for j in range(n):
            name = input("Enter Product name : ")
            quantity = int(input("Enter quantity: "))
            i = obj.check_item(name)
            if i and ls[i].quantity >= quantity:
                ls[i].quantity -= quantity
                if ls[i].quantity < 5:
                    print("Low Stock! Low Stock! Order Placed")
                    obj.place_order(name, ls[i].supplier, quantity+10)
                print("....Uncle G Shop....")
                print(datetime.date.today())
                print("Product Name  | Quantity  | Cost $")
                print(ls[i].name, end=" ")
                print(quantity, end=" ")
                print(ls[i].price * quantity)
                total += ls[i].price * quantity
                print("\n")
                print("Total Cost----->", "$" + total)
            else:
                print("Product out of stock or not enough quantity")


    def purchase(self):
        name = input("Enter Product name: ")
        date = datetime.date.today()
        i = obj.check_item(name)
        if i:
            ls[i].quantity += int(input("Enter quantity: "))
            ls[i].price = int(input("Enter product price: "))
            ls[i].date = date
        else:
            quantity = int(input("Enter quantity: "))
            price = int(input("Enter product price: "))
            supplier = input("Enter Supplier: ")
            ob = Stock(name, price, supplier, quantity, date)
            ls.append(ob)


    def place_order(self,name, supplier, quantity):
        return name, supplier, quantity

    def print_products(self):
        def __repr__(self):
            return str(self.name) + str(self.price) + str(supplier) + str(self.quantity) + str(self.date)
        return __repr__

    def main(self):
        print("Welcome To Uncle G Shop")
        print("choose an option below")
        print("\n1.Enter a Product\n2.Make a sale \n3.See all Products\n4.Exit")
        option = int(input("Enter option here: "))
        while True:
                

            if option == 1:
                obj.purchase()
            elif option == 2:
                obj.sale()
            elif option == 3:
                obj.print_products()
            elif option == 4:
                print("Have a good day")
                break
            else:
                print("Enter a valid input!")
# A list to add Products
ls = []

# an object of Stock class
obj = Stock('', 0, 0, 0, '')
obj.main()

您的main菜单没有break选项 4 的while循环。

您还需要重新考虑如何使用您的 class。 目前,您有多种方法引用在 class 之外创建的变量ls 要么将Stock视为 class 来处理个人购买记录,要么将整体处理库存。 您可以在 class 本身中维护 class 的实例list ,并提供 class 方法以及实例方法来管理整个库存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM