银行代码源码解析

  • 管理员类Admin()
    • Admin代码
  • ATM()类
    • ATM代码
  • 人类person()类
    • person代码
  • 银行卡类card()
    • card代码
  • main()主函数
    • 银行自动提款代码主函数main()代码
  • 银行提款机演示

目录上面

先需要分析,有那些类,类有什么属性

人
类名:Person
属性:姓名,身份证号,电话号,卡
行为:卡
类名:Card
属性:卡号,密码,余额
行为:提款机
类名:ATM
属性:用户字典
行为:开户,查询,取款,存款,转账,改密码,锁定,解锁,补卡,销户管理员
类名:Admin
属性:
行为:管理员界面,显示界面(功能界面),管理员验证

管理员类Admin()

管理员界面和显示界面是一进去程序就能看见的
所以分2个函数,管理员界面一个,显示界面一个(即功能界面)。

Admin代码

import timeclass Admin(object):admin = '1'passwd = '1'# 管理员界面def AdminView(self):print("**********************************************")print("*                                            *")print("*                                            *")print("*               欢迎登录联盟银行              *")print("*                                            *")print("*                                            *")print("**********************************************")# 功能界面def FunctionView(self):print("**********************************************")print("*           开户(1)     查询(2)          *")print("*           取款(3)     存款(4)          *")print("*           转账(5)     改密码(6)         *")print("*           锁定(7)     解锁(8)          *")print("*           补卡(9)     销户(10)         *")print("*                   退出(0)                *")print("**********************************************")# 管理员验证def Check(self):inputAdmin = input("请输入管理员账户: ")if self.admin != inputAdmin:print("账号输入错误!")return -1inputPasswd = input("请输入管理员密码: ")if self.passwd != inputPasswd:print("密码输入错误!")return -1# 能执行到这里说明账号密码输入正确print("操作成功,请稍后...")# time.sleep(2)return 0

管理员界面

功能界面

ATM()类

在ATM类中,我把每个用户的所有数据存入字典当中,比如开户行为,目标就是向用户字典中添加一对键值对(卡号-用户)。

当然,除了我所要求的ATM机的功能行为外,还需要额外创建两个方法随机生成卡号和验证密码,因为这两个方法经常被使用,为了提高程序的复用性,我将这两个方法单独写了出来

ATM代码

