zoukankan      html  css  js  c++  java
  • 购物车--用户和商户入口

    '''
    此模块需要使用用户登陆模块代码

    用户入口:
    1、输入用户名和密码
    2、商品信息存在文件里
    3、已购商品和余额记录在文件里

    注:用户购买商品后退出,再次登陆会自动读取上次用户的余额

    商户入口:
    1、添加商品
    2、修改商品名称和价格
    3、删除商品

    备注:需要新建shop文件和购物车文件,其中shop文件保存商品信息:


    '''
    import os
    import userLogin
    import types

    def read_info(_name):
    if os.path.getsize("购物车"):
    remaining = 0
    with open("购物车","r",encoding="utf-8") as f:
    for line in f:
    if line.strip() == "":
    continue
    line = eval(line)
    if line["name"] == _name:
    remaining = line["shopping"][2]
    if remaining > line["shopping"][2]:
    remaining = line["shopping"][2]
    if remaining == 0:
    return None
    else:
    return remaining
    else:
    return None


    def memu(num):
    if os.path.getsize("shop"):
    with open("shop","r",encoding="utf-8") as f:
    print("------------商品------------")
    for index,line in enumerate(f):
    if line.strip() == "":
    continue
    index -= 1
    line = eval(line)
    info2 = '''
    {_index}、{_goods},价格:{_price}
    '''.format(_index = index + 1,
    _goods = line["goods"],
    _price = line["price"])
    print(info2)
    else:
    print("当前无商品")
    if num == 1:
    exit()

    def shopping_list(name):
    sum = 0
    flag = 0
    with open("购物车", "r+", encoding="utf-8") as f:
    for temp in f:
    if temp.strip() == "":
    continue
    temp = eval(temp)
    if temp["name"] == name:
    sum += temp["shopping"][1]
    info2 = '''
    商品:{_goods},价格:{_price}
    '''.format(_goods=temp["shopping"][0],
    _price=temp["shopping"][1])
    if flag == 0:
    print("---------购物清单---------")
    print(info2)
    flag = 1
    print("总计金额: %d" % sum)


    def user(_momey,name):
    choose = input("输入你要购买商品的编号 >>>:")
    if choose.isdigit():
    choose = int(choose)
    elif choose == 'q':
    shopping_list(name)
    exit()
    else:
    print("输入错误")
    res = read_info(name)
    if res != None:
    _momey = res
    f = open("shop", "r", encoding="utf-8")
    content = f.readlines()
    for i in range(len(content)):
    if choose - 1 == i:
    content[i] = eval(content[i])
    surplus = _momey - content[i]["price"]
    if surplus >= 0:
    _momey = surplus
    print("33[33;1m %s 33[0m 已加入购物车,你的当前余额为:33[32;1m %d 33[0m "%(content[i]["goods"],_momey))
    save(content[i],name,_momey)
    return _momey
    else:
    print("33[31;1m 你的余额不足,当前余额为:%d 33[0m"%_momey)
    return _momey
    f.close()
    def save(d,name,momey):
    dict = {}
    dict["name"] = name
    dict["shopping"] = [d["goods"],d["price"],momey]
    with open("购物车","a+",encoding="utf-8") as f:
    f.write(str(dict) + ' ')

    def deposit(name):
    while True:
    res = read_info(name)
    if res == None:
    momey = input("输入你的存款金额 >>>:")
    else:
    momey = res
    print("33[34;1m %s你好,你的当前余额是:%d 33[0m"%(name,momey))
    return momey
    if type(momey) != type(1):
    if momey.isdigit():
    momey = int(momey)
    return momey
    elif momey == 'q':
    exit()
    else:
    print("存款输入错误")
    continue

    def add_shop():
    with open("shop","a+",encoding="utf-8") as f:
    dict = {}
    goods = input("输入你要添加的商品名称 >>>")
    price = input("输入商品的价格(正整数) >>>")
    if price.isdigit():
    price = int(price)
    dict["goods"] = goods
    dict["price"] = price
    f.write(str(dict) +' ')
    print("33[31;1m 添加商品成功 33[0m")

    def modify_shop():
    list = []
    f = open("shop", "r+", encoding="utf-8")
    content = f.readlines()
    num = input("请输入你要修改的商品编号 >>>")
    if num.isdigit():
    num = int(num)
    else:
    print("输入错误")
    for i in range(len(content)):
    if num - 1 == i:
    content[i] = eval(content[i])
    choose = input("请输入你要修改商品的信息1、名称,2、价格 >>>")
    if choose.isdigit():
    choose = int(choose)
    else:
    print("输入错误")
    if choose == 1:
    goods = input("请输入修改后的商品名称 >>>")
    content[i]["goods"] = goods

    elif choose == 2:
    price = input("请输入修改后的商品价格 >>>")
    if price.isdigit():
    price = int(price)
    content[i]["price"] = price

    else:
    print("输入错误")
    list.append(content[i])
    f.truncate(0)
    f.close()
    with open("shop", "a+", encoding="utf-8") as f1:
    for temp in list:
    f1.write(str(temp))
    print("33[31;1m 修改商品成功 33[0m")

    def del_shop():
    list = []
    f = open("shop", "r+", encoding="utf-8")
    content = f.readlines()
    num = input("请输入你要删除的商品编号 >>>")
    if num.isdigit():
    num = int(num)
    else:
    print("输入错误")

    for i in range(len(content)):
    if num - 1 == i:
    continue
    list.append(content[i])
    f.truncate(0)
    f.close()
    with open("shop", "a+", encoding="utf-8") as f1:
    for temp in list:
    f1.write(temp)
    print("33[31;1m 删除商品成功 33[0m")

    def main1(name):
    res = input("请输入你的选择:1、用户,2、商户 >>>")
    if res.isdigit():
    res = int(res)
    if res == 1:
    momey = deposit(name)
    while True:
    memu(res)
    momey = user(momey,name)
    elif res == 2:
    while True:
    memu(res)
    res1 = input("请输入你的选择:1、添加,2、修改,3、删除 >>>")
    if res1.isdigit():
    res1 = int(res1)
    if res1 == 1:
    add_shop()
    elif res1 == 2:
    modify_shop()
    elif res1 == 3:
    del_shop()
    else:
    print("输入错误")
    elif res1 == 'q':
    exit()
    else:
    print("输入错误")
    elif res == 'q':
    exit()
    else:
    print("输入错误")

    if __name__ == "__main__":
    while True:
    userLogin.main()




    '''
    -------用户登陆模块代码------
    '''
    '''
    先创建user、lock文件,user存储账号密码,用于登录时判断,lock文件为账号错误3次后,冻结
    user内容格式为:
    {'name':'zhangsan','passwd':'123'}
    {'name':'lisi','passwd':'123'}
    {'name':'wangwu','passwd':'123'}
    '''

    import os
    import shopping

    def lock(_name):
    '''判断一个用户是否冻结'''
    if os.path.getsize("lock"):
    with open("lock","r") as f:
    for line in f:
    if line.strip() == "":
    continue
    line = eval(line)
    if line["name"] == _name and line["num"] == 3:
    return 0
    else:
    return -1
    else:
    return -1

    def clear_lock():
    '''当程序退出时,删除非冻结的账号信息'''
    list = []
    with open("lock","r+") as f:
    for line in f:
    if line.strip() == "":
    continue
    line = eval(line)
    if line["num"] == 3:
    list.append(line)
    f.truncate(0)
    with open("lock","w") as f1:
    for i in list:
    f1.write(str(i) + ' ')

    def login(_name,_passwd):
    '''用户登陆'''
    with open("user","r") as f:
    flag = 0
    for line in f:
    if line.strip() == "":
    continue
    line = eval(line)
    if line["name"] == _name:
    if line["name"] == _name and line["passwd"] == _passwd:
    return 0
    else:
    return 1
    return -1

    def write_lock(_name):
    '''将输入错误的账号写入lock文件'''
    #文件不为空
    if os.path.getsize("lock"):
    list = []
    with open("lock","r+") as f:
    flag = 0
    for line in f:
    if line.strip() == "":
    continue
    line = eval(line)
    #判断账号是否存在
    if line["name"] == _name:
    line["num"] += 1
    list.append(line)
    else:
    dict2 = {}
    dict2["name"] = _name
    dict2["num"] = 1
    list.append(dict2)
    with open("lock","w") as f1:
    for i in list:
    f1.write(str(i) + ' ')


    #空文件直接写入
    else:
    list1 = []
    dict1 = {}
    dict1["name"] = _name
    dict1["num"] = 1
    list1.append(str(dict1))
    with open("lock","w") as f2:
    for j in list1:
    f2.write(str(j) + ' ')

    def main():
    name = input("用户名:")
    res = lock(name)
    if res == 0:
    print("%s已被冻结,请联系管理员"%name)
    clear_lock()
    exit()
    passwd = input("密码:")
    res1 = login(name,passwd)
    if res1 == 0:
    print("欢迎%s登陆CBD购物中心"%name)
    while True:
    shopping.main1(name)
    elif res1 == 1:
    print("密码错误")
    write_lock(name)
    else:
    print("账号不存在")

    res2 = lock(name)
    if res2 == 0:
    print("%s已被冻结,请联系管理员" %name)
    clear_lock()
    exit()

    if __name__ == "__main__":
    while True:
    main()


  • 相关阅读:
    无法重用Linq2Entity Query
    The Joel Test
    MSBuilder directly instead of default VSComplie with keyborad shotcut 原创
    客户端缓存(Client Cache)
    关于代码重构和UT的一些想法,求砖头
    ExtJS2.0实用简明教程 应用ExtJS
    Perl information,doc,module document and FAQ.
    使用 ConTest 进行多线程单元测试 为什么并行测试很困难以及如何使用 ConTest 辅助测试
    史上最简单的Hibernate入门简介
    汽车常识全面介绍 传动系统
  • 原文地址:https://www.cnblogs.com/hqd2008/p/7639971.html
Copyright © 2011-2022 走看看