在工作中,经常会需要对出入库数据进行管理,网上有许多案例,大多复杂难懂,今天笔者试着用 python 编写了一段简单的小程序,希望能对 python 的入门学习起到很好的借鉴作用。
一、整体思路
1、录入入库数据
2、录入出库数据
3、显示库存数据
4、对数据进行增、删、改、查
二、效果如下
1、功能菜单
2、录入入库数据
3、查询入库信息
4、录入出库信息
5、查询出库明细
6、显示库存信息
其他功能不再一一演示。
三、代码如下:
def initial():
try:
with open("warehouse_list.txt", "r+") as f:
for product in f.readlines():
warehouse_list.append(eval(product))
print("read warehouse_list information successfully")
except Exception as e:
print(e)
with open("warehouse_list.txt", "w+") as f:
for product in f.readlines():
warehouse_list.append(eval(product))
print("rewrite warehouse_list file successfully")
with open("stockIn_sum.txt", "r+") as f:
for product in f.readlines():
stockIn_sum.append(eval(product))
print("read stockIn_sum file information successfully")
with open("delivery_list.txt", "r+") as f:
for product in f.readlines():
delivery_list.append(eval(product))
print("read delivery_list information successfully")
with open("stockOut_sum.txt", "r+") as f:
for product in f.readlines():
stockOut_sum.append(eval(product))
print("read stockOut_sum file information successfully")
def stock_in(lists1):
print('商品录入')
date = datetime.date.today()
product_name = str(input('请输入商品名称:'))
description = str(input('请输入商品描述:'))
price = float(input('请输入商品单价:'))
qty = int(input('请输入商品数量:'))
amount = float(price) * qty
s1 = {'date': date.isoformat(), 'product': product_name, 'description': description, 'price': price, 'qty': qty,
'amount': amount}
list_in.append(s1)
write_to_warehouse_list(list_in)
for li in lists1:
if li['product'] == product_name and li['description'] == description:
if price:
li['price'] = float(price)
if qty:
li['qty'] += qty
li['amount'] = li['qty'] * li['price']
break
else:
s = {'date': date.isoformat(), 'product': product_name, 'description': description, 'price': price, 'qty': qty,
'amount': amount}
lists1.append(s)
write_to_stockIn_sum(lists1)
def write_to_warehouse_list(lists):
try:
with open("warehouse_list.txt", "r+") as ff:
for li in lists:
ff.write(str(li) + "
")
except Exception as er:
print(er)
with open("warehouse_list.txt", "w+") as ff:
for li in lists:
ff.write(str(li) + "
")
def write_to_stockIn_sum(lists):
try:
with open("stockIn_sum.txt", "r+") as ff:
for li in lists:
ff.write(str(li) + "
")
except Exception as er:
print(er)
with open("stockIn_sum.txt", "w+") as ff:
for li in lists:
ff.write(str(li) + "
")
def write_to_delivery_list(lists):
try:
with open("delivery_list.txt", "r+") as ff:
for li in lists:
ff.write(str(li) + "
")
except Exception as er:
print(er)
with open("delivery_list.txt", "w+") as ff:
for li in lists:
ff.write(str(li) + "
")
def write_to_stockOut_sum(lists):
try:
with open("stockOut_sum.txt", "r+") as ff:
for li in lists:
ff.write(str(li) + "
")
except Exception as er:
print(er)
with open("stockOut_sum.txt", "w+") as ff:
for li in lists:
ff.write(str(li) + "
")
def display_stockIn_info(lists): # 显示商品入库信息
print('全部商品入库信息')
print(f'{"date":<30}{"product":<10}{"description":<20}{"price":<10}{"qty":<10}{"amount":<10}')
for li in lists:
print(f'{li["date"]:<30}{li["product"]:<10}{li["description"]:<20}{li["price"]:<10}{li["qty"]:<10}'
f'{li["amount"]:<10}')
def display_stockOut_info(lists): # 显示商品出库信息
print('全部商品出库明细')
print(f'{"date":<10}{"product":<10}{"description":<20}{"price":<10}{"qty":<10}{"amount":<10}')
for li in lists:
print(f'{li["date"]:<12}{li["product"]:<10}{li["description"]:<20}{li["price"]:<10}{li["qty"]:<10}'
f'{li["amount"]:<30}')
def find(lists):
print('查找商品')
product_name = input('请输入你要查找的商品名称:')
for li in lists:
if product_name == li['product']:
print(f'{"product":<10}{"description":<20}{"price":<10}{"qty":<10}{"amount":<10}')
print(f'{li["product"]:<10}{li["description"]:<20}{li["price"]:<10}{li["qty"]:<10}{li["amount"]:<10}')
break
else:
print('该商品不存在, 请检查商品名称是否正确!')
def delete(lists):
print('删除商品信息')
product_name = input('请输入你要删除商品名称:')
for li in lists:
if product_name == li['product']:
lists.remove(li)
break
else:
print('该商品不存在, 请检查商品名称是否正确!')
write_to_warehouse_list(lists)
print("Delete successfully")
def modify(lists):
print('修改商品信息')
product_name = input('请输入你要修改的商品名称:')
for li in lists:
if product_name == li['product']:
print('(如果不想修改,直接回车!)')
product_name = input('请重新输入商品名称:')
description = str(input('请输入商品描述:'))
price = input('请重新输入商品价格:')
qty = input('请重新输入商品数量:')
if product_name:
li['product'] = str(product_name)
if description:
li['description'] = str(description)
if price:
li['price'] = float(price)
if qty:
li['qty'] = int(qty)
li['amount'] = li['price'] * li['qty']
break
else:
print('该商品不存在, 请检查商品名称是否正确!')
write_to_warehouse_list(lists)
print('modify successfully')
def stock_out(lists):
print('商品出库')
date = datetime.date.today()
product_name = input('请输入出库的商品名称:')
description = str(input('请输入商品描述:'))
price = float(input('请输入商品单价:'))
qty = int(input('请输入商品数量:'))
amount = float(price) * qty
s2 = {'date': date.isoformat(), 'product': product_name, 'description': description, 'price': price, 'qty': qty,
'amount': amount}
list_out.append(s2)
write_to_delivery_list(list_out)
for li in lists:
if product_name == li['product'] and li['description'] == description:
if price:
li['price'] = float(price)
if qty:
li['qty'] += qty
li['amount'] = li['qty'] * li['price']
break
else:
s = {'date': date.isoformat(), 'product': product_name, 'description': description, 'price': price, 'qty': qty,
'amount': amount}
lists.append(s)
write_to_stockOut_sum(lists)
def stock(in_sum, out_sum):
left = []
for sin in in_sum:
for sout in out_sum:
if sin['product'] == sout['product'] and sin['description'] == sout['description']:
product = sin['product']
description = sin['description']
price = sin['price']
in_qty = sin['qty']
out_qty = sout['qty']
qty = sin['qty']-sout['qty']
amount = price*qty
s3 = {'product': product, 'description': description, 'price': price, 'in_qty': in_qty,
'out_qty': out_qty, 'qty': qty, 'amount': amount}
left.append(s3)
print("商品库存信息")
print(f'{"product":<10}{"description":<20}{"price":<10}{"in_qty":<10}{"out_qty":<10}{"qty":<10}{"amount":<10}')
for ls in left:
print(f'{ls["product"]:<10}{ls["description"]:<20}{ls["price"]:<10}{ls["in_qty"]:<10}{ls["out_qty"]:<10}'
f'{ls["qty"]:<10}{ls["amount"]:<10}')
if __name__ == "__main__":
import datetime
info = """
【欢迎使用商品信息管理系统 1.0】
*****************************************************
q. 退出商品信息管理系统
1. 查看商品入库信息
2. 查看商品出库信息
3. 新增商品入库
4. 新增商品出库
5. 删除商品信息
6. 修改商品信息
7. 查找商品信息
8. 显示入库明细
9. 显示出库明细
10. 显示商品库存
******************************************************"""
warehouse_list = []
stockIn_sum = []
delivery_list = []
stockOut_sum = []
list_in = []
list_out = []
initial() # 初始化文件
while True:
print(info)
handle = input('请选择操作项目:')
if handle == 'q':
print('q. 退出系统')
break
elif handle == '1':
display_stockIn_info(stockIn_sum)
elif handle == '2':
display_stockOut_info(stockOut_sum)
elif handle == '3':
stock_in(warehouse_list)
elif handle == '4':
stock_out(delivery_list)
elif handle == '5':
delete(warehouse_list)
elif handle == '6':
modify(warehouse_list)
elif handle == '7':
find(warehouse_list)
elif handle == '8':
display_stockIn_info(warehouse_list)
elif handle == '9':
display_stockOut_info(delivery_list)
elif handle == '10':
stock(stockIn_sum, stockOut_sum)
else:
print('Input error!,请重新输入正确的操作项目!')
页面更新:2024-04-03
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号