模拟银行自动提款系统python

列出对象及属性名称行为...py

'''
人
类名:Person
属性:姓名 身份证号 电话 卡
行为:卡
类名:Card
属性:卡号 密码 余额
行为:银行
类名:Bank
属性:用户列表  提款机提款机
类名:ATM
属性:用户字典
行为:开户 查询 取款 存储 转账 改密 锁定 解锁 补卡 销户界面
类名:View
属性:
行为: 管理员界面 系统功能界面  管理员登陆'''
import time
import pickle
import os
from view import  View
from atm import ATMdef main():# 用户管理员开机功能view = View()# 管理员开机view.printAdminView()if view.adminOption():return -1#存储用户所有的信息# allUser = {}#提款机对象filepath = os.path.join(os.getcwd(), "allUsers.txt")f = open(filepath,"rb")allUsers = pickle.load(f)# allUsers = {}atm = ATM(allUsers)print(allUsers)while 1:view.sysFunctionView()#等待用户的操作option = input("请输入您的操作:")if option =="1":atm.creatUser()# print("开户")elif option == "2":atm.serchUserInfo()elif option == "3":atm.getMoney()print("取款")elif option == "4":print("存款")elif option =="5":print("转账")elif option == "6":print("改密")elif option == "7":atm.lockUser()elif option == "8":atm.unlockUser()elif option == "9":print("补卡")elif option == "0":print("销户")elif option == "T":print("退出")if not view.adminOption():#将信息保留到文件中# filepath = os.path.join(os.getcwd(),"allUsers.txt")f= open(filepath,"wb")pickle.dump(atm.allUsers,f)f.close()return -1time.sleep(2)if __name__ =="__main__":main()

atm.py

from card import Card
from user import User
import randomclass ATM (object):def __init__(self,allUsers):self.allUsers = allUsersdef creatUser(self):#目标:想用户字典中添加一对键值对(卡号-用户)name = input("请输入您的姓名:")idCard = input("请输入您的身份证号码:")phone = input("请输入您的电话号码:")prestoreMoney = int(input("请输入预存款金额:"))if prestoreMoney<0:print("输入金额有误!!开户失败")return -1onePasswd = int(input("请设置密码"))#验证密码if not self.checkPasswd(onePasswd):print("密码输入错误输入失败")return -1#所有需要的信息就全了cardStr = self.randomCardId()card = Card(cardStr,onePasswd,prestoreMoney)user= User(name,idCard,phone,card)#存到字典self.allUsers[cardStr] = userprint("开户成功!!请牢记卡号%s!!"%cardStr)#验证密码def checkPasswd(self,realPasswd):for i in range(3):tempPasswd = int(input("请输入密码:"))if tempPasswd == realPasswd:return Truereturn False#生成卡号def randomCardId(self):while True:str = ""for i in range(6):ch = chr(random.randrange(ord('0'), ord('9') + 1))str += ch# 判断是否重复if not self.allUsers.get(str):return strdef serchUserInfo(self):cardNum = input("请输入您要查询的卡号:")user= self.allUsers.get(cardNum)if not user:print("该卡号不存在,查询失败。")return -1#验证密码if not self.checkPasswd(user.card.cardPasswd):print("密码输入错误!!查询失败")return -1print("账号:%s,余额:%d"%(user.card.cardId,user.card.cardMoney))def getMoney(self):cardNum = input("请输入您要查询的卡号:")user = self.allUsers.get(cardNum)if not user:print("该卡号不存在,取款失败。")return -1# 判断是否锁定if user.card.cardLock:print("该卡已被锁定,请解锁后进行其他操作")return -1# 验证密码if not self.checkPasswd(user.card.cardPasswd):print("密码输入错误!!已被锁定解锁后进行其他操作")user.card.cardLock = Truereturn -1#取款money =int(input("请输入取款金额"))if money> user.card.cardMoney:print("余额不足")return  -1if money<0:print("输入错误")return  -1user.card.cardMoney-=moneyprint("取款成功余额为:%d"%user.card.cardMoney)def saveMoney(self):passdef transforMoney(self):passdef changePasswd(self):passdef lockUser(self):cardNum = input("请输入您要查询的卡号:")user = self.allUsers.get(cardNum)if not user:print("该卡号不存在,锁定失败。")return -1# if user.card.cardLock:#     print("该卡号已被锁定!请解锁后再使用其他功能")#     return -1#判断是否锁定if user.card.cardLock:print("该卡已被锁定,请解锁后进行其他操作")return -1# 验证密码if not self.checkPasswd(user.card.cardPasswd):print("密码输入错误!!锁定失败")user.card.cardLock = Truereturn -1print("账号:%s,余额:%d" % (user.card.cardId, user.card.cardMoney))tempIdCard = input("请输入您的身份证号:")if tempIdCard!=user.idCard:print("身份证输入错误!!锁定失败")return -1#锁他user.card.cardLock= Trueprint("锁定成功")def unlockUser(self):cardNum = input("请输入您要解锁的卡号:")user = self.allUsers.get(cardNum)if not user:print("该卡号不存在,解锁失败。")return -1if not user.card.cardLock:print("该卡没有锁定!无需解锁。")return -1# 验证密码if not self.checkPasswd(user.card.cardPasswd):print("密码输入错误!!锁定失败")return -1#解锁、user.card.cardLock = Falseprint("解锁成功!")def newCard(self):passdef killUser(self):pass

