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 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
详解Python中expandtabs()方法的使用
May 18 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
python实现flappy bird游戏
Dec 24 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
用python求一重积分和二重积分的例子
Dec 06 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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 float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php四种基础算法代码实例
2013/10/29 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php+mysql实现无限级分类
2015/11/11 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
高中语文教学反思
2014/01/16 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
不错的求职信范文
2014/07/20 职场文书
离婚财产分配协议书
2014/10/21 职场文书
2014年司法局工作总结
2014/12/11 职场文书
公司转让协议书
2016/03/19 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript