• python--个人信息修改程序


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

    来源:

     

  • 相关阅读:
    .NET C# Tostring() format 格式化字符串大全
    国美秒杀器分享帐号
    .NET 调用JS:WebBrowser.Document.InvokeScript 方法抛出“指定的转换无效”异常的原因
    非接触式IC卡性能简介(M1)
    使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
    C# .NET entity下sqlite部署问题
    sqlite3自增key设定(创建自增字段)
    .NET在winform中使用UrlEncode进行字符串编码字母大写
    HttpWebRequest 二三事
    SQLite在字符串比较中的大小写问题
  • 原文地址:https://www.cnblogs.com/lanyincao/p/10631306.html
Copyright © 2020-2023  润新知