python基础:超市管理系统

python基础:超市管理系统

一、实验题目

python基础:超市管理系统

二、实验内容简介

1、分别设计三个类,已售出类,库存类,管理商品类。
2、在管理商品类中通过两个列表分别保存已售出和库存信息。
3、之后通过Menu菜单调用要求的7个功能,其中修改、删除、卖出功能调用时,需要一个先调用check()函数判断是否存在该商品
4、库存类属性:名称,数量,进货价,零售价
功能  __str__
5、已售出类属性: 名称,数量,进货价,零售价
功能  __str__
6、商品管理类属性: 库存列表,已售出列表
7、商品管理类功能:
  1.显示所有商品
  2.添加新的商品
  3.修改商品信息
  4.删除商品
  5.卖出商品
  6.汇总
  -1.退出

三、实验过程  

1. 代码

# 定义库存类

class Goods(object):

    def __init__(self, name, num, primecost, sellingprice):

        self.name = name

        self.num = num

        self.primecost = primecost

        self.sellingprice = sellingprice

    def __str__(self):

        state = "已售罄"

        if self.num == 0:

            return '名称:%s,数量:%d %s,进货价格:%.2f,售出价格:%.2f' % (self.name, self.num, state, self.primecost, self.sellingprice)

        else:

            return '名称:%s,数量:%d,进货价格:%.2f,售出价格:%.2f' % (self.name, self.num, self.primecost, self.sellingprice)

# 定义已售出类

class gGoods:

    def __init__(self, name, gnum, gprimecost, gsellingprice):

        self.name = name

        self.gnum = gnum

        self.gprimecost = gprimecost

        self.gsellingprice = gsellingprice

    def __str__(self):

        return '名称:%s,卖出数量:%d,进货价格:%.2f,售出价格:%.2f' % (self.name, self.gnum, self.gprimecost, self.gsellingprice)

# 定义商品管理类

