zoukankan      html  css  js  c++  java
  • 购物车作业

    Lession 5 homework:

    ### 购物车 作业要求:(用函数写)

    1. 用户先给自己的账户充钱:比如先充3000元。
    2. 页面显示 序号 + 名称 + 价格 , 如:
    [===========有如下商品供您选择:===========]
    序号 名称 价格
    1 电脑 1999
    2 鼠标 10
    3 游艇 20
    4 美女 998
    n或N 购物车结算
    q或Q 退出程序(如不结算购物车可直接退出)]
    [==========================================]
    购物车结算
    3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
    4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    5. (1)用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价
    (2)若充值的钱数不足则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买退出
    (3)退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少
    6. 用户输入Q或者q 直接退出程序。

    ***********************************************************************************************
    以下为代码块


    """充值"""
    money=0
    n=float(input('请先给你的账户充值,请输入充值金额:'))
    money+=n
    print('充值成功,账户余额:',money,'你可以选择商品开始购物')




    """以下代码用于显示打印商品列表,商品信息预先存储在文件goods.txt中"""

    def showGoods(fname):
    with open(fname, encoding='GBK') as fin:
    print("[===========有如下商品供您选择:===========]")
    print('序号 名称 价格')
    goods=[]
    for line in fin:
    line = line.strip()
    no, name, price = line.split(' ')
    price = float(price)
    good=(no, name, price)
    goods.extend(good)
    print(no,' ',name,' ', price)
    #print(goods)
    print(
    """
    n或N 购物车结算
    q或Q 退出程序(如不结算购物车可直接退出)
    [=======================================]
    """)



    """以下为购物车结算代码"""

    def calculate():
    i=1
    pay=0
    p1=1999
    p2=10
    p3=20
    p4=998
    lst=[]
    while i==1:
    goodnum = input('请输入你的选择:')
    if goodnum not in ('1','2','3','4','n','N','q','Q'):
    print('你的输入有误,请输入正确的商品序号或指令:')
    continue
    elif goodnum == '1':
    pay+=p1
    lst.append(goodnum)
    print('你已经选择商品{},价格为{}'.format(goodnum,p1))
    print()
    elif goodnum == '2':
    pay+=p2
    lst.append(goodnum)
    print('你已经选择商品{},价格为{}'.format(goodnum,p2))
    print()
    elif goodnum == '3':
    pay+=p3
    lst.append(goodnum)
    print('你已经选择商品{},价格为{}'.format(goodnum,p3))
    print()
    elif goodnum == '4':
    pay+=p4
    lst.append(goodnum)
    print('你已经选择商品{},价格为{}'.format(goodnum,p4))
    print()

    elif goodnum == 'n' or goodnum == 'N':
    print('你选购商品总价为%.2f'%pay)
    print('你的余额为%.2f'%money)
    print('你选购了这些商品:',lst)
    print()
    yue=money-pay
    while yue<0:
    print('余额不足,还差%.2f,请忍痛割爱,删除一些商品'%(-yue))
    cut = input('请输入要删除的商品编号:')
    if cut not in ('1','2','3','4','n','N','q','Q'):
    print('你的输入有误,请输入正确的商品序号或指令:')
    continue
    elif cut=='1':
    yue+=p1
    print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
    print()
    elif cut=='2':
    yue+=p2
    print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
    print()
    elif cut=='3':
    yue+=p3
    print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
    print()
    elif cut=='4':
    yue+=p4
    print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
    print()
    print('购买成功,你的余额为:%.2f' % (yue))
    i=0
    elif goodnum == 'q' or goodnum == 'Q':
    print('你已退出程序')
    i=0


    showGoods('goods.txt')
    calculate()




    总结:
    1. 商品显示部分,用文件存储方便增删商品,但是好像不太好处理后面的数据关联,可能主要是不太熟文件操作。
    2. 购物车结算模块,感觉条件判断写得比较啰嗦,应该有优化的方法,但此刻的我,已经被简单的小成果膨胀了,后面再思考思考
    3. 购物车结算模块,商品的关联性做得很差,比如想取商品名称,不好处理,先放了一个列表在这里存储用户输入的商品编码,后面再看怎么处理把商品名称在这一块用起来
    4. 还是购物车模块,重新定义了商品的价格,下一步思考,怎么跟显示商品函数关联起来,或者显示商品函数不应该写成函数?
    5. 商品列表也许可以用字典处理?
    6. 总体来说,还有很多可优化的地方,但是,呵呵,算是一个小小的鼓励了!嗨森。


  • 相关阅读:
    Array
    java 设计模式
    Hashtable
    lettCode-Array
    最短路径 dijkstra
    算法:优先级队列
    7.29 DFS总结
    SZU:D89 The Settlers of Catan
    SZU:B47 Big Integer I
    7.25 RPN转换
  • 原文地址:https://www.cnblogs.com/lauce/p/11271048.html
Copyright © 2011-2022 走看看