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


Posted in Python onAugust 06, 2019

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

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

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

#!/usr/bin/env python
#encoding:utf-8
import re
import pickle
import time
def getUser():
  '''从数据文件里获取银行卡用户信息'''
  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位银行卡号(只包含数字):')#获取用户卡号
    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):
  '''用户转账操作'''

  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('请输入转账金额:'))
          if tr_balance <= user_dict[srcaccount]['balance']:#对比转账金额跟账户余额
            break
          else:
            print '转账金额大于余额,请重新输入余额!'
        break
      else:
        print '卡号错误,请重新输入!'
    else:
      print '卡号不对'
  print '转入的账户为:%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 '转入的账户为:%s ,转入的金额为:%s' % (target_account, tr_balance)
  # print '转入账户为:%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转入到账户%s中%s人民币' % (time.strftime('%Y-%m-%d %H:%M:%S'),srcaccount,target_account,tr_balance),f)
    print '%s 账户%s转入到账户%s中%s人民币' % (time.strftime('%Y-%m-%d %H:%M:%S'),srcaccount,target_account,tr_balance)




def quXian(user_card):
  '''用户取现操作'''
  user_dict = getUser()
  while True:
    qx_balance=raw_input('请输入取现金额:')
    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 取现人民币 %s' % (time.strftime('%Y-%m-%d %H:%M:%S'), user_card,qx_balance))
          print '%s 账户[%s]取现人民币%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('请确认操作:(转账请按1,取现请按 2,余额查询请按3,退出请按4):')
    if re.match('[1234]',choose_num):#根据用户选择类型判断执行方法
      if re.match('[1234]',choose_num).group() == '1':#转帐
        zhuanZhang(user_card)
      elif re.match('[1234]',choose_num).group() == '2':#取现
        quXian(user_card)
      elif re.match('[1234]',choose_num).group() == '3':#余额查询
        chaBalance(user_dict, user_card)
      else:#退出
        break
if __name__ == '__main__':
  run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 判断一个进程是否存在
Apr 09 Python
python的迭代器与生成器实例详解
Jul 16 Python
Python_LDA实现方法详解
Oct 25 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
python3 发送任意文件邮件的实例
Jan 23 Python
python中reader的next用法
Jul 24 Python
Python按钮的响应事件详解
Mar 04 Python
使用python绘制二维图形示例
Nov 22 Python
python3中numpy函数tile的用法详解
Dec 04 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
Python 3 判断2个字典相同
Aug 06 #Python
django 控制页面跳转的例子
Aug 06 #Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 #Python
django项目简单调取百度翻译接口的方法
Aug 06 #Python
python数据归一化及三种方法详解
Aug 06 #Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 #Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 #Python
You might like
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
Javascript----文件操作
2007/01/18 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
深入探讨前端框架react
2015/12/09 Javascript
javascript实现表单验证
2016/01/29 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python中atexit模块的基本使用示例
2015/07/08 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
八年级美术教学反思
2014/02/02 职场文书
硕士生找工作求职信
2014/07/05 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
总经理聘用协议书
2015/09/21 职场文书
PHP解决高并发问题
2021/04/01 PHP
Python 中的Sympy详细使用
2021/08/07 Python
python垃圾回收机制原理分析
2022/04/13 Python