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. ssh终端工具推荐-WindTerm

    什么是WindTerm 官方github https://github.com/kingToolbox/WindTerm A Quicker and better SSH/Telnet/Serial/ ...

  2. 批处理bat and 汇编小技巧

    来自远古时期的汇编软件MASM是没有像现在一样的exe程序的(汇编萌新的认知),所以为了快捷,写一些bat来方便操作.([表情包]奇怪的知识增加了)哈哈哈 我现在是MASM的路径是D:\Masm64\ ...

  3. Python竖版大屏 | 用pyecharts开发可视化的奇妙探索!

    你好!我是@马哥python说,一枚10年程序猿‍,正在试错用pyecharts开发可视化大屏的非常规排版. 以下,我用8种ThemeType展示的同一个可视化数据大屏. 1.SHINE主题 2.LI ...

  4. web自动化10-窗口截图、验证码处理

    窗口截图 1.是什么 说明:把当前操作的页面,截图保存到指定位置 2.代码中怎么使用? 说明:在Selenium中,提供了截图方法,我们只需要调用即可 方法: driver.get_screensho ...

  5. 在Istio中,到底怎么获取 Envoy 访问日志?

    Envoy 访问日志记录了通过 Envoy 进行请求 / 响应交互的相关记录,可以方便地了解具体通信过程和调试定位问题. 环境准备 部署 httpbin 服务: kubectl apply -f sa ...

  6. Spring源码核心剖析

    前言 SpringAOP作为Spring最核心的能力之一,其重要性不言而喻.然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能.而SpringAOP只是在AOP的基础上 ...

  7. 前端检测手机系统是iOS还是android(可实现根据手机系统跳转App下载链接)

    快速实现前端检测手机系统是iOS还是android(可实现根据手机系统跳转App下载链接); 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plug ...

  8. 3. Servlet原理

    Servlet 是 Java Web 应用程序中的重要组件之一,它是一个 Java 类,用于处理客户端 HTTP 请求和生成 HTTP 响应.Servlet 的原理如下: 服务器启动时,Servlet ...

  9. SpringIoc容器之Aware

    1 前言 Aware是Spring提供的一个标记超接口,指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一.实际的方法签名由各个子接口确定 ...

  10. 前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身.通过组件化开发,可以有效 ...