【python】——超市管理系统和用turtle动态画图(爱心和魔幻曲线)

🎃本期内容概括:这期博客主要分为三个程序,下面是对三个程序的简介。

💎程序一:这是一个超市管理系统,其中包括5种操作,分别是:1.查询商品 2.新增商品 3.卖出商品 4.汇总 5.退出系统等功能。

💎程序二:相信很多友友都想用程序给自己爱的人画一个爱心,包括博主,那巧了,博主这里有一个好玩的小程序,这里了引入一个turtle库,动态的画一个爱心。

💎程序三:大家可在经常在数学里面见到曲线,在路过理发店时,见到门口的正在旋转的曲线,都好奇地想,它到底向上走的还是向下走的。这里我引入一个turtle库,动态画一个类似的魔幻曲线,一起来看看吧

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

🐠离散数学:离散数学_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录


🎯超市管理系统:

🎐所要解决的问题:

(1)系统包括5种操作,分别是:1.查询商品;2.新增商品;3.卖出商品;4.汇总;-1.退出系统。

(2)选择操作序号“1”,显示所有库存商品,若当前库存无商品,输出“当前库存商品为零”的提示信息。

(3)选择操作序号“2”,添加新的商品(包括商品名称、进货价格、销售价格、进货数量)。

(4)选择操作序号“3”,卖出商品(输入卖出商品名称,若商品有库存,输入销售数量,若库存数量大于等于销售数量,卖出商品,并进行收银,并将库存数量减去销售数量)

(5)选择操作序号“4”,汇总现有库存商品,包括每种商品名称、进货价格、销售价格、库存数量,显示进货总货款(进货款为负值),显示总销售额。

(6)选择操作序号“-1”,退出系统。

系统运行时各种情况的测试数据如下图所示:

🎐 解题思路:

        这个超市管理系统可以通过面向对象的方式来设计。首先,我们可以定义一个商品类,包括商品名称、进货价格、销售价格和库存数量等属性。然后创建一个超市管理系统类,该类包含添加商品、查询商品、卖出商品、汇总信息和退出系统等方法。

        在主程序中,通过循环接收用户输入的操作序号,并调用相应的方法来实现不同的功能。当用户选择操作序号1时,系统会列出所有库存商品;选择操作序号2时,系统可以添加新的商品信息;选择操作序号3时,系统可以进行商品销售操作,减少库存数量并进行收银;选择操作序号4时,系统将汇总现有库存商品信息并显示进货总货款和总销售额;选择操作序号-1时,退出系统。

🎐程序代码:

💻分布解析:

class Commodity:
   def __init__(self,name,inputprice,outputprice,num,num_sold=0):
       self.name=name
       self.inputprice=inputprice
       self.outputprice=outputprice
       self.num=num
       self.num_sold=num_sold

         在这个类中,我们定义了商品名称(name)、进货价格(inputprice)、销售价格(outputprice)、库存数量(num)和已售出数量(num_sold)作为属性,其中已售出数量默认为0。初始化方法用于创建商品对象并初始化其属性。

class Supermarket:
   def __init__(self):
       self.commodities = []  # 初始化一个空的商品列表

   def add_commodity(self, name, inputprice, outputprice, num):
       commodity=Commodity(name, inputprice, outputprice, num)  # 创建商品对象
       self.commodities.append(commodity)  # 将商品添加到商品列表中

   def list_commodities(self):
       if not self.commodities:  # 判断商品列表是否为空
           print("当前库存商品为零")
       else:
           for commodity in self.commodities:
               print(f"商品名称:{commodity.name},进货价格:{commodity.inputprice},销售价格:{commodity.outputprice},库存数量:{commodity.num}")

         在Supermarket类中,我们初始化了一个空的商品列表,并实现了添加商品和列出商品的功能。添加商品方法会创建Commodity对象,并将其添加到商品列表中。列出商品方法会逐个打印每个商品的信息。

   def sell_commodity(self, name, num_sold):
       # 略...

   def summary(self):
       # 略...

         在这两个方法中,卖出商品方法会处理商品的销售操作,包括计算应付款、输入付款金额、更新库存等。汇总信息方法会打印出当前所有商品的情况,包括商品名称、进货价格、销售价格、库存数量,以及总销售额和总进货额。

def main():
   # 略...
if __name__=="__main__":
   main()

        在主程序中,首先打印欢迎消息和菜单选项。然后通过循环接收用户输入的菜单编号,并根据用户的选择调用不同的超市管理系统方法来实现不同的功能,包括查询商品、新增商品、卖出商品和汇总信息。当用户输入-1时退出系统。

💻总代码:

# 定义商品类
class Commodity:
   def __init__(self, name, inputprice, outputprice, num, num_sold=0):
       self.name = name  # 商品名称
       self.inputprice = inputprice  # 进货价格
       self.outputprice = outputprice  # 销售价格
       self.num = num  # 库存数量
       self.num_sold = num_sold  # 已售出数量

# 定义超市类
class Supermarket:
   def __init__(self):
       self.commodities = []  # 初始化一个空的商品列表

   # 添加商品方法
   def add_commodity(self, name, inputprice, outputprice, num):
       commodity = Commodity(name, inputprice, outputprice, num)  # 创建新商品对象
       self.commodities.append(commodity)  # 将新商品添加到商品列表中

   # 列出商品方法
   def list_commodities(self):
       if not self.commodities:
           print("当前库存商品为零")
       else:
           for commodity in self.commodities:
               print(f"商品名称:{commodity.name},进货价格:{commodity.inputprice},销售价格:{commodity.outputprice},库存数量:{commodity.num}")

   # 卖出商品方法
   def sell_commodity(self, name, num_sold):
       x = 0
       for commodity in self.commodities:
           if commodity.name == name:
               if commodity.num >= num_sold:
                   x = num_sold * commodity.outputprice
                   print(f'应付款={x}')
                   while True:
                       y = int(input("请输入付款金额:"))
                       if y >= x:
                           print(f"找零={y-x}")
                           break
                       else:
                           print("付款不足!")
                   commodity.num -= num_sold  # 更新商品库存
                   commodity.num_sold = num_sold  # 更新已售出数量
                   x = 1
                   break
               else:
                   print("库存不足")
                   break
       if x == 0:
           print("商品不存在")

   # 汇总信息方法
   def summary(self):
       print("超市现有商品情况:")
       print("商品名称  进货价格  销售价格  库存数量    ")
       for commodity in self.commodities:
           print(f"{commodity.name}       {commodity.inputprice}       {commodity.outputprice}       {commodity.num}")
       input_total = sum([c.inputprice*c.num for c in self.commodities])  # 计算总进货额
       output_total = sum([a.outputprice*a.num_sold for a in self.commodities])  # 计算总销售额
       print(f"总销售额: {output_total}")
       print(f"总进货额: -{input_total}")

# 主程序
def main():
   print("************欢迎进入超市管理系统***********")
   print("1. 查询商品\n2. 新增商品\n3. 卖出商品\n4. 汇总\n-1. 退出系统")
   supermarket = Supermarket()  # 创建超市对象
   while True:
       choice = int(input("******请输入菜单编号:"))
       if choice == -1:
           print("谢谢使用")
           break
       elif choice == 1:
           supermarket.list_commodities()  # 调用列出商品方法
       elif choice == 2:
           name = input("请输入商品名称:")
           j = int(input("请输入进货价格:"))
           s = int(input("请输入销售价格"))
           n = int(input("请输入进货数量:"))
           supermarket.add_commodity(name, j, s, n)  # 调用新增商品方法
       elif choice == 3:
           name = input("请输入商品名称:")
           n = int(input("请输入销售数量:"))
           supermarket.sell_commodity(name, n)  # 调用卖出商品方法
       elif choice == 4:
           supermarket.summary()  # 调用汇总信息方法
       else:
           print("无效,请重新输入")

if __name__ == "__main__":
   main()

这段代码包括两个类(Commodity和Supermarket)和一个主程序(main)。让我来逐段分析每一部分代码。

1. Commodity类:
   – Commodity类表示商品,包括商品的名称(name)、进货价格(inputprice)、销售价格(outputprice)、库存数量(num)和已售出数量(num_sold)等属性。
   – 初始化方法(__init__)用于初始化商品对象的属性。

2. Supermarket类:
   – Supermarket类表示超市管理系统,包含一个商品列表(commodities)作为其属性,用于存储所有的商品对象。
   – 方法包括添加商品(add_commodity)、列出商品(list_commodities)、卖出商品(sell_commodity)和汇总信息(summary)等功能。

3. 主程序(main):
   – 主程序通过循环接收用户输入的操作序号,并调用相应的超市管理系统方法来实现不同的功能。
   – 当用户选择不同的操作序号时,会执行相应的功能,如列出所有库存商品、添加新商品、进行商品销售操作以及汇总现有库存商品信息。

整体而言,这段代码实现了一个简单的超市管理系统,包括了商品类和超市管理系统类,以及一个用户交互界面的主程序。

🎯turtle动态画爱心:

🎃实现代码:

import turtle  # 导入turtle库

# 设置起始位置和画笔大小
turtle.penup()
turtle.goto(-80, 250)
turtle.pensize(8)

# 写入文本"程序员的浪漫告白"
turtle.write("程序员的浪漫告白", font=(50))

# 移动到下一位置准备绘制心形图案
turtle.penup()
turtle.goto(0, 70)
turtle.pendown()

# 设置画笔颜色和填充颜色
turtle.color('red', 'pink')
turtle.begin_fill()

# 绘制心形图案
turtle.left(135)
turtle.forward(100)
turtle.right(180)
turtle.circle(50, -180)
turtle.left(90)
turtle.circle(50, -180)
turtle.right(180)
turtle.forward(100)

turtle.end_fill()  # 结束填充

turtle.hideturtle()  # 隐藏海龟图标
turtle.done()  # 完成绘图并显示

 🎃实现效果:

turtle动态画爱心

 🎯turtle动态画魔幻曲线:

🎃实现代码:

import turtle  # 导入turtle库

d = 0  # 设置角度初始值为0
k = 1  # 设置步长初始值为1

for j in range(15):  # 外层循环控制绘制的次数
    for i in range(4):  # 内层循环控制每一次绘制的步骤
        turtle.forward(k)  # 前进的距离,初始为1,逐渐增加
        d += 91  # 角度逐渐增加
        turtle.seth(d)  # 设置海龟的朝向
        k += 4  # 步长逐渐增加

turtle.done()  # 完成绘图并显示

 🎃实现效果:

用turtle动态画魔幻曲线

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年11月27日
下一篇 2023年11月27日

相关推荐