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()