登录+购物车+信息保存

import fnmatch, os
import re
import pickle

#写入注册信息
def inmation(user,pwd,XinMing,phone,balance=0,consumption=0):
    name_user = {'name':user,'pwd':pwd,'XinMing':XinMing,'phone':phone,'balance':balance,'consumption':consumption,'shop_car':{},}
    f = open('D:Esemanticzzzz/%s.txt'%user,'ab+')
    f.write(pickle.dumps(name_user))

#验证文件名账号,在就返回True 不再返回False
def edd(user_name):
    def allFiles(root, patterns = '*', single_level = False, yield_folders = False):
        patterns = patterns.split(';')
        for path, subdirs, files in os.walk(root):
            if yield_folders:
               files.extend(subdirs)
            files.sort()
            for name in files:
                for pattern in patterns:
                    if fnmatch.fnmatch(name, pattern):
                        yield os.path.join(path, name)
                        break
            if single_level:
                break
    for name in allFiles('D:Esemanticzzzz', single_level = True):
        w = re.findall(r'\([w]+).txt',name)
        for i in w:
            if user_name == i:
                # f = open('D:Esemanticzzzz/%s.txt'%user_name,'r')
                # t = f.read()
                return True
    return False

#验证账号密码
def user_pwd(user,pwd):
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb')
    r = pickle.loads(f.read())
    if r['name'] == user and r['pwd'] == pwd :
        return True
    return False

#写入修改信息  必须先关闭打开文件
def write_information(user,r):
    filename = 'D:Esemanticzzzz/%s.txt'%user
    os.remove(filename)
    f = open('D:Esemanticzzzz/%s.txt'%user,'ab+')
    f.write(pickle.dumps(r))
    f.close()
    return True

#修改密码
def pwd_new(user,pwd,):
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb+')
    r = pickle.loads(f.read())
    f.close()
    print(r)
    if r['name'] == user and r['pwd'] == pwd :
        while True:
            inp_new1 = input('输入新密码')
            inp_new2 = input('输入新密码')
            if inp_new1 == inp_new2:
                r['pwd'] = inp_new2
                write_information(user,r)
                return True
    return False

