__auth__='穆穆max'

data='2021/1/4'

class User():

def __init__(self,name,idcard,phonenum,card):

self.name = name

self.idcard = idcard

self.phonenum = phonenum

self.card = card

class Card:

def __init__(self,cardnum,password,money,islock=False):

self.cardnum = cardnum

self.password = password

self.money = money

self.islock = islock

import random,time,datetime

class ATM:

userDict={}

#是否登录

islogin = None

#尝试密码的次数

changshicishu = 0

@staticmethod

def welcome():

print('''

**********************

* *

* 欢迎来到中国农业银行 *

* ABC *

* *

**********************

''')

#静态方法 :普通方法和类无关

@staticmethod

def select():

print('''

**********************

* 1.登陆 2.开户 *

* 3.查询 4.取款 *

* 5.存款 0.退出 *

* 6.转账 7.改密 *

* 8.注销 9.解锁 *

* 10.忘记密码 *

**********************

''')

num = input("请选择服务项目:")

return num

@staticmethod

def getcardnum():

cardnum = "622848"

for x in range(10):

cardnum += str(random.randrange(0,10))

return cardnum

#开户 类方法: 给类使用 第一个参数为 cls

@classmethod

def openUser(cls):

simple_pas=[]

for i in range(10):

simple_pas.append(str(i)*6)

user_mas='''

+-------------------+

---{}

【中国农业银行】尊敬的{}

{},您已成功注册中国农业

银行账户{}

+-------------------+

'''

send_mas='''

+-------------------+

---{}

【中国农业银行】尊敬的{}

{},您正在申请中国农业银行

的账户,验证码 {},请勿告

诉他人

+-------------------+

'''

users='''

+-------------------+

姓 名: {}

性 别: {}

年 龄: {}

电 话: {}

身份证:{}

余 额: {}

卡 号:{}

+-------------------+

'''

while True:

try:

name = input("请输入您的姓名:")

idcard = input("请输入您的身份证号码:")

if len(idcard)!=18:

continue

if int(idcard[-2])%2==0:

sex='女士'

else:

sex='先生'

while True:

phonenum = input("请输入您的电话号码:")

if len(phonenum) != 11:

continue

yanzhengma = ""

for x in range(6):

yanzhengma += str(random.randrange(0, 10))

print(send_mas.format(phonenum,name,sex,yanzhengma))

print("已经向您的电话 {} 发送验证码".format(phonenum))

count = 0

while True:

recv=input("请您输入收到的验证码!").strip()

count+=1

if recv!=yanzhengma:

if count>2:

print("验证码输入3次错误!三秒后退出系统!")

time.sleep(3)

exit()

continue

else:

break

break

while True:

psd = input("请设置您的密码:").strip()

if len(psd)!=6 or psd in idcard or psd in simple_pas:

print("您的密码不应该与身份证号相同或者过于简单和格式不对")

continue

psd2 = input("请确认您的密码:")

print("密码保存成功!请您牢记!切勿告诉他人")

if psd == psd2:

mon = int(input("请输入您的预存余额:"))

if mon>0:

cardnum = cls.getcardnum()

card = Card(cardnum,psd,mon)

user = User(name,idcard,phonenum,card)

cls.userDict[cardnum] = user

print("开卡成功,您的卡号为%s,请牢记..."%cardnum)

print(user_mas.format(phonenum,name,sex,cardnum))

today=datetime.datetime.today()

age=int(today.year)-int(idcard[6:10])

print(users.format(name,sex,age,phonenum,idcard,mon,cardnum))

break

else:

print("预存余额非法,开卡失败...")

else:

print("两次输入密码不一致,开卡失败...")

except:

print("输入错误!")

exit(0)

finally:

break

#登录

@classmethod

def login(cls):

cardnum = input("请输入您的卡号:")

user = cls.userDict.get(cardnum)

if user:

while True:

psd = input("请输入您的密码:")

if psd == user.card.password:

print("登录成功!!!")

cls.changshicishu = 0

cls.islogin = cardnum

break

else:

cls.changshicishu += 1

#如果尝试次数大于三 将锁卡

if cls.changshicishu >= 3:

print("卡已被锁,请先解锁")

cls.islogin = False

print(cls.islogin)

break

else:

