python-ATM机

编写程序,实现一个具有开户、查询、取款、存款、转账、锁定、解锁、退出功能的银行管理系统。

结果展示
result

1.Main主方法


from zzjmxy.class7.atm import ATM
from zzjmxy.class7.manager import Manager
# 主面板,实现主要逻辑if __name__=="__main__":manager=Manager("admin","123456")if manager.login()==1:print("登录成功")atm=ATM()atm.hello()atm.option()print("欢迎下次使用")else:print("密码错误,程序退出,警察开始抓人")manager.logout()

2.Manager管理员类


class Manager:def __init__(self,name,passwd):self.name=nameself.passwd=passwddef login(self):print("===登录===")name=input("请输入用户名")passwd=input("请输入密码")if self.name==name and self.passwd==passwd:return 1else:return 0def logout(self):print("退出")

3.用户类

import random
import string
from zzjmxy.class7.card import Card
class User:UIDs=[]name,id,phone,passwd,__isLocked,card="","","","",False,""def rollup(self):print("开户中......")self.name = input("请输入姓名:")self.id = input("请输入身份证号:")self.phone = input("请输入手机号:")money = int(input("请输入预存金额:"))while money<=0:money=int(input("金额过小,请输入密码:"))passwd1 = input("请输入密码:")passwd2 = input("请再次输入密码:")while passwd2!=passwd1:print("两次密码不一致,请重新输入:")passwd1 = input("请输入密码:")passwd2 = input("请再次输入密码:")self.passwd = passwd2print("请牢记你的密码:" + self.passwd)UID = ''.join(random.choices(string.digits, k=8))while UID in self.UIDs:UID = ''.join(random.choices(string.digits, k=8))self.UID = UIDprint("开户成功,你的UID为:" + UID)self.UIDs.append(UID)self.card=Card(money)return UIDdef lock(self):self.__isLocked=Truedef unlock(self):self.__isLocked=Falsedef islock(self):return self.__isLockeddef getUID(self):return ''.join(random.choices(string.digits, k=8))

4.Card银行卡类

class Card:credit=""def __init__(self,money):self.money=moneydef deposit(self,money):self.money+=moneyreturn self.money#判断交给前端,后端不进行判断def withdraw(self,money):self.money-=moneyreturn self.money

5.ATM类

from zzjmxy.class7.user import Userclass ATM:yewu={1:"开户",2:"查询",3:"取款",4:"存款",5:"转账",6:"锁定",7:"解锁",8:"退出"}users={}flag=Truedef hello(self):print("="*30)print("="+" "*8+"欢迎来到atm机"+" "*9+"=")for i,v in self.yewu.items():print("="+" "*8+v+":"+str(i)+" "*15+"=")print("="*30)def option(self):while self.flag:option=int(input("请选择你要进行的业务(输入业务所代表的数字):") or "0")if(option==1):self.kaihu()elif option==2:UID = input("请输入账户ID:")self.chaxun(UID)elif option==3:UID = input("请输入账户ID")if self.isLocked(UID) == False:print("账户为锁定状态")else:money=int(input("请输入取款金额"))self.qukuan(UID,money)elif option==4:UID = input("请输入账户ID:")if self.isLocked(UID):print("账户为锁定状态")else:money = int(input("请输入存款金额:"))self.cunkuan(UID, money)elif option==5:# UIDin,UIDout,moneyUIDin=input("请输入转入ID:")UIDout = input("请输入转出ID:")money = int(input("请输入转账金额:"))self.zhuanzhang(UIDin,UIDout,money)elif option==6:UID = input("请输入锁定ID:")self.suoding(UID)elif option==7:UID=input("请输入解锁ID:")self.jiesuo(UID)elif option==8:self.tuichu()else:print("输入有误,默认退出")self.tuichu()def kaihu(self):print("开户")user=User()UID=user.rollup()self.users[UID]=userdef chaxun(self,UID):print(f"查询结果余额为:{self.users[UID].card.money}")def qukuan(self,UID,outM):passwd=input("请输入账号密码:")Upasswd = self.users[UID].passwdif Upasswd==passwd:money=self.users[UID].card.moneyif(money>=outM):newMoney=self.users[UID].card.withdraw(outM)print(f"取款成功,当前金额为:{newMoney}")return 1else:print(f"取款失败,存款不足哦,当前{UID}金额为:{money}")return 0print("密码错误")return 0def cunkuan(self,UID,outM):newMoney=self.users[UID].card.deposit(outM)print(f"存款成功,当前存款为:{newMoney}")self.chaxun(UID)return 1def zhuanzhang(self,UIDin,UIDout,money):print("转账")# self.users[UIDin].card.deposit(money)# self.users[UIDout].card.withdraw(money)if self.isLocked(UIDin) and self.isLocked(UIDout):print("转账失败,有账户为锁定状态")if self.qukuan(UIDout,money):self.cunkuan(UIDin,money)print("转账成功")def suoding(self,UID):if self.isLocked(UID):print("已经锁定了")return 0self.users[UID].lockprint("锁定成功")return 1def jiesuo(self,UID):if self.isLocked(UID):self.users[UID].unlock()print("锁定成功")return 1print("已经是解锁状态了")return 0def tuichu(self):self.flag=Falsedef isLocked(self,UID):self.users[UID].islock()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubectl获取命名空间下所有configmap集合的方法

