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

自己写的练手小程序,练习面向对象的概念,代码中都有注释,刚学的同学也可以很容易看懂(需要自己用pickle模块新建一个database.txt文件,用来存储用户数据信息)。

# atm.py

# 各种操作类

import random

from card import Card

from user import User

import time

class ATM(object):

# 初始化

def __init__(self, allUsersInfo):

# 将所有用户信息传递过来,以便后续操作

self.allUsersInfo = allUsersInfo # 卡号 :用户

# 确认密码

def checkPwd(self, realPwd):

myList = [3, 2, 1, 0]

for i in myList:

# 如果密码输入错误超过三次

if i == 0:

return False

rePass = input('请再次输入密码:')

if realPwd == rePass:

return True

elif (i - 1) != 0:

print('输入错误,你还有%d次输入的机会!' % (i - 1))

# 随机生成开户卡号

def randomId(self):

while True:

# 存储卡号

str = ''

# 随机生成6位卡号

for i in range(6):

ch = chr(random.randrange(ord('0'), ord('9') + 1))

str += ch

# 判断卡号是否重复

if not self.allUsersInfo.get(str):

return str

# 开卡操作

def createUser(self):

try:

name = input('请输入姓名:') # 用户姓名

idCard = input('请输入身份证号码:') # 用户身份证号

phone = input('请输入电话号码:') # 用户的电话号码

preMoney = int(input('请输入预存金额:')) # 用户的预存金额

# 预存金额少于0则开户失败

if preMoney < 0:

print('预存金额有误,开户失败!')

return -1

# 设置密码

onePwd = input('请输入密码:') # 第一次密码

twoPwd = self.checkPwd(onePwd)

if not twoPwd:

print('确认密码错误,开户失败!')

return -1

# 以上全部完成,则开户所需的信息准备齐全,开户成功

# 系统生成开户卡号

# 生成卡号

cardStr = self.randomId()

# 创建一个卡的实例,用于存储卡的信息

card = Card(cardStr, onePwd, preMoney)

# 创建一个用户实例,用于存储用户的信息

user = User(name, idCard, phone, card)

# 按 卡号 : 用户信息 键值对的形式存入字典中

self.allUsersInfo[cardStr] = user

# 提示用户,已经开户成功

time.sleep(1)

print('开户成功,请牢记卡号({})...'.format(cardStr))

except Exception as e:

print('抱歉,系统出现故障,暂时无法操作!')

return

# 判断卡号是否存在

def isExistence(self, cardStrInp):

# 卡号不存在,直接退回到选项界面

if self.allUsersInfo.get(cardStrInp):

return True

# 卡号不存在的情况下

else:

print('卡号不存在!')

return False

# 做查询等操作时,输入密码

def secretOption(self, cardStrInp):

myList = [3, 2, 1, 0]

for i in myList:

# 如果密码输入错误超过三次

if i == 0:

return False

passInp = input('请输入密码:')

if passInp == self.allUsersInfo[cardStrInp].cardInfo.cardPwd:

return True

elif (i - 1) != 0:

print('输入错误,你还有%d次输入的机会!' % (i - 1))

# 查询用户信息

def searchUserInfo(self):

cardStrInp = input('请输入卡号:') # 用户想要查询的卡号

# 判断卡号的状态

isExist = self.isExistence(cardStrInp)

# 卡号存在

if isExist:

# 是否被锁定

if not self.allUsersInfo[cardStrInp].cardInfo.isLock:

# 输入密码并判断

# 密码正确则输出余额

if self.secretOption(cardStrInp):

print('账号:%s 余额:%d' % (cardStrInp, self.allUsersInfo[cardStrInp].cardInfo.cardMoney))

return 0

# 密码错误则锁定卡号

else:

print('密码输入错误超过3次,卡号已被锁定,请先解锁!')

self.allUsersInfo[cardStrInp].cardInfo.isLock = True

return -1

else:

print('该卡号已被锁定,请先解锁!')

return -1

# 取钱

def getMoney(self):

cardStrInp = input('请输入卡号:')

isExist = self.isExistence(cardStrInp)

# print(isExist)

# 如果卡号存在

if isExist:

# 如果没被锁定

if not self.allUsersInfo[cardStrInp].cardInfo.isLock:

# 如果密码正确

if self.secretOption(cardStrInp):

getMoney = int(input('请输入取款金额:'))

