python--购物车优化

基本要求:
用户入口
1、商品信息存在文件里
2、已购商品、余额记录,长期保存, 即第一次启动是需要输入预算的,以后就拿剩下的钱买东西

商家入口
1、可以添加商品,删除商品,修改商品价格
2、按q可以退出

实现:
1、用到list和dic
2、if判断 while和for循环
3、用文件记录商品信息和购物记录
'''
购物车
用户入口
1、商品信息存在文件里
2、已购商品、余额记录,长期保存,
即第一次启动是需要输入预算的,以后就拿剩下的钱买东西

商家入口
1、可以添加商品,修改商品价格

按q可以退出
'''
import os
#定义函数
#客户端
def customer(budgetfile,productfile):
    #显示或获取当前预算
    budgetfd = open(budgetfile, 'r', encoding="utf-8")
    print("目前已购买:")
    cartdata=budgetfd.readline()
    cartlist=[]
    budget=''
    while cartdata:
        cartlist.append(cartdata.split(" ")[0].strip())
        print(cartdata.split(" ")[0])
        budget=cartdata.split(" ")[1]
        cartdata=budgetfd.readline()

    flag=True
    if budget=='':
        while flag:
            budget=input("请输入购物预算: ")
            if budget.isdigit():
                budget=int(budget)
                flag=False
            else:
                print("必须输入数字。")
                continue
    else:
        print("您的余额是:"+budget)
        budget = int(budget)
    budgetfd.close()



    shopping=True
    while shopping:
        # 先显示当前商品列表
        productfd = open(productfile, 'r', encoding='utf-8')
        print("目前商品列表:")
        data = productfd.readline()
        datadic = {}
        while data:
            datadic[data.split(" ")[0].strip()] = data.split(" ")[1].strip()
            print(data)
            data = productfd.readline()
        productfd.close()

        choice=input("输入你要买的商品名称,按q退出:")
        if choice=='q':
            shopping=False;
            return True
        elif choice in datadic:
            if int(datadic[choice])<budget:
                fd=open(budgetfile,'a',encoding='utf-8')
                budget-=int(datadic[choice])
                print("您的余额是:"+str(budget))
                cartlist.append(choice)
                fd.write(choice+' '+str(budget)+'\n')
                fd.close()
                print("目前已购买:")
                for key in cartlist:
                    print(key)
            else:
                print("预算不足,不能购买。")
        else:
            print("不存在该商品。")

#商户端
def boss(productfile):
    #打印目前商品列表

    fd=open(productfile,'r',encoding='utf-8')
    fd.close()

    while True:
        #先显示当前商品列表
        fd.close()
        fd = open(productfile, 'r+', encoding='utf-8')
        print("目前商品列表:")
        data = fd.readline()
        datadic = {}
        while data:
            datadic[data.split(" ")[0].strip()] = data.split(" ")[1].strip()
            print(data.split(" ")[0].strip(), data.split(" ")[1].strip())
            data = fd.readline()
        fd.close()

        operation = input("请输入您要做的操作:1表示增加商品、2表示删除商品、3表示修改商品价格、q表示退出程序: ")
        if operation=='1':
            fd = open(productfile, 'a', encoding='utf-8')
            string=input("请输入要添加的商品及价格,用空格分隔:")
            key=string.split(" ")[0].strip()
            value=string.split(" ")[1].strip()
            if key not in datadic:
                fd.write(string+'\n')
                datadic[key]=value
            else:
                print("已存在该商品,不能添加")
            fd.close()
        elif operation=='2':
            string = input("请输入要删除的商品名称: ")
            fd=open(productfile,'w',encoding='utf-8')
            if string in datadic:
                datadic.pop(string)
            else:
                print("要删除的商品不存在。")
            for key in datadic:
                fd.write(key + ' ' + datadic[key] + '\n')
            fd.close()
        elif operation=='3':
            string=input("请输入要修改的商品名称和价钱,用空格分隔:")
            k=string.split(" ")[0]
            v=string.split(" ")[1]
            if k in datadic:
                datadic[k]=v
            else:
                print("要修改的商品不存在。")
            fd = open(productfile, 'w', encoding='utf-8')
            for key in datadic:
                fd.write(key+' '+datadic[key]+'\n')
            fd.close()
        elif operation=='q':
            fd.close()
            flag=False
            return True
        else:
            print("请输入准确的命令。")
            operation = input("请输入您要做的操作:1表示增加商品、2表示删除商品、3表示修改商品价格、q表示退出程序: ")

#脚本主程序
exitflag=False

Ident=input("您是客户还是商户:")
while not exitflag:
    if Ident=="客户":
        exitflag=customer("cartlist.txt","productlist.txt")
    elif Ident=="商户":
        exitflag=boss("productlist.txt")
    elif Ident=="q":
        exitflag=True
        print("退出程序。")
    else:
        print("请输入准确的字眼。")
        Ident = input("您是客户还是商户:")

 


posted @ 2017-07-23 11:19  susenyan  阅读(194)  评论(0编辑  收藏  举报