python实现简单银行管理系统
首先,银行管理系统通过账户来实现用户在银行中的一系列操作,而账户则分为用户个人信息User类和银行卡信息Card类
class Card:def __init__(self,cardId,passwd,balance):self.cardId = cardIdself.passwd = passwdself.balance = balanceself.card_lock = False
class User:def __init__(self,name,phone,Id,card):self.name = nameself.phone = phoneself.Id = Idself.card = card
主函数类,银行管理系统执行函数,进行银行管理一系列相关操作
BMS_Main,主函数类
from adminview import AdminView
from ATM import ATMclass BMS_Main:def __init__(self):self.allUser = {}self.atm = ATM(self.allUser)self.admin = AdminView()def Save_Data(self):self.allUser.update(self.atm.alluser) # 将用户信息存储def operate(self):self.admin.Login_Interface() # 进入管理员登录界面ver = self.admin.Validata_Logon() # 验证管理员if not ver: # 判断是否为管理员,是则进入操作页面while True:self.admin.Interface_View()option = (input('请输入操作码:'))if option == '1':self.atm.Open_An_Account() # 调用 ATM类的开户操作if option == '2':self.atm.Query_Account() # 调用 ATM类的查询操作if option == '3':self.atm.Draw_Money() # 调用 ATM类的取款操作if option == '4':self.atm.Deposit_Money() # 调用 ATM类的存款操作if option == '5':self.atm.Transfer_Money() # 调用 ATM类的转账操作if option == '6':self.atm.Locking() # 调用 ATM类的锁定操作if option == '7':self.atm.Unlock() # 调用 ATM类的解锁操作if option == '8':self.Save_Data() # 退出管理系统print('已退出')return -1if option not in ('1', '2', '3', '4', '5', '6', '7', '8'): # 防止误输入操作print("操作有误,请重新输入")if __name__ == '__main__':system_page = BMS_Main()system_page.operate()
定义构造函数:
class BMS_Main:def __init__(self):self.allUser = {}self.atm = ATM(self.allUser)self.admin = AdminView()
Self.alluser 用来存储账户信息
Self.atm 调用ATM类的账户信息赋给atm
Self.admin 调用adminview类的界面信息赋给admin
管理员界面和操作页面类:AdminView
class AdminView:Admin_Acc = '123'Admin_Pwd = '321'# 欢迎界面@staticmethoddef Login_Interface():print('*******欢迎进入管理员系统*******')# 管理员登录验证def Validata_Logon(self):Admin_Acc_Input = input('请输入管理员账户:')if self.Admin_Acc != Admin_Acc_Input:print("管理员账户输入错误!!")return -1Admin_Pwd_Input = input('请输入管理员密码:')if self.Admin_Pwd != Admin_Pwd_Input:print("管理员密码输入错误!!!")return -1print('登陆成功')return 0# 管理员登录后,进入银行账户操作系统@staticmethoddef Interface_View():print('开户【1】\t查询【2】\n取款【3】\t存款【4】\n转账【5】\t锁定【6】\n解锁【7】\t退出【8】')
进入主函数类的操作函数 operate(),首先调用adminview()中的login_Interface(0
进入管理员登录界面,然后,验证管理员,调用adminview()中的Validata_Logon()
验证成功,进入循环操作,用户输入操作码,执行相应操作
点击超链接即可跳转对应操作
Option = 1 开户操作 Option = 2 查询操作
Option = 3 取款操作 Option = 4 存款操作
Option= 5 转账操作 Option= 6 锁定操作
Option= 7 解锁操作
Option= 8,退出系统,调用函数Save_Data()保存,退出系统。
如果输入其他字符则提示 操作有误,请重新输入
ATM类
from Card import Card
from BankUser import User
import randomclass ATM:def __init__(self, alluser):self.alluser = alluser# 生成6位银行卡号def Generate_Card_Id(self):while True:Str_Data = ""for i in range(6):ch = chr(random.randrange(ord('0'), ord('9')) + 1)Str_Data += ch# 判断是否重复卡号if not self.alluser.get(str):return Str_Data# 开户操作【1】def Open_An_Account(self):name = input('姓名:') # 账户基本信息录入Id = input('证件号码:')phone = input('电话号码:')Advance_Deposit = int(input('预存款:'))# 预存款不能<=0元if Advance_Deposit <= 0:print("预存款必须大于0元")return -1First_Pwd = input('设置密码:') # 设置账户密码Second_pwd = input('确认密码:')if First_Pwd != Second_pwd:print("两次输入密码不一致")return -1print('创建密码成功')Card_Id = self.Generate_Card_Id() # 调用生成的卡号card = Card(Card_Id, First_Pwd, Advance_Deposit) # 银行卡信息user = User(name, phone, Id, card) # 用户个人信息self.alluser[Card_Id] = user # 存储账户信息print('开户成功,您的卡号为{},密码为{},请牢记'.format(Card_Id, First_Pwd))# 验证密码,如果输入三次都错误,自动退出登录def Ve_Pwd(self, vfpwd):for i in range(3):intpwd = input('请输入您的账户密码:')if vfpwd == intpwd:return Trueprint("您已经三次输入错误,已退出!")return False# 查询操作【2】def Query_Account(self, base=1):if base == 1:inputcardId = input('请输入您要查询的账户:')if base == 2:inputcardId = input('请输入您要转出的账户:')if base == 3:inputcardId = input('请输入您要转入的账户:')user = self.alluser.get(inputcardId)if not self.alluser.get(inputcardId): # 判断卡号是否匹配print('卡号不存在!')return -1if user.card.card_lock: # 判断卡是否冻结print('此账户已锁定,请解锁后继续使用!!')return -1if not self.Ve_Pwd(user.card.passwd): # 密码验证print('您的账户已被锁定')return -1print('账户:{},余额:{}'.format(user.card.cardId, user.card.balance))return user# 取款操作【3】def Draw_Money(self):user = self.Query_Account()if user != -1:DrawMoney = float(input('请输入取款金额:'))if DrawMoney >= user.card.balance:print('余额不足!')return -1user.card.balance -= DrawMoneyprint('取款成功!\n账户:{} ,余额:{}'.format(user.card.cardId, user.card.balance))# 存款操作【4】def Deposit_Money(self):user = self.Query_Account()if user == -1:return -1DepositMoney = float(input('请输入存款金额:'))user.card.balance += DepositMoneyprint('存款成功!\n账户:{} ,余额:{}'.format(user.card.cardId, user.card.balance))# 转账操作【5】def Transfer_Money(self):TransferOut = self.Query_Account(base=2) # 转出账户if TransferOut == -1:return -1TransferInto = self.Query_Account(base=3) # 转入账户if TransferInto == -1:return -1TransferAmount = float(input('请输入转账金额:'))if TransferOut.card.balance >= TransferAmount:Tips = input('确认向{}转账吗?y/n'.format(TransferInto.card.cardId))if Tips == 'y' or 'Y':TransferOut.card.balance -= TransferAmount # 转出账户:转钱TransferInto.card.balance += TransferAmount # 转入账户:收钱print('转账成功!\n账户:{},余额:{}'.format(TransferOut.card.cardId, TransferOut.card.balance))else:print('操作已停止')else:print('余额不足,转账失败')# 锁定操作【6】def Locking(self):Card_Into = input('请输入卡号:')if not self.alluser.get(Card_Into):print('卡号不存在!')return -1user = self.alluser.get(Card_Into)if user.card.card_lock:print('此卡已经被锁定!')return -1if not self.Ve_Pwd(user.card.passwd):print('密码输入错误')return -1user.card.card_lock = Trueprint('锁定成功')# 解锁操作【7】def Unlock(self):Card_Into = input('请输入卡号:')user = self.alluser.get(Card_Into)while 1:if not self.alluser.get(Card_Into):print('卡号不存在')return -1if not self.Ve_Pwd(user.card.passwd):print("密码输入有误")return -1if not user.card.card_lock:print('此卡未被锁定!')breakuser.card.card_lock = Falseprint('此卡解锁成功')break
开户操作:
用户输入1时,执行开户操作,需要用户输入自己的个人信息,
并填入预存款(>0),设置账户密码之后,调用Generate_Card_Id()函数,
随机生成六位不重复卡号给用户,并且将账户信息存入all user{Card_Id:user }
查询操作:
用户输入2时,执行查询,查询操作在存取款、转账时都会用到,所
以,在定义查询函数时,设置一个默认值参数:base,当base=1时,输入查询
账户,从已经存储好的账户信息中找到对应的银行卡号,在查询过程中,需要
对银行卡号进行验证,如果卡号不存在或者卡号被冻结都会给函数返回值-1,
如果银行卡没有问题,则输入密码验证账户,这里通过密码验证函数Ve_Pwd()
进行密码验证,三次输入错误会被锁定账户,如果都没有问题,则输出账户和余
额,并返回user的值,以便后续存取款以及转账操作的使用。
取款操作:
用户输入3时,执行Draw_Money(),当用户取款时,首先应该输入取款账
户,这里则调用查询函数Query_Account(),如果user接收到是User信息
时,就会进行取款,当账户余额不足时输出余额不足,函数返回值-1,否则
提示取款成功。
存款操作:
当用户输入4时,执行函数Deposit_Money(),调用查询函数
Query_Account(),如果user接受值为-1时,则账户有问题,函数返回值-1
否则提示用户输入存款金额,存款成功。
转账操作:
用户输入5时,执行函数Transfer_Money(),此时,调用查询函数,
通过改变默认参数base的值,来实现转出和转入账户的输入,当接受到的
返回值为user时,输入转账金额,当转出用户余额足够时,询问用户是否确认,
输入Y:进行转账,输入n:停止操作
锁定操作:
用户输入6时,执行函数Locking()进行锁定操作,输入卡号,调用
账户信息如果此卡的cardlock = True 的话,则会提示此卡已被锁定,函数返
回值-1,如果没有则调用密码验证函数Ve_Pwd(),密码验证成功,则提示 锁定
成功 。
解锁操作:
用户输入7,调用解锁函数Unlock(),输入卡号,调用账户信息,
如果卡号没找到,则提示卡号不存在,否则输入账号密码,调用密码验证函
数Ve_Pwd(),当输入密码正确时,执行解锁操作,如果card_lock = False,
提示,此卡未被锁定,否则将card_lock = True改为 card_lock = false ,提示
解锁成功。
python实现简单银行管理系统相关推荐
- Python版简易银行管理系统源代码,银行管理系统python代码、银行自助提款系统
Python版简易银行管理系统源代码,银行管理系统python代码,实现开户.账户查询.存取款.转账.改密.锁定.解锁.补卡.销户等银行管理操作.账户信息存在allusers.txt中,通过该文件的读 ...
- python实现简单图书管理系统
用python实现一个简单的图书管理系统 1.工具:PyCharm3.6 社区版 我创建了一个工程叫fairy,把解释器换成Pytnon3.6 创建一个pytnon file:图书管理系统.py 2. ...
- python管理系统web版_基于Python实现简单学生管理系统
学生信息管理系统负责编辑学生信息,供大家参考,具体内容如下 第一次发帖,下面通过python实现一个简单的学生信息管理系统 要求如下: 1.添加学生的信息 2.删除学生的信息 3.修改的信息 4.查询 ...
- python银行管理系统
题目 python 阶段案例-银行管理系统 P118 分析部分 代码部分 import randomclass bankUser:# 卡号,用户姓名,身份证号,手机,预存,密码Count_id = ...
- python实例-银行管理系统(特简单的那种)
python实例学习--银行管理系统 任务分析 管理员类 ATM类 主函数 注意 任务分析 这个实例要求实现一个银行管理系统,系统开始运行时,进入欢迎界面,工作人员输入管理员账户和密码,输入失败直接退 ...
- Python基础项目实践之:面向对象方法实现模拟银行管理系统
Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...
- python工资管理系统课程设计_Python3实现的简单工资管理系统示例
本文实例讲述了Python3实现的简单工资管理系统.分享给大家供大家参考,具体如下: 工资管理系统要求: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 执行代码: #!/u ...
- 简单的银行管理系统(接口)
简单的银行管理系统(接口) 本例要求实现银行卡系统的银联接口,详细要求如下: 银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法.取钱方法以及查询余额方法. 工商银行接口,用于描述工商银行发 ...
- 简单的银行管理系统(功能齐备)
简单的银行管理系统(功能齐备) 我们直接上功能代码.(一个系统中最难的莫过于实现其特有功能) 1--------用户注册或者管理员注册 private static void UserZhuce(Ar ...
- 用java实现简单的银行管理系统
用java实现简单的银行管理系统 页面代码之一: mvc设计模式,分包 分包图片 简单效果演示: 登陆主页面 注册页面 登录: 功能页面! 存款 转账 查看近期流水账单! 页面代码之一: packag ...
最新文章
- java编程数据溢出问题_Java数据溢出代码详解
- 清华大学计算机系主任应明生,清华大学计算机科学与技术系导师简介:应明生...
- 蔡高厅老师 - 高等数学阅读笔记 - 04 - 函数的连续性(18、19、20、21)
- 被字句15个_成人高考要点解读、包含18个实用技巧
- Jquery重新学习之五[操作JSON数据]
- Web Server监视器 v0.75 - Free tool
- android随机抽奖代码_用Excel实现不放回随机抽样
- java三星题之_JAVA三星题之playing a TicTacToe game
- lax文件的编码问题
- PyTorch手写字体识别
- tbschedule
- dismiss和ignore区别_词汇辨析:dismiss, discharg, expell, resign的区别
- JAVA将aaa=aaa1ccc=ccc3的格式请求参数转Map
- 计算机游戏化教学案例,[幼儿园课程游戏化教学实践]幼儿园课程游戏化案例
- 思科模拟器 --- 扩展IP访问控制列表配置
- 这几天来的第一篇日志
- 手欠,给DELL R720加硬盘
- 解决浏览器 Microsoft Edge主页被hao123恶意篡改
- cad2020卸载工具_2020年您应该拥有的12个自由职业者设计工具
- ping: www.baidu.com: Temporary failure in name resolution