简易用户登陆系统(python)

源码展示

源码:

import f_sys            #通过文件操作

f_sys.main_meun()
while True:
    f_sys.info_meun()
    f_sys.switch(input('请输入操作:'))

注意 下列代码请保存在和上述代码同一文件夹中 上述代码会引用下述代码的函数

def main_meun():
    '''主菜单'''
    print('='*20)
    print('欢迎使用用户登录系统')
    print('='*20)

def info_meun():
    '''信息菜单'''
    print('1,登录 2,注册 3,显示用户列表 4,修改用户信息 5,删除用户信息 6,退出')

def switch(num):
    '''选择操作'''
    if num == '1':
        login_function()
    elif num == '2':
        register_function()
    elif num == '3':
        show_user_list()
    elif num == '4':
        update_user_list()
    elif num == '5':
        delete_user_list()
    elif num == '6':
        exit_function()
    else:
        error_function()

def login_function():
    '''用户登录'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name in user_list and user_password in user_list:
        print('登录成功\n')
    else:
        print('用户名或密码错误\n')

def register_function():
    '''用户注册'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name in user_list and user_password in user_list:
        print('用户已存在\n')
        return
    else:
        pass
    with open("user_info.txt","a") as f:
        f.write('{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n')
    print('注册成功\n')

def exit_function():
    '''用户退出'''
    print('已退出\n')
    exit()

def error_function():
    '''输入错误提示'''
    print('输入错误\n')

def show_user_list():
    '''显示用户列表'''
    user_list = []
    with open("user_info.txt","r") as f:
        user_list = f.read()
    print(user_list)

