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 del()函数用法
Mar 24 Python
python操作MySQL数据库具体方法
Oct 28 Python
Python中的匿名函数使用简介
Apr 27 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
python实现人民币大写转换
Jun 20 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
Python GUI编程完整示例
Apr 04 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python 实现按对象传值
Dec 26 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
写好Python代码的几条重要技巧
May 21 Python
尝试使用Python爬取城市租房信息
Apr 12 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
Python 抓取动态网页内容方案详解
2014/12/25 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
百度吧主申请感言
2014/01/12 职场文书
感恩节活动方案
2014/01/27 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
应届生自荐信范文
2014/02/21 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
防溺水主题班会教案
2015/08/12 职场文书
解析MySQL索引的作用
2022/03/03 MySQL
分享几个简单MySQL优化小妙招
2022/03/31 MySQL