基于md5加密的模拟管理员登录系统

发布时间 2023-08-07 23:09:23作者: 凤毛麟角编程
import os
import pandas as pd

def md5(string:str=''):
    import hashlib
    md5 = hashlib.md5()
    md5.update(string.encode('utf-8'))
    return md5.hexdigest()
# In [1]: def md5(string:str=''):^M
#    ...:     import hashlib^M
#    ...:     md5 = hashlib.md5()^M
#    ...:     md5.update(string.encode('utf-8'))^M
#    ...:     return md5.hexdigest()^M
#    ...: md5('Hello World')^M
# Out[1]: 'b10a8db164e0754105b7a99be72e3fe5'

class Admin():
    def init():
        if os.path.exists('admin.csv'):
            os.remove('admin.csv')
    def __init__(self,
        admin_username:str='',
        admin_name:str='',
        admin_idcard:str='',
        admin_telephone:str='',
        admin_email:str='',
        admin_job:str='',
        admin_banknum:str='',
        admin_password:str=''):
        self.admin_username = admin_username
        self.admin_password = admin_password
        df = pd.read_csv('admin.csv',dtype=str)
        admin_password = list(df[df['admin_username']==admin_username]['admin_password'])[0]
        if md5(self.admin_password) == admin_password:    
            self.admin_name = admin_name
            self.admin_idcard = admin_idcard
            self.admin_telephone = admin_telephone
            self.admin_email = admin_email
            self.admin_job = admin_job
            self.admin_banknum = admin_banknum
        else:
            print('用户名或密码输入有误!')
            exit()
    def add_admin(self,
        admin_username:str='',
        admin_name:str='',
        admin_idcard:str='',
        admin_telephone:str='',
        admin_email:str='',
        admin_job:str='',
        admin_banknum:str='',
        admin_password:str=''):
        df = pd.read_csv('admin.csv',dtype=str)
        if admin_username not in list(df['admin_username']):
            dfi = pd.DataFrame({
                'admin_username':[admin_username],
                'admin_name':[admin_name],
                'admin_idcard':[admin_idcard],
                'admin_telephone':[admin_telephone],
                'admin_email':[admin_email],
                'admin_job':[admin_job],
                'admin_banknum':[admin_banknum],
                'admin_password':[md5(admin_password)]},
                dtype=str)
            df = pd.concat([df,dfi])
            df.to_csv('admin.csv',encoding='utf-8',index=None)
        else:
            input('账户已存在,回车取消添加。')
    def set_admin(self,column,value):
        df = pd.read_csv('admin.csv',dtype=str)
        index = df.index[df['admin_username']==self.admin_username]
        df.loc[index,[column]] = value
        df.to_csv('admin.csv',encoding='utf-8',index=None)
    def del_admin(self):
        df = pd.read_csv('admin.csv',dtype=str)
        index = df.index[df['admin_username']!=self.admin_username]
        df = df.loc[index,:]
        df.to_csv('admin.csv',encoding='utf-8',index=None)
    def cat_admin(self):
        df = pd.read_csv('admin.csv',dtype=str)
        df = df[df['admin_username'] == self.admin_username]
        print(df)

def test():
    admin = Admin(admin_username='0000',admin_password='123456')
    admin.cat_admin()
    admin.set_admin('admin_name','毛麟')
    admin.add_admin(admin_username='0001',admin_password='123456')
    admin = Admin(admin_username='0002',admin_password='123456')
    admin.del_admin()

def admin_login():
    print('欢迎进入毛子哥银行管理员系统登录页面:')
    for i in range(3):
        admin_username = input('请输入管理员登录账户:')
        admin_password = input('请输入管理员登录密码:')
        df = pd.read_csv('admin.csv',encoding='utf-8',dtype=str)
        password = list(df[df['admin_username']==admin_username]['admin_password'])[0]
        if md5(admin_password) == password:
            admin = Admin(admin_username=admin_username,admin_password=admin_password)
            os.system('cls')
            return admin
        else:
            os.system('cls')
            print('哦豁,密码输错了进不去,难受!!!')
            continue
    os.system('cls')
    print('密码这种东西都会忘,干脆把名字也一起忘了吧。')
    exit()

def admin_main():
    if not os.path.exists('admin.csv'):
        df = pd.DataFrame({
            'admin_username':['0000'],
            'admin_name':[''],
            'admin_idcard':[''],
            'admin_telephone':[''],
            'admin_email':[''],
            'admin_job':[''],
            'admin_banknum':[''],
            'admin_password':[md5('123456')]},
            dtype=str)
        df.to_csv('admin.csv',encoding='utf-8',index=None)
    admin = admin_login()
    while True:
        os.system('cls')
        print('''欢迎进入毛子哥银行管理员系统:
本系统提供以下功能:
    1.添加用户;2.查看用户;3.修改用户;
    4.切换用户;5.删除用户;6.退出系统。''')
        menu = input('请输入你想要操作的功能编号:')
        if menu == '1':
            os.system('cls')
            print('欢迎使用毛子哥银行管理员系统添加用户功能:')
            admin_username = input('请输入登陆账号:')
            admin_password = input('请输入登录密码:')
            admin.add_admin(admin_username=admin_username,admin_password=admin_password)
        elif menu == '2':
            os.system('cls')
            print('欢迎使用毛子哥银行管理员系统查看用户功能:')
            admin.cat_admin()
            input('回车取消查看。')
        elif menu == '3':
            os.system('cls')
            print('欢迎使用毛子哥银行管理员系统修改用户功能:')
            column = input('请输入当前用户需要修改的字段名字:')
            value = input('请输入当前用户需要修改的字段数据:')
            admin.set_admin(column,value)
        elif menu == '4':
            os.system('cls')
            condition = input('即将切换毛子哥银行管理员系统账户(y/n):')
            if condition == 'y':
                admin = admin_login()
        elif menu == '5':
            os.system('cls')
            condition = input('即将删除毛子哥银行管理员系统账户(y/n):')
            if condition == 'y':
                admin.del_admin()
                continue
        elif menu == '6':
            os.system('cls')
            condition = input('即将离开毛子哥银行管理员系统(y/n):')
            break
def main():
    admin_main()

if __name__ == '__main__':
    main()