class GoodsManager(object):

    # 两个列表分别保存已售出和库存信息

    go = []  # 库存列表

    js = []  # 已售出列表

    def init(self):

        self.go.append(Goods("牛奶", 5, 40.00, 60.00))

        self.go.append(Goods("盒饭", 5, 10.00, 60.00))

    # Menu菜单调用要求的7个功能

    def Menu(self):

        self.init()

        print("\"超市管理系统\"菜单:")

        print("1.显示所有商品")

        print("2.添加新的商品")

        print("3.修改商品信息")

        print("4.删除商品")

        print("5.卖出商品")

        print("6.汇总")

        print("-1.退出")

        print("***********************************")

        while True:

            n = int(input("请输入操作序号:"))

            if n in [-1, 1, 2, 3, 4, 5, 6]:

                if n == -1:

                    print("已经退出!")

                    break

                elif n == 1:

                    self.showGoods()

                elif n == 2:

                    self.Add()

                elif n == 3:

                    self.Modify()

                elif n == 4:

                    self.Delete()

                elif n == 5:

                    self.Sell()

                elif n == 6:

                    self.Summary()

            else:

                print("输入有误!")

    # 显示商品

    def showGoods(self):

        for goods in self.go:

            print(str(goods))

    # 添加商品

    def Add(self):

        goods_name = input("请输入商品名称:")

        ret = self.check(goods_name)

        if ret != None:

            print('商品已经存在!')

            print('是否增加商品数量:(y/n)')

            while True:

                pd = input()

                if pd == 'y':

                    goods_num = int(input("请输入商品的数量:"))

                    old_goods = Goods(goods_name, goods_num + ret.num, ret.primecost, ret.sellingprice)

                    self.go.remove(ret)

                    self.go.append(old_goods)

                    print("添加成功!")

                    break

                elif pd == 'n':

                    print("已经返回!")

                    break

                else:

                    print("输入有误,重新输入:")

        else:

            goods_num = int(input("请输入商品的数量:"))

            goods_primecost = float(input("请输入商品进货价格:"))

            goods_sellingprice = float(input("请输入商品售出价格:"))

            if goods_num > 0 and goods_primecost > 0 and goods_sellingprice > 0:

                new_goods = Goods(goods_name, goods_num, goods_primecost, goods_sellingprice)

                self.go.append(new_goods)

                print("添加成功!")

            else:

                print("输入错误!")

    # 修改商品

    def Modify(self):

        goods_name = input("请输入需要修改的商品名称:")

        ret = self.check(goods_name)

        if ret != None:

            print(ret)

            goods_name1 = input("请输入修改后商品的名称:")

            goods_num = int(input("请输入修改后商品的数量:"))

            goods_primecost = float(input("请输入修改后商品进货价格:"))

            goods_sellingprice = float(input("请输入修改后商品出货价格:"))

            old_goods= Goods(goods_name1, goods_num, goods_primecost, goods_sellingprice)

            self.go.remove(ret)

            self.go.append(old_goods)

            print("修改成功!")

        else:

            print("没有此商品!")



    # 修改、删除、卖出之前先调用check()函数检查是否存在商品

    def check(self, goods_name):

        for goods in self.go:

            if goods.name == goods_name:

                return goods

        else:

            return None

    def checkjs(self, goods_name):

        for goods in self.js:

            if goods.name == goods_name:

                return goods

        else:

            return None

    # 删除商品

    def Delete(self):

        goods_name = input("请输入需要删除的商品名称:")

        ret = self.check(goods_name)

        if ret != None:

            print(ret)

            print('是否删除商品:(y/n)')

            while True:

                pd = input()

                if pd == 'y':

                    self.go.remove(ret)

                    print("删除成功!")

                    break

                elif pd == 'n':

                    print("已经返回!")

                    break

                else:

                    print("输入有误,重新输入:")

        else:

            print("没有此商品!")

    # 卖出商品

    def Sell(self):

        goods_name = input("请输入需要卖出的商品名称:")

        ret = self.check(goods_name)

        if ret != None:

            g_num = int(input("卖出个数:"))

            if ret.num - g_num <0:

                print("该商品数量不足!请补充")

            else:

                old_goods= Goods(ret.name, ret.num - g_num, ret.primecost, ret.sellingprice)

                self.go.remove(ret)

                self.go.append(old_goods)

                gret = self.checkjs(goods_name)

                if gret == None:

                    shop_goods = gGoods(ret.name, g_num, ret.primecost * g_num, ret.sellingprice * g_num)

                    self.js.append(shop_goods)

                else:

                    shop_goods = gGoods(gret.name, g_num + gret.gnum, gret.gprimecost + ret.primecost * g_num, gret.gsellingprice + ret.sellingprice * g_num)

                    self.js.remove(gret)

                    self.js.append(shop_goods)

                print("卖出后:", end=' ')

                old_goods= Goods(ret.name, ret.num - g_num, ret.primecost * g_num, ret.sellingprice * g_num)

                print(old_goods)

        else:

            print("没有此商品!")

    # 汇总当天卖出商品,包括每种销售商品名称、数量

    def Summary(self):

        for goods in self.js:

            print(str(goods))

        print("售出的物品进货总价:", end="")

        x = 0

        for goods in self.js:

            x += float(goods.gprimecost)

        print(x)

        print("售出的物品销售总价:", end="")

        y = 0

        for goods in self.js:

            y += float(goods.gsellingprice)

        print(y)

        print("利润:", y - x)



manager = GoodsManager()

manager.Menu()

2. 关键知识点解析

① 定义类

   class 类名:

       语句组

   class是关键字,类的名称首字母大写,语句组一般包含属性(成员)和方法

② 定义方法

   def 方法名:

       语句组

③ if条件语句

if条件表达式:

       执行语句

elif条件表达式:

   执行语句

else:

    执行语句

④ 列表

   创建列表:list = []

   列表末尾添加元素:list.append()

   删除元素:list.remove()

⑤ 类的实例化以及方法调用

manager = GoodsManager()

manager.Menu()

manager实例化后对象的名称,GoodsManager()通过类名加()的形式进行实例化,manager.Menu()对象.方法名的方式进行调用

3. 实验结果

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值