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()

基于md5加密的模拟管理员登录系统的更多相关文章

  1. Spring-Security (学习记录五)--配置登录时,密码采用md5加密,以及获取登录信息属性监听同步自己想要的登录信息

    目录 1. PasswordEncoder 采用密码加密 2. 获取当前的用户信息 1. PasswordEncoder 采用密码加密 使用前面的例子.可以看出我们数据库密码是采用明文的,我们在登录的 ...

  2. 基于Java SE的模拟双色球彩票系统

    1.双色球规则: ①双色球分为红球和蓝球,红球选择的范围为1-33,而且红球选择6个数字:蓝球选择的范围为1-16,而且只能选择1个数字. ②选择方式为随机选择号码和手动输入选择号码. ③生成号码的顺 ...

  3. app逆向万能的md5加密hook破解入参方法(其他加密用通用方法原理差不多,小白推荐)

    一.原理 安卓开发调用md5加密时候都会调用到系统类java.security.MessageDigest 加密时候会会调用里面2个关键方法update以及digest 根据这个原理我们开始写代码吧 ...

  4. Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作

    # -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ...

  5. 模拟登录神器之PHP基于cURL实现自动模拟登录类

    一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...

  6. SpringSecurity 登录 - 以及Md5加密

    我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...

  7. WebUtils【MD5加密(基于MessageDigest)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用于MD5加密,主要场景是在调用登录接口时对密码进行MD5加密处理. 效果图 暂不需要 代码分析 基于Java.security.M ...

  8. 单点登录系统实现基于SpringBoot

    今天的干货有点湿,里面夹杂着我的泪水.可能也只有代码才能让我暂时的平静.通过本章内容你将学到单点登录系统和传统登录系统的区别,单点登录系统设计思路,Spring4 Java配置方式整合HttpClie ...

  9. 一个简单的后台与数据库交互的登录与注册[sql注入处理,以及MD5加密]

    一.工具: vs2013[因为我现在用的也是2013,版本随便你自己开心] sql2008[准备过久升级] 二.用到的语言: HTML+CSS+Jquery+Ajax+sqlserver HTML[相 ...

  10. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)

    MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e)     {         //获取验 ...

随机推荐

  1. 基于APM模式的异步实现及跨线程操作窗体或控件方法的实现示例

    最近在一家某电力外派公司开发相关于GIS的功能,在实现代码的过程中出现了一些常见的问题比如: 1.跨线程执行窗体或控件操作(直接使用委拖) 2.异步模式执行某长时间耗时方法 经过一系列摸索可算找到解决 ...

  2. 2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP TABLE IF EXISTS `em

    2022-11-27:超过经理收入的员工.编写一个SQL查询来查找收入比经理高的员工.以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员. DROP TABLE IF EXISTS `em ...

  3. Redis数据结构二之SDS和双向链表

    本文首发于公众号:Hunter后端 原文链接:Redis数据结构二之SDS和双向链表 这一篇笔记介绍一下 SDS(simple dynamic string)和双向链表. 以下是本篇笔记目录: SDS ...

  4. Django4全栈进阶之路9 STATIC静态文件路径设置、MEDIA媒体文件路径设置

    在 Django 4 中,可以在 settings.py 文件中设置 STATICFILES_DIRS 来指定应用程序静态文件所在的文件夹路径,设置 STATIC_ROOT 来指定收集所有应用程序静态 ...

  5. vue全家桶进阶之路49:Vue3 环境变量

    vue3 环境变量 在Vue3中,可以通过环境变量来管理应用程序中的配置.这些配置可以包括后端API的URL.API key.跟踪ID等等.在不同的开发.测试.生产环境中使用不同的配置是非常有用的.V ...

  6. vue全家桶进阶之路7:Vue的第一个程序

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. python通过变量名称的反射,获取变量的引用

    有一些极端情况下,例如变量名称是动态的,我们无法直接调用变量名,如何获取到变量的引用呢? aa = [globals()["xxxx"]]

  8. MYSQL数据库的创建和删除

    打开Windows命令行,输入登录用户和密码 mysql -h localhost -u root -p 创建新数据 CREATE DATABASE zoo; 查看系统中的数据库 SHOW DATAB ...

  9. 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)

    目录 Paddle Serving服务化部署实战 准备预测数据和部署环境 环境准备 安装 PaddlePaddle 2.0 安装 PaddleOCR 准备PaddleServing的运行环境, 模型转 ...

  10. Java如何实现去重?这是在炫技吗?

    大家好,我3y啊.由于去重逻辑重构了几次,好多股东直呼看不懂,于是我今天再安排一波对代码的解析吧.austin支持两种去重的类型:N分钟相同内容达到N次去重和一天内N次相同渠道频次去重. Java开源 ...