用python实现atm银行系统
Python实现的银行系统模拟程序完整案例本文实例讲述了python实现的银行系统模拟程序。分享给大家供大家参考,具体如下:
银行系统模拟程序
1、概述
使用面向对象思想模拟一个简单的银行系统,具备的功能:管理员登录/注销、用户开户、登录、找回密码、挂失、改密、查询、存取款、转账等功能。
编程语言:python。
2、目的
通过这个编程练习,可以熟悉运用面向对象的思想来解决实际问题,其中用到的知识点有类的封装、正则表达式、模块等。
3、体会
在编写这个程序时,实际上的业务逻辑还是要考虑的,比如修改密码时需要输入手机号、身份证号等。在进行类的封装时,实际上还是用面向过程的思想把一些基本的业务逻辑编写成函数,对一些重复使用的代码也可以封装成函数(就是自己造适合这个业务的轮子,实际开发中很多底层的函数是不用自己再次去实现的,可以直接调用),这些都是一些底层的封装,然后在实现主要业务时上就可以调用类中的方法实现,这时只需关注业务逻辑就好了。
使用面向对象的思想进行编程,考虑的点是:实现一个功能,有哪些方法可以让我进行调用(指挥者)。
使用面向过程的思想进行编程,考虑的点是:实现一个功能,我需要实现哪些方法(执行者)。
编写这个程序还用到一个很重要的概念,就是对程序进行模块化。模块化的好处是可以更好的对程序进行维护,条理也更清晰。
4、代码
源码github地址:https://github.com/liangdongchang/pybanksystem.git
1、banksystem.py文件
|
from view import view from atm import atm from person import person def func(view,atm,per): view.funcinterface() choice = input ( "请选择您要办理的业务:" ) if choice = = '1' : return per.checkmoney(atm) elif choice = = '2' : return per.savemoney(atm) elif choice = = '3' : return per.getmoney(atm) elif choice = = '4' : return per.transfermoney(atm) elif choice = = '5' : return per.changepassword(atm) elif choice = = '6' : return per.unlockaccount(atm) elif choice = = '7' : return per.closeaccount(atm) elif choice = = 't' : if per.exit(atm): return true else : print ( "输入有误!" ) def main(): # 管理员登录名为'admin',密码为'123' view = view( "admin" , '123' ) view.initface() atm = atm() view.login() per = person() while true: view.funcinit() choice = input ( "请选择您要办理的业务:" ) if choice = = '1' : per.newaccount(atm) elif choice = = '2' : if per.login(atm): while true: if func(view,atm,per) = = none: continue else : break elif choice = = '3' : per.findbackpassword(atm) elif choice = = '4' : per.lockaccount(atm) elif choice = = 't' : if per.exit(atm): # 管理员注销系统 if view.logout(): return true else : print ( "输入有误!" ) if __name__ = = '__main__' : main() |
2、card.py文件:
|
''' 卡: 类名:card 属性:卡号【6位随机】 密码 余额 绑定的身份证号 手机号 ''' class card( object ): def __init__( self , cardid, password, money,identityid,phonenum,cardlock = 'false' ): self .cardid = cardid self .password = password self .money = money self .identityid = identityid self .phonenum = phonenum self .cardlock = cardlock |
3、readappendcard.py文件:
|
''' 功能:读取文件cardinfo.txt的信息 方法:读、写、删 ''' from card import card import json # 读 class readcard(card): def __init__( self , cardid = ' ', password=' ', money=0, identityid=' ', phonenum=' ', cardlock=' '): card.__init__( self , cardid, password, money, identityid, phonenum, cardlock) def dict2card( self , d): return self .__class__(d[ "cardid" ], d[ "password" ], d[ "money" ],d[ "identityid" ],d[ "phonenum" ], d[ "cardlock" ]) def read( self ): # card对象转为字典 with open ( "cardinfo.txt" , "r" ,encoding = "utf-8" ) as fr: cards = [] for re in fr.readlines(): cards.append( self .dict2card( eval (re))) return cards # 写 class appendcard(card): def __init__( self ): card.__init__( self , cardid = ' ', password = ' ', money = 0, identityid = ' ', phonenum = ' ', cardlock=' ') def card2dict( self ,card): return { "cardid" : card.cardid, "password" : card.password, "money" : card.money, "identityid" : card.identityid, "phonenum" : card.phonenum, "cardlock" : card.cardlock } def append( self ,card,w = 'a' ): # 默认是追加,如果w='w'就清空文件 if w = = 'w' : with open ( "cardinfo.txt" , "w" , encoding = "utf-8" ) as fa: fa.write('') else : with open ( "cardinfo.txt" , "a" , encoding = "utf-8" ) as fa: json.dump(card, fa, default = self .card2dict) fa.write( '\n' ) # 删 class del ( object ): def del_( self ,cardid): readcard = readcard() cards = readcard.read() for card in cards: # 删除输入的卡号 if cardid = = card.cardid: cards.remove(card) break else : print ( "卡号不存在!" ) return false # 重新写入文件 appendcard = appendcard() appendcard.append(' ',w=' w') for card in cards: appendcard.append(card) return true |
4、person.py
|
''' 人 类名:person 行为:开户、查询、取款、存储、转账、改密、销户、退出 ''' class person( object ): def __init__( self ,name = ' ',identity=' ',phonenum=' ',card = none): self .name = name self .identity = identity self .phonenum = phonenum self .card = card # 登录 def login( self ,atm): card = atm.login() if card: self .card = card return true else : return false # 开户 def newaccount( self ,atm): return atm.newaccount() #找回密码 def findbackpassword( self ,atm): return atm.findbackpassword() # 查询余额 def checkmoney( self , atm): return atm.checkmoney( self .card) # 存钱 def savemoney( self , atm): return atm.savemoney( self .card) # 取钱 def getmoney( self , atm): return atm.getmoney( self .card) # 转账 def transfermoney( self , atm): return atm.transfermoney( self .card) # 销户 def closeaccount( self , atm): return atm.closeaccount( self .card) # 挂失 def lockaccount( self , atm): return atm.lockaccount() # 解锁 def unlockaccount( self , atm): return atm.unlockaccount( self .card) # 改密 def changepassword( self , atm): return atm.changepassword( self .card) # 退出系统 def exit( self , atm): return atm.exit() |
5、view.py
猜您喜欢
|