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脚本来实现最简单的FTP下载的教程
May 04 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 Python
Python代码缩进和测试模块示例详解
May 07 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 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通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
python计算n的阶乘的方法代码
2019/10/25 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
python定义具名元组实例操作
2021/02/28 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
应用心理学个人的求职信
2013/12/08 职场文书
生产总经理岗位职责
2013/12/19 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
Python简易开发之制作计算器
2022/04/28 Python