zoukankan      html  css  js  c++  java
  • 商城系统:包含用户注册/用户登陆/商品浏览/我的购物车功能.

    """
    import os
    import json
    from datetime import datetime

    USER_STATUS = False
    USER_COUNT = {}
    SHOPPING_CAR = {}


    def decorate(arg):

    def inner():
    if not USER_STATUS:
    print('请先登陆后再查看!')
    return
    arg()
    return

    return inner


    def register():
    while 1:
    username = input('注册用户名:')
    with open('8login.txt', 'r', encoding='utf-8') as f:
    register1 = True
    for line in f:
    if line.split('----')[0].strip() == username:
    register1 = False
    print('帐户已存在!')
    break
    if not register1:
    break
    pwd = input('密码:')
    sj = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    msg = '----'.join([username, pwd, sj, '0'])
    with open('8login.txt', 'a', encoding='utf-8') as f:
    f.write(msg + ' ')
    print('注册成功!')
    return


    def login():
    while 1:
    username = input('用户名:')
    with open('8login.txt', 'r', encoding='utf-8') as f:
    status = False
    for line in f:
    if line.split('----')[0] == username:
    if line.split('----')[-1].strip() == '3':
    print('帐户已锁定!')
    return
    status = True
    break

    if not status:
    print('用户不存在!')
    return
    pwd = input('密码:')
    with open('8login.txt', 'r', encoding='utf-8') as f:
    for line in f:
    if line.split('----')[0] == username and line.split('----')[1] == pwd:
    USER_COUNT[username] = 0
    print('登陆成功')
    global USER_STATUS
    USER_STATUS = username
    return
    if USER_COUNT.get(username) == None:
    USER_COUNT[username] = 0
    if USER_COUNT[username] < 3:
    USER_COUNT[username] += 1
    if not USER_COUNT[username] < 3:
    with open('8login.txt', 'r', encoding='utf-8') as f1,
    open('8login(改).txt', 'w', encoding='utf-8') as f2:
    for line in f1:
    if line.split('----')[0] == username:
    new_line = line.replace('0', '3')
    f2.write(new_line)
    else:
    f2.write(line)
    os.remove('8login.txt')
    os.rename('8login(改).txt', '8login.txt')
    print('输入错误超过3次,锁定账号!')
    return
    print('登录失败请重试!')


    @decorate
    def goods():
    f = open('8商品列表', 'r', encoding='utf-8')
    a = f.read()
    lst = a.split(' ')
    max_page, end = divmod(len(lst), 3) # 最大页,最后一页条数(总条数,每页条数)
    if end > 0:
    max_page += 1
    x, y, z = 0, 3, 1
    while 1:
    if y > len(lst):
    y = len(lst)
    for i in range(x, y):
    print(lst[i])
    print('当前第%s页,共%s页.' % (z, max_page))
    user = input('请输入序号加入到购物车,Y/y进入下一页,N/n退出:')
    if user.upper() == 'N':
    return '已退出'
    elif user.upper() == 'Y':
    x += 3
    y += 3
    z += 1
    if y == len(lst) + 3:
    x, y, z = 0, 3, 1
    continue
    elif user.isdigit():
    pand = False
    f = open('8商品列表', 'r', encoding='utf-8')
    for line in f:
    cut = line.split('|')
    if user == cut[0]:
    pand = True
    if SHOPPING_CAR.get(cut[1]) == None:
    SHOPPING_CAR[cut[1]] = 0
    break
    if not pand:
    print('输入错误!')
    continue
    while 1:
    count = input('请选择数量:')
    if not count.isdigit():
    print('请输入阿拉伯数字!')
    continue
    SHOPPING_CAR[cut[1]] += int(count)
    date = datetime.now().strftime('%Y-%m-%d-%H-%M')
    global USER_STATUS
    dir_path = os.path.exists('shopping_car\%s' % USER_STATUS)
    if not dir_path:
    os.mkdir('shopping_car\%s' % USER_STATUS)
    with open("shopping_car\%s\%s.txt" % (USER_STATUS, date), 'w', encoding='utf-8') as f:
    up = json.dumps(SHOPPING_CAR, ensure_ascii=False)
    f.write(up)
    break

    print('已添加进购物车!')
    print(SHOPPING_CAR)

    else:
    print('输入有误!')


    @decorate
    def shopping_car():
    if not os.path.exists('shopping_car\%s' % USER_STATUS):
    print('您的购物车是空的,快去购买吧!')
    return
    content = os.walk('shopping_car\%s' % USER_STATUS)
    for a, b, c in content:
    for x in c:
    print(x)
    f = open('shopping_car\%s\%s' % (USER_STATUS, x), 'r', encoding='utf-8')
    for line in f:
    a = json.loads(line)
    for item in a:
    f = open('8商品列表', 'r', encoding='utf-8')
    ls = f.read().split(' ')
    for lm in ls:
    if lm.split('|')[1] == item:
    price = lm.split('|')[2]
    print(' %s|%s|%s个' % (item,price , a[item]))

    return


    def main():
    '''
    主页面
    :return:
    '''
    dic = {'1': register, '2': login, '3': goods, '4': shopping_car}
    while 1:
    print('''*****欢迎来到沙河商城!*****
    1.注册帐户
    2.登陆帐户
    3.浏览商品
    4.查看购物车''')
    a = input('请选择(N/n退出):')
    if a.upper() == 'N':
    return
    if dic.get(a) == None:
    print('输入有误!')
    continue
    dic.get(a)()


    main()
    """
  • 相关阅读:
    L05 Laravel 教程 电商实战
    laravel 5.5 登录验证码 captcha 引入
    thinkphp 清理runtime缓存的方法, 清理指定目录
    艾伟也谈项目管理,项目经理要如何看待技术? 狼人:
    艾伟也谈项目管理,带领团队发挥最大潜能的10个技巧 狼人:
    艾伟也谈项目管理,聊聊我们团队的绩效管理 狼人:
    艾伟也谈项目管理,创建敏捷团队 狼人:
    艾伟也谈项目管理,多任务让你走得更慢 狼人:
    艾伟也谈项目管理,项目经理的思维批判 狼人:
    艾伟也谈项目管理,创业公司技术选型参考 狼人:
  • 原文地址:https://www.cnblogs.com/zjx1/p/10745468.html
Copyright © 2011-2022 走看看