def update_user_list():
    '''更新用户列表'''
    user_name = input('请输入原用户名:')
    user_password = input('请输入原密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name not in user_list and user_password not in user_list:
        print('用户不存在,请更换用户名或密码\n')
        return
    new_user_name = input('请输入新用户名:')
    new_user_password = input('请输入新密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if new_user_name in user_list and new_user_password in user_list:
        print('用户已存在,请更换用户名或密码\n')
        return
    else:
        pass
    old_str = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    new_str = '{username:\t'+ new_user_name + '\t,password:\t' + new_user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(old_str,new_str) #替换指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('修改成功\n')
    
def delete_user_list():
    '''删除用户列表'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name not in user_list and user_password not in user_list:
        print('删除的用户不存在\n')
        return
    else:
        pass
    str_to_delete = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(str_to_delete,'') #删除指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('删除成功\n')

具体分析:

主菜单:

def main_meun():
    '''主菜单'''
    print('='*20)
    print('欢迎使用用户登录系统')
    print('='*20)

显示效果:

1,登陆

若登陆的用户不存在:

2,注册

原文件内容

进行注册操作

新文件内容

文件中多了一行

若注册用户已经存在

3,显示用户列表

4,修改用户信息

在文件中会看到用户更改了

若原用户不存在

若修改后的用户存在

5,删除用户信息

文件中会看到用户已经删除了

若删除的用户不存在

6,退出

退出了循环

代码分析

主菜单

def main_meun():
    '''主菜单'''
    print('='*20)
    print('欢迎使用用户登录系统')
    print('='*20)

三个简单的输出

可以自己增加其他输出

信息菜单

我称其为二级菜单

因为它在死循环中,每次操作完成后都会显示信息菜单

主函数:

import f_sys            #通过文件操作

f_sys.main_meun()
while True:
    f_sys.info_meun()
    f_sys.switch(input('请输入操作:'))

可以看到

main_menu不在循环中,而info_meun在循环中

选择操作

def switch(num):
    '''选择操作'''
    if num == '1':
        login_function()
    elif num == '2':
        register_function()
    elif num == '3':
        show_user_list()
    elif num == '4':
        update_user_list()
    elif num == '5':
        delete_user_list()
    elif num == '6':
        exit_function()
    else:
        error_function()

python中没有switch语句,我使用if elsf实现,也方便后续增加其他操作

用户登陆

def login_function():
    '''用户登录'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name in user_list and user_password in user_list:
        print('登录成功\n')
    else:
        print('用户名或密码错误\n')

用"r"打开,用·f.read读取所有用户,把用户保存在user_list中,判断user_name和user_password是否都为真,有一个是假就都假

用户注册

def register_function():
    '''用户注册'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name in user_list and user_password in user_list:
        print('用户已存在\n')
        return
    else:
        pass
    with open("user_info.txt","a") as f:
        f.write('{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n')
    print('注册成功\n')

先判断输入的用户是否在文件中已经存在,若存在就输出用户已存在

然后用"a"(追加)打开文件,将信息写入

显示用户信息

def show_user_list():
    '''显示用户列表'''
    user_list = []
    with open("user_info.txt","r") as f:
        user_list = f.read()
    print(user_list)

很简单,很容易能看懂,就不赘述了

更新用户信息

def update_user_list():
    '''更新用户列表'''
    user_name = input('请输入原用户名:')
    user_password = input('请输入原密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name not in user_list and user_password not in user_list:
        print('用户不存在,请更换用户名或密码\n')
        return
    new_user_name = input('请输入新用户名:')
    new_user_password = input('请输入新密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if new_user_name in user_list and new_user_password in user_list:
        print('用户已存在,请更换用户名或密码\n')
        return
    else:
        pass
    old_str = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    new_str = '{username:\t'+ new_user_name + '\t,password:\t' + new_user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(old_str,new_str) #替换指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('修改成功\n')
    

别看它很长,其实里面有很多判断用户瞎写的操作

最主要的就是

 old_str = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    new_str = '{username:\t'+ new_user_name + '\t,password:\t' + new_user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(old_str,new_str) #替换指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('修改成功\n')

用replace()函数,replace用法:

replace(旧信息,新信息)

删除操作

def delete_user_list():
    '''删除用户列表'''
    user_name = input('请输入用户名:')
    user_password = input('请输入密码:')
    with open("user_info.txt","r") as f:
        user_list = f.read()
    if user_name not in user_list and user_password not in user_list:
        print('删除的用户不存在\n')
        return
    else:
        pass
    str_to_delete = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(str_to_delete,'') #删除指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('删除成功\n')

同理,其中主要的就是

    str_to_delete = '{username:\t'+ user_name + '\t,password:\t' + user_password + '}\n'
    with open("user_info.txt","r") as f:
        user_list = f.read()
    user_list = user_list.replace(str_to_delete,'') #删除指定字符串
    with open("user_info.txt","w") as f:    #写入文件
        f.write(user_list)
    print('删除成功\n')

同样使用replace()函数,不过将新信息设置为""(空)

退出操作

def exit_function():
    '''用户退出'''
    print('已退出\n')
    exit()

exit()相当于control C操作,程序停止运行

输入错误操作

def error_function():
    '''输入错误提示'''
    print('输入错误\n')

这是个防用户瞎操作的函数,若用户输入选择操作以外的输入操作,就会提示输入错误

后续:

在做文件操作前我先做了列表操作

def main_meun():
    '''主菜单'''
    print('='*20)
    print('欢迎使用用户登录系统')
    print('='*20)

def info_meun():
    '''信息菜单'''
    print('1,登录 2,注册 3,显示用户列表 4,修改用户信息 5,删除用户信息 6,退出')

def login_function():
    '''用户登录'''
    username = input('请输入用户名:')
    password = input('请输入密码:')
    for user in user_list:
        if user['username'] == username and user['password'] == password:
            print('登录成功\n')
            break
    else:
        print('用户名或密码错误\n') 

def register_function():
    '''用户注册'''
    username = input('请输入用户名:')
    password = input('请输入密码:')
    for user in user_list:
        if user['username'] == username and user['password'] == password:
            print('不能使用相同的用户名和密码\n')
            break
    else:
        user_list.append({'username': username, 'password': password})
        print('注册成功\n')

def exit_function():
    '''用户退出'''
    print('已退出\n')
    exit()

def error_function():
    '''输入错误提示'''
    print('输入错误\n')

def show_user_list():
    '''显示用户列表'''
    for  i, user in enumerate(user_list):
        print(i+1, user)
    print('\n')

def update_user_list():
    '''更新用户列表'''
    username = input('请输入要修改的用户名:')
    password = input('请输入要修改的密码:')
    for user in user_list:
        if user['username'] == username and user['password'] == password:
            user['username'] = input('请输入新的用户名:')
            user['password'] = input('请输入新的密码:')
            print('修改成功\n')
            break
    else:
        print('未找到用户\n')

def delete_user_list():
    '''删除用户列表'''
    username = input('请输入要删除的用户名:')
    password = input('请输入要删除的密码:')
    for user in user_list:
        if user['username'] == username and user['password'] == password:
            user_list.remove(user)
            print('删除成功\n')
            break
    else:
        print('未找到用户\n')

def switch(num):
    '''选择操作'''
    if num == '1':
        login_function()
    elif num == '2':
        register_function()
    elif num == '3':
        show_user_list()
    elif num == '4':
        update_user_list()
    elif num == '5':
        delete_user_list()
    elif num == '6':
        exit_function()
    else:
        error_function()

user_list = [{'username': 'admin', 'password': 'admin123456'},
             {'username': 'super213', 'password':'Jzh123456'},
             {'username': 'zs', 'password': 'zs123456'},
             {'username': 'ls', 'password': 'ls123456'},
             {'username': 'ww', 'password': 'ww123456'}]

后续会增加管理员登陆等其他设置,看我能想到什么

作者:super_213_

物联沃分享整理
物联沃-IOTWORD物联网 » 简易用户登陆系统(python)

发表回复