要求:
1)商品进货管理
2)商品销售管理
3)商品库存管理
4)商品统计查询
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,id,name):
self.id=id
self.name=name
self.allingoods=[]
self.alloutgoods=[]
self.allinvent={}
def ingoods(self, goods):
dict = {}
dict[goods.id] = goods
self.allingoods.append(dict)
if goods.id in self.allinvent.keys():
object = self.allinvent[goods.id]
object.price = (object.price * object.num + goods.price * goods.num) / (object.num + goods.num)
object.num = object.num + goods.num
self.allinvent[object.id] =object
return 1
inventgoods=Goods(goods.id,goods.name,goods.price,goods.num)
self.allinvent[inventgoods.id] = inventgoods
def mainmenu(self):
while True:
print("*"*8+self.name+"*"*8)
print("1. 购进 2. 销售")
print("3. 查询 0. 退出")
print("*"*22)
sele=int(input("请输入您的选择(0:退出):"))
if sele==0:
for k in self.allingoods:
for v in k.values():
print(v.name,v.price,v.num)
for v in self.allinvent.values():
print(v.name,v.price,v.num,sep=" ")
print("谢谢使用...")
return 1
elif sele==1:
id=input("请输入购进的商品ID:")
name=input("请输入购进的商品名称:")
price=float(input("请输入商品单价:"))
num=float(input("请输入商品数量:"))
goods = Goods(id,name, price,num) self.ingoods(goods)
给个例子:
'''
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
运行数据:
超市系统
请输入您的选择(0:退出):1
请输入进货信息(id,name,price,num):1,啤酒,10,100
请输入您的选择(0:退出):1
请输入进货信息(id,name,price,num):2,花生,1,100
请输入您的选择(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
请输入您的选择(0:退出):3
请输入您的选择(0:退出):3
请输入您的选择(0:退出):0
谢谢使用...
辛苦改了好久,麻烦有帮助请采纳,不要寒了大家的心,谢谢
class Goods(object):
def init(self, id, name, price, num):
self.id = id
self.name = name
self.price = price # 成本价格
self.num = num
class MySuperMarket(object):
def init(self, id, name):
self.id = id
self.name = name
self.allingoods = [] # 进货记录
self.alloutgoods = [] # 出货记录
self.allinvent = {} # 仓存
def ingoods(self, goods):
"""进货"""
dict = {}
dict[goods.id] = goods
self.allingoods.append(dict)
if goods.id in self.allinvent.keys():
object = self.allinvent[goods.id]
object.price = (object.price * object.num + goods.price * goods.num) / (object.num + goods.num)
object.num = object.num + goods.num
self.allinvent[object.id] = object
# return 1
# inventgoods = Goods(goods.id, goods.name, goods.price, goods.num)
else:
self.allinvent[goods.id] = goods
def getgoods(self, id):
"""查询"""
print(self.allinvent.get(id))
def outgoods(self, goods):
"""销售"""
if goods.id not in self.allinvent[goods.id]:
return False
object = self.allinvent[goods.id]
dict = {}
if object.num > goods.num:
object.price = (object.price * object.num - goods.price * goods.num) / (object.num - goods.num)
object.num = object.num - goods.num
self.allinvent[object.id] = object
dict[goods.id] = goods
self.alloutgoods.append(dict)
else:
self.allinvent.pop(object.id) # 移除
dict[goods.id] = object
self.alloutgoods.append(dict)
def mainmenu(self):
while True:
print("*" * 8 + self.name + "*" * 8)
print("1. 购进 2. 销售")
print("3. 查询 0. 退出")
print("*" * 22)
sele = int(input("请输入您的选择(0:退出):"))
if sele == 0:
for k in self.allingoods:
for v in k.values():
print(v.name, v.price, v.num)
for v in self.allinvent.values():
print(v.name, v.price, v.num, sep=" ")
print("谢谢使用...")
return 1
elif sele == 1:
id = input("请输入购进的商品ID:")
name = input("请输入购进的商品名称:")
price = float(input("请输入商品单价:"))
num = float(input("请输入商品数量:"))
goods = Goods(id, name, price, num)
self.ingoods(goods)
elif sele == 2:
id = input("请输入销售的商品ID:")
name = input("请输入销售的商品名称:")
price = float(input("请输入销售商品单价:"))
num = float(input("请输入销售商品数量:"))
goods = Goods(id, name, price, num)
self.outgoods(goods)
elif sele == 3:
id = input("请输入查询的商品ID:")
self.getgoods(id)
具体功能是什么?
你直接用sqlite这些都比较方便。