card.py

class Card(object):def __init__(self,cardId,cardPasswd,cardMoney):self.cardId = cardIdself.cardPasswd = cardPasswdself.cardMoney= cardMoneyself.cardLock = False

user.py

class User(object):def __init__(self,name,idCard,phone,card):self.name = nameself.idCard = idCardself.phone = phoneself.card = card

view.py

import time
class View(object):admin= "1"passwd = "1"# def __init__(self,admin):#     self.__admin = admindef printAdminView(self):print("************************************************")print("*                                              *")print("*                                              *")print("*               欢迎登陆旺哥银行               *")print("*                                              *")print("*                                              *")print("************************************************")# inputAdmin = input("请输入管理员账号:")# if self.admin !=inputAdmin:#     print("输入有误")#     return  -1# inputPasswd = input("请输入管理员密码:")# if self.passwd !=inputPasswd:#     print("输入有误")#     return  -1def adminOption(self):inputAdmin = input("请输入管理员账号:")if self.admin != inputAdmin:print("输入有误")return -1inputPasswd = input("请输入管理员密码:")if self.passwd != inputPasswd:print("输入有误")return -1#能执行到这里说明账号密码正确print("操作成功!请稍后。。。")time.sleep(2)return 0def sysFunctionView(self):print("************************************************")print("*          开户(1)               查询(2)       *")print("*          取款(3)               存款(4)       *")print("*          转账(5)               改密(6)       *")print("*          锁定(7)               解锁(8)       *")print("*          补卡(9)               销户(0)       *")print("*                   退出T                      *")print("************************************************")

 

 

 

 

 

 

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

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

相关文章

帮助文件html打不开,chm帮助文件打不开全是代码?这几种解决方法了解一下

win10系统chm帮助文件打不开怎么办?近期使用win10 版本 1809 (OS 内部版本 17763.864)系统的用户反应电脑打不开这个chm帮助文件的情况&#xff0c;打开后显示不正常&#xff0c;针对这样的问题如何解决呢?针对chm文件打开异常的现象大家可以参考本文中飞飞系统介绍的方法来修…

关于四种语言中substring()方法参数值的解析

1.关于substring(a,b)Jsvar str"bdqn";var resultstr.substring(1,2);alert(result);第一个参数&#xff1a;开始的位置&#xff0c;从0开始数第二个参数&#xff0c;结束的索引&#xff0c;从1开始数&#xff0c;而不是获取几个长度SQLselect substring(bdqn,2,1)第…

python中tkinter的使用-上

00基础代码 import tkinterwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")win.mainloop() 01简单示例 #创建主窗口 win tkinter.Tk() #设置标题 win.title("Liuwang") #设置大小和位置 win.geometry("400x40020…

滚动条样式修改

