当前位置:网站首页>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)
取卡的方法就是将之前存储的卡号对应的信息给删除,然后提醒用户取走卡
三、源码
边栏推荐
- JVM参数设置
- Understand the recommendation system in one article: Outline 02: The link of the recommendation system, from recalling rough sorting, to fine sorting, to rearranging, and finally showing the recommend
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- 数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
- 精酿啤酒品牌,过把瘾就死?
- 软件盘点企业使用服装ERP的好处
- 【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
- TiKV & TiFlash accelerate complex business queries丨TiFlash application practice
- 11. Container With Most Water
- 华为、联想、北汽等入选工信部“企业数字化转型和安全能力提升”首批实训基地
猜你喜欢
随机推荐
Looking at the ecological potential of Hongmeng OS from the evolution of MatePad Pro
#yyds干货盘点# 面试必刷TOP101:两个链表的第一个公共结点
Component communication - parent-child component communication
【engine】RtcSyncCallback回调、回调容器RtcCallbackContainer及MediaPacketSenderImpl 中回调使用
How ArkUI adapter somehow the screen
TiKV & TiFlash accelerate complex business queries丨TiFlash application practice
JS 字符串转 GBK 编码超精简实现
关于 Intel 在 micro-vm 快速启动的探索及实例演示 | 第 36-38 期
被误解的 MVC 和被神化的 MVVM(一)
uniapp 去掉默认导航栏
数字资产的价值激发:NFT 质押
5. Longest Palindromic Substring
[Unity Getting Started Plan] Basic Concepts (6) - Sprite Renderer Sprite Renderer
软件测试<用例篇>
分享一个开源的USB-CAN工具!
[Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement
TypeScript的配置文件tsconfig.json
并发高的情况下,试试用ThreadLocalRandom来生成随机数
security加密解密
“68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?









