zoukankan      html  css  js  c++  java
  • User_Login_Register_Shopping 1.0

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @File : user_login_register_shopping.py
    # @Author: Anthony.waa
    # @Date : 2018/5/23 0023
    # @Desc :


    # 用户登录状态
    flag_user = False

    # 用户登录
    def login():
    '''
    :param name: 用户名
    :param passwd: 用户登录密码
    :return: 实现三次登录成功
    '''

    count = 1

    login_name_passwd = {}

    with open('user_pwd.txt', 'r', encoding='utf-8')as f:
    for line in f.readlines():

    login_name = line.split(',')[0].strip()
    login_pwd = int(line.rsplit(',')[-1].strip())
    login_name_passwd[login_name] = login_pwd

    name = input('请输入用户名:').strip()
    passwd = int(input('请输入密码:').strip())
    while True:
    if name in login_name_passwd and passwd == login_name_passwd.get(name):
    flag_user = True
    else:
    flag_user = False

    if flag_user == True:
    print('登录成功')
    shopping()
    else:
    print('用户名或密码错误,请重新输入')
    name = input('请输入用户名:').strip()
    passwd = int(input('请输入密码:').strip())
    count += 1

    if count == 3:
    print('用户名、密码输入错误超过3次,账户已锁定')
    exit()


    # 用户注册
    def register():
    '''
    :param name: 用户注册
    :param passwd: 用户注册使用的密码
    :return:
    '''
    flag_register = True
    register_name_passwd = {}
    with open('user_pwd.txt', 'r', encoding='utf-8')as f, open('user_pwd.txt', 'a', encoding='utf-8') as f1:
    for line in f.readlines():
    register_name = line.split(',')[0].strip()
    register_passwd = line.split(',')[1].strip()
    register_name_passwd[register_name] = register_passwd

    name = input('请输入注册用户名:').strip()
    passwd = int(input('请输入注册密码:').strip())

    while True:
    if name in register_name_passwd:
    flag_register = True # 该用户已经存在,请重新注册
    else:
    flag_register = False # 该用户不存在,注册成功

    if flag_register == False:
    f1.write(name), f1.write(','), f1.write(str(passwd)), f1.write(' '),
    f1.close()
    print('用户注册成功')
    print('请登录...')
    break

    else:
    print('用户已存在,请重新注册')
    name = input('请输入用户名:').strip()
    passwd = int(input('请输入密码:').strip())


    # 购物车
    def shopping():
    '''
    :return:返回商品清单
    '''
    # 原始购物清单
    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
    ]
    # 购物车
    shopping_car = {}
    # 购物车遍历
    shopping_car_list = []

    # 商品个数
    good_count = 1

    # 商品单价
    shopping_price = {}

    # 输入不合法是打印
    def return_error():
    print("33[1;31m 输入不合法,请重新输入 33[0m")

    # 打印购物车商品和剩余金额
    def end_shopping():

    # 获取原始列表中的名称和价格
    for list_goods_price in goods:
    shopping_price[list_goods_price['name']] = list_goods_price['price']
    with open('shopping_list.txt', 'w', encoding='utf-8') as shoppingf:
    # 获取购物车中的名称和个数,并从中找到与原始列表中名称所对应的价格
    for list_shopping_name, list_shopping_count in shopping_car.items():
    shoppingf.writelines('商品名称:{0},商品个数:{1}个,商品价格:{2}元 '.format(list_shopping_name, list_shopping_count,
    shopping_price[list_shopping_name]))
    # 格式化购物车商品名称和个数
    for list_name in shopping_car:
    print('33[1;32m 商品名称:{0} 商品个数:{1} 33[0m'.format(list_name, shopping_car[list_name]))
    print("33[1;32m 剩余金额为:{0}33[0m".format(all_money))

    while True:
    # 用户输入总资产
    all_money = input("33[1;32m 请输入总资产: 33[0m").strip()
    if all_money.isdigit():
    all_money = int(all_money)
    # 显示购物商品列表
    print('33[1;32m ========== 商 品 清 单 ========== 33[0m'.center(20))
    for good_index, good in enumerate(goods, 1):
    print('33[1;32m {0} {1} {2} 33[0m'.format(good_index, good['name'],
    good['price']).center(20))
    print('33[1;32m 选择"q"退出 33[0m'.center(20))
    while True:
    # 选择商品序号,或选择退出购物
    choice_count = input("33[1;32m 请输入商品序号: 33[0m").strip()
    if choice_count.isdigit():
    choice_count = int(choice_count)
    # 商品序号小于商品列表长度
    if choice_count > 0 and choice_count <= len(goods):
    good_price = goods[choice_count - 1]['price']
    # 用户资产大于商品价格,否则提示充值
    if all_money > good_price:
    good_name = goods[choice_count - 1]['name']
    all_money -= good_price
    # 商品是否存在购物车中
    if good_name not in shopping_car:
    shopping_car[good_name] = good_count
    else:
    for shopping_index, shopping_name in enumerate(shopping_car):
    if shopping_name == good_name:
    shopping_car[shopping_name] += 1

    end_shopping()


    else:
    print('33[1;31m 余额不足,请充值: 33[0m'.center(17))
    add_money = input("请输入总资产:").strip()
    if add_money.isdigit():
    add_money = int(add_money)
    all_money += add_money
    print('33[1;32m 充值成功,剩余金额为: 33[0m'.center(17), all_money)
    continue
    elif choice_count.lower() == 'q':
    print("33[1;32m 购物结束,欢迎下次光临 33[0m")
    end_shopping()
    exit()
    return_error()


    # 主体函数
    def main_menu():
    # 打印选项菜单
    print('{0} {1} {2} {3}'.format('选项菜单如下:', '1.注册', '2.登录', '3.购物车'))
    while True:
    choice = int(input('请输入菜单序号:').strip())
    if choice == 1:
    print('欢迎进入用户注册界面:')
    register()
    continue
    elif choice == 2:
    login()
    elif choice == 3:
    if flag_user == True:
    login()
    else:
    print('请登录后,再试...')
    else:
    print('输入有误,请重新输入..')


    main_menu()
  • 相关阅读:
    Markdown
    DNS解析流程
    maven 的各种命令
    ES6初体验——(1)let和const命令
    table相关的选择器 & children()与find()的区别 & 选择器eq(n)与nth-child(n)的差异
    Java MD5加密类
    POI操作Excel异常Cannot get a text value from a numeric cell
    MyEclipse+SSH开发环境配置
    JdbcTemplate详解
    Spring配置声明
  • 原文地址:https://www.cnblogs.com/ipyanthony/p/9077138.html
Copyright © 2011-2022 走看看