用户信息管理 Python练习

描述:
1、分权限(普通用户,管理员)
普通用户可以查看和修改个人信息;管理员可以对所有用户信息进行增删改查;
2、用户的信息从文件中读取,增加、修改、删除完成后,文件中的内容也要同步;

思路:
1、查、改、删;将文件中的内容读取存入一个字典person中,对该字典进行查、改、删操作;
2、增;增加新用户时直接在文件末尾下一行插入即可。

函数:
1、打印用户信息
2、从文件中读取信息
3、将字典中的内容存到文件
4、修改用户信息
5、增加用户信息
6、删除用户信息


# ************************打印用户信息***********************
def print_info(dict, username):
    data = dict.get(username)
    # 打印格式
    form = '''
        -------------%s的个人信息-------------
                姓名:%s
                密码:%s
                年龄:%s
                职业:%s
                行业:%s
        ---------------------------------------
        ''' % (username, data[0], data[1], data[2], data[3], data[4])
    print(form)


# **********************从文件中读取信息*********************
def readFile(dict):
    f = open("user.txt", "r+", encoding="utf-8")
    raw_data = f.readlines()  # 得到的是列表
    # ['alex,abc123,24,Engineer,IT\n', 'rain,df2@423,25,Teacher,Teaching']
    # dict={} #创建一个空字典,等待将文件中的内容存入
    for line in raw_data:
        line = line.strip()  # alex,abc123,24,Engineer,IT
        items = line.split(",")  # 根据“,”分割line的内容返回一列表,如:
        # ['alex', 'abc123', '24', 'Engineer', 'IT']
        # ['rain', 'df2@423', '25', 'Teacher', 'Teaching']
        dict[items[0]] = items  # 第0个元素为key,后面的为values


# ******************将字典中的内容存到文件******************
def saveFile(dict):  # 把整个内容替换为更改后的内容
    f = open('user.txt', 'w', encoding='utf-8')
    for key in dict:
        row = ",".join(dict[key])  # 用join链接的序列中的元素必须都是字符串,否则会报错。比如列表中的age不能是数字,得加“”
        f.write("%s\n" % row)  # 这里要记得加换行,否则存到文件里的内容都在一行了
    f.close()


# **********************新增用户信息*************************
def add():
    print("*****新增用户信息界面,退出请输入q******")
    new_name = input("用户名:")
    if new_name == 'q':
        pass
    else:
        new_pwd = input("密码:")
        new_check_pwd = input("再次输入密码:")
        if new_pwd != new_check_pwd:
            print("两次密码不一致!")
        else:
            new_age = input("年龄:")
            new_position = input("职业:")
            new_industry = input("行业:")

            # 将新增信息存入一个列表,然后把这个列表中的元素以“,”分隔,追加存入文件
            list = [new_name, new_pwd, new_age, new_position, new_industry]

            f = open('user.txt', 'a+', encoding='utf-8')
            new_row = ",".join(list)
            f.write("%s\n" % new_row)  # 记得存入换行
            print("增加成功!")
            f.close()


# **********************删除用户信息*************************
def delete(dict, username):
    if username not in dict:
        print("%s 不存在!", username)
    else:
        print("确定要删除 %s 的全部信息?" % username)
        confirm = input("Y/N  :")
        if confirm == 'Y' or confirm == 'y':
            del dict[username]  # 删除key为username的条目
            print("删除成功!")
        else:
            pass

        saveFile(dict)


# **********************修改用户信息*************************
def update(dict, username):
    print("*****修改用户信息界面,退出请输入q******")
    data = dict.get(username)  # 得到的是列表
    print(data)
    info = '''
    ----------------------------------
                属性  代码
                姓名   1
                密码   2
                年龄   3
                职业   4
                行业   5
    ----------------------------------
        
    '''
    while True:
        print(info)
        code = input("请输入要修改的属性代码-->:")
        # 如果输入“q”则退出
        if code == 'q':
            break

        # 判断输入的代码是否是数字和是否在1-4范围内
        if code != '1' and code != '2' and code != '3' and code != '4' and code != '5':
            print("输入的代码不存在!")
            continue
        else:
            # 输入的代码符合要求后,进行相关修改
            # 修改用户名
            if code == '1':
                new_name = input("请输入新的用户名:")
                if not new_name:
                    print("输入有误!")
                else:
                    data[0] = new_name
                    print("用户名修改成功!")

            # 修改密码
            elif code == '2':
                new_pwd = input("输入新密码:")
                new_check_pwd = input("再次输入新密码:")
                if (new_pwd != new_check_pwd):
                    print("两次密码输入不一致!")
                else:
                    data[1] = new_pwd
                    print("用户密码修改成功!")
            # 修改年龄
            elif code == '3':
                new_age = input("输入新的年龄:")
                if not new_age:
                    print("输入有误!")
                else:
                    data[2] = new_age
                    print("年龄修改成功!")
            # 修改职位
            elif code == '4':
                new_position = input("输入新的职位:")
                if not new_position:
                    print("输入有误")
                else:
                    data[3] = new_position
                    print("职位修改成功!")
            # 修改行业
            elif code == '5':
                new_industry = input("输入新的行业:")
                if not new_industry:
                    print("输入有误!")
                else:
                    data[4] = new_industry
                    print("行业修改成功!")
            saveFile(dict)


# #**************************主函数******************************
# 从文件中读取内容存入字典person
person = {}  # 创建一个空字典,等待将文件中的内容存入
readFile(person)

while True:
    # 先登录
    print("登录-->")
    login_name = input("用户名:")
    login_pwd = input("密码:")

    if login_name not in person:
        print("用户名不存在!")
        continue

    elif person.get(login_name)[1] != login_pwd:
        print("密码错误!")
        continue
    else:
        print("******登录成功******!")

    # 登录成功后,选择要进行的操作
    while True:
        info = '''
            ----------------------------------
                    操作       代码
                查看个人信息    1
                修改个人信息    2
            ----------------------------------
            '''
        admin_info = '''
            ----------------------------------
                    操作           代码
                查看全部用户信息     1
                修改用户信息         2
                新增用户信息         3
                删除用户信息         4
            ----------------------------------        
                '''
        # 用户权限
        # 若登录的是管理员,这里管理员设为heather
        if login_name == "heather":
            print(admin_info)
            operate = input("输入要进行的操作代码:")
            if operate == 'q':
                break
            elif operate == '1':
                # 把读取出来的内容打印到屏幕
                for line in person:
                    print_info(person, line)
            elif operate == '2':
                # 修改用户信息
                update_name = input("输入要修改的条目的用户名:")
                update(person, update_name)
                # 新增用户信息
            elif operate == '3':
                add()
                # 删除用户信息
            elif operate == '4':
                del_name = input("输入要删除的条目的用户名:")
                delete(person, del_name)

        # 登陆的是普通用户,只能查看和修改个人信息
        else:
            print(info)
            operate = input("输入要进行的操作代码:")
            if operate == 'q':
                break
            elif operate == '1':
                # 把读取出来的内容打印到屏幕
                print(login_name)
                print_info(person, login_name)
            elif operate == '2':
                # 修改个人信息
                update(person, login_name)

            else:
                print("输入有误!")

 

你可能感兴趣的:(Python学习)