print("密码错误,请重新输入,还有%d次将锁卡"%(3-cls.changshicishu))

else:

print("卡号不存在,请查证后登录...")

# 查询

@classmethod

def search(cls):

print(cls.islogin)

if cls.islogin:

print("您当前的余额为%d"%(cls.userDict.get(cls.islogin).card.money))

else:

print("请先登录")

#取钱

@classmethod

def setmoney(cls):

if cls.islogin:

money = int(input("请输入您要取的金额:"))

print(cls.userDict.get(cls.islogin).card.money)

if cls.islogin:

if cls.userDict.get(cls.islogin).card.money - money >= 0 :

print("取款%d成功!"%money)

cls.userDict.get(cls.islogin).card.money -= money

print("您卡里的余额为%d"%cls.userDict.get(cls.islogin).card.money)

else:

print("余额不足,取款失败!")

else:

print("未登录,请登录后再试")

else:

print("请先登录")

#存钱

@classmethod

def getmoney(cls):

if cls.islogin:

while True:

gmoney = int(input("请输入您要存储的款项:"))

if gmoney > 0 :

cls.userDict.get(cls.islogin).card.money += gmoney

print("您卡上的余额为%d"%cls.userDict.get(cls.islogin).card.money)

break

else:

print("输入有误,请重新输入金额")

else:

print("请先登录!")

#转账

@classmethod

def zhuanzhang(cls):

if cls.islogin:

while 1:

kahao = input("您需要转到的卡号为:")

for x in cls.userDict.keys():

if x == kahao :

print("您要转的卡号为%s,持卡人为%s"%(x,cls.userDict[x].name))

amoney = int(input("您需要转的金额为"))

#转账人卡内余额减少

cls.userDict.get(cls.islogin).card.money -= amoney

#被转账人卡内余额增加

cls.userDict.get(x).card.money += amoney

else:

continue

print("卡号有误,请重新输入")

break

else:

print("请先登录!")

#改密码

@classmethod

def gaimi(cls):

yanzhengma = ""

for x in range(6):

yanzhengma += str(random.randrange(0, 10))

reset_password='''

+-------------------+

【中国农业银行】您正在尝试

修改密码,验证码为{}

请勿告诉他人

+-------------------+

'''

if cls.islogin:

count=0

while True:

count+=1

print('已经向您的手机号发送了手机号')

print(reset_password.format(yanzhengma))

is_true = input("请输入验证码:").strip()

if is_true==yanzhengma:

count_set_pas=0

while True:

count_set_pas+=1

mima1 = input("请输入您需要修改的密码:").strip()

mima2 = input("请再次输入修改的密码:").strip()

if mima1 == mima2:

cls.userDict.get(cls.islogin).card.password = mima1

print("您的新密码为%s"%mima1)

break

elif count_set_pas>2:

print("三次改密失败!三秒后退出系统")

time.sleep(3)

exit()

else:

continue

elif count>2:

print("三次验证码失败!三秒后退出系统")

time.sleep(3)

exit()

else:

print('验证码错误')

continue

break

else:

print("请先登录")

#锁卡

@classmethod

def suoka(cls):

if cls.changshicishu >=3:

print("卡以被锁,请先解锁")

#解锁

@classmethod

def jiesuo(cls):

print("请输入您的卡号和密码")

kahao1 = input("请输入卡号:")

mima3 = input("请输入密码:")

for x in cls.userDict.keys():

if kahao1 == x:

if mima3 == cls.userDict.get(x).card.password:

print("解锁成功")

cls.islogin = cls.userDict.get(x).card.cardnum

else:

print("账号或者密码不正确,请重试")

else:

print("账号或者密码不正确,请重试")

#注销

@classmethod

def zhuxiao(cls):

cls.islogin = False

print("注销成功")

if __name__ == '__main__':

ATM.welcome()

while True:

time.sleep(1)

print(ATM.userDict)

num = ATM.select()

if num == "2":

print("开户")

ATM.openUser()

elif num == "0":

print("退出")

break

elif num == "1":

print("登录")

ATM.login()

ATM.suoka()

elif num == "3":

print("查询")

ATM.search()

elif num == "4":

ATM.setmoney()

elif num == "5":

ATM.getmoney()

elif num == "6":

ATM.zhuanzhang()

