python atm取款系统_基于python的ATM(自动取款机)项目
__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(自动取款机)项目相关推荐
- 基于python的旅游系统_基于python的去哪儿网旅游数据分析
20011 基于python的去哪儿网旅游数据分析 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段 ...
- python条形码识别系统_基于Python与Zbar的无人机盘点条形码识别研究
2018 年 第 6 期 第 4 0 卷 总 第 2 8 8 期 物流工程与管理 LOGISTICS ENGINEERING AND MANAGEMENT 物流技术 doi :10.3969/ j . ...
- python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...
完整代码 import pymysqlindex=''' +---------------------+ 首页 欢迎来到学生信息管理系统 1.登陆 2.注册 3.quit(按任意键退出) +----- ...
- python地铁查询系统_基于Python的苏州实时公交/地铁接口调用代码实例
1.[代码][Python]代码 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import ur ...
- python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...
- 基于python的分布式扫描器_基于python的服务器监测系统的设计
基于 python 的服务器监测系统的设计 高正 ; 徐浩 ; 余曼 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2017(013)002 [摘要] 本文介绍了一种基于 P ...
- python商城系统_基于python的海鲜商城系统
20006 基于python的海鲜商城系统 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段内容后打 ...
- python游戏开发引擎_基于Python的网络游戏脚本系统的设计与实现
基于 Python 的网络游戏脚本系统的设计与实现 摘要:传统的网络游戏开发采用 c/c++ 实现游戏的逻辑功能,随 着游戏内容越来越丰富以及快速变化的市场需要, c/c ++ 已经不能 满足开发者对 ...
- 基于python的智能家居系统_基于Python Django的可扩展智能家居系统
基于 Python Django 的可扩展智能家居系统 龚 鸣,余杨志,邓宏涛 * [摘 要] 针对现阶段智能家居系统智能化迭代开发的需求,分析当前智能家居 系统主控的相关实现技术,提出了基于 Pyt ...
最新文章
- python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
- 【数据结构】C语言栈的基本操作
- .net mvc mssql easyui treegrid
- 【Prometheus】prometheus生成快照,并冷备份数据,恢复数据
- 微信小程序,图片居中显示,适配不同机型
- 在 “相对” 高薪面前,任何的喊冤叫屈都是苍白无力的
- mongodb数据库的备份与恢复
- WinSCP断线,WinSCP总是断线,断线重连过程又需要卡很长时间解决办法
- 分段函数怎么用神经网络进行拟合_Tensoflow简单神经网络实现非线性拟合
- 无法启动mysql server问题:“1067”进程意外终止
- 基于TensorFlow的车牌识别系统 (附代码)
- 烧菜的基本技巧 来自d版
- python 打开网页并截图_python实现自动网页截图并裁剪图片
- 当中国传统文化IP与NFT撞个满怀,能擦出什么火花
- 使用C#开发Excel插件
- 洛谷5339 BZOJ5510 TJOI2019 唱、跳、rap和篮球 容斥 dp 组合数
- 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知
- c语言 aligned,“__attribute __((packed,aligned(4)))”的含义是什么意思?
- 数字电子钟Multisim仿真(数电课设+实验报告)
- 小程序中商家入驻提醒、新订单提醒
热门文章
- 某个网页一直不停刷新_利用浏览器做网页长截图
- 【英语学习】【WOTD】sleuth 释义/词源/示例
- java运行python脚本_java调用python脚本,中文变成问号
- sql server累计求和函数_窗口函数 以及 储存过程 create procedure
- python f.write 保存图片到路径_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...
- video4linux(v4l)使用摄像头的实例基础教程与体会
- dedecms和php有什么关系,dedecms和用PHP自己编写的程序做网站有什么区别?哪一种更好一点...
- 进程相关概念与多线程的基本使用
- 现代GPU的体系结构
- CRM系统-----学员管理系统---admin自定义开发3