import time
class Admin:adminU = '1'  # 管理员的账号adpwd = '1'  # 管理员的密码def printAdminView(self):print("******************************************")print("***                                    ***")print("***                                    ***")print("***         欢迎登录银行系统              ***")print("***                                    ***")print("***                                    ***")print("******************************************")def printsysFunctionView(self):print("***********************************************")print("***                                       ***")print("***    1.开户(1)                2.查询(2)   ***")print("***    3.取款(3)                4.存款(4)   ***")print("***    5.转账(5)                6.锁定(6)   ***")print("***    7.解锁(7)                           ***")print("***                                        ***")print("***    退出(Q)                              ***")print("***                                        ***")print("***********************************************")def adminOption(self):adminInput = input("请输入管理员账户:")if self.adminU != adminInput:print("管理员账户输入错误......")return -1passwordInput = input("请输入密码:")if self.adpwd != passwordInput:print("输入密码有误......")return -1else:print("操作成功,请稍后......")return 0import randomclass ATM:def __init__(self, alluser):self.alluser = alluserdef randomiCardId(self):  # 随机生成开户卡号while True:str_data = ''  # 存储卡号for i in range(6):  # 随机生成6位卡号ch = chr(random.randrange(ord('0'), ord('9') + 1))str_data += chif not self.alluser.get(str):  # 判断卡号是否重复return str_datadef creatUser(self):# 目标向用户字典中添加一个键值对(卡号、用户对象)name = input("请输入姓名:")Uid = input("请输入身份证号:")phone = input("请输入手机号:")prestMoney = float(input("请输入预存金额:"))if prestMoney <= 0:print("预存款输入有误,开户失败")return -1oncePwd = input("请输入密码:")passWord = input("请再次输入密码:")if passWord != oncePwd:print("两次密码输入不同......")return -1print("密码设置成功,请牢记密码:  %s " % passWord)cardId = self.randomiCardId()card = Card(cardId, oncePwd, prestMoney)  # 创建卡user = User(name, Uid, phone, card)  # 创建用户self.alluser[cardId] = user  # 存入用户字典print("您的开户已完成,请牢记开户账号: %s" % cardId)def checkpwg(self, realPwd):for i in range(3):psd2 = input("请输入密码:")if realPwd == psd2:return Trueprint("密码输错三次,系统自动退出......")return Falsedef lockCard(self):inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)if not self.alluser.get(inptcardId):print("此卡号不存在...锁定失败!")return -1if user.card.cardLock:print("该卡已经被锁定,无需再次锁定!")return -1if not self.checkpwg(user.card.cardPwd):  # 验证密码print("密码错误...锁定失败!!")return -1user.card.cardLock = Trueprint("该卡被锁定成功!")def searchUser(self, base=1):if base == 2:inptcardId = input("请输入转出主卡号:")elif base == 3:inptcardId = input("请输入转入卡号:")elif base == 1:inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)# 如果卡号不存在,下面代码就会执行if not self.alluser.get(inptcardId):print("此卡号不存在...查询失败!")return -1if user.card.cardLock:print("该用户已经被锁定...请解卡后使用!")return -1if not self.checkpwg(user.card.cardPwd):  # 验证密码print("密码错误过多...卡已经被锁定,请解卡后使用!")user.card.cardLock = Truereturn -1if not base == 3:  # 查询转入账户   不打印余额print("账户: %s   余额: %.2f  " %(user.card.cardId, user.card.money))return userdef getMoney(self):userTF = self.searchUser()if userTF != -1:if userTF.card.cardId != '':inptMoney = float(input("请输入取款金额:"))if inptMoney > int(userTF.card.money):print("输入的金额大于余额,请先查询余额!")return -1userTF.card.money = \float(userTF.card.money) - inptMoneyprint("取款成功!  账户: %s   余额: %.2f  " %(userTF.card.cardId, userTF.card.money))else:return -1def saveMoney(self):userTF = self.searchUser()if userTF != -1:if not userTF.card.cardLock == True:if userTF.card.cardId != '':inptMoney = float(input("请输入要存入得金额:"))if inptMoney < 0:print("请输入正确金额")else:userTF.card.money += inptMoneyprint("存款成功!  账户: %s   余额: %.2f  " %(userTF.card.cardId, userTF.card.money))else:return -1def transferMoney(self):MasterTF = self.searchUser(base=2)if (MasterTF == -1):return -1userTF = self.searchUser(base=3)if (userTF == -1):return -1in_tr_Money = float(input("请输入转账金额:"))if MasterTF.card.money >= in_tr_Money:str = input("您确认要继续转账操作吗(y/n)?:")if str.upper() == "Y":MasterTF.card.money -= in_tr_MoneyuserTF.card.money += in_tr_Moneyprint("转账成功!  账户: %s   余额: %.2f  " %(MasterTF.card.cardId, MasterTF.card.money))else:print("转账失败,中止了操作")else:print("转账失败,余额不足!  账户: %s   余额: %.2f  " %(MasterTF.card.cardId, MasterTF.card.money))def unlockCard(self):inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)while 1:if not self.alluser.get(inptcardId):print("此卡号不存在...解锁失败!")return -1elif not user.card.cardLock:print("该卡未被锁定,无需解锁!")breakelif not self.checkpwg(user.card.cardPwd):print("密码错误...解锁失败!!")return -1user.card.cardLock = False  # 解锁print("该卡 解锁 成功!")breakimport randomclass ATM:def __init__(self, alluser):self.alluser = alluserdef randomiCardId(self):  # 随机生成开户卡号while True:str_data = ''  # 存储卡号for i in range(6):  # 随机生成6位卡号ch = chr(random.randrange(ord('0'), ord('9') + 1))str_data += chif not self.alluser.get(str):  # 判断卡号是否重复return str_datadef creatUser(self):# 目标向用户字典中添加一个键值对(卡号、用户对象)name = input("请输入姓名:")Uid = input("请输入身份证号:")phone = input("请输入手机号:")prestMoney = float(input("请输入预存金额:"))if prestMoney <= 0:print("预存款输入有误,开户失败")return -1oncePwd = input("请输入密码:")passWord = input("请再次输入密码:")if passWord != oncePwd:print("两次密码输入不同......")return -1print("密码设置成功,请牢记密码:  %s " % passWord)cardId = self.randomiCardId()card = Card(cardId, oncePwd, prestMoney)  # 创建卡user = User(name, Uid, phone, card)  # 创建用户self.alluser[cardId] = user  # 存入用户字典print("您的开户已完成,请牢记开户账号: %s" % cardId)def checkpwg(self, realPwd):for i in range(3):psd2 = input("请输入密码:")if realPwd == psd2:return Trueprint("密码输错三次,系统自动退出......")return Falsedef lockCard(self):inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)if not self.alluser.get(inptcardId):print("此卡号不存在...锁定失败!")return -1if user.card.cardLock:print("该卡已经被锁定,无需再次锁定!")return -1if not self.checkpwg(user.card.cardPwd):  # 验证密码print("密码错误...锁定失败!!")return -1user.card.cardLock = Trueprint("该卡被锁定成功!")def searchUser(self, base=1):if base == 2:inptcardId = input("请输入转出主卡号:")elif base == 3:inptcardId = input("请输入转入卡号:")elif base == 1:inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)# 如果卡号不存在,下面代码就会执行if not self.alluser.get(inptcardId):print("此卡号不存在...查询失败!")return -1if user.card.cardLock:print("该用户已经被锁定...请解卡后使用!")return -1if not self.checkpwg(user.card.cardPwd):  # 验证密码print("密码错误过多...卡已经被锁定,请解卡后使用!")user.card.cardLock = Truereturn -1if not base == 3:  # 查询转入账户   不打印余额print("账户: %s   余额: %.2f  " %(user.card.cardId, user.card.money))return userdef getMoney(self):userTF = self.searchUser()if userTF != -1:if userTF.card.cardId != '':inptMoney = float(input("请输入取款金额:"))if inptMoney > int(userTF.card.money):print("输入的金额大于余额,请先查询余额!")return -1userTF.card.money = \float(userTF.card.money) - inptMoneyprint("取款成功!  账户: %s   余额: %.2f  " %(userTF.card.cardId, userTF.card.money))else:return -1def saveMoney(self):userTF = self.searchUser()if userTF != -1:if not userTF.card.cardLock == True:if userTF.card.cardId != '':inptMoney = float(input("请输入要存入得金额:"))if inptMoney < 0:print("请输入正确金额")else:userTF.card.money += inptMoneyprint("存款成功!  账户: %s   余额: %.2f  " %(userTF.card.cardId, userTF.card.money))else:return -1def transferMoney(self):MasterTF = self.searchUser(base=2)if (MasterTF == -1):return -1userTF = self.searchUser(base=3)if (userTF == -1):return -1in_tr_Money = float(input("请输入转账金额:"))if MasterTF.card.money >= in_tr_Money:str = input("您确认要继续转账操作吗(y/n)?:")if str.upper() == "Y":MasterTF.card.money -= in_tr_MoneyuserTF.card.money += in_tr_Moneyprint("转账成功!  账户: %s   余额: %.2f  " %(MasterTF.card.cardId, MasterTF.card.money))else:print("转账失败,中止了操作")else:print("转账失败,余额不足!  账户: %s   余额: %.2f  " %(MasterTF.card.cardId, MasterTF.card.money))def unlockCard(self):inptcardId = input("请输入您的卡号:")user = self.alluser.get(inptcardId)while 1:if not self.alluser.get(inptcardId):print("此卡号不存在...解锁失败!")return -1elif not user.card.cardLock:print("该卡未被锁定,无需解锁!")breakelif not self.checkpwg(user.card.cardPwd):print("密码错误...解锁失败!!")return -1user.card.cardLock = False  # 解锁print("该卡 解锁 成功!")breakclass Card:def __init__(self,cardId,cardPwd,money):self.cardId = cardIdself.cardPwd = cardPwdself.money = moneyself.cardLock = Falseclass User:def __init__(self, name, id, phone, card):self.name = nameself.id = idself.phone = phoneself.card = cardclass HomePage:def __init__(self):self.allUserD = {}  # 使用字典存储数据self.atm = ATM(self.allUserD)self.admin = Admin()  # 管理员开机界面def saveUser(self):self.allUserD.update(self.atm.alluser)print("数据存盘成功")def main(self):self.admin.printAdminView()resL = self.admin.adminOption()if not resL:while True:self.admin.printsysFunctionView()option = input("请输入您的操作:")if option not in ("1", "2", "3", "4", "5","6", "7", "S", "Q", "q"):print("输入操作项有误,请仔细确认!")time.sleep(1)if option == "1":  # 开户self.atm.creatUser()elif option == "2":  # 查询self.atm.searchUser()elif option == "3":  # 取款self.atm.getMoney()elif option == "4":  # 存储self.atm.saveMoney()elif option == "5":  # 转账self.atm.transferMoney()elif option == "6":  # 锁定self.atm.lockCard()elif option == "7":  # 解锁self.atm.unlockCard()elif option.upper() == "Q":if not (self.admin.adminOption()):self.saveUser()print('退出系统')return -1if __name__ == "__main__":homepage = HomePage()homepage.main()

