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

article/2025/10/10 0:32:30

一、系统需求说明

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

银行管理系统一览表

序号

模块

子模块

说明

1

菜单模块

显示菜单

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

2

开户模块

注册,生成银行卡

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

3

查询模块

查询卡中余额

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

4

取款模块

取出卡内金额

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

5

存款模块

存入金额

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

6

验证模块

输错锁住卡号

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

7

转账模块

对两个账号进行金额调动

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

8

锁定模块

人为锁定银行卡

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

9

解锁模块

解除银行卡锁定

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

10

退出模块

退出系统

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

二、系统设计

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

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

 三、代码展示

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 -1passwordInput = input("请输入密码:")if self.adpwd != passwordInput:print("输入密码有误......")return -1else:print("操作成功,请稍后......")return 0

2.  card.py

        构建银行卡对象。

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

3.  user.py

        构建用户对象。

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

4.  atm.py

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

from user import User
from card import Card
import random
class ATM:def __init__(self, alluser):self.alluser = alluserdef randonmiCardId(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.randonmiCardId()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("您确定要继续转账操作吗(是/否)?")if str.upper() == '是':F1 = float(MasterTF.card.money)F2 = float(userTF.card.money)F1 -= in_tr_MoneyF2 += in_tr_Moneyprint("转账成功! 账户:%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 -1elif not user.card.cardLock:print("该卡未被锁定,无需解锁!")breakelif not self.checkpwg(user.card.cardPwd):print("密码错误...解锁失败!!")return -1user.card.cardLock = False  # 解锁print("该卡 解锁 成功!")break

4.  bink.py

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

from admin import Admin
from atm import ATM
import timeclass 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,溜了溜了。

 


http://chatgpt.dhexx.cn/article/bAbCMCNO.shtml

相关文章

核心银行系统 之一 历史与发展

核心银行系统是银行信息系统中实现客户关系管理、产品与服务、业务流程、财务核算与管理、风险管控、辅助管理与决策等银行业务最核心功能的系统&#xff0c;是银行信息系统的基础和核心。 核心银行系统的英文名字 CORE Banking System&#xff0c;其中CORE是Centralized Onli…

银行信贷系统java_java毕业设计_springboot框架的银行信贷系统

这是一个基于java的毕业设计项目,毕设课题为springboot框架的银行信贷系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jspspringbootmybatis, 银行信贷系统采用mysql进行数据存储, 并基于mybatis进行了orm实体关系映射, 该银行信贷系统系统通过模块…

支付系统开发

支付系统开发 一、工程结构 pay-common-parent 项目的Maven父配置工程 pay-common 公共工程&#xff0c;所有项目均可引用 pay-common-config 公共配置工程 pay-common-core 公共核心工程&#xff0c;service工程共用 pay-common-web 公共…

手把手搭建Java网上银行系统【附源码】(毕设)

一、项目简介 本课程演示的是一套基于Java的SSH框架实现的网上银行系统 或 银行管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。 详细介绍了网上银行系统的实现&#xff0c;包括&#xff1a; 1.项目介绍 2.环境搭建 3.系统功能…

银行综合前置系统IFS

&#xff08;布尔公司简介&#xff09; 法国布尔集团是一家国际性综合IT集团&#xff0c;业务及分支机构遍及全球100多个国家。布尔公司重点面向四大行业&#xff0c;即金融、电信、公共事业和制造业&#xff0c;为其提供量身定作的解决方案。 &#xff08;产品概述&#xff0…

C语言版的银行管理系统

C语言版的银行管理系统。可以模拟ATM及柜台操作&#xff0c;实现用户登录、查询、取款、存款、开户、销户等一系列操作&#xff0c;代码清晰简洁&#xff0c;注释详细明了。 下面废话不多说&#xff0c;上代码啦。 void main() {//cc22052402char userName[8];char userPWD[7]…

银行核心系统是什么?

银行核心系统是什么? 2011-01-03 csdn 银行核心系统是什么 银行核心系统的英文原意CORE Banking, CORE其实不是“核心”的意思这么简单&#xff0c;它的全称是: Centralized Online Real-time Exchange &#xff08;集中式在线实时交互&#xff09;。注意两个重要的关键词“集…

python实现银行ATM系统

通过简单的python程序来实现ATM系统&#xff0c;其功能包括&#xff0c;存取款&#xff0c;余额查明以及退出功能&#xff0c;这些功能通过函数来封装&#xff0c;最后在写出窗口功能和循环 #银行ATM系统 salary int(input("请输入你当月的工资&#xff1a;")) #这…

Python银行取款系统

目 录 一、系统说明 二、用户信息 三、取款系统 一、系统说明 请你编写一个银行取款系统程序&#xff0c;要求具备以下几点功能。 1.开户业务 一个证件号码只可以绑定一个账号&#xff0c;系统首先验证用户证件号码&#xff0c; 如证件已在系统存在则不提供开户业务…

银行系统

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a; https://blog.csdn.net/wu2374633583/article/details/80731961 1 轧差 轧差指的是当日A和B银行有资金来往&#xff0c;早…

java银行管理系统源码

目录 一、项目包含知识点 二、项目需求 三、系统模块设计 3. 1、模块介绍 32、银行管理系统技术分析如图 3.3银行管理系统界面展示 四、银行管理系统源码 4.1Account类 4.2ATMSystem类 一、项目包含知识点 面向对象编程 : 要求使用面向兑现思想进行编程&#xff0c;…

银行排队系统

免责声明 以下内容可能引起不适&#xff0c;请18岁以下儿童在大人配同下观看 主要内容&#xff1a; 设计并实现银行取号模拟系统&#xff0c;模拟取号的整个过程,实现取号、排队、服务、及管理等功能。系统能够记录用户及工作人员信息的统计和分析&#xff0c;可以进一步优化…

【模拟 简易银行系统~python】

目录~python 面向对象编程之模拟银行系统相关程序代码如下&#xff1a;运行效果如下&#xff1a; pandas 每日一练&#xff1a;运行结果为&#xff1a; 66、绘制sku_cost_prc的密度曲线运行效果为&#xff1a; 67、计算后一天与前一天sku_cost_prc的差值运行结果为&#xff1a;…

银行开发专业术语解释和银行系统开发架构的设计思想

1 轧差 轧差指的是当日A和B银行有资金来往&#xff0c;早上B要给A银行打10万&#xff0c;下午A要给B打20万&#xff0c;经过轧差&#xff0c;日终清算的时候&#xff0c;A只需要给B打10万就行了&#xff0c;不然就浪费时间了。 2 结算 清算 清分 根据《中国银联银行卡联网联…

C语言:银行储蓄系统开发(中级)

任务代码1&#xff1a; //使用函数的版本 #include <stdio.h> #include <stdlib.h> int pass(); //验证密码 void work(); //业务驱动 double getBalance(); //获得余额 void showMenu(); //显示菜单 void updatePassword(); //更改密码 do…

比黄图更得劲儿?网络萌宠图片,拯救你大脑的不二法器

全文共2512字&#xff0c;预计学习时长8分钟 图片来自: Julian Glander 据研究人员称&#xff0c;萌宠的图片绝对比低俗图片甚至阅读对大脑更有益处。 在社交媒体上&#xff0c;灾难性的新闻层出不穷。在我写这篇文章的时候&#xff0c;一本绝佳的著作正在遭受读者的抨击&#…

移动端图片鉴黄(可离线识别 200ms)

open_nsfw_android &#xff08;可离线识别&#xff09; 原文链接 &#xff08;喜欢请记得Star&#xff09; 色情图片离线识别&#xff0c;基于TensorFlow实现。识别只需200ms,可断网测试&#xff0c;成功率99%&#xff0c;调用只要一行代码&#xff0c;从雅虎的开源项目open…

php图片内容识别,Chevereto 调用百度图像内容审核 – 实现Chevereto图片鉴黄

前面大鸟说了如何安装Chevereto商业版本&#xff0c;因为这是图床&#xff0c;所以我们需要设置下鉴黄。因为Chevereto默认没有这个功能&#xff0c;所以需要自己设置了。 具体的方法就是利用百度AI审核功能来实现图片内容识别鉴黄。教程基于Chevereto安装之后&#xff0c;至于…

一天看10000张黄图,鉴黄师的苦!!!

Python实战社群 Java实战社群 长按识别下方二维码&#xff0c;按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨小郭 来源丨程序员虎哥&#xff08;ID&#xff1a;itjiagou&#xff09; hello&#xff0c;大家好&#xff0c;这里是程序员虎哥…

python NSFW Model 图片识别鉴黄 后面更新视频检测

基于 NSFW Model 图片识别鉴黄 后面更新视频检测 识别效果 推荐SFW 0.98 色情 NSFW 0.015 推荐SFW 0.00 色情 NSFW 0.99 为色情图片 中文github代码下载 - 原文地址 环境条件 所有代码都应该与Python 3.6and兼容Tensorflow 1.x&#xff08;用 1.12 测试&#xff09;。模型…