首页 > 编程语言 > 详细

python--个人信息修改程序

时间:2019-03-31 15:08:11      阅读:143      评论:0      收藏:0      [点我收藏+]

创建一个新的文本,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\n% 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("\033[32;1m%s\033[0m" %msg)
    elif log_type == error:
        print("\033[31;1m%s\033[0m" %msg)


def load_db():
    """
    载入人员信息
    :return:
    """
    staff_data = {}
    # 构建字典空列表
    #{‘Username‘: [‘username‘,‘Password‘,‘Name‘,‘Age‘,‘Job‘,‘Dept‘,‘Phone‘}
    # for d in COLUMN_NAME:
    #     staff_data[d] = []

    with open(DB_FILE, r, encoding=utf-8) as f:
        for line in f:
            datas = line.split(",")
            # 构建员工信息字典
            datas[-1] = datas[-1].strip()  # 去掉回车

            staff_data[datas[0]] = datas

    return staff_data


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 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\n% row_data)

    f.close()


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


if __name__ == __main__:
    STAFF_INFO = load_db()
    # print(STAFF_INFO)
    count = 0
    while count < 3:
        user = input(用户名:->)
        pwd = input(密码:->)
        if login_auth(user, pwd):
            print(welcome %s.center(50,-) % user)
            while True: # 用户停留这一层
                print(MENU)
                user_choice = input(">>>").strip()
                if user_choice.isdigit():
                    user_choice = int(user_choice)
                    if user_choice == 1:
                        # 用户登录成功打印用户信息
                        print_user_info(user)
                    elif user_choice == 2:
                        change_user_info(user)
                    elif user_choice == 3:
                        change_user_pwd(user)
                elif user_choice == q:
                    break

        else:
            count += 1
    else:
        print_log("Too many attempts.", error)
View Code

 

来源:http://www.cnblogs.com/xiao-apple36/p/8624143.html

 

 

 

 

来源:

 

python--个人信息修改程序

原文:https://www.cnblogs.com/lanyincao/p/10631306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!