m0_71859737 2022-06-11 23:14 采纳率: 100%
浏览 96
已结题

请帮我完善这个超市POS系统

要求:
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)
  • 写回答

4条回答 默认 最新

  • 溪风沐雪 2022-06-12 12:33
    关注

    给个例子:

    '''
    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
    运行数据:
    超市系统


    1. 购进 2. 销售
    2. 查询 0. 退出

    请输入您的选择(0:退出):1
    请输入进货信息(id,name,price,num):1,啤酒,10,100


    1. 购进 2. 销售
    2. 查询 0. 退出

    请输入您的选择(0:退出):1
    请输入进货信息(id,name,price,num):2,花生,1,100


    1. 购进 2. 销售
    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


    1. 购进 2. 销售
    2. 查询 0. 退出

    请输入您的选择(0:退出):3

    1. 打印库存明细表
    2. 根据商品ID,输出该商品库存详细信息
    3. 根据商品ID,输出所有该商品进货详细信息
    4. 根据商品ID,输出所有该商品销售详细信息
      请输入选择:1
      ========打印库存明细表========
      ID:1, 名称:啤酒 进货价格:10.0, 数量:90
      ID:2, 名称:花生 进货价格:1.0, 数量:90

    1. 根据商品ID,输出该商品库存详细信息
    2. 根据商品ID,输出所有该商品进货详细信息
    3. 根据商品ID,输出所有该商品销售详细信息
      请输入选择:3
      请输入商品ID:1
      ========打印商品1的进货详细信息========
      ID:1, 名称:啤酒 进货价格:10.0, 数量:100

    1. 购进 2. 销售
    2. 查询 0. 退出

    请输入您的选择(0:退出):3

    1. 打印库存明细表
    2. 根据商品ID,输出该商品库存详细信息
    3. 根据商品ID,输出所有该商品进货详细信息
    4. 根据商品ID,输出所有该商品销售详细信息
      请输入选择:4
      请输入商品ID:1
      ========打印商品1的销售详细信息========
      ID:1, 名称:啤酒 销售价格:20.0, 数量:10

    1. 购进 2. 销售
    2. 查询 0. 退出

    请输入您的选择(0:退出):0
    谢谢使用...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月22日
  • 已采纳回答 6月14日
  • 创建了问题 6月11日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大