import random
from Card import Card
from Person import Personclass ATM(object):def __init__(self, allusers):# 存储所有用户的信息,用字典self.allUsers = allusers# 创建用户def CreatUser(self):# 目标:向用户字典中添加一对键值对(卡号-用户)name = input("请输入您的姓名:")idCard = input("请输入您的身份证号:")phone = input("请输入您的电话号码:")preMoney = int(input("请输入您的预存款金额:"))if preMoney < 0:print("预存款输入有误,开户失败......")return -1# 设置密码onePasswd = input("请输入密码:")# 验证密码if not self.checkPasswd(onePasswd):print("密码输入有误,开户失败......")return -1# 信息收集完成# 生成卡号cardId = self.creatCardId()card = Card(cardId, onePasswd, preMoney)user = Person(name, idCard, phone, card)# user存到字典self.allUsers[cardId] = userprint("开户成功,请牢记卡号(%s)......" % cardId)# 查询余额def searchUserInfo(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 判断是否锁定if user.card.cardlock == True:print("该卡已经被锁定,请解锁后再使用其他操作......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,该卡已经被锁定......")user.card.cardlock = Truereturn -1# 查询成功,输出结果print("账户:%s     余额:%d" % (user.card.cardid, int(user.card.cardmoney)))# 取款def getMoney(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 判断是否锁定if user.card.cardlock == True:print("该卡已经被锁定,请解锁后再使用其他操作......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,该卡已经被锁定......")user.card.cardlock = Truereturn -1getmoney = int(input("请输入您取款金额:"))nowmoney = int(user.card.cardmoney)if getmoney > nowmoney:print("余额不足,取款失败......")return -1nowmoney -= getmoneyuser.card.cardmoney = nowmoneyprint("取款成功,您目前余额为:%d" % user.card.cardmoney)# 存款def saveMoney(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 判断是否锁定if user.card.cardlock == True:print("该卡已经被锁定,请解锁后再使用其他操作......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,该卡已经被锁定......")user.card.cardlock = Truereturn -1savemoney = int(input("请输入您存款金额:"))nowmoney = int(user.card.cardmoney)nowmoney += savemoneyuser.card.cardmoney = nowmoneyprint("取款成功,您目前余额为:%d" % user.card.cardmoney)# 转账def transferMoney(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 判断是否锁定if user.card.cardlock == True:print("该卡已经被锁定,请解锁后再使用其他操作......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,该卡已经被锁定......")user.card.cardlock = Truereturn -1# 查询成功,输出结果print("账户:%s     余额:%d" % (user.card.cardid, int(user.card.cardmoney)))tocardid = input("请输入您希望转账的账户:")# 验证是否存在该卡号usertoid = self.allUsers.get(tocardid)if not usertoid:print("该卡号不存在,查询失败......")return -1tomoney = int(input("请输入您希望转账的金额:"))nowmoney = int(user.card.cardmoney)tonowmoney = int(usertoid.card.cardmoney)if tomoney > nowmoney:print("余额不足,转账失败......")return -1nowmoney -= tomoneytonowmoney += tomoneyuser.card.cardmoney = nowmoneyusertoid.card.cardmoney = tonowmoneyprint("转账成功,您目前余额为:%d" % user.card.cardmoney)# 改密码def changePasswd(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 判断是否锁定if user.card.cardlock == True:print("该卡已经被锁定,请解锁后再使用其他操作......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,该卡已经被锁定......")user.card.cardlock = Truereturn -1newpasswd = input("请输入新密码:")newpasswd2 = input("请确认新密码:")if newpasswd != newpasswd2:print("两次密码输入不一致,密码修改失败")return -1user.card.cardpasswd = newpasswdprint("密码修改成功......")# 锁定def lockUser(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1if user.card.cardlock:print("该卡已经被锁定,请结束后再使用其他功能")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误......")return -1# 锁定user.card.cardlock = Trueprint("锁定成功......")# 解锁def unlockUser(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,解锁失败......")return -1if not user.card.cardlock:print("该卡没有锁定,无需解锁......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,解锁失败......")return -1temid = input("请输入您的身份证号:")if temid != user.idCard:print("身份证号输入错误,解锁失败......")return -1# 解锁user.card.cardlock = Falseprint("解锁成功......")# 补卡def newCard(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误......")return -1# 重新生成卡号newcard = self.creatCardId()user.card.cardid = newcardprint("补卡办理成功,这是您的新卡号:%s" % user.card.cardid)# 销户def killUser(self):cardnum = input("请输入您的卡号:")# 验证是否存在该卡号user = self.allUsers.get(cardnum)if not user:print("该卡号不存在,查询失败......")return -1# 验证密码if not self.checkPasswd(user.card.cardpasswd):print("密码错误,销户失败......")return -1self.allUsers.pop(cardnum)print("该账户已经被销户......")# 验证密码,循环三次没有正确就输出错误def checkPasswd(self, realPasswd):for i in range(3):temPasswd = input("请确认密码:")if temPasswd == realPasswd:return Truereturn False# 随机生成卡号def creatCardId(self):# 验证密码是否重复while True:str = ""for i in range(6):ch = chr(random.randrange(ord('0'), ord('9') + 1))str += ch# 判断是否重复if not self.allUsers.get(str):return str

人类person()类

人的行为可以使用在ATM行为来代替,所以这个class定义了4个属性

person代码

class Person(object):def __init__(self,name,idCard,phone,card):self.name = name  #用户名字self.idCard = idCard  #用户身份证self.phone = phone   #用户电话self.card = card  #用户的信用卡

银行卡类card()

银行卡这个类只有三个属性卡号,密码,余额。但是在ATM机的行为中,需要对信用卡进行锁定,所以需要多添加一个锁定属性来判断信用卡是否被锁定。

card代码

class Card(object):def __init__(self,cardid,cardpasswd,cardmoney):self.cardid = cardid  #信用卡号self.cardpasswd = cardpasswd  #信用卡密码self.cardmoney = cardmoney  #卡内余额self.cardlock = False  #是否被锁定

main()主函数

在main方法中,因为ATM系统功能界面所示,将进行功能选择
新建立一个银行自动提款机python

银行自动提款代码主函数main()代码

