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服务器拒绝服务攻击代码
Jan 16 Python
Django自定义分页与bootstrap分页结合
Feb 22 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
selenium+python截图不成功的解决方法
Jan 30 Python
Python中一般处理中文的几种方法
Mar 06 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
基于python调用psutil模块过程解析
Dec 20 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
python获取响应某个字段值的3种实现方法
Apr 30 Python
Python urllib3软件包的使用说明
Nov 18 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 Python
python读取mnist数据集方法案例详解
Sep 04 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
WHOIS类的修改版
2006/10/09 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP页面中文乱码分析
2013/10/29 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
Tensorflow卷积神经网络实例
2018/05/24 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python实现电子书翻页小程序
2019/07/23 Python
python爬虫增加访问量的方法
2019/08/22 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
数控专业应届生求职信
2013/11/27 职场文书
电钳专业个人求职信
2014/01/04 职场文书
幼儿生日活动方案
2014/08/27 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技