zoukankan      html  css  js  c++  java
  • 修改个人信息的程序

    1.需要实现的功能

    • 在一个文件里储存多个用户的个人信息,包含用户名、用户密码、年龄、职位、部门、手机号,用户数据结构如下:

       yc,mima1234,25,master,biology,18771013309

       jack,ycccycu,28,ceo,it,1312312314

       rose,sad21312,23,model,art,213212421

    • 输入用户名与密码,登陆系统,打印如下选项:
    1. 修改个人信息
    2. 打印个人信息
    3. 修改密码
    4. 退出程序
    • 每个选项写一个方法
    • 登陆输错3次,退出程序

     

    2.程序流程简图:

     

    3.程序源码

    # -*- coding: utf-8 -*-
    
    # 用户信息保存在UserList.txt中,格式为XX,XXXXXX,XXXXX用逗号分隔
    # 被锁定的用名保存在LockList.txt中
    
    import sys
    import os
    locked_user = open('LockList.txt','r+')
    locked_name = locked_user.readlines()
    
    
    def get_data(x):  # 用来获取用户所有的信息表,并返回值
        with open('UserList.txt', 'r') as user_file:
            user_list = user_file.readlines()
            user_file.close()
            for user_line in user_list:
                data_list = user_line.strip('
    ').split(',')
                user = data_list[0]
                if user == x:
                    return data_list
            else:
                return False
    
    
    def print_data():  # 用来打印用户信息的工具
        data_list = get_data(username)
        ifo = '''-------welcome to my city------
        name:   %s
        age :   %s
        job :   %s
        Dept:   %s
        Phone:  %s
        ''' % (data_list[0], data_list[2], data_list[3], data_list[4], data_list[5])
        return print(ifo)
    
    
    def change_data(x):  # 用来修改用户信息的工具,包括修改密码
        data_list = get_data(username)
        f_name = 'UserList.txt'
        f_new_name = "%s.new" % f_name
        f = open(f_name, 'r+', encoding="utf-8")
        f_new = open(f_new_name, 'w+', encoding='utf-8')
    
        current_data = [data_list[0], data_list[2], data_list[3], data_list[4], data_list[5]]
        if x == 1:
            for index,item in enumerate(current_data):
                print(index,item)
            num = int(input('请输入你所需要更改的项目序号:'))
            new_str = input('请输入你的新信息:')
            current_data[num] = new_str  # 进行内容的替换
            current_data.insert(1, data_list[1])
    
        else:
            num = 1
            new_str = input('请输入你的新信息:')
            current_data.insert(1,new_str)
        map(str, current_data)
        str_line = ','.join(current_data)
    
        for line in f.readlines():
            old_list = line.strip('
    ').split(',')
            old_line = line.strip('
    ')
            current_user = old_list[0]
            if current_user == username:
                new_line = line.replace(old_line, str_line)
            else:
                new_line = line
            f_new.write(new_line)
        f.close()
        f_new.close()
        os.replace(f_new_name, f_name)
    
    
    count = 0
    while count < 3:
        username = input("请输入你的用户名:")
        for locked_line in locked_name:
            if username == locked_line.strip('
    '):
                print('该用户已被锁定')
                sys.exit()
        data_list = get_data(username)
    
        if data_list:
            passkey = data_list[1]
            password = input("请输入你的密码:")
            if password == passkey:
                print("欢迎您的到来!")
    
                # 进入用户信息修改功能
                while True:
                    print('''
    -------欢迎来的新世界-------
    1.修改个人信息
    2.打印个人信息
    3.修改密码
    4.退出程序
                    ''')
                    choice = int(input('请输入你的选择:'))
                    if choice == 1:
                        change_data(1)
                        continue
                    elif choice == 2:
                        print_data()
                        continue
                    elif choice == 3:
                        change_data(3)
                        continue
                    else:  # 输入其他选项将退出程序
                        sys.exit()
    
                else:
                    count += 1
                    print("输入错误%s次,三次后将退出,并锁定用户!"%count)
                    if count == 3:
                        locked_user.write(username + '
    ')
                        locked_user.close()
                        sys.exit()
                    break
        else:
            print("该用户不存在")
            count += 1
            continue
    
  • 相关阅读:
    Android Studio 生成Jar包时遇到的gradlew下载问题
    未解决问题
    Android -- android.os.Parcelable[] cannot be cast to ...
    vulkan gpu limits in mali
    Why GPU Program is expensive in CPU
    iOS native plugin 的代码sample
    USC-- compute shader ps vs
    zprepass 之后再base pass为什么用equal不用lessequal
    memory management Vulkan
    hlslcc
  • 原文地址:https://www.cnblogs.com/huang-yc/p/8810676.html
Copyright © 2011-2022 走看看