# 如果取款金额超出余额

if getMoney > self.allUsersInfo[cardStrInp].cardInfo.cardMoney:

print('余额不足,取款失败!')

return -1

# 余额足够的情况,取款成功

else:

self.allUsersInfo[cardStrInp].cardInfo.cardMoney -= getMoney

print('取款成功,卡上余额:%d' % self.allUsersInfo[cardStrInp].cardInfo.cardMoney)

return 0

else:

print('密码输入错误超过3次,卡号已被锁定,请先解锁!')

self.allUsersInfo[cardStrInp].cardInfo.isLock = True

return -1

else:

print('该卡号已被锁定,请先解锁!')

return -1

# 存钱

def saveMoney(self):

cardStrInp = input('请输入卡号:')

isExist = self.isExistence(cardStrInp)

if isExist:

# 如果没被锁定

if not self.allUsersInfo[cardStrInp].cardInfo.isLock:

# 如果密码正确

if self.secretOption(cardStrInp):

saveMoney = int(input('请输入存款金额:'))

if saveMoney <= 0:

print('无效的存款金额!')

return -1

else:

# 存款成功

self.allUsersInfo[cardStrInp].cardInfo.cardMoney += saveMoney

print('存款成功,卡内余额为%d!' % self.allUsersInfo[cardStrInp].cardInfo.cardMoney)

else:

print('密码输入错误超过3次,卡号已被锁定,请先解锁!')

self.allUsersInfo[cardStrInp].cardInfo.isLock = True

return -1

else:

print('该卡号已被锁定,请先解锁!')

return -1

# 转账

def transMoney(self):

cardInp = input('请输入卡号:')

isExist = self.isExistence(cardInp)

# 卡号存在

if isExist:

# 没被锁定

if not self.allUsersInfo[cardInp].cardInfo.isLock:

# 密码正确

if self.secretOption(cardInp):

transCardInp = input('请输入要转账的卡号:')

isExistTrans = self.isExistence(transCardInp)

# 要转账的卡号存在

if isExistTrans:

# 要转账的卡号没被锁定

if not self.allUsersInfo[transCardInp].cardInfo.isLock:

# 要转账的卡号不是自己的卡号

if transCardInp != cardInp:

transMoneyInp = int(input('请输入要转账的金额:'))

# 判断转账金额是否大于卡内余额

if transMoneyInp > self.allUsersInfo[cardInp].cardInfo.cardMoney:

print('余额不足,转账失败!')

return -1

else:

self.allUsersInfo[cardInp].cardInfo.cardMoney -= transMoneyInp

self.allUsersInfo[transCardInp].cardInfo.cardMoney += transMoneyInp

print('转账成功,卡内余额为%d!' % self.allUsersInfo[cardInp].cardInfo.cardMoney)

else:

print('无法转入自己的账户!')

return -1

else:

print('对方卡号已被锁定,无法转账,请先解锁!')

return -1

else:

print('密码输入错误超过3次,卡号已被锁定,请先解锁!')

self.allUsersInfo[cardInp].cardInfo.isLock = True

return -1

else:

print('该卡号已被锁定,请先解锁!')

return -1

# 改密

def changePwd(self):

cardStrInp = input('请输入卡号:')

isExist = self.isExistence(cardStrInp)

if isExist:

# 如果没被锁定

if not self.allUsersInfo[cardStrInp].cardInfo.isLock:

# 如果密码正确

if self.secretOption(cardStrInp):

# 输入修改后的密码

changePwd = input('请输入新密码:')

# 不允许新密码和旧密码相同

if changePwd != self.allUsersInfo[cardStrInp].cardInfo.cardPwd:

myList = [3, 2, 1, 0]

for i in myList:

# 如果密码输入错误超过三次

if i == 0:

print('确认密码错误次数超过3次,修改密码失败!')

return -1

passInp = input('请确认新密码:')

# 如果新密码确认成功,则修改密码

if passInp == changePwd:

print('密码修改成功!')

self.allUsersInfo[cardStrInp].cardInfo.cardPwd = changePwd

return 0

elif (i - 1) != 0:

print('输入错误,你还有%d次输入的机会!' % (i - 1))

# 新密码和旧密码相同,不允许修改,提示并退出

else:

print('新密码不允许和旧密码相同!')

return -1

# 密码不正确

else:

print('密码输入错误超过3次,卡号已被锁定,请先解锁!')

