python实现电子产品商店


Posted in Python onFebruary 26, 2019

利用python实现以下功能:基于python下的电子产品商店

电子产品商店

v0.1

请选择商品:

=============================

1       Apple Watch          ¥3299.00

--------------------------------------

2       AirPods           ¥1288.00

--------------------------------------

3       Home Pod            ¥1299.00

--------------------------------------

请输入商品Id(回车去结账,0清空购物车):1

--------------------------------------

Id:1

名称:Apple Watch

价格:¥3299.00

库存:100

请输入购买数量:2

--------------------------------------

Apple Watch(¥3299) * 2 =¥6598.00

--------------------------------------

总金额:¥6598.00

请输入商品Id(回车去结账,0清空购物车):2

--------------------------------------

Id:2

名称:AirPods

价格:¥1288.00

库存:100

请输入购买数量:2

--------------------------------------

Apple Watch(¥3299.00) * 2 =¥6598.00

AirPods(¥1288.00) * 2      =¥2576.00

--------------------------------------

总金额:¥9174.00

1.首先,先在ProcessOn上画出一个基本的流程图,使自己有一个清晰的逻辑,如何去写这个项目,流程图如下:

python实现电子产品商店

2.其次,再列举出来这个项目中需要用到的类都有哪些,各自包含的属性是什么以及定义的都有哪些函数。然后在ProcessOn中 创建一个UML模板(从上往下依次是类名,属性,函数名),模板如下:

python实现电子产品商店

3.根据流程图和UML模板编写程序,代码如下:

(1)定义一个类名为Goods的类       

# 商品类
class Goods(object):
 def __init__(self,name,price,stock):
 self.id = 0
 self.name = name
 self.price = price
 self.stock = stock
 # 当打印对象时,输出的内容
 def __str__(self):
 return 'id:%s\n' \
  '名称:%s\n' \
  '价格:%s\n' \
  '库存:%s\n' % (self.id,self.name,self.price,
    self.stock)
 
 
if __name__ == '__main__':
 goods = Goods('Apple pods',2999,100)
 print(goods)
 goods2 = Goods('Apple Watch',3666,100)
 print(goods2)

(2)定义一个类名为Cartitem的类 

from goods import Goods
 
class CartItem(object):
 # 购物车商品
 def __init__(self,goods,count):
 self.goods = goods
 self.count = count
 
 def __str__(self):
 # %f是小数类型的占位符
 return '%s(¥%.2f)*%s' % (self.goods.name,
     self.goods.price,self.count)
 
 # 计算商品小计
 def amout(self):
 return self.goods.price * self.count
 
 
if __name__ == '__main__':
 goods = Goods('Apple pods',2999,100)
 # 创建购物车商品对象,需要传入一个商品对象
 item = CartItem(goods,2)
 money = item.amout()
 print(money)

(3)最后把前两个类整合一下,实现具体的功能:      

from goods import Goods
from cart import CartItem
 
class Shop(object):
 """商店"""
 def __init__(self):
 # 存储所有商品
 self.shops = []
 # 存储购物车商品
 self.cart = []
 # 加载商品
 self.load()
 
 def load(self):
 """加载商品"""
 self.add(Goods('Apple Watch', 3299, 100))
 self.add(Goods('AirPods', 1288, 100))
 self.add(Goods('Home Pod', 1299, 100))
 self.add(Goods('iPhone X', 6288, 100))
 
 def add(self, good):
 """
 设置新商品的id,添加到列表中
 :param good: 新商品
 :return: None
 """
 good.id = len(self.shops) + 1
 self.shops.append(good)
 
 def print_line(self):
 
 print('-'*50)
 
 def print_double_line(self):
 print('='*50)
 
 def list(self):
 """列出所有商品"""
 print('请选择商品:')
 self.print_double_line()
 # 遍历商品列表
 for g in self.shops:
 
  print('%s %s %s' % (g.id, g.name, g.price))
  self.print_line()
 
 def list_cart(self):
 """展示购物车商品,计算总价"""
 self.print_line()
 total = 0.0
 for item in self.cart:
  print('%s =¥%s' % (item, item.amout()))
  total += item.amout()
 self.print_line()
 print('总金额:¥%.2f' % total)
 
 def add_to_cart(self):
 """添加商品到购物车"""
 print('\n')
 g_id = input('请输入商品Id(回车去结账,0清空购物车):')
 
 if len(g_id) == 0:
  # 结账
  total = 0.0
  for item in self.cart:
 
  total += item.amout()
  self.print_line()
  print('请支付:¥%.2f' % total)
 
  # 清空购物车
  self.cart.clear()
  print('支付成功!')
 
 elif g_id == '0':
  self.cart.clear()
  print('购物车已清空!')
 else:
  # 计算商品索引
  idx = int(g_id) - 1
  # 取出商品
  goods = self.shops[idx]
  self.print_line()
  print(goods)
 
  count = int(input('请输入购买数量:'))
  # 判断数量是否大于库存量
  while count > goods.stock:
  count = int(input('没有这么多商品,请重新输入:'))
 
  # 如果商品已经在购物车中,修改商品数量
  # 变量表示在购物车中是否有这个商品
  is_exsts = False
  for item in self.cart:
  if item.goods == goods:
   # 说明在购物车中有该商品
   is_exsts = True
   item.count += count
   # 减少库存
   goods.stock -= count
 
  # 如果执行到这,is_exsts的值还是False,说明购物车中没有该商品
  if is_exsts == False:
  # 把商品添加到购物车
  goods.stock -= count
  self.cart.append(CartItem(goods, count))
 
  # 展示购物车商品,计算总价
  self.list_cart()
 
 def run(self):
 """运行应用程序"""
 print('智游电子产品商店')
 print('v1.0')
 print('\n')
 
 self.list()
 
 while True:
  self.add_to_cart()
 
shop = Shop()
shop.run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现绘制树枝简单示例
Jul 24 Python
python基于Tkinter库实现简单文本编辑器实例
May 05 Python
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
python实现微信自动回复功能
Apr 11 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
python爬取哈尔滨天气信息
Jul 14 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Python Django项目和应用的创建详解
Nov 27 Python
python实现简单的三子棋游戏
Apr 28 Python
Python selenium根据class定位页面元素的方法
Feb 26 #Python
python实现诗歌游戏(类继承)
Feb 26 #Python
Python实现简单查找最长子串功能示例
Feb 26 #Python
基于Python实现用户管理系统
Feb 26 #Python
python selenium firefox使用详解
Feb 26 #Python
Django实现学员管理系统
Feb 26 #Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 #Python
You might like
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
php一个找二层目录的小东东
2012/08/02 PHP
php模板函数 正则实现代码
2012/10/15 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
javascript的this关键字详解
2019/05/20 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
python操作mysql数据库
2017/03/05 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
拾金不昧感谢信范文
2015/01/21 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
如何书写授权委托书?
2019/06/25 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书