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:\E\semantic\zzzz/%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:\E\semantic\zzzz', single_level = True):
w = re.findall(r'\\([\w]+)\.txt',name)
for i in w:
if user_name == i:
# f = open('D:\E\semantic\zzzz/%s.txt'%user_name,'r')
# t = f.read()
return True
return False
#验证账号密码
def user_pwd(user,pwd):
f = open('D:\E\semantic\zzzz/%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:\E\semantic\zzzz/%s.txt'%user
os.remove(filename)
f = open('D:\E\semantic\zzzz/%s.txt'%user,'ab+')
f.write(pickle.dumps(r))
f.close()
return True
#修改密码
def pwd_new(user,pwd,):
f = open('D:\E\semantic\zzzz/%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:\E\semantic\zzzz/shop_stock.txt','rb')
Product_List = pickle.loads(s.read())
print('*******************************\n欢迎光临山姆旗舰店 退出按‘Y’\n*******************************\n')
for i in Product_List:
print(i['name'],i['price'],i['unit'],i['piece'],i['Stock'])
f = open('D:\E\semantic\zzzz/%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('*******************************\n登录请按1,注册请按2,修改密码3\n*******************************\n')
#账户登录
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:\E\semantic\zzzz/%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:\E\semantic\zzzz', single_level = True):
w = re.findall(r'\\([\w]+)\.txt',name)
for i in w:
if user_name == i:
# f = open('D:\E\semantic\zzzz/%s.txt'%user_name,'r')
# t = f.read()
return True
return False
#验证账号密码
def user_pwd(user,pwd):
f = open('D:\E\semantic\zzzz/%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:\E\semantic\zzzz/%s.txt'%user
os.remove(filename)
f = open('D:\E\semantic\zzzz/%s.txt'%user,'ab+')
f.write(pickle.dumps(r))
f.close()
return True
#商品库存信息更新
def write_shopping(Stock):
filename = 'D:\E\semantic\zzzz/shop_stock.txt'
os.remove(filename)
f = open('D:\E\semantic\zzzz/shop_stock.txt','ab+')
f.write(pickle.dumps(Stock))
f.close()
return True
#修改密码
def pwd_new(user,pwd,):
f = open('D:\E\semantic\zzzz/%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:\E\semantic\zzzz/shop_stock.txt','rb')
Product_List = pickle.loads(s.read())
s.close()
print('*******************************\n 欢迎光临山姆旗舰店 退出按‘Y’\n*******************************\n')
for i in Product_List:
print(i['name'],i['price'],i['unit'],i['piece'],i['Stock'])
f = open('D:\E\semantic\zzzz/%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:\E\semantic\zzzz/%s.txt'%user,'rb')
r = pickle.loads(f.read())
f.close()
return r
#修改个人信息
def modify_information(user,pwd):
r = display_information(user)
print('姓名:%s\n手机号:%s\n余额:%s元\n已购买%s件商品,总消费%s元.\n'%(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('*****************************************\n登录请按1,注册请按2,修改密码3,修改信息4\n*****************************************\n')
#账户登录
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()