python银行系统实现源码


Posted in Python onOctober 25, 2019

本文实例为大家分享了python实现银行系统的具体代码,供大家参考,具体内容如下

1、admin.py 定义管理员信息和主界面显示

#!/usr/bin/env python
# coding:UTF-8
 
 
"""
@version: python3.x
@author:曹新健
@contact: 617349013@qq.com
@software: PyCharm
@file: admin.py
@time: 2018/9/11 10:14
"""
 
 
import time
class Admin():
 def __init__(self,name,passwd):
 self.name = name
 self.__passwd = passwd
 self.__status = False
 
 def adminView(self):
 for i in range(4):
  print("".center(60,"*"))
 s1 = "欢迎光临曹氏银行"
 print(s1.center(60-len(s1),"*"))
 for i in range(4):
  print("".center(60,"*"))
 if self.__status:
  print("管理员被锁定,请联系大神曹新健")
  return -1
 name = input("请输入管理员用户名:")
 if name != self.name:
  print("用户名输入错误")
  return -1
 if self.checkAdminPasswd() != 0:
  return -1
 return 0
 
 
 
 def adminAction(self):
 print("""************************************************************
***************开户(1)****************销户(2)***************
***************查询(3)****************转账(4)***************
***************取款(5)****************存款(6)***************
***************锁定(7)****************解锁(8)***************
***************改密(9)****************补卡(0)***************
************************退出 系统(q)************************
************************************************************
 """)
 
 def checkAdminPasswd(self):
 n = 0
 while n <= 3:
  if n == 3:
  self.status = True
  print("输入超过3次,管理员被锁定,请联系大神曹新健")
  return -1
  passwd = input("请输入密码:")
  if passwd != self.__passwd:
  print("密码输入错误,请重新输入")
  n += 1
  else:
  print("密码验证成功,请稍后")
  time.sleep(2)
  return 0
 @property
 def passwd(self):
 return self.__passwd
 
 @passwd.setter
 def passwd(self,password):
 self.__passwd = password
 
 @property
 def status(self):
 return self.__status
 
 @status.setter
 def status(self, st):
 self.__status = st
 
if __name__ == "__main__":
 admin = Admin("cxj","1")
 while True:
 admin.adminView()

2、card.py定义银行卡信息

#!/usr/bin/env python
# coding:UTF-8
 
 
"""
@version: python3.x
@author:曹新健
@contact: 617349013@qq.com
@software: PyCharm
@file: card.py
@time: 2018/9/11 15:02
"""
 
 
import random
 
class Card():
 def __init__(self,id,balance):
 self.__id = id
 self.__balance = balance
 self.status = False
 
 @property
 def id(self):
 return self.__id
 
 @id.setter
 def id(self,id):
 self.__id = id
 
 @property
 def balance(self):
 return self.__balance
 
 @balance.setter
 def balance(self,balance):
 self.__balance = balance
 
 
if __name__ == "__main__":
 card = Card(1000)
 print(card.id)
 print(card.balance)

3、user.py定义银行账户信息

#!/usr/bin/env python
# coding:UTF-8
 
 
"""
@version: python3.x
@author:曹新健
@contact: 617349013@qq.com
@software: PyCharm
@file: user.py
@time: 2018/9/11 14:54
"""
 
class User():
 def __init__(self,name,idCard,phone,passwd,card):
 self.__name = name
 self.__idCard = idCard
 self.phone = phone
 self.__passwd = passwd
 self.card = card
 
 @property
 def name(self):
  return self.__name
 
 @name.setter
 def name(self,name):
 self.__name = name
 
 @property
 def idCard(self):
 return self.__idCard
 
 @idCard.setter
 def idCard(self, idCard):
 self.__idCard = idCard
 
 @property
 def passwd(self):
 return self.__passwd
 
 @passwd.setter
 def passwd(self, passwd):
 if self.__passwd == passwd:
  raise UsersException("新密码跟旧密码一样")
 else:
  self.__passwd = passwd
 
class UsersException(Exception):
 pass

4、functions.py银行功能逻辑实现

