给个例子:
'''
1.进货管理:通过收银员输入商品ID、名称、进货价格、数量实现进货与库存变化管理。
2.销售管理:通过收银员输入商品ID、名称、销售价格、数量实现销售与库存变化管理。
3.库存管理:
(1)打印库存明细表
(2)根据商品ID,输出该商品库存详细信息
4.统计查询:
(1)根据进货商品ID,输出所有该商品进货详细信息
(2)根据销售商品ID,输出所有该商品销售详细信息
(3)打印销售明细,并统计销售总金额
'''
class Goods:
def __init__(self,id,name,price,num):
self.id=id
self.name=name
self.price=price
self.num=num
class MySuperMarket:
def __init__(self,name):
self.name=name
self.all_store = {}
self.all_in_goods={}
self.all_out_goods={}
def in_goods(self, good):
id = good.id
if id in self.all_store.keys():
self.all_store[id].num += good.num
else:
self.all_store[id] = good
if id in self.all_in_goods.keys():
self.all_in_goods[id].append({'id':good.id,'name':good.name,'price':good.price,'num':good.num})
else:
self.all_in_goods[id] = [{'id':good.id,'name':good.name,'price':good.price,'num':good.num}]
def out_goods(self, lst):
for good in lst:
self.all_store[good.id].num -= good.num
if id in self.all_out_goods.keys():
self.all_out_goods[good.id].append({'id':good.id,'name':good.name,'price':good.price,'num':good.num})
else:
self.all_out_goods[good.id] = [{'id':good.id,'name':good.name,'price':good.price,'num':good.num}]
def show_store(self):
print("="*8+'打印库存明细表'+"="*8)
for v in self.all_store.values():
if v.num>0:
print(f'ID:{v.id}, 名称:{v.name} 进货价格:{v.price}, 数量:{v.num}')
def show_store_by_id(self,id):
print("="*8+'打印商品'+id+'的库存详细信息'+"="*8)
if id in self.all_store.keys():
v = self.all_store[id]
print(f'ID:{v.id}, 名称:{v.name} 进货价格:{v.price}, 数量:{v.num}')
def show_in_goods_by_id(self, id):
print("="*8+'打印商品'+id+'的进货详细信息'+"="*8)
if id in self.all_in_goods.keys():
lst = self.all_in_goods[id]
for v in lst:
print(f'ID:{v["id"]}, 名称:{v["name"]} 进货价格:{v["price"]}, 数量:{v["num"]}')
def show_out_goods_by_id(self, id):
print("="*8+'打印商品'+id+'的销售详细信息'+"="*8)
if id in self.all_out_goods.keys():
lst = self.all_out_goods[id]
for v in lst:
print(f'ID:{v["id"]}, 名称:{v["name"]} 销售价格:{v["price"]}, 数量:{v["num"]}')
def show_out_goods(self,lst):
print("="*8+'打印销售明细,并统计销售总金额'+"="*8)
sum = 0
for v in lst:
print(f'ID:{v.id}, 名称:{v.name} 销售价格:{v.price}, 数量:{v.num}')
sum+=v.price*v.num
print(f'订单总价:{sum}')
def mainmenu(self):
print("*"*8+self.name+"*"*8)
while True:
print('*'*22)
print("1. 购进 2. 销售")
print("3. 查询 0. 退出")
print("*"*22)
select=int(input("请输入您的选择(0:退出):"))
if select==0:
print("谢谢使用...")
break
elif select==1:
[id,name,price,num] = input("请输入进货信息(id,name,price,num):").split(',')
goods = Goods(id,name,float(price),int(num))
self.in_goods(goods)
elif select==2:
lst = []
while True:
info = input("请输入销售信息(id,name,price,num),输入#结束:")
if info=='#':
break
else:
[id,name,price,num] = info.split(',')
if id in self.all_store.keys():
if self.all_store[id].num>=int(num):
good = Goods(id,name,float(price),int(num))
lst.append(good)
else:
print('库存不足')
else:
print('这个商品没有库存')
self.out_goods(lst)
self.show_out_goods(lst)
elif select==3:
print("1. 打印库存明细表")
print("2. 根据商品ID,输出该商品库存详细信息")
print("3. 根据商品ID,输出所有该商品进货详细信息")
print("4. 根据商品ID,输出所有该商品销售详细信息")
s1 = input('请输入选择:')
if s1=='1':
self.show_store()
else:
id = input('请输入商品ID:')
if s1=='2':
self.show_store_by_id(id)
elif s1=='3':
self.show_in_goods_by_id(id)
elif s1=='4':
self.show_out_goods_by_id(id)
if __name__=='__main__':
mm = MySuperMarket('超市系统')
mm.mainmenu()
测试数据:
1
1,啤酒,10,100
1
2,花生,1,100
2
1,啤酒,20,10
2,花生,1.5,10
#
3
1
3
2
1
3
3
1
3
4
1
0
运行数据:
超市系统
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):1
请输入进货信息(id,name,price,num):1,啤酒,10,100
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):1
请输入进货信息(id,name,price,num):2,花生,1,100
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):2
请输入销售信息(id,name,price,num),输入#结束:1,啤酒,20,10
请输入销售信息(id,name,price,num),输入#结束:2,花生,1.5,10
请输入销售信息(id,name,price,num),输入#结束:#
========打印销售明细,并统计销售总金额========
ID:1, 名称:啤酒 销售价格:20.0, 数量:10
ID:2, 名称:花生 销售价格:1.5, 数量:10
订单总价:215.0
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):3
- 打印库存明细表
- 根据商品ID,输出该商品库存详细信息
- 根据商品ID,输出所有该商品进货详细信息
- 根据商品ID,输出所有该商品销售详细信息
请输入选择:1
========打印库存明细表========
ID:1, 名称:啤酒 进货价格:10.0, 数量:90
ID:2, 名称:花生 进货价格:1.0, 数量:90
- 根据商品ID,输出该商品库存详细信息
- 根据商品ID,输出所有该商品进货详细信息
- 根据商品ID,输出所有该商品销售详细信息
请输入选择:3
请输入商品ID:1
========打印商品1的进货详细信息========
ID:1, 名称:啤酒 进货价格:10.0, 数量:100
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):3
- 打印库存明细表
- 根据商品ID,输出该商品库存详细信息
- 根据商品ID,输出所有该商品进货详细信息
- 根据商品ID,输出所有该商品销售详细信息
请输入选择:4
请输入商品ID:1
========打印商品1的销售详细信息========
ID:1, 名称:啤酒 销售价格:20.0, 数量:10
- 购进 2. 销售
- 查询 0. 退出
请输入您的选择(0:退出):0
谢谢使用...