编写程序,实现一个基于面向思想的、具有开户、查询、取款、存款、转账、锁定、解锁和退出功能的银行管理系统。相关推荐

  1. python生成20个随机数列表偶数下标排列_编写程序,生成一个包含 20 个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)_学小易找答案...

    [简答题]编写程序,输出所有由 1 . 2 . 3 . 4 这 4 个数字组成的素数,并且在每个素数中每个数字只使用 1 次. [填空题]表达式 [x for x in [1,2,3,4,5] if ...

  2. 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...

  3. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  4. Java黑皮书课后题第7章:***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行、同列、同一对角线)。编写程序显示一个解决方案

    7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行.同列.同一对角线).编写程序显示一个解决方案 题目 题目描述 破题 题目 题目描述 ...

  5. 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出。...

    编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 题目描述 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 输入描述 编写程序输入一个5x5的矩阵 ...

  6. java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...

    编写程序显示一个时钟.示例输出如图所示. 代码: package com.DisplayClock; import javax.swing.*; import java.awt.*; import j ...

  7. 编写程序定义一个有 10 个 int 型元素的数组,并以其在数组中的位置作为各元素的初值。

    *编写程序定义一个有 10 个 int 型元素的数组,并以其 在数组中的位置作为各元素的初值.*/ int main(void) {     int array[10];     for (int i ...

  8. python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...

    点击查看C语言编写程序 :输入一个正整数,将其逆序输出.例如,输入12345,输出54321. 跪求大神用循环语句具体信息 答:#include int main() { int num; scanf ...

  9. 【Java】编写程序完成一个简易的可以弹奏的钢琴

    编写程序完成一个简易的可以弹奏的钢琴 代码 易错 代码 import java.applet.*; import java.awt.*; import java.net.*; import javax ...

最新文章

  1. c++ 继承访问控制初步
  2. 17.容器的成员函数优先于同名的算法
  3. linux lvm 简介之二 扩充空间
  4. Spring Cloud微服务之模块依赖修改(六)
  5. 线性表——顺序表的应用
  6. RESTFUL协议入门介绍
  7. JQueryDOM之样式操作
  8. javascript之生成一个指定范围内的随机数
  9. Magnet :让Mac上的分屏更好用
  10. Python 学习笔记 (1)输出语句
  11. coreos mysql_CoreOS 实战:在 UOS上体验CoreOS 操作全记录
  12. ReactNative 常用命令
  13. 3511. 倒水问题
  14. Python 标准库之 shutil 高阶文件操作『详细』
  15. Yolov5 最简推理代码
  16. 使用Highcharts来画一个简易的甘特图
  17. anz的swift code_澳洲Commonwealth bank是不是只有一个SWIFT CODE?
  18. Simple Mover
  19. js简单判断页面是否为手机端访问
  20. 基于hbase jira读源代码

热门文章

  1. 分数的四则运算及化简(C语言实现)
  2. Ubuntu18.04使用RPLIDAR A2M12雷达出错的解决办法
  3. 脑波震动(二):全身脑波震动
  4. 小葫芦直播管家找不到服务器,小葫芦直播管家-开播版,直播插件手动安装教程...
  5. 中国飞行娱乐(IFE)市场现状研究分析与发展前景预测报告(2022)
  6. blogbus博客搬家之图片迁移
  7. Android 编程之第三方开发 MaoZhuaWeiBo微博开发示例-1
  8. 数字电路的竞争与冒险
  9. 计算机无效d盘的错误怎么解决,电脑d盘打不开怎么办
  10. pandas 从文本中提取数字(正则表达式)