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中shutil模块的学习笔记教程
Apr 04 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
python线程中的同步问题及解决方法
Aug 29 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
Django drf请求模块源码解析
Jun 08 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
上海无线电三厂简史修改版
2021/03/01 无线电
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
jQuery中:animated选择器用法实例
2014/12/29 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
详解微信小程序调用支付接口支付
2019/04/28 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python Socket编程详细介绍
2017/03/23 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
StringBuilder和String的区别
2015/05/18 面试题
学生会招新策划书
2014/02/14 职场文书
公司委托书范本
2014/04/04 职场文书
股东合作协议书
2014/04/14 职场文书
2014年民警工作总结
2014/11/25 职场文书
公务员年度考核评语
2014/12/31 职场文书
部队个人年终总结
2015/03/02 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
新课程改革心得体会
2016/01/22 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL