python模拟银行转账功能过程详解

  

首先画出流程图,流程图与现实代码有出入,因为刚开始画流程图的时候,有些东西没考虑进去,后来写着写着就慢慢能想起来并实现了。

  

 python模拟银行转账功能过程详解

  

另有一点经验推荐给新手朋友,如果说碰到一个项目无从下手的话,就先慢慢去写,写着写着你就会往下写了,真的,亲身实践。望大神勿喷~

        #?usr/bin/env python   utf - 8编码:   进口再保险   进口泡菜   导入的时间   def getUser ():   “从数据文件里获取银行卡用户信息”   张开(‘cardinfo.db’,‘r’) f:   返回pickle.load (f)   def潘德():   “判定用户银行卡信息跟密码信息的准确性”   而真正的:   user_dict=getUser ()   打印user_dict   card_num=raw_input(“请输入您的19位银行卡号(只包含数字):“)#获取用户卡号   如果re.match (\ d {19}, card_num)和card_num user_dict: #判断卡号是否匹配   card_passwd=(raw_input(“请输入您的银行卡密码:"))   #打印的输入的密码是:% s,类型为:% s的% (int (card_passwd)、类型(int (card_passwd)))   #打印“存的密码是:% s,类型为:% s的% (user_dict [card_num]['密码'],类型(user_dict [card_num]['密码']))   如果int (card_passwd)==user_dict [card_num]['密码']:#判定密码对的错   打破   其他:   打印“密码错误!”   继续   其他:   打印“您输入的银行卡信息有误!”   返回card_num      def zhuanZhang (srcaccount):   “用户转账操作“      user_dict=getUser ()   而真正的:   target_account=raw_input(“请输入目标账户:')   如果re.match (\ d {19}, target_account):   如果target_account user_dict: #判断卡号是否匹配      而真正的:   tr_balance=int (raw_input(“请输入转账金额:'))   如果tr_balance & lt;=user_dict [srcaccount]['平衡']:#对比转账金额跟账户余额   打破   其他:   打印“转账金额大于余额,请重新输入余额!”   打破   其他:   打印“卡号错误,请重新输入!”   其他:   打印卡的号不对的   打印“转入的账户为:% s,金额为:% s的% (target_account tr_balance)   打印的原账户为:% s,余额为:% s的% (srcaccount, user_dict [srcaccount]['平衡'])   打印user_dict   user_dict [srcaccount]['平衡']=user_dict [srcaccount][‘平衡’]-tr_balance   user_dict [target_account]['平衡']=user_dict [target_account]['平衡']+ tr_balance   打印“转入的账户为:% s,转入的金额为:% s的% (target_account tr_balance)   #打印'转入账户为:% s,余额为:% s的% (target_account, user_dict [target_account]['平衡'])   打印的原账户为:% s,余额为:% s的% (srcaccount, user_dict [srcaccount]['平衡'])   打印user_dict   张开(' cardinfo.db ', ' w ') f:   pickle.dump (user_dict f)   张开(' op.log ', ' + ') f:   f。writeline (' % s账户% s转入到账户% s中% s人民币“%(时间。strftime (“% Y - % m - H % d %: % m: % S '), srcaccount target_account tr_balance), f)   打印“% s账户% s转入到账户% s中% s人民币“%(时间。strftime (“% Y - % m - H % d %: % m: % S '), srcaccount, target_account tr_balance)               def渠县(user_card):   “用户取现操作“   user_dict=getUser ()   而真正的:   qx_balance=raw_input(“请输入取现金额:')   如果re.match (\ d +, qx_balance):   打印user_dict [user_card]['平衡']   如果int (qx_balance) & lt;=user_dict [user_card]['平衡']:   user_dict [user_card]['平衡']=user_dict [user_card]['平衡']- int (qx_balance)   打印user_dict   张开(“cardinfo。db”、“w”)作为f:   泡菜。转储(user_dict f)   打开(op。日志”、“一个”)f:   f。写(“% s账户% s取现人民币% s的%(时间。strftime (“% Y - % m - H % d %: % m: % S '), user_card, qx_balance))   打印“% s账户(% s)取现人民币% s圆“%(时间。strftime (“% Y - % m - H % d %: % m: % S '), user_card qx_balance)   打破   其他:   打印“余额不够!”   其他:   打印的输入的格式有误”   #张开(‘cardinfo.db’,‘r’) f:   #打印pickle.load (f)   #张开(‘op.log’,‘r’) f:   #打印pickle.load (f)      def chaBalance (user_dict user_card):      打印的账户余额为:% s的% user_dict [user_card]['平衡']      def run ():   user_card=潘德()   打印user_card   而真正的:   user_dict=getUser ()   #打印的账户余额为:% s的% user_dict [user_card]['平衡']   choose_num=raw_input(“请确认操作:(转账请按1,取现请按2,余额查询请按3,退出请按4):')   如果re.match (“[1234]”, choose_num): #根据用户选择类型判断执行方法   如果re.match (“[1234]”, choose_num) .group()==' 1 ': #转的帐   zhuanZhang (user_card)   elif re.match (“[1234]”, choose_num) .group()==?”: #取现   渠县(user_card)   elif re.match (“[1234]”, choose_num) .group()==?”: #余额查询   chaBalance (user_dict user_card)   其他:#退出   打破   if __name__==癬_main__”:   run ()

python模拟银行转账功能过程详解