python 模擬銀行轉(zhuǎn)賬功能過程詳解
更新時間:2019年08月06日 11:04:54 作者:851096287
這篇文章主要介紹了python 模擬銀行轉(zhuǎn)賬功能過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
首先畫出流程圖,流程圖與現(xiàn)實代碼有出入,因為剛開始畫流程圖的時候,有些東西沒考慮進去,后來寫著寫著就慢慢能想起來并實現(xiàn)了。

另有一點經(jīng)驗推薦給新手朋友,如果說碰到一個項目無從下手的話,就先慢慢去寫,寫著寫著你就會往下寫了,真的,親身實踐。望大神勿噴~
#!/usr/bin/env python
#encoding:utf-8
import re
import pickle
import time
def getUser():
'''從數(shù)據(jù)文件里獲取銀行卡用戶信息'''
with open('cardinfo.db','r') as f:
return pickle.load(f)
def panDing():
'''判定用戶銀行卡信息跟密碼信息的準確性'''
while True:
user_dict=getUser()
print user_dict
card_num=raw_input('請輸入您的19位銀行卡號(只包含數(shù)字):')#獲取用戶卡號
if re.match('\d{19}',card_num) and card_num in user_dict:#判斷卡號是否匹配
card_passwd=(raw_input('請輸入您的銀行卡密碼:'))
# print '輸入的密碼是:%s,類型為:%s' % (int(card_passwd),type(int(card_passwd)))
# print '存的密碼是:%s,類型為:%s' % (user_dict[card_num]['password'],type(user_dict[card_num]['password']))
if int(card_passwd) == user_dict[card_num]['password']:#判定密碼對錯
break
else:
print '密碼錯誤!'
continue
else:
print '您輸入的銀行卡信息有誤!'
return card_num
def zhuanZhang(srcaccount):
'''用戶轉(zhuǎn)賬操作'''
user_dict = getUser()
while True:
target_account = raw_input('請輸入目標賬戶:')
if re.match('\d{19}', target_account) :
if target_account in user_dict: # 判斷卡號是否匹配
while True:
tr_balance = int(raw_input('請輸入轉(zhuǎn)賬金額:'))
if tr_balance <= user_dict[srcaccount]['balance']:#對比轉(zhuǎn)賬金額跟賬戶余額
break
else:
print '轉(zhuǎn)賬金額大于余額,請重新輸入余額!'
break
else:
print '卡號錯誤,請重新輸入!'
else:
print '卡號不對'
print '轉(zhuǎn)入的賬戶為:%s ,金額為:%s' % (target_account,tr_balance)
print '原賬戶為:%s ,余額為:%s' % (srcaccount,user_dict[srcaccount]['balance'])
print user_dict
user_dict[srcaccount]['balance']=user_dict[srcaccount]['balance']-tr_balance
user_dict[target_account]['balance'] = user_dict[target_account]['balance'] + tr_balance
print '轉(zhuǎn)入的賬戶為:%s ,轉(zhuǎn)入的金額為:%s' % (target_account, tr_balance)
# print '轉(zhuǎn)入賬戶為:%s ,余額為:%s' % (target_account, user_dict[target_account]['balance'])
print '原賬戶為:%s ,余額為:%s' % (srcaccount, user_dict[srcaccount]['balance'])
print user_dict
with open('cardinfo.db','w') as f:
pickle.dump(user_dict,f)
with open('op.log','a+') as f:
f.writelines('%s 賬戶%s轉(zhuǎn)入到賬戶%s中%s人民幣' % (time.strftime('%Y-%m-%d %H:%M:%S'),srcaccount,target_account,tr_balance),f)
print '%s 賬戶%s轉(zhuǎn)入到賬戶%s中%s人民幣' % (time.strftime('%Y-%m-%d %H:%M:%S'),srcaccount,target_account,tr_balance)
def quXian(user_card):
'''用戶取現(xiàn)操作'''
user_dict = getUser()
while True:
qx_balance=raw_input('請輸入取現(xiàn)金額:')
if re.match('\d+',qx_balance):
print user_dict[user_card]['balance']
if int(qx_balance) <= user_dict[user_card]['balance']:
user_dict[user_card]['balance'] = user_dict[user_card]['balance'] - int(qx_balance)
print user_dict
with open('cardinfo.db', 'w') as f:
pickle.dump(user_dict, f)
with open('op.log', 'a') as f:
f.write('%s 賬戶 %s 取現(xiàn)人民幣 %s' % (time.strftime('%Y-%m-%d %H:%M:%S'), user_card,qx_balance))
print '%s 賬戶[%s]取現(xiàn)人民幣%s圓' % (time.strftime('%Y-%m-%d %H:%M:%S'), user_card,qx_balance)
break
else:
print '余額不夠!'
else:
print '輸入的格式有誤'
# with open('cardinfo.db','r') as f:
# print pickle.load(f)
# with open('op.log','r') as f:
# print pickle.load(f)
def chaBalance(user_dict,user_card):
print '賬戶余額為:%s ' % user_dict[user_card]['balance']
def run():
user_card = panDing()
print user_card
while True:
user_dict=getUser()
# print '賬戶余額為:%s ' % user_dict[user_card]['balance']
choose_num=raw_input('請確認操作:(轉(zhuǎn)賬請按1,取現(xiàn)請按 2,余額查詢請按3,退出請按4):')
if re.match('[1234]',choose_num):#根據(jù)用戶選擇類型判斷執(zhí)行方法
if re.match('[1234]',choose_num).group() == '1':#轉(zhuǎn)帳
zhuanZhang(user_card)
elif re.match('[1234]',choose_num).group() == '2':#取現(xiàn)
quXian(user_card)
elif re.match('[1234]',choose_num).group() == '3':#余額查詢
chaBalance(user_dict, user_card)
else:#退出
break
if __name__ == '__main__':
run()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Web框架Flask中使用百度云存儲BCS實例
這篇文章主要介紹了Python Web框架Flask中使用百度云存儲BCS實例,本文調(diào)用了百度云存儲Python SDK中的相關(guān)類,需要的朋友可以參考下2015-02-02
在Pycharm中將pyinstaller加入External Tools的方法
今天小編就為大家分享一篇在Pycharm中將pyinstaller加入External Tools的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
numpy中以文本的方式存儲以及讀取數(shù)據(jù)方法
今天小編就為大家分享一篇numpy中以文本的方式存儲以及讀取數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python-Flask:動態(tài)創(chuàng)建表的示例詳解
今天小編就為大家分享一篇Python-Flask:動態(tài)創(chuàng)建表的示例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄
這篇文章主要為大家介紹了Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄應用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08