self.allUsersInfo[cardStrInp].cardInfo.isLock = True

return -1

else:

print('该卡号已被锁定,请先解锁!')

return -1

# 解锁

def unlockUser(self):

cardStrInp = input('请输入卡号:')

isExist = self.isExistence(cardStrInp)

# 存在

if isExist:

# 被锁定

if self.allUsersInfo[cardStrInp].cardInfo.isLock:

# 如果密码正确

if self.secretOption(cardStrInp):

# 输入身份证号信息做确认

idCardInp = input('请输入身份证号:')

# 身份证号信息匹配

if idCardInp == self.allUsersInfo[cardStrInp].idCard:

# 解锁成功

print('解锁成功!')

self.allUsersInfo[cardStrInp].cardInfo.isLock = False

return 0

else:

print('身份证号信息不匹配,解锁失败!')

return -1

# 密码不正确

else:

print('密码输出错误,解锁失败!')

return -1

else:

print('该卡号未被锁定,无需解锁!')

return -1

# card.py

# 卡类

class Card(object):

def __init__(self, cardStr, cardPwd, cardMoney):

self.cardStr = cardStr # 卡号

self.cardPwd = cardPwd # 卡密

self.cardMoney = cardMoney # 卡中余额

self.isLock = False # 卡号是否被锁

# main.py

# 主函数

from view import View

import pickle

from atm import ATM

import time

def main():

# 定义管理员对象

admin = View()

# 管理员登录界面

admin.printAdminView()

# 如果管理员账号、密码输入错误则退出

if admin.adminOption():

return -1

# 读取存储在文件中的所有用户的信息

file = open('database.txt', 'rb')

allUsersInfo = pickle.load(file) # 将所有用户信息存储到 allUsersInfo中去

file.close() # 关闭文件

# 打印所有用户信息,以便验证

print('*' * 10)

print('usersInfo:', allUsersInfo)

# 创建atm实例,并将所有用户信息传递过去,进行初始化

atm = ATM(allUsersInfo)

# 循环进行操作选项

while True:

# 调用功能显示方法,显示功能选项

admin.printSysFunctionView()

# 提示用户输入功能选项进行操作

option= input('请输入操作选项(数字):')

# 对用户的操作选项进行判断

if option == "1": # 开户操作

atm.createUser()

elif option == "2": # 查询余额操作

atm.searchUserInfo()

elif option == "3": # 取钱操作

atm.getMoney()

elif option == "4": # 存钱操作

atm.saveMoney()

elif option == "5": # 转账操作

atm.transMoney()

elif option == "6": # 改密码操作

atm.changePwd()

elif option == "7": # 解锁操作

atm.unlockUser()

# 以下操作暂时未写

# elif option == "q": # 退出操作

# # atm.quitSys()

# print('退出')

# elif option == "9": # 补卡操作

# print("补卡")

#

# elif option == "0": # 销户操作

# print("销户")

elif option == "8": # 退出系统

return 0

# 如果用户输入的不是上述操作

else:

print('无效的操作选项!')

return -1

# 将新信息写入文件

# 将当前系统中的用户信息保存到文件中

f = open('database.txt', "wb")

pickle.dump(allUsersInfo, f)

f.close()

if __name__ == '__main__':

main()

# user.py

# 用户信息类

class User(object):

def __init__(self, name, idCard, phone, cardInfo):

self.name = name # 用户姓名

self.idCard = idCard # 用户身份证号

self.phone = phone # 用户的手机号码

self.cardInfo = cardInfo # 用户的卡的信息(卡号、密码、余额)

# view.py

# 视图类

import time

class View(object):

admin = '1'

pwd = '1'

# 管理员登录界面

def printAdminView(self):

print("*****************************************************************")

print("* *")

print("* *")

print("* 欢迎登陆丹丹的银行 *")

print("* *")

print("* *")

print("*****************************************************************")

def printSysFunctionView(self):

print("*****************************************************************")

print("* 开户(1) 查询(2) *")

print("* 取款(3) 存款(4) *")

print("* 转账(5) 改密(6) *")

print("* 解锁(7) 退出(8) *")

# print("* 补卡(9) 销户(0) *")

# print("* 退出(t) *")

print("*****************************************************************")

def adminOption(self):

inputAdmin = input('请输入管理员账号:')

if inputAdmin != self.admin:

print('账号错误!')

