python学习之成员信息增删改查

时间:2021-02-16 06:15:27
主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,
在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证, #!/usr/bin/env python
# coding=utf8
#author:shantuwqk@163.com import os, sys, time,json
import re member_dict = \
{}
member_name_list = []
member_list = []
def handler_member_storage(name,passwd,mobile,email): member_detailed = {}
member_detailed['name'] = name
member_detailed['passwd'] = passwd
member_detailed['mobile'] = mobile
member_detailed['email'] = email
member_list.append(member_detailed)
member_name_list.append(name)
member_dict['namelist'] = member_name_list
member_dict['namedetail'] = member_list
#with open('member_info.json','w') as f:
# json.dump(member_dict,f)
return member_dict def handel_query_user(x):
"""
判断x如果是str,查询name字段,如果是int,查询手机号字段
:param x:
:return:
"""
#print "字符串",isinstance(x,str)
#print "数字",isinstance(x,int)
if isinstance(x,str):
if x in load_member_data()['namelist']:
print "精确匹配查询用户[%s]信息....."%(x)
print "==================================================="
user_index = load_member_data()['namelist'].index(x)
user_detail = load_member_data()['namedetail'][user_index]
for k,v in user_detail.items():
print k,v
print "----------------------------------------------------"
else:
print "\033[33;1m用户名或密码不在本数据库,你是不是记错了?您再想想!!\033[0m" if isinstance(x,int):
if check_mobileORmail_member(str(x)) != "mobile_true":
print "这是手机号吗,打打试试...."
else:
print "精确匹配查询用户手机[%s]信息......"%(x)
print "===================================================="
user_detail = load_member_data()['namedetail']
for user_dict in user_detail:
if x == int(user_dict['mobile']):
for k,v in user_dict.items():
print k,v
print "------------------------------------------------" def load_member_data():
with open("member_info.json",'r') as f:
try:
member_info_dict = json.load(f)
return member_info_dict
except ValueError:
#print "\033[33;1m没有数据可加载\033[0m"
return False def check_login(user,passwd):
"""
验证登录用户名和密码是否正确
:param user:
:param passwd:
:return:
"""
with open("member_info.json",'r') as f:
member_info_dict = json.load(f)
#print member_info_dict
if user in member_info_dict['namelist']:
user_index = member_info_dict['namelist'].index(user)
user_detail = member_info_dict['namedetail'][user_index]
#print user_index,user_detail
if passwd == user_detail['passwd'] and user == user_detail['name']:
print "\033[32;1m输入用户[%s]密码[%s]正确\033[0m"%(user,passwd)
return True
else:
print "\033[31;1m 您输入的密码不正确\033[0m"
else:
print "\033[31;1m你查询的用户不存在\033[0m" def check_mobileORmail_member(x):
p=re.compile(r'^[\w\d]+[\d\w\_\.]+@([\d\w]+)\.([\d\w]+)(?:\.[\d\w]+)?$|^(?:\+86)?(\d{3})\d{8}$|^(?:\+86)?(0\d{2,3})\d{7,8}$')
m = p.match(x)
if m == None:
print "\033[33;1mmail or mobile number is wrong!!\033[0m"
return False
else:
if m.group(1)!=None:
if m.group(1) == 'vip':
print 'It is %s mail,the address is %s' %(m.group(2),m.group())
return "mail_true"
else:
print 'It is %s mail,the address is %s' %(m.group(1),m.group())
return "mail_true"
else:
if m.group(3)!=None:
print 'It is mobilephone number,the number is %s' %m.group()
return "mobile_true"
else:
print 'It is telephone number,the number is %s' %m.group()
return True class Modify_User_Info:
"""
修改用户的相关信息
"""
def update_passwd(self,user,newpwd):
if user in load_member_data()['namelist']:
user_index = load_member_data()['namelist'].index(user)
user_detail = load_member_data()['namedetail'][user_index]
user_detail['passwd'] = newpwd
newpwd_dict = load_member_data()
newpwd_dict['namedetail'][user_index] = user_detail
return newpwd_dict
else:
print "你有没有搞错!你输入的用户不在数据库" def update_mobile(self,user,newmobile):
if user in load_member_data()['namelist']:
user_index = load_member_data()['namelist'].index(user)
user_detail = load_member_data()['namedetail'][user_index]
user_detail['mobile'] = newmobile
newpwd_dict = load_member_data()
newpwd_dict['namedetail'][user_index] = user_detail
return newpwd_dict
else:
print "你有没有搞错!你输入的用户不在数据库" def update_email(self,user,newmail):
if user in load_member_data()['namelist']:
user_index = load_member_data()['namelist'].index(user)
user_detail = load_member_data()['namedetail'][user_index]
user_detail['email'] = newmail
newpwd_dict = load_member_data()
newpwd_dict['namedetail'][user_index] = user_detail
return newpwd_dict
else:
print "你有没有搞错!你输入的用户不在数据库" def del_user_info(user):
if user in load_member_data()['namelist']:
user_index = load_member_data()['namelist'].index(user)
user_detail = load_member_data()['namedetail'][user_index]
new_del_dict = load_member_data()
new_del_dict['namedetail'].remove(user_detail)
new_del_dict['namelist'].remove(user)
return new_del_dict else:
print "你要删除的用户[%s]不在数据库里"%user if __name__ == "__main__":
Operation_type = {
'1':'Add user information',
'1.1':'name,passwd,mobile,email',
'2':'Query the user information',
'3':'Modify the user information',
'4':'Delete user information',
'5':'logout'
} while True:
print """
\033[32;1m********************************************************************************
Welcome to login user information center, you can make the following operation:
1,%s
2,%s
3,%s
4,%s
5,%s
What you need to operate?
********************************************************************************\033[0m
"""%(Operation_type['1'],Operation_type['2'],Operation_type['3'],Operation_type['4'],Operation_type['5'])
option = raw_input("Choice is?>>") if option == '1':
print "\033[32;1m you have choice is [%s]\033[0m"%Operation_type['1']
print "You need to complete these input according to [%s] the guidelines"%Operation_type['1.1']
while True:
name = raw_input("name:")
passwd = raw_input("passwd:")
mobile = raw_input("mobile:")
email = raw_input("email:")
if len(name) == 0 or len(passwd) == 0 or len(mobile) == 0 or len(email) == 0:
print "\033[33;1mThe user information you entered any item can't be empty or incorrect.Please fill in again!!\033[0m"
continue
if check_mobileORmail_member(mobile) != "mobile_true" or check_mobileORmail_member(email) != "mail_true":
continue #print "#########3",name,passwd,mobile,email print """\033[32;1m 您输入的信息如下:
name:%s
passwd:%s
mobile:%s
email:%s
\033[0m"""%(name,passwd,mobile,email)
s1 = raw_input("y 保存/w 重新填写>>")
if s1 == "y": old_user_dict = load_member_data()
new_user_dict = handler_member_storage(name,passwd,mobile,email)
#print "############33",old_user_dict,'\n',new_user_dict
#合并旧的和新的用户数据
if old_user_dict == False:
print "没有旧数据可加载,直接写入新数据"
with open('member_info.json','w') as f:
json.dump(new_user_dict,f)
s11 = raw_input("t 继续添加/b 返回上一级/q退出操作?>>")
if s11 == "t":
continue
elif s11 == "b":
break
elif s11 == "q":
sys.exit(0)
else:
for user in new_user_dict['namelist']:
old_user_dict['namelist'].append(user)
for user_detail in new_user_dict['namedetail']:
old_user_dict['namedetail'].append(user_detail)
#print old_user_dict,
with open('member_info.json','w') as f:
json.dump(old_user_dict,f)
print "保存成功"
s12 = raw_input("t 继续添加/b 返回上一级/q退出操作?>>")
if s12 == "t":
continue
elif s12 == "b":
break
elif s12 == "q":
sys.exit(0)
elif s1 == "w":
continue
else:
pass elif option == '2':
print "\033[32;1m you have choice is [%s]\033[0m"%Operation_type['2']
print "\033[33;1m友情提示:输入正确的用户名和密码才能查询用户信息\033[0m"
luser = raw_input("用户名:").strip()
lpasswd = raw_input("用户密码:").strip()
if check_login(luser,lpasswd) == True:
print "用户验证通过"
print "请输入需要查询的用户名或手机号[目前只支持精确查询]"
while True:
query_info = raw_input("查询:>>").strip()
if check_mobileORmail_member(query_info) == "mobile_true":
handel_query_user(int(query_info))
else:
handel_query_user(query_info)
s2 = raw_input("b 返回上一级/t 继续查询")
if s2 == "b":
break
elif s2 == "t":
continue else:
print "用户名或密码不正确,不能查询其它人信息" elif option == '3':
print "\033[32;1m you have choice is [%s]\033[0m"%Operation_type['3']
print "友情提示:目前支持修改用户的密码,手机号,邮箱地址"
modify = Modify_User_Info()
modify_option = raw_input("p 修改密码/m 修改手机号/e 修改邮箱地址")
if modify_option == "p":
user_name = raw_input("用户名:").strip()
user_pwd = raw_input("新密码:").strip()
print "开始修改用户[%s]新的密码为[%s]....."%(user_name,user_pwd)
update_dict = modify.update_passwd(user_name,user_pwd)
with open('member_info.json','w') as f:
json.dump(update_dict,f)
print "密码修改成功!"
elif modify_option == "m":
user_name = raw_input("用户名:").strip()
user_mobile = raw_input("新手机号:").strip()
print "开始修改用户[%s]新的手机号为[%s]....."%(user_name,user_mobile)
update_dict = modify.update_mobile(user_name,user_mobile)
with open('member_info.json','w') as f:
json.dump(update_dict,f)
print "手机号修改成功!"
elif modify_option == "e":
user_name = raw_input("用户名:").strip()
user_mail = raw_input("新邮箱:").strip()
print "开始修改用户[%s]新的邮箱为[%s]....."%(user_name,user_mail)
update_dict = modify.update_email(user_name,user_mail)
with open('member_info.json','w') as f:
json.dump(update_dict,f)
print "邮箱修改成功!" elif option == '4':
print "\033[32;1m you have choice is [%s]\033[0m"%Operation_type['4']
print "友情提示:请输入用户名"
user_name = raw_input("用户名:")
new_del_dict = del_user_info(user_name)
with open('member_info.json','w') as f:
json.dump(new_del_dict,f)
print "用户[%s]删除成功!!"%(user_name)
elif option == '5':
print "\033[32;1m you have choice is [%s]\033[0m"%Operation_type['5']
sys.exit(0)
else:
print "\033[31;1m The choice of the invalid \033[0m" #print check_mobileORmail_member('123456')
#print check_login('testwqk','testwqk')
#print handel_query_user(18600404875)