创建一个新的文本,account.txt,输入以下个人信息内容,
lanyinhua,lanyinhua,蓝银花,22,Model,PR,22
alex,123,华仔 Li,222,CEO,IT,1333
rain,rain,刘峰,27, Engineer ,IT ,133542453453
要求
1. 输入用户名密码,正确后登陆系统,打印
1.修改个人信息
2.打印个人信息
3.修改密码
2 .每个选项写一个方法
3. 登录时输错3次退出程序
一 :修改个人信息
def change_user_info(p_user): """ 修改用户信息 :param p_user: 用户名 :return: """ user_info = STAFF_INFO[p_user] for ind, val in enumerate(user_info): if ind > 1: msg = '%s, %s, %s'%(ind, COLUMN_NAME[ind], val) print_log(msg) while True: choice = input("输入要修改的列的序号").strip() if choice.isdigit(): choice = int(choice) # if choice > len(user_info) and choice < 2: if 2 < choice < len(user_info): print_log('输入要的序号不存在', 'error') else: curr_val = user_info[choice] print_log('当前值为'+curr_val) new_val = input('input new_value->').strip() user_info[choice] = new_val STAFF_INFO[p_user] = user_info save_db() msg = '%s修改成功'%COLUMN_NAME[choice] print_log(msg) break else: print_log('输入错误,请输入2-6的数字', 'error')
二:打印个人信息
def print_user_info(p_user): """ 打印用户信息 :param user: 用户名 :return: """ person_data = STAFF_INFO[p_user] # 使用切片把username,Password过滤掉 # 相当于深拷贝,如果数据量大,会占用大量内存空间 # person_data = person_data[COLUMN_NAME.index('Name'):] for i in range (0, COLUMN_NAME.index('Name')): person_data.pop(0) # print(person_data) info = ''' ------------------ Name: {} Age : {} Job : {} Dept: {} Phone: {} ------------------ ''' .format(*person_data) print_log(info)
三: 修改个人密码
def change_user_pwd(p_user): """ 修改密码 :param p_user: :return: """ while True: pwd1 = input("输入新密码->").strip() pwd2 = input("再输一次新密码->").strip() if pwd1 == pwd2: pwd_ind = COLUMN_NAME.index('Password') # 得到密码索引 STAFF_INFO[user][pwd_ind] = pwd2 save_db() print_log('你的密码修改成功') break else: print_log('密码两次输入不一致','error')
四: 个人用户登录
def login_auth(username, pwd): """ 用户名密码验证 :param username: :param pwd: :return: """ if username in STAFF_INFO: if pwd == STAFF_INFO[username][1]: return True else: print_log('用户名与密码不一致','error') return False else: print_log('用户名不存在','error') return False
五:保存到文件
def save_db(): """ 保存到文件中 :return: """ f = open(DB_FILE, "r+", encoding='utf-8') f.seek(0) f.truncate() # 清空文件 for v_data in STAFF_INFO.values(): row_data = ','.join(v_data) f.write('%s '% row_data) f.close()
全部代码
DB_FILE = 'account.txt' COLUMN_NAME =['Username','Password','Name','Age','Job','Dept','Phone'] MENU = ''' 1. 打印个人信息 2. 修改个人信息 3. 修改密码 ''' # 打印信息 def print_log(msg, log_type="info"): if log_type == 'info': print("