#!/usr/bin/env python
# coding:UTF-8
 
 
"""
@version: python3.x
@author:曹新健
@contact: 617349013@qq.com
@software: PyCharm
@file: functions.py
@time: 2018/9/11 11:01
"""
 
import pickle,os,random
from admin import Admin
from card import Card
from user import User,UsersException
 
pathAdmin = os.path.join(os.getcwd(), "admin.txt")
pathUser = os.path.join(os.getcwd(), "users.txt")
 
def rpickle(path):
 if not os.path.exists(path):
 with open(path,"w") as temp:
  pass
 with open(path,'rb') as f:
 try:
  info = pickle.load(f)
 except EOFError as e:
  info = ""
 return info
 
def wpickle(objname,path):
 if not os.path.exists(path):
 with open(path,"w") as temp:
  pass
 with open(path,'wb') as f:
 pickle.dump(objname,f)
 
def adminInit():
 # print(pathAdmin)
 adminInfo = rpickle(pathAdmin)
 if adminInfo:
 admin = adminInfo
 # print(admin.status)
 else:
 admin = Admin("cxj", "1")
 return admin
 
def adminClose(admin):
 wpickle(admin, pathAdmin)
 
def randomId(users):
 
 while True:
 str1 = ""
 for i in range(6):
  ch = str((random.randrange(0, 10)))
  str1 += ch
 if not users.get(str1,""):
  return str1
 
def openAccount(users):
 name = input("请输入您的姓名:")
 idCard = input("请输入您的身份证号:")
 phone = input("请输入您的电话号码:")
 passwd = input("请输入账号密码:")
 balance = int(input("请输入您的金额:"))
 id = randomId(users)
 card = Card(id,balance)
 user = User(name,idCard,phone,passwd,card)
 users[id] = user
 print("请牢记您的银行卡号%s" %(id))
 
 
def userInit():
 userInfo = rpickle(pathUser)
 if userInfo:
 users = userInfo
 else:
 users = {}
 return users
 
def userClose(users):
 wpickle(users, pathUser)
 
def getUser(users):
 id = input("请输入您的银行卡号:")
 if not users.get(id, ""):
 print("您输入的卡号不存在")
 user = None
 else:
 user = users.get(id)
 return user
 
def transferUser(users):
 id = input("请输入转账(对方)的银行卡号:")
 if not users.get(id, ""):
 print("您输入的卡号不存在")
 user = None
 else:
 user = users.get(id)
 return user
 
def changeMoney(user,res):
 money = int(input("请输入交易金额:"))
 if money <= 0:
 print("输入金额有误")
 return 0
 if res:
 if money > user.card.balance:
  print("余额不足")
  return 0
 return money
 