elif num == "7":

ATM.gaimi()

elif num == "8":

ATM.zhuxiao()

elif num == "9":

ATM.jiesuo()

else:

print("选择有误请重新选择...")

python atm取款系统_基于python的ATM(自动取款机)项目相关推荐

  1. 基于python的旅游系统_基于python的去哪儿网旅游数据分析

    20011 基于python的去哪儿网旅游数据分析 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段 ...

  2. python条形码识别系统_基于Python与Zbar的无人机盘点条形码识别研究

    2018 年 第 6 期 第 4 0 卷 总 第 2 8 8 期 物流工程与管理 LOGISTICS ENGINEERING AND MANAGEMENT 物流技术 doi :10.3969/ j . ...

  3. python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...

    完整代码 import pymysqlindex=''' +---------------------+ 首页 欢迎来到学生信息管理系统 1.登陆 2.注册 3.quit(按任意键退出) +----- ...

  4. python地铁查询系统_基于Python的苏州实时公交/地铁接口调用代码实例

    1.[代码][Python]代码 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import ur ...

  5. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  6. 基于python的分布式扫描器_基于python的服务器监测系统的设计

    基于 python 的服务器监测系统的设计 高正 ; 徐浩 ; 余曼 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2017(013)002 [摘要] 本文介绍了一种基于 P ...

  7. python商城系统_基于python的海鲜商城系统

    20006 基于python的海鲜商城系统 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段内容后打 ...

  8. python游戏开发引擎_基于Python的网络游戏脚本系统的设计与实现

    基于 Python 的网络游戏脚本系统的设计与实现 摘要:传统的网络游戏开发采用 c/c++ 实现游戏的逻辑功能,随 着游戏内容越来越丰富以及快速变化的市场需要, c/c ++ 已经不能 满足开发者对 ...

  9. 基于python的智能家居系统_基于Python Django的可扩展智能家居系统

    基于 Python Django 的可扩展智能家居系统 龚 鸣,余杨志,邓宏涛 * [摘 要] 针对现阶段智能家居系统智能化迭代开发的需求,分析当前智能家居 系统主控的相关实现技术,提出了基于 Pyt ...

最新文章

  1. python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
  2. 【数据结构】C语言栈的基本操作
  3. .net mvc mssql easyui treegrid
  4. 【Prometheus】prometheus生成快照,并冷备份数据,恢复数据
  5. 微信小程序,图片居中显示,适配不同机型
  6. 在 “相对” 高薪面前,任何的喊冤叫屈都是苍白无力的
  7. mongodb数据库的备份与恢复
  8. WinSCP断线,WinSCP总是断线,断线重连过程又需要卡很长时间解决办法
  9. 分段函数怎么用神经网络进行拟合_Tensoflow简单神经网络实现非线性拟合
  10. 无法启动mysql server问题:“1067”进程意外终止
  11. 基于TensorFlow的车牌识别系统 (附代码)
  12. 烧菜的基本技巧 来自d版
  13. python 打开网页并截图_python实现自动网页截图并裁剪图片
  14. 当中国传统文化IP与NFT撞个满怀,能擦出什么火花
  15. 使用C#开发Excel插件
  16. 洛谷5339 BZOJ5510 TJOI2019 唱、跳、rap和篮球 容斥 dp 组合数
  17. 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知
  18. c语言 aligned,“__attribute __((packed,aligned(4)))”的含义是什么意思?
  19. 数字电子钟Multisim仿真(数电课设+实验报告)
  20. 小程序中商家入驻提醒、新订单提醒

热门文章

  1. 某个网页一直不停刷新_利用浏览器做网页长截图
  2. 【英语学习】【WOTD】sleuth 释义/词源/示例
  3. java运行python脚本_java调用python脚本,中文变成问号
  4. sql server累计求和函数_窗口函数 以及 储存过程 create procedure
  5. python f.write 保存图片到路径_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...
  6. video4linux(v4l)使用摄像头的实例基础教程与体会
  7. dedecms和php有什么关系,dedecms和用PHP自己编写的程序做网站有什么区别?哪一种更好一点...
  8. 进程相关概念与多线程的基本使用
  9. 现代GPU的体系结构
  10. CRM系统-----学员管理系统---admin自定义开发3