前言&#xff1a; 获取单个configmap并忽略特定字段的操作可参照&#xff1a;kubectl获取ConfigMap导出YAML时如何忽略某些字段。 要获取命名空间下所有ConfigMap并忽略特定字段&#xff0c;你可以使用kubectl命令与例如yq这样的工具结合使用来忽略或删除不需要的字段。以下是…

「实用场景教程」如何用日程控件DHTMLX Scheduler制作酒店预订日历?(三)

dhtmlxScheduler是一个类似于Google日历的JavaScript日程安排控件&#xff0c;日历事件通过Ajax动态加载&#xff0c;支持通过拖放功能调整事件日期和时间&#xff0c;事件可以按天&#xff0c;周&#xff0c;月三个种视图显示。 DHTMLX Scheduler正式版下载 在本教程中&…

t-SNE方法:

使用t-SNE时&#xff0c;除了指定你想要降维的维度&#xff08;参数n_components&#xff09;&#xff0c;另一个重要的参数是困惑度&#xff08;Perplexity&#xff0c;参数perplexity&#xff09; 困惑度&#xff1a; 困惑度大致表示如何在局部或者全局位面上平衡关注点&am…

BearPi Std 板从入门到放弃 - 后天篇(2)(I2C1读写EEPROM)

简介 基于 BearPi Std 板从入门到放弃 - 后天篇&#xff08;1&#xff09;(I2C1 读取 光照强度)&#xff0c; 使用同一个I2C接口访问EEPROM, 同时读取光照亮度 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: Usart1 I2C : I2C1 光照强度传感器&#xf…

金蝶云星空和管易云接口打通对接实战

金蝶云星空和管易云接口打通对接实战 对接系统金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不…

在python的Scikit-learn库中,可以使用train_test_split函数来划分训练集和测试集。

文章目录 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集总结 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集 在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试…

【yolov8】与yolov5的区别及改进详解

图像识别技术在物联网、智能监控等领域广泛应用。而深度学习中的目标检测技术&#xff0c;能够帮助我们对图像中的目标进行识别&#xff0c;进而实现自动化控制。目前&#xff0c;Yolov8和Yolov5是目标检测领域热门的模型。 yolo目标检测原理yolov5详解yolov8yolov8结构图Conv模…

智能优化算法应用:基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学校优化算法4.实验参数设定5.算法结果6.参考…

Linux中shell的运行原理

在Linux中&#xff0c;每次输入命令时&#xff0c;前面都会出现一串字母&#xff0c;我们称之为命令行提示符 实际上&#xff0c;命令行提示符是一种外壳程序 外壳程序的概念&#xff1a; 前面我们提到过&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;所谓的命令就…

