新建一个完善的库存管理系统,记录入库信息,出库信息,查询库存余量,
时间: 2023-09-28 21:11:58 浏览: 196
库存管理系统-UML设计与实现
4星 · 用户满意度95%
好的,一个库存管理系统通常包含以下几个部分:
1. 入库管理:记录物品的入库信息,包括入库时间、数量、价格、供应商等。
2. 出库管理:记录物品的出库信息,包括出库时间、数量、价格、客户等。
3. 库存查询:查询某种物品的库存余量、平均价格、库龄等相关信息。
下面我将逐步介绍每个部分的实现。
## 入库管理
我们可以创建一个名为 `StockIn` 的类来管理入库信息,包括以下属性:
- `product_name`:物品名称
- `product_id`:物品编号
- `supplier`:供应商
- `quantity`:入库数量
- `price`:入库单价
- `date`:入库日期
我们可以使用数据库(如MySQL)来存储这些信息,也可以使用文件(如CSV)来存储。这里我使用了CSV文件来存储入库信息。
```python
import csv
from datetime import datetime
class StockIn:
def __init__(self, product_name, product_id, supplier, quantity, price):
self.product_name = product_name
self.product_id = product_id
self.supplier = supplier
self.quantity = quantity
self.price = price
self.date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def add_stock_in(self):
with open('stock_in.csv', mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([self.product_name, self.product_id, self.supplier, self.quantity, self.price, self.date])
```
上面的代码中,`add_stock_in` 方法用于将入库信息写入到CSV文件中。
## 出库管理
同样,我们可以创建一个名为 `StockOut` 的类来管理出库信息,包括以下属性:
- `product_name`:物品名称
- `product_id`:物品编号
- `customer`:客户
- `quantity`:出库数量
- `price`:出库单价
- `date`:出库日期
```python
class StockOut:
def __init__(self, product_name, product_id, customer, quantity, price):
self.product_name = product_name
self.product_id = product_id
self.customer = customer
self.quantity = quantity
self.price = price
self.date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def add_stock_out(self):
with open('stock_out.csv', mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([self.product_name, self.product_id, self.customer, self.quantity, self.price, self.date])
```
同样,`add_stock_out` 方法用于将出库信息写入到CSV文件中。
## 库存查询
我们可以创建一个名为 `Stock` 的类来查询库存信息,包括以下属性:
- `product_name`:物品名称
- `product_id`:物品编号
- `quantity`:库存数量
- `average_price`:平均价格
- `days_in_stock`:库龄(即距离上次入库的天数)
```python
from collections import defaultdict
class Stock:
def __init__(self):
self.stock_in = defaultdict(list)
self.stock_out = defaultdict(list)
self.stock = {}
def load_data(self):
with open('stock_in.csv') as file:
reader = csv.reader(file)
for row in reader:
self.stock_in[row[0]].append(float(row[4]))
with open('stock_out.csv') as file:
reader = csv.reader(file)
for row in reader:
self.stock_out[row[0]].append(float(row[4]))
def calculate_stock(self):
for product_name, prices in self.stock_in.items():
total_quantity = sum([len(prices) - len(self.stock_out[product_name]) for prices in [self.stock_in[product_name], self.stock_out[product_name]]])
total_price = sum(prices) - sum(self.stock_out[product_name])
average_price = total_price / total_quantity if total_quantity > 0 else 0
days_in_stock = (datetime.now() - datetime.strptime(max(self.stock_in[product_name]), '%Y-%m-%d %H:%M:%S')).days
self.stock[product_name] = {'product_id': 'TODO', 'quantity': total_quantity, 'average_price': average_price, 'days_in_stock': days_in_stock}
```
上面的代码中,`load_data` 方法用于从CSV文件中加载入库和出库信息,`calculate_stock` 方法用于计算库存信息,包括库存数量、平均价格和库龄。
现在我们可以使用这个库存管理系统来记录入库信息、出库信息和查询库存余量了。例如:
```python
# 记录入库信息
stock_in = StockIn('苹果', 'P001', '供应商A', 100, 5.0)
stock_in.add_stock_in()
# 记录出库信息
stock_out = StockOut('苹果', 'P001', '客户A', 50, 6.0)
stock_out.add_stock_out()
# 查询库存余量
stock = Stock()
stock.load_data()
stock.calculate_stock()
print(stock.stock['苹果'])
```
阅读全文