|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
PS:该程序有一默认锁定的用户(即所读取的文件均不为空)
源代码如下:
- import easygui as g
- def count_users():
- count = len(dict_members)
- return count
- def secure_question(read_write):
- if read_write == 'read':
- with open('securequestions.pkl','rb') as read_file:
- (questions,answer) = pickle.load(read_file)
- return (questions,answer)
-
- if read_write == 'write':
- (list_question,list_answer) = secure_question('read')
- msg = '请设置账号密保问题'
- title = '账号安全设置'
- choices = ('密保问题','答案')
- while True:
- (str_question,str_answer) = g.multenterbox(msg,title,choices)
- if len(str_question) and len(str_answer):
- break
- else:
- msg = '输入不能为空,请重新输入'
- list_question.append(str_question)
- list_answer.append(str_answer)
- question_data = [list_question,list_answer]
- with open('securequestions.pkl','wb') as write_file:
- pickle.dump(question_data,write_file)
- g.msgbox('密保问题设置成功','安全通知')
-
-
-
- def read_user_ID(file_name):
- pickle_file = open(file_name,'rb')
- dict_user = pickle.load(pickle_file)
- pickle_file.close()
- return dict_user
- def read_password():
- with open('password.pkl','rb') as passwd_file:
- passwd = pickle.load(passwd_file)
- return passwd
- def write_password(password):
- passwd = read_password()
- passwd.append(password)
-
- with open('password.pkl','wb') as passwd_file:
- pickle.dump(passwd,passwd_file)
-
-
- def write_file(name,user_ID):
- dict_members[name] = user_ID
- pickle_file = open('data.pkl','wb')
- pickle.dump(dict_members,pickle_file)
- pickle_file.close()
- def changepasswd(name):
- (question,answer) = secure_question('read')
- flag = dict_members[name]
- msg = question[flag]
- correct_answer = answer[flag]
- title = '修改密码窗口'
- while True:
- enter_answer = g.enterbox(msg,title)
- if enter_answer == correct_answer:
- msg = '请输入新密码'
- new_password = g.passwordbox(msg,title)
- password_list = read_password()
- password_list[flag] = new_password
- with open('password.pkl','wb') as passwd_file:
- pickle.dump(password_list,passwd_file)
- break
- else:
- msg = question[flag]
- msg = '输入错误,请重新输入'+'\n'+msg
- def find_password():
- msg = '请输入您的用户名'
- title = '找回密码'
- name = g.enterbox(msg,title)
- if name in dict_members:
- changepasswd(name)
- else: g.msgbox('您输入的用户名不存在','提示')
-
-
-
- def main_menu():
- title = '主界面'
- choices = ('修改密码','注销','退出')
- while True:
- option = g.buttonbox('',title,choices)
- if option == '修改密码':
- changepasswd(current_user)
- if option == '注销':
- return False
- if option == '退出':
- return True
- def frozen_users(read_write,name):
- if read_write == 'read':
- with open('frozen.pkl','rb') as frozend_file:
- frozen_user = pickle.load(frozend_file)
- return frozen_user
- if read_write == 'write':
- Name = name
- frozen_list = frozen_users('read',Name)
- frozen_list.append(name)
- with open('frozen.pkl','wb') as frozen_file:
- pickle.dump(frozen_list,frozen_file)
- def frozen_off(name):
- user_ID = dict_members[name]
- (questions,answer) = secure_question('read')
- msg = questions[user_ID]
- title = '账号安全窗口'
- n = 3
- while n:
- answer_enter = g.enterbox(msg,title)
- if answer_enter == answer[user_ID]:
- frozen_list = frozen_users('read',name)
- frozen_list.remove(name)
- with open('frozen.pkl','wb') as frozen_file:
- pickle.dump(frozen_list,frozen_file)
- break
- else:
- n -= 1
- g.msgbox('输入错误,你还有%d次机会'%n,title)
-
- def SignIn():
- msg = '请输入用户名和密码'
- title = '用户注册窗口'
- user_info = []
- user_info = g.multpasswordbox(msg,title,('用户名','密码'))
- (name,password) = user_info
- while name in dict_members:
- g.msgbox('用户名已存在请重新输入!')
- SignIn()
- else:
- user_ID = count_users()
- dict_members[name] = user_ID
-
- write_password(password)
- write_file(name,user_ID)
- secure_question('write')
- return { name:user_ID }
- def login(msg,title):
- while 1:
- user_info = []
- user_info = g.multpasswordbox(msg,title,('用户名','密码'))
- (name,password) = user_info
- if name not in dict_members:
- g.msgbox('用户名不存在请重新输入!')
- login(msg,title)
- else:
- break
- return user_info
- def LogIn():
-
- msg = '请输入用户名和密码'
- title = '用户登录窗口'
- (Name,Password) = login(msg,title)
- if Name in frozen_users('read',Name):
- g.msgbox('该用户已冻结,请前往解冻')
- frozen_off(Name)
- else:
- global current_user
- current_user = Name
- user_ID = dict_members[Name]
- passwd = read_password()
- n = 3
- while (n-1):
- if Password == passwd[user_ID]:
-
- # (暂时不用) g.msgbox('欢迎进入XXOO系统,请点击右上角的X结束程序',ok_button = '退出')
- return True
- break
- else:
- n -= 1
- msg = '密码输入错误,你还有%d次机会' % n
- (Name,Password) = login(msg,title)
- else:
- g.msgbox('已输错三次密码,账号已锁定')
- frozen_users('write',Name)
- frozen_off(Name)
-
-
- import pickle
- dict_members = read_user_ID('data.pkl')
- cmd = True
- while cmd:
- title = '请选择操作对象'
- choices = ('注册','登录','忘记密码','退出')
- temp = g.buttonbox('',title,choices)
- if temp == '注册':
- newmember = SignIn()
- dict_members.update(newmember)
- g.msgbox('注册成功,赶紧登陆试试吧~')
-
- elif temp == '登录' :
- while LogIn():
- cmd = main_menu()
- if cmd:
- break
- elif temp == '忘记密码':
- find_password()
- elif temp == '退出' :
- break
-
- g.msgbox('欢迎使用本程序',ok_button = '再见')
-
-
-
-
-
-
复制代码
|
|