/*滚动条*/ ::-webkit-scrollbar { width: 4px; height: 4px; background-color: #F5F5F5; } /*定义滚动条轨道 内阴影圆角*/ ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.…

sklearn中常用的数据预处理方法

常见的数据预处理方法&#xff0c;以下通过sklearn的preprocessing模块来介绍; 1. 标准化&#xff08;Standardization or Mean Removal and Variance Scaling) 变换后各维特征有0均值&#xff0c;单位方差。也叫z-score规范化&#xff08;零均值规范化&#xff09;。计算方式是…

儿童学计算机编程好处,儿童学习编程有什么好处

原标题&#xff1a;儿童学习编程有什么好处前几年中国家长可能对少儿编程教育感到陌生。但随着这两年美国STEM教育在中国的流行&#xff0c;以及今年国务院普及中小学阶段人工智能、编程教育规划的发布&#xff0c;现在国内也渐渐掀起少儿学习编程的风潮。孩子学电脑编程&#…

python中tkinter的使用-中

00Listbox控件 import tkinterwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020") 列表框控件&#xff0c;可以包含一个或者多个文本框 作用&#xff1a;在listbox控件的小窗口显示一个字符串 #1、创建一个listbox,添加几个元素&#…

SharePoint Server 2016 PWA(Project web app) 被变为只读模式

今天有同事反应了一个状况&#xff0c;我们SharePoint 2016里面集成的Project Web App(以下简称PWA)变成 read-only 只读模式了&#xff01;今天就给大家分享一下我的排查过程&#xff0c;供大家参考。 整个过程我一共使用了五种办法&#xff0c;结果最后一种才生效&#xff0c…

HDU 5741 Helter Skelter(构造法)

【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid5741 【题目大意】 一个01相间的串&#xff0c;以0开头&#xff0c;给出的序列每个数字表示连续的0的个数或者1的个数&#xff0c;现在有m个询问&#xff0c;求0的个数为a且1的个数为b的串是否存在。 【题解】 我们发现…

集成学习之参数调整策略

1 Random Forest和Gradient Tree Boosting参数详解 在sklearn.ensemble库中&#xff0c;我们可以找到Random Forest分类和回归的实现&#xff1a;RandomForestClassifier和RandomForestRegression&#xff0c;Gradient Tree Boosting分类和回归的实现&#xff1a;GradientBoost…

python中tkinter的使用-下

00表格数据 import tkinter from tkinter import ttkwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")#表格 tree ttk.Treeview(win) tree.pack() #列 tree["columns"] ("姓名","年龄","身高&…

计算机科学和建筑设计结合,智能化建筑中计算机科学与技术的应用

4494 科技创新 建筑工程技术与设计2018年5月上【摘要】随着我国经济的发展&#xff0c;计算机科学技术已经逐渐应用到各个领域。将计算机科学与建筑相结合&#xff0c;为建筑业的发展提供了契机。本文介绍了计算机科学技术在智能化建筑中的应用&#xff0c;以期其为加快我国智能…

符号

符号&#xff1a;; 多个命令的分隔符/ 根或者路径的分隔符> 或1>标准输出重定向&#xff08;数据流朝着箭头的方向流动&#xff09;&#xff0c;覆盖原来的文件>>或1>>追加重定向&#xff08;数据流朝着箭头的方向流动&#xff09;&#xff0c;再原来的文件…

Random Forest算法中的参数详解

本篇不是介绍RF的&#xff0c;关于RF网上有很多通俗易懂的解释 西瓜书与统计学习方法等很多教材中的解释也都足够 本篇仅针对如何使用sklearn中的RandomForestClassifier作记录 一、代码怎么写 [python] view plaincopy print?class sklearn.ensemble.RandomForestClassifier(…

python中自动化办公 【笔记】

00读取csv文件 import csv def readCsv(path):infolist []with open (path,"r") as f:allFileInfo csv.reader(f)print(allFileInfo)for row in allFileInfo:infolist.append(row)return infolistpath r"D:\xiazaipan\第1章 Python语言基础\15、自动化办公与…

Python爬虫:一些常用的爬虫技巧总结

1、基本抓取网页 get方法 import urllib2 url "http://www.baidu.com" respons urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2url "http://abcde.com" form {name:abc,password:1234} form_data urllib.urlenco…

微型计算机选用要点,微型计算机原理以及应用考试_new要点分析.doc

微型计算机原理以及应用第一章&#xff1a;1&#xff0e;微机的主要的特点是&#xff1a;(1)体积小、重量轻&#xff1b;(2)价格低廉&#xff1b;(3)可靠性高、结构灵活(4)应用面广2&#xff0e;微型机的分类&#xff1a;按微处理器规模分类&#xff1a;单片机 、个人计算机、 …

到底什么是API经济

编者按&#xff1a;这是一篇两年前的文章&#xff0c;作者为原CA TECH的中国区技术总监。他在文章中阐述的问题&#xff0c;今天读来依旧让人振聋发聩。但遗憾的是&#xff0c;国人在API成为一种服务的概念上似乎还停留在遥远的PC时代&#xff0c;说白了还都只是一些低端的数据…

解决Linux下vi或vim操作Found a swap file by the name

在linux下用vi或vim打开 文件时 E325: ATTENTION Found a swap file by the name ".1.py.swp" owned by: liu dated: Sat Apr 20 17:37:19 2019 file name: ~liu/1.py modified: YES user name: liu host name: localhos…

给未来的自己一封信计算机,给未来的自己的一封信范文(精选5篇)

给未来的自己的一封信范文(精选5篇)在日常生活或是工作学习中&#xff0c;大家总免不了要接触或使用书信吧&#xff0c;书信一般包括称呼、问候语、正文、祝语、署名、日期六个部分。你知道书信怎样写才规范吗&#xff1f;下面是小编为大家收集的给未来的自己的一封信范文(精选…