首先画出流程图,流程图与现实代码有出入,因为刚开始画流程图的时候,有些东西没考虑进去,后来写着写着就慢慢能想起来并实现了。
另有一点经验推荐给新手朋友,如果说碰到一个项目无从下手的话,就先慢慢去写,写着写着你就会往下写了,真的,亲身实践。望大神勿喷~
#?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模拟银行转账功能过程详解