UE Windows平台下Linux的交叉编译项目打包

UE Windows平台下Linux的交叉编译项目打包 交叉编译&#xff08;Cross-compilation&#xff09; 使得在以Windows为中心的工作流程中工作的游戏开发者能够以Linux为目标对项目进行打包。目前&#xff0c;只有Windows支持交叉编译。 交叉编译支持的平台 Windows | Linux-x86_…

每日3道PWN(第二天)

ciscn_2019_n_1 参考&#xff1a; [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数&#xff0c;双击可疑函数 发现含有命令执行的且发现fl…

SOCKET、TCP、HTTP之间的区别与联系

SOCKET、TCP、HTTP之间的区别与联系 一、 Socket 1、什么是socket2、为什么需要socket3、建立socket连接 二、HTTP(基于TCP) 1、HTTP的概念2、HTTP连接的特点 连接请求&#xff1a;一次连接连接请求&#xff1a;短连接(socket是长连接) 三、TCP/IP协议簇 四、HTTP、Socket…

30个Python小游戏,小白练手,我都能玩一天【内附源码】

给大家带来30个 Python 小游戏&#xff0c;一定要收藏&#xff01; 文末获取完整代码 有手就行 1、吃金币 import os import cfg import sys import pygame import random from modules import *游戏初始化 def initGame():# 初始化pygame, 设置展示窗口pygame.init()screen…

C/C++---------------LeetCode第118. 杨辉三角

杨辉三角 题目及要求动态规划在mian内使用 题目及要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]] 提示: 1 < numRow…

ActiveMQ 反序列化漏洞(CVE-2015-5254)

ActiveMQ 反序列化漏洞 Apache ActiveMQ是一种开源的消息代理&#xff08;message broker&#xff09;&#xff0c;被广泛用于应用程序之间的消息传递。它提供可靠的消息传递模式&#xff0c;如发布/订阅、点对点和请求/响应&#xff0c;非常适合构建分布式系统和应用程序集成…

1_控制系统总体结构

1、总体结构 控制系统结构图&#xff1a; 黑色块为参数、黄色块为计算模块 1.1 其中参数含义 车辆属性参数&#xff1a; 参数含义 C α f C_{\alpha f} Cαf​自行车模型总轮胎侧偏刚度&#xff08;前轮&#xff09; C α r C_{\alpha r} Cαr​自行车模型总轮胎侧偏刚度&a…

客户案例:SMC2威胁感知升级,保障金融行业邮件安全

客户背景 某基金公司是一家在业界享有广泛声誉的综合型资产管理公司&#xff0c;总部位于广州&#xff0c;在北京、上海、香港等地区均设有公司&#xff0c;业务范围遍布全球&#xff0c;凭借其卓越的投资业绩和专业的基金管理服务&#xff0c;赢得了广大投资者的高度认可。 该…

数据结构第二次作业——递归、树、图【考点罗列//错题正解//题目解析】

目录 一、选择题 ——递归—— 1.【单选题】 ——递归的相关知识点 2.【单选题】——递归的应用 3.【单选题】——递归的实现结构 4.【单选题】——递归的执行与实现 5.【单选题】 ——递归算法 ——树—— 6.【单选题】 ——树的结构 *7.【单选题】——树的知识点 …

【Maven】依赖管理

1. 依赖管理 1.1 依赖配置 依赖&#xff1a;指当前项目运行所需要的jar包。一个项目中可以引入多个依赖。 依赖引入步骤&#xff1a;在pom.xml中编写标签&#xff0c;在标签中使用引入坐标&#xff0c;定义坐标的 groupId、artifactId、version&#xff0c;最后点击刷新&…

17. 电话号码的字母组合 经典回溯组合题目

17. 电话号码的字母组合 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;错误经验吸取 原题链接&#xff1a; 17. 电话号码的字母组合 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/ 完成情况&…