return -1

inputPwd = input('请输入管理员密码:')

if inputPwd != self.pwd:

print('密码错误!')

return -1

# 管理员账号和密码全部正确

print('操作成功,请稍后...')

time.sleep(2)

return 0

# view = View()

# view.printAdminView()

# view.adminOption()

# view.printSysFunctionView()

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

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

python银行系统-python实现简单银行管理系统相关推荐

  1. [附源码]Python计算机毕业设计Django小型银行管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  2. python银行系统-Python实现银行账户资金交易管理系统

    用类和对象实现一个银行账户的资金交易管理, 包括存款.取款和打印交易详情, 交易详情中包含每次交易的时间.存款或者取款的金额.每次交易后的余额. 如: 下面按照要求定义一个账户 Account 类.账 ...

  3. Python+tkinter库实现简单图书管理系统

    文章目录 前言 一.MySQL是什么? 二.Tkinter库 三.Code步骤 1.引入库 2.使用tkinter搭建系统 3.定义函数(发送消息,操作mysql数据库) 总结 前言 使用mysql数 ...

  4. python银行系统-python简单的银行系统

    先定义类: 银行卡类 class Card: def __init__(self,cid,pwd): self.cid = cid self.pwd = pwd self.money = 0 self ...

  5. python银行系统-python银行系统实现源码

    本文实例为大家分享了python实现银行系统的具体代码,供大家参考,具体内容如下 1.admin.py 定义管理员信息和主界面显示 #!/usr/bin/env python # coding:UTF ...

  6. python银行系统-python 银行系统

    print("开卡成功您的卡号是:%s"%card_id) def search_account(self): #搜索功能 利用键值卡号 搜索到对应的用户 sch_card = i ...

  7. python实例-银行管理系统(特简单的那种)

    python实例学习--银行管理系统 任务分析 管理员类 ATM类 主函数 注意 任务分析 这个实例要求实现一个银行管理系统,系统开始运行时,进入欢迎界面,工作人员输入管理员账户和密码,输入失败直接退 ...

  8. Python基础项目实践之:面向对象方法实现模拟银行管理系统

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

  9. python工资管理系统课程设计_Python3实现的简单工资管理系统示例

    本文实例讲述了Python3实现的简单工资管理系统.分享给大家供大家参考,具体如下: 工资管理系统要求: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 执行代码: #!/u ...

  10. python银行管理系统

    题目 python  阶段案例-银行管理系统 P118 分析部分 代码部分 import randomclass bankUser:# 卡号,用户姓名,身份证号,手机,预存,密码Count_id = ...

最新文章

  1. K单体型重建算法的研究
  2. 7.5. Function
  3. python检测网格
  4. Apache安装遇到的相关问题
  5. 移动服务机器人模块选型
  6. 笨方法学python--变量和命名
  7. selenide_使用Selenide进行有效的UI测试
  8. Bootstrap中的条纹进度条使用案例
  9. [iOS]Unable to run app in Simulator
  10. Vite + React 组件开发实践
  11. swagger默认访问路径_spring-boot集成swagger-ui修改默认访问路径
  12. ORL数据集百度网盘
  13. VMware Tools手动安装
  14. python信息技术答案_高中信息技术《Python语言》模块试卷习题.doc
  15. 短信api的接口平台有哪些可以免费试用
  16. ZK宕机重启数据恢复
  17. SAS:Proc Freq ,输出结果控制小数位数
  18. 人工智能行业每日必读(02·03)
  19. 手中的快递包别乱扔了!100万份个人信息被卖40亿
  20. lisp语言1y1c,常青树LISP语言

热门文章

  1. Flink 源码编译实战
  2. 向上累积频数怎么算_excel数据分析向上累计和向下累计怎么做呢
  3. 无线通信设备安装工程概预算编制_南宁市轨道交通5号线一期工程专用无线通信系统设备采购...
  4. GRPC入门使用及测试用例源码
  5. 有什么软件可以测试u盘的真假,U盘真假怎么检测|教你检测U盘真假的方法
  6. 海量数据搜索---搜索引擎的实现
  7. 15+在线网页按钮生成器工具
  8. php拍照功能,Javascript+PHP兑现在线拍照功能
  9. 终极QQ-ZONE技巧
  10. 转:组态软件测评∣WinCC、Citect、LabVIEW、InTouch、Ingnition,你更喜欢用哪个?