当前位置:网站首页>ATM银行系统(对象初级练习)
ATM银行系统(对象初级练习)
2022-08-03 17:24:00 【51CTO】
目录
一、题目描述
二、分析
三、源码
一、题目描述
定义表示银行卡和ATM(自动柜员机)的类,要求ATM可以实现读卡、存钱、取钱、转账的功能。
二、分析
1、首先根据题目要求,需要创建两个类,Card()和ATM(),
2、Card类中有卡号,有效期、以及卡的类型三个属性,在实例化对象时对其值初始化,还重写了str方法,也就是输出格式化,在遇到print时直接调用,然后输出规定格式的内容
3、ATM类的实例化方法中没有对其赋初值,但是有三个对象属性;
第一个是account:以字典的形式来存储卡号、密码以及余额;用字典的键来存卡号,再将其它的信息用字典存起来做为值,这样进行判断的时候可以通过键来取到卡的其它信息;(用字典存储的好处就是可以通过键来获取值)
第二个是curren_card,即用来存储当前卡是否存在,初始值为Nnoe
第三个是curren_account,在读卡的时候,如果卡号在数据库中(此处的数据库是最开始声明的账户字典)这将其键对应的值赋值给此变量,方便后续对密码以及余额操作;(关键点)
4.ATM中的方法:
①读卡——read_card(self,card)
要传入一个卡的对象,首先是判断插入的卡的卡号(卡类的实例化属性)是否在ATM的数据库中,如果再就将其卡号对应的值用curren_account给存储起来,在通过current_account(字典)取出其中的密码,与用户输入的密码进行比较是否一致,如果一致则读卡成功,可以进行下一步,密码只有三次的输入机会,如果三次错误则提示卡被收回;
②展示余额——show_balance(self)
通过第一步的读卡操作将当前卡的其它信息保存到变量current_account中,此时的字典存储的就是卡的密码以及账户余额的信息,此时只要余额存在即就可以输出其余额了
③存款——add_money(self,money)
存款和展示余额其实没什么差别,差别只是在于一个是展示,一个是对其进行增加,所以此方法还需要传入一个存钱的值,再者就是判断其账户存不存在了 ,如果存在则将钱加到原有的余额上,不存在则返回False
④取款——withdraw(self,money)
取款时要传入一个取款金额的参数,取款方法除了要满足卡号存在的情况外,还要满足账户的余额大于要取款的金额,当满足以上两种情况时,才能取款,取款的操作就是将原有账户的余额减去取出的金额,剩下的就是该账户的余额了
⑤转账——transfer(self,other_card_no,money)
转账需要传入两个参数,一个是要转账的卡号(此处其实也可以传入一个卡的对象,然后再取出其卡号),还有一个就是要转账的金额;首先进行判断的是要转账的账户是否在数据库中,然后同样的将其卡号对应的其他值存储到一个变量中,再者就是判断转账金额和账户余额的大小情况,如果都满足的情况下,就将要转出的账户的余额减去转账的金额,接收的账户的余额加上转账的金额,此时转账就完成了
⑥取卡——move_card(self)
取卡的方法就是将之前存储的卡号对应的信息给删除,然后提醒用户取走卡
三、源码
边栏推荐
- [redis] cache penetration and cache avalanche and cache breakdown solutions
- 论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- 383. Ransom Note
- ORACLE CLOUD 在国内有数据中心吗?
- LyScript 从文本中读写ShellCode
- DataWorks 标准版怎样实现SQL代码的复用?
- 11. Container With Most Water
- [Unity Getting Started Plan] Basic Concepts (6) - Sprite Renderer Sprite Renderer
- 产品-Axure9英文版,轮播图效果
猜你喜欢

【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十一)

A complete detailed tutorial on building intranet penetration ngrok (with pictures and truth)

FinClip | 2022 年 7 月产品大事记

Component communication - parent-child component communication

【JS】利用JS给删除按钮添加提示框

工程仪器设备在线监测管理系统常见问题和注意事项

【机器学习】机器学习的基本概念/术语2

Adobe是什么?

Components of communication - the drop-down menu

国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
随机推荐
产品-Axure9英文版,轮播图效果
PMP试题 | 每日一练,快速提分
请问下这个hologres维表是被缓存了么?怎么直接Finished了
【机器学习】机器学习的基本概念/术语2
Promise的 简单使用
J9数字虚拟论:元宇宙的潜力:一股推动社会进步的力量
Huawei, Lenovo, BAIC, etc. were selected as the first batch of training bases for "Enterprise Digital Transformation and Security Capability Improvement" by the Ministry of Industry and Information Te
学会 Arthas,让你 3 年经验掌握 5 年功力!
sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
精酿啤酒品牌,过把瘾就死?
广告电商系统开发之会员系统板块
FinClip | July 2022 Product Highlights
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
“68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
EasyExcel implements dynamic column parsing and table storage
工程仪器设备在线监测管理系统常见问题和注意事项
2022爱分析· 银行数字化厂商全景报告
405. Convert a Number to Hexadecimal
Web3 安全风险令人生畏?应该如何应对?
three.js简介