import time
from Admin import Admin
import pickle
from ATM import ATM
import osdef main():# 界面对象admin = Admin()# 管理员开机admin.AdminView()if admin.Check():return -1#存储信息的文件是否存在if os.path.exists("userinfo.txt"):filepath = "userinfo.txt"else:open("userinfo.txt", "wb")filepath = "userinfo.txt"# 提款机对象#如果存储信息的文件非空if os.path.getsize(filepath):f = open(filepath, "rb")# print(f)allusers = pickle.load(f)else:# print("*****")allusers = {}print((allusers))atm = ATM(allusers)while True:admin.FunctionView()# 等待用户操作option = input("请输入您的操作:")if option == '1':# 开户atm.CreatUser()elif option == '2':# 查询atm.searchUserInfo()elif option == '3':# 取款atm.getMoney()elif option == '4':# 存款atm.saveMoney()elif option == '5':# 转账atm.transferMoney()elif option == '6':# 改密码atm.changePasswd()elif option == '7':# 锁定atm.lockUser()elif option == '8':# 解锁atm.unlockUser()elif option == '9':# 补卡atm.newCard()elif option == '10':# 销户atm.killUser()elif option == '0':# 退出if not admin.Check():# 将当前系统中的用户信息保存到文件中f = open(filepath, "wb")pickle.dump(atm.allUsers, f)f.close()return -1time.sleep(2)if __name__ == "__main__":main()

银行提款机演示













Python——银行管理系统相关推荐

  1. python银行管理系统

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

  2. python银行管理系统源码_javaweb银行大厅自助信息管理系统,源码行行注释,免费分享...

    全微毕设擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON(DJANGO/FLASK).THINKPHP.C#.安卓.微信小程序.MYSQL.SQLSERVER等,欢迎咨询 今天记录的 ...

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

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

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

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

  5. Python版简易银行管理系统源代码,银行管理系统python代码、银行自助提款系统

    Python版简易银行管理系统源代码,银行管理系统python代码,实现开户.账户查询.存取款.转账.改密.锁定.解锁.补卡.销户等银行管理操作.账户信息存在allusers.txt中,通过该文件的读 ...

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

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

  7. [附源码]计算机毕业设计Python小型银行管理系统(程序+源码+LW文档)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  8. 银行管理系统(使用SQL Server)-Python快速编程入门(第2版)-人民邮电出版社-阶段案例

    阶段案例-银行管理系统 题目描述 银行管理系统是一个集开户.查询.取款.存款.转账.锁定.解锁.退出等一系列业务于一体的管理系统,随着计算机技术在金融行业的广泛应用,银行企业采用管理系统替代了传统手工 ...

  9. python银行自动取款机系统详写

    1.确定对象与方法 人 类名: Person 属性: 姓名 身份证号 电话号 卡 行为: 卡 类名: Card 属性: 卡号 密码 余额 行为: 银行 主程序 类名: Bank 属性: 行为: 用户列 ...

  10. 使用类的银行管理系统的C ++程序

    In this program, we are using the concept of C++ class and object, following basic operations are be ...

最新文章

  1. 学习,思维三部曲:WHAT、HOW、WHY
  2. Linux的su命令,sudo命令和限制root远程登录
  3. R构建二次回归模型( Quadratic Regression)
  4. 【Python】机器学习矩阵运算必学库Numpy首秀!
  5. 限制鼠标在窗体中的移动
  6. python实现日历功能_Python实现的简单万年历例子分享
  7. 大会线上同步直播, 来不到现场也可以线上看直播,以及参会秘籍
  8. nginx 1.16 配置反向代理,http,https,ssl
  9. K均值算法(K-means)聚类
  10. 虎赢大数据:“企业工商数据价值挖掘”,是2020年大数据创业发展的方向之一
  11. 如何配置线上生产服务器环境(密匙登录、防火墙 、Node、Nginx、MongoDB、Redis、Mysql、PHP、JDK、Tomcat等)
  12. java mov 转 mp4 视频格式
  13. Reincarnation HDU - 4622 (后缀自动机)
  14. 《京东话费充值系统架构演进实践》阅读笔记
  15. 王者荣耀模型制作曝光
  16. rust新版组队指令_腐蚀rust新版服务器指令大全 腐蚀指令一览
  17. Linux socket下read函数详解
  18. 香江野生动物园之行: (一)考拉
  19. Android英语词典案例
  20. 【三维装箱】基于遗传和模拟退火的三维装箱问题matlab源码

热门文章

  1. vue使用tinymce富文本编辑器
  2. Scrapy框架:Request和Response对象,使用Request发送get请求、FormRequest发送post请求
  3. SAP HANA XS 专栏
  4. android百度地图导航功能开发,Android百度地图应用开发基础知识
  5. fdisk 分区/格式化/挂载
  6. 如何通过站群提高网站曝光率
  7. 通过身份证号码进行归属地的查询、出生日期,以及判断性别(升级版)
  8. 中科院计算机和理论物理双硕士白,中科院研究生理论物理怎么不学相对论?
  9. Xp系统优化 服务相关命令(6)
  10. linux安装7z命令,Linux 下安装 7zip 及使用