本期内容概括:这期博客主要分为三个程序,下面是对三个程序的简介。
程序一:这是一个超市管理系统,其中包括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博客
欢迎收看,希望对大家有用!
目录
超市管理系统:
所要解决的问题:
解题思路:
程序代码:
分布解析:
总代码:
turtle动态画爱心:
实现代码:
实现效果:
turtle动态画魔幻曲线:
实现代码:
实现效果:
(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):
- 主程序通过循环接收用户输入的操作序号,并调用相应的超市管理系统方法来实现不同的功能。
- 当用户选择不同的操作序号时,会执行相应的功能,如列出所有库存商品、添加新商品、进行商品销售操作以及汇总现有库存商品信息。整体而言,这段代码实现了一个简单的超市管理系统,包括了商品类和超市管理系统类,以及一个用户交互界面的主程序。
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动态画爱心
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动态画魔幻曲线