def serchAccount(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 print("您的账户名称为%s,您的余额为%s" % (user.name, user.card.balance))
 
def transferAccount(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 transUser = transferUser(users)
 if not transUser:
  return -1
 money = changeMoney(user,1)
 if not money:
  return -1
 user.card.balance -= money
 transUser.card.balance += money
 print("交易成功")
 
def withdrawal(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 money = changeMoney(user,1)
 if not money:
  return -1
 user.card.balance -= money
 print("交易成功")
 
def deposit(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 money = changeMoney(user,0)
 if not money:
  return -1
 user.card.balance += money
 print("交易成功")
 
def delAccount(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 users.pop(user.card.id)
 print("账户删除成功")
 return 0
 
def lockAccount(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 checkUserPasswdLock(user)
 
def unlockAccount(users):
 user = getUser(users)
 if not user:
 return -1
 if not user.card.status:
 print("账户不需要解锁")
 return -1
 res = checkUserPasswd(user)
 if not res:
 user.card.status = False
 print("账户解锁成功!")
 
def changePasswd(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 newPasswd = input("请输入新密码:")
 try:
  user.passwd = newPasswd
 except UsersException as e:
  print(e)
 else:
  print("密码修改成功!")
 
def makeNewCard(users):
 user = getUser(users)
 if not user:
 return -1
 if user.card.status:
 print("账户被锁定,请解锁后再使用其他功能")
 return -1
 res = checkUserPasswd(user)
 if not res:
 id = randomId(users)
 userinfo = users[user.card.id]
 users.pop(user.card.id)
 users[id] = userinfo
 users[id].card.id = id
 
 
 print("补卡成功,请牢记您的银行卡号%s" % (id))
 
def checkUserPasswd(user):
 n = 0
 while n <= 3:
 if n == 3:
  user.card.status = True
  print("输入超过3次,账户被锁定,请解锁后再使用其他功能")
  return -1
 passwd = input("请输入您的账户密码:")
 if passwd != user.passwd:
  print("密码输入错误,请重新输入")
  n += 1
 else:
  return 0
 
def checkUserPasswdLock(user):
 n = 0
 while n <= 3:
 if n == 3:
  print("输入超过3次,账户锁定失败!")
  return -1
 passwd = input("请输入您的账户密码:")
 if passwd != user.passwd:
  print("密码输入错误,请重新输入")
  n += 1
 else:
  user.card.status = True
  print("账户锁定成功!")
  return 0

5、bankManage.py  主程序

#!/usr/bin/env python
# coding:UTF-8
 
 
"""
@version: python3.x
@author:曹新健
@contact: 617349013@qq.com
@software: PyCharm
@file: bankManage.py
@time: 2018/9/11 9:57
"""
 
'''
管理员类:
名称:Admin
属性:name、passwd
方法:显示管理员欢迎界面、显示功能界面
银行卡:
名称:Card
属性:id,balance
方法:生成卡号
取款机:
名称:ATM
属性:
方法:开户、查询、取款、转账、存款、改密、锁定、解锁、补卡、销户
用户:
名称:user
属性:姓名、身份号、电话号、银行卡
方法:
'''
 
import time,os
from admin import Admin
import functions
 
 
#users = {}
def run():
 admin = functions.adminInit()
 users = functions.userInit()
 #print(users)
 if admin.adminView():
 functions.adminClose(admin)
 functions.userClose(users)
 return -1
 while True:
 admin.adminAction()
 value = input("请选择你要办理的业务:")
 if value == "1":
  functions.openAccount(users)
  functions.userClose(users)
 elif value == "2":
  functions.delAccount(users)
  functions.userClose(users)
 elif value == "3":
  functions.serchAccount(users)
 elif value == "4":
  functions.transferAccount(users)
  functions.userClose(users)
 elif value == "5":
  functions.withdrawal(users)
  functions.userClose(users)
 elif value == "6":
  functions.deposit(users)
  functions.userClose(users)
 elif value == "7":
  functions.lockAccount(users)
  functions.userClose(users)
 elif value == "8":
  functions.unlockAccount(users)
  functions.userClose(users)
 elif value == "9":
  functions.changePasswd(users)
  functions.userClose(users)
 elif value == "0":
  functions.makeNewCard(users)
  functions.userClose(users)
 elif value == "q":
  functions.adminClose(admin)
  functions.userClose(users)
  return -1
 elif value == "m":
  for user in users:
  print(user)
 else:
  print("艾玛,您的输入小编实在不能理解,重新输入吧")
 
 
 
if __name__ == "__main__":
 run()

更多学习资料请关注专题《管理系统开发》。

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

Python 相关文章推荐
对于Python的Django框架使用的一些实用建议
Apr 03 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
Sanic框架流式传输操作示例
Jul 18 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
关于tf.reverse_sequence()简述
Jan 20 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
Python 发送邮件方法总结
Aug 10 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python Event事件、进程池与线程池、协程解析
Oct 25 #Python
python实现简单银行管理系统
Oct 25 #Python
Python银行系统实战源码
Oct 25 #Python
python实现银行管理系统
Oct 25 #Python
Django视图扩展类知识点详解
Oct 25 #Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 #Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 #Python
You might like
PHP 5.0 Pear安装方法
2006/12/06 PHP
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
python多线程扫描端口示例
2014/01/16 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
品质管理部岗位职责范文
2014/03/01 职场文书
抵押贷款承诺书
2014/05/30 职场文书
会员卡清退活动总结
2014/08/27 职场文书
导游词之西安骊山
2019/12/03 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
Python序列化与反序列化相关知识总结
2021/06/08 Python
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android