Python模拟银行管理系统(面向对象)# 谭子

您所在的位置:网站首页 转账显示该账号已锁卡 Python模拟银行管理系统(面向对象)# 谭子

Python模拟银行管理系统(面向对象)# 谭子

2024-03-23 01:37| 来源: 网络整理| 查看: 265

一、系统需求说明

本项目计划实现一个银行管理系统,包括开户、查询、取款、存款、转账、锁定、解锁和退出功能。

银行管理系统一览表

序号

模块

子模块

说明

1

菜单模块

显示菜单

验证管理员身份,显示功能菜单

2

开户模块

注册,生成银行卡

注册信息填写,随机生成6位数银行卡号码

3

查询模块

查询卡中余额

根据输入的银行卡号码和密码查询该卡余额

4

取款模块

取出卡内金额

验证后删除卡内对于的金额,模拟取款

5

存款模块

存入金额

验证后存入卡内对于的金额,模拟存款

6

验证模块

输错锁住卡号

创建三次密码错误的机会,输错三次直接锁定

7

转账模块

对两个账号进行金额调动

验证两个卡号是否存在,进行简单加减运算

8

锁定模块

人为锁定银行卡

验证卡号和密码后锁定该账户

9

解锁模块

解除银行卡锁定

验证卡号和密码之后解除锁定

10

退出模块

退出系统

输入Q,验证管理员身份后退出系统

二、系统设计

实现技术:Python程序设计语言实现目标:实现一个基于面向对象的银行管理系统系统模块设计

系统模块规划如下图所示:

 三、代码展示

1.  admin.py

        构建一个管理员对象,同时加入功能菜单的显示内容。

class Admin: adminU = '1' # 管理员账号 adpwd = '1' # 管理员密码 def printAdminView(self): print("*" * 42) print("*** ***") print("*** ***") print("*** 欢迎登录银行系统 ***") print("*** ***") print("*** ***") print("*" * 42) def printsysFunctionView(self): print("*" * 42) print("*** ***") print("*** 1.开户(1) 2.查询(2) ***") print("*** 3.取款(3) 4.存款(4) ***") print("*** 5.转账(5) 6.锁定(6) ***") print("*** 7.解锁(7) 退出(Q) ***") print("*** ***") print("*" * 42) def adminOption(self): addminInput = input("请输入管理员账户:") if self.adminU != addminInput: print("管理员账户输入错误......") return -1 passwordInput = input("请输入密码:") if self.adpwd != passwordInput: print("输入密码有误......") return -1 else: print("操作成功,请稍后......") return 0

2.  card.py

        构建银行卡对象。

class Card: def __init__(self, cardId, cardPwd, money): self.cardId = cardId self.cardPwd = cardPwd self.money = money self.cardLock = False

3.  user.py

        构建用户对象。

class User: def __init__(self, name, id, phone, card): self.name = name self.id = id self.phone = phone self.card = card

4.  atm.py

        实现开户、查询、取款、存款、转账、锁定、解锁和退出功能。

from user import User from card import Card import random class ATM: def __init__(self, alluser): self.alluser = alluser def randonmiCardId(self): # 随机生成开户卡号 while True: str_data = '' # 存储卡号 for i in range(6): # 随机生成6位卡号 ch = chr(random.randrange(ord('0'), ord('9') + 1)) str_data += ch if not self.alluser.get(str): # 判断卡号是否重复 return str_data def creatUser(self): # 目标想用户字典中添加一个键值对(卡号、用户对象) name = input("请输入姓名:") Uid = input("请输入身份证号:") phone = input("请输入手机号:") prestMoney = float(input("请输入预存金额:")) if prestMoney int(userTF.card.money): print("输入的金额大于余额,请先查询余额!") return -1 userTF.card.money = float(userTF.card.money) - inptMoney print("取款成功! 账户:%s 余额:%.2f" %(userTF.card.cardId, userTF.card.money)) else: return -1 def 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 += inptMoney print("存款成功! 账户:%s 金额:%.2f " %(userTF.card.cardId, userTF.card.money)) else: return -1 def transferMoney(self): MasterTF = self.searchUser(base=2) if (MasterTF == -1): return -1 userTF = self.searchUser(base=3) if (userTF == -1): return -1 in_tr_Money = float(input("请输入转账金额:")) if MasterTF.card.money >= in_tr_Money: str = input("您确定要继续转账操作吗(是/否)?") if str.upper() == '是': F1 = float(MasterTF.card.money) F2 = float(userTF.card.money) F1 -= in_tr_Money F2 += in_tr_Money print("转账成功! 账户:%s 金额:%.2f " % (MasterTF.card.cardId, F1)) 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 -1 elif not user.card.cardLock: print("该卡未被锁定,无需解锁!") break elif not self.checkpwg(user.card.cardPwd): print("密码错误...解锁失败!!") return -1 user.card.cardLock = False # 解锁 print("该卡 解锁 成功!") break

4.  bink.py

        作为主方法调用其他类和方法。

from admin import Admin from atm import ATM import time class 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 -1 if __name__ == '__main__': homepage = HomePage() homepage.main()

        

        作业记录+1,溜了溜了。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3