#购物
def Product(user,pwd):
    s = open ('D:Esemanticzzzz/shop_stock.txt','rb')
    Product_List  = pickle.loads(s.read())

    print('*******************************
欢迎光临山姆旗舰店 退出按‘Y’
*******************************
')
    for i in Product_List:
        print(i['name'],i['price'],i['unit'],i['piece'],i['Stock'])
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb+')
    r = pickle.loads(f.read())
    f.close()
    while True:
        inp_shop=input('请输入需要购买的商品:')
        for i in Product_List:
            if inp_shop == i['name']:
                r['balance'] -= i['price']

                while r['balance'] < 0:
                    print('本次消费需支付%s元.'%abs(r['balance']))
                    inp_money = input('请输入充值金额:')
                    int(inp_money)
                    r['balance'] += int(inp_money)
                    print(r)
                print('尊敬的『%s』会员,您已成功购买此商品,本次消费%s元,账户余额为%s元,'%(r['XinMing'],i['price'],r['balance']))
        if inp_shop == 'y' or inp_shop == 'Y' :
            print('『%s』会员欢迎再次光临,祝您购物愉快'%r['XinMing'])
            write_information(user,r)
            break

#主
def sgin():
    inp_1 = input('*******************************
登录请按1,注册请按2,修改密码3
*******************************
')

    #账户登录
    if inp_1 == '1':
        while True:
            inp_user = input('请输入登录账号:')
            if edd(inp_user):
                print('账号可用')
            else:
                print('账户信息不存在')
                continue
            inp_pwd = input('请输入登录密码:')
            if user_pwd(inp_user,inp_pwd):
                print('恭喜登录成功')
                Product(inp_user,inp_pwd)
                break
            else:
                print('密码输入错误')
    #账户注册
    elif inp_1 == '2':
        while True:
            inp_user = input('请输入注册登录账号:')
            user_new = edd(inp_user)
            if user_new:
                print('账号已经存在')
                continue
            inp_phone = input('请输入手机号号:')
            inp_pwd = input('请输入注册密码:')
            inp_xinming = input('姓名:')
            inmation(inp_user,inp_pwd,inp_xinming,inp_phone)
            print('恭喜注册成功')
            sgin()
            break

    elif inp_1 == '3':
        while True:
            inp_user = input('请输入登录账号:')
            if edd(inp_user):
                print('账号可用')
            else:
                print('账户信息不存在')
                continue
            inp_pwd = input('请输入登录密码:')
            if pwd_new(inp_user,inp_pwd):
                print('恭喜修改成功')
                sgin()
                break
            else:
                print('密码输入错误')
sgin()
# Product()

  

升级版 购物车可保存

import fnmatch, os
import re
import pickle

#写入注册信息
def inmation(user,pwd,XinMing,phone,balance=0,consumption=0,piece=0):
    name_user = {'name':user,'pwd':pwd,'XinMing':XinMing,'phone':phone,'balance':balance,'consumption':consumption,'shop_car':[],'piece':piece}
    f = open('D:Esemanticzzzz/%s.txt'%user,'ab+')
    f.write(pickle.dumps(name_user))

#验证文件名账号,在就返回True 不再返回False
def edd(user_name):
    def allFiles(root, patterns = '*', single_level = False, yield_folders = False):
        patterns = patterns.split(';')
        for path, subdirs, files in os.walk(root):
            if yield_folders:
               files.extend(subdirs)
            files.sort()
            for name in files:
                for pattern in patterns:
                    if fnmatch.fnmatch(name, pattern):
                        yield os.path.join(path, name)
                        break
            if single_level:
                break
    for name in allFiles('D:Esemanticzzzz', single_level = True):
        w = re.findall(r'\([w]+).txt',name)
        for i in w:
            if user_name == i:
                # f = open('D:Esemanticzzzz/%s.txt'%user_name,'r')
                # t = f.read()
                return True
    return False

#验证账号密码
def user_pwd(user,pwd):
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb')
    r = pickle.loads(f.read())
    if r['name'] == user and r['pwd'] == pwd :
        return True
    return False

#写入修改信息  必须先关闭打开文件
def write_information(user,r):
    filename = 'D:Esemanticzzzz/%s.txt'%user
    os.remove(filename)
    f = open('D:Esemanticzzzz/%s.txt'%user,'ab+')
    f.write(pickle.dumps(r))
    f.close()
    return True

#商品库存信息更新
def write_shopping(Stock):
    filename = 'D:Esemanticzzzz/shop_stock.txt'
    os.remove(filename)
    f = open('D:Esemanticzzzz/shop_stock.txt','ab+')
    f.write(pickle.dumps(Stock))
    f.close()
    return True

#修改密码
def pwd_new(user,pwd,):
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb+')
    r = pickle.loads(f.read())
    f.close()
    print(r)
    if r['name'] == user and r['pwd'] == pwd :
        while True:
            inp_new1 = input('输入新密码')
            inp_new2 = input('输入新密码')
            if inp_new1 == inp_new2:
                r['pwd'] = inp_new2
                write_information(user,r)
                return True
    return False

#购物
def Product(user,pwd):
    s = open ('D:Esemanticzzzz/shop_stock.txt','rb')
    Product_List  = pickle.loads(s.read())
    s.close()
    print('*******************************
 欢迎光临山姆旗舰店 退出按‘Y’
*******************************
')
    for i in Product_List:
        print(i['name'],i['price'],i['unit'],i['piece'],i['Stock'])
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb+')
    r = pickle.loads(f.read())
    f.close()
    while True:
        inp_shop=input('请输入需要购买的商品:')
        for i in Product_List:
            if inp_shop == i['name']:
                r['balance'] -= i['price']
                r['shop_car'].append(i['name'])
                r['consumption'] += i['price']
                r['piece'] += 1
                i['piece'] -=1
                while r['balance'] < 0:
                    print('本次消费需支付%s元.'%abs(r['balance']))
                    inp_money = input('请输入充值金额:')
                    int(inp_money)
                    r['balance'] += int(inp_money)

                print('尊敬的『%s』会员,您已成功购买此商品,本次消费%s元,账户余额为%s元,'%(r['XinMing'],i['price'],r['balance']))
        if inp_shop == 'y' or inp_shop == 'Y' :
            print('『%s』会员欢迎再次光临,祝您购物愉快'%r['XinMing'])
            write_shopping(Product_List)
            write_information(user,r)
            break

#打开个人信息
def display_information(user):
    f = open('D:Esemanticzzzz/%s.txt'%user,'rb')
    r = pickle.loads(f.read())
    f.close()
    return r

#修改个人信息
def modify_information(user,pwd):
    r = display_information(user)
    print('姓名:%s
手机号:%s
余额:%s元
已购买%s件商品,总消费%s元.
'%(r['XinMing'],r['phone'],r['balance'],r['piece'],r['consumption']))
    inp_modify = input('请输入你要修改的信息')
    if inp_modify == '手机号':
        inp_phone = input('请输入需要修改的手机号:')
        r['phone'] = inp_phone
    elif inp_modify == '姓名':
        inp_name = input('请输入需要修改的姓名:')
        r['XinMing'] = inp_name
    write_information(user,r)

#主
def sgin():
    inp_1 = input('*****************************************
登录请按1,注册请按2,修改密码3,修改信息4
*****************************************
')

    #账户登录
    if inp_1 == '1':
        while True:
            inp_user = input('请输入登录账号:')
            if edd(inp_user):
                print('账号可用')
            else:
                print('账户信息不存在')
                continue
            inp_pwd = input('请输入登录密码:')
            if user_pwd(inp_user,inp_pwd):
                print('恭喜登录成功')
                Product(inp_user,inp_pwd)
                break
            else:
                print('密码输入错误')
    #账户注册
    elif inp_1 == '2':
        while True:
            inp_user = input('请输入注册登录账号:')
            user_new = edd(inp_user)
            if user_new:
                print('账号已经存在')
                continue
            inp_phone = input('请输入手机号号:')
            inp_pwd = input('请输入注册密码:')
            inp_xinming = input('姓名:')
            inmation(inp_user,inp_pwd,inp_xinming,inp_phone)
            print('恭喜注册成功')
            sgin()
            break
    #修改密码
    elif inp_1 == '3':
        while True:
            inp_user = input('请输入登录账号:')
            if edd(inp_user):
                print('账号可用')
            else:
                print('账户信息不存在')
                continue
            inp_pwd = input('请输入登录密码:')
            if pwd_new(inp_user,inp_pwd):
                print('恭喜修改成功')
                sgin()
                break
            else:
                print('密码输入错误')
    #查询信息
    elif inp_1== '4':
        while True:
            inp_user = input('请输入登录账号:')
            if edd(inp_user):
                print('账号可用')
            else:
                print('账户信息不存在')
                continue
            inp_pwd = input('请输入登录密码:')
            if user_pwd(inp_user,inp_pwd):
                print('恭喜登录成功')
                modify_information(inp_user,inp_pwd)
                break
            else:
                print('密码输入错误')


sgin()
# Product()

  

原文地址:https://www.cnblogs.com/cloniu/p/6221835.html