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

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

🎯超市管理系统:


🎐所要解决的问题


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


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


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


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


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


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


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


74477be1cc2deed08d0015a44da9334f_0e6494b7867ee40b08545516439541fc.png


🎐 解题思路:


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


       在主程序中,通过循环接收用户输入的操作序号,并调用相应的方法来实现不同的功能。当用户选择操作序号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()  # 完成绘图并显示

image.png

🎃实现效果: image.png

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()  # 完成绘图并显示


🎃实现效果:

image.png

用turtle动态画魔幻曲线

目录
相关文章
|
12天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
13天前
|
Python
【python绘图库turtle实战】使用python绘图库turtle绘制:太阳花、彩虹线与小黄人【含完整源码】
【python绘图库turtle实战】使用python绘图库turtle绘制:太阳花、彩虹线与小黄人【含完整源码】
|
16天前
|
搜索推荐 算法 数据挖掘
十大排序算法详解-上篇:比较排序算法【python 动态图解】
十大排序算法详解-上篇:比较排序算法【python 动态图解】
|
7天前
|
数据采集 前端开发 JavaScript
Python爬虫技术:动态JavaScript加载音频的解析
Python爬虫技术:动态JavaScript加载音频的解析
|
1月前
|
存储 文件存储 Python
Python基础 --- 实现学生管理系统(Python 文件版本)
Python基础 --- 实现学生管理系统(Python 文件版本)
43 4
|
12天前
|
Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-2
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
12天前
|
数据可视化 开发者 Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
12天前
|
机器学习/深度学习 算法 数据库
【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目
【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目
|
1月前
|
数据采集 机器学习/深度学习 人工智能
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
最新用python代码画爱心,来自程序猿的浪漫~_python画爱心代码(1),2024年最新面试简历模板免费
|
1月前
|
SQL 分布式计算 Python
2024年最新520节日快到了,教你用Python画动态爱心表白!_mac python 画心,2024年最新2024年大厂Python岗面试必问
2024年最新520节日快到了,教你用Python画动态爱心表白!_mac python 画心,2024年最新2024年大厂Python岗面试必问
2024年最新520节日快到了,教你用Python画动态爱心表白!_mac python 画心,2024年最新2024年大厂Python岗面试必问