【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动态画魔幻曲线

相关文章
|
1月前
|
机器学习/深度学习 数据采集 供应链
Python实现深度学习模型:智能库存管理系统
【10月更文挑战第5天】 Python实现深度学习模型:智能库存管理系统
142 9
|
28天前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
114 61
|
12天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
4天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
21 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
16天前
|
机器学习/深度学习 数据采集 存储
使用Python实现智能农业灌溉系统的深度学习模型
使用Python实现智能农业灌溉系统的深度学习模型
67 6
|
20天前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现智能生态系统监测与保护的深度学习模型
使用Python实现智能生态系统监测与保护的深度学习模型
59 4
|
1月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
22 2
|
1月前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
29 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
77 1