列出对象及属性名称行为...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("************************************************")

模拟银行自动提款系统python相关推荐

  1. 模拟银行自动终端系统

    本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 二. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 ********************* ...

  2. python——银行自动提款机系统ATM

    目录 管理员类Admin() 管理员Admin类最终代码 人类Person Person类最终代码 信用卡类Card Card类最终代码 ATM类 ATM类最终代码 main()方法 main()方法 ...

  3. 模拟银行自助终端系统(序列化和反序列化)

    模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1.   对于数据输入异常,可使用java异常处理机制进行处理. 2.   ...

  4. 模拟atm取款机 php,C语言模拟ATM自动取款机系统

    C语言实验报告 题目名称:C语言模拟ATM自动取款机系统 一:问题描述: C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输 ...

  5. 模拟银行账户转账系统(简单模拟)

    本人刚刚接触java,此篇博客仅供初学者浏览,不喜勿喷,若有写的不好的地方欢迎大家指教: *模拟银行账户转账系统: 有A,B两个银行账户,初始金额都为1000元,A,B随机向对方转账,转账金额不得大于 ...

  6. 模拟银行自助终端系统

    一. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 **************************** 0.------开户 1.------查询 2.------存款 3.-- ...

  7. (转载)模拟银行自助终端系统

    一. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 **************************** 0.------开户 1.------查询 2.------存款 3.-- ...

  8. Java模拟银行存取款系统

    设计性实验报告 课程名称 面向对象程序设计(Java)     项目名称 模拟银行存取款业务 实验类型 设计性 二.实验内容 模拟网上银行业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密 ...

  9. 项目实战:银行自动提款机系统

    银行自动提款机项目 第一步:分析项目需要的类. 用户 类名:User 属性:姓名.身份证号码.电话号码.卡 行为: 卡 类名:Card 属性:卡号 密码 余额 行为: 提款机 类名:ATM 属性:用户 ...

最新文章

  1. 2019年IT人加薪的9大神器
  2. 重磅!2021年全球高被引科学家名单出炉!
  3. a good resource gathering system from sustech
  4. ServletContextListener在Tomcat中的配置问题
  5. wcf 返回图片_WCF图片上传
  6. FreeRTOS介绍与移植
  7. 《世界是数字的 》的读后感
  8. svn安装打开不弹出登录认证页面
  9. java 立体几何体中心点,高中数学立体几何重心考点的解题技巧_招生指南
  10. 33-Jenkins-修改插件源
  11. DetectoRS: Detecting Objects with Recursive Feature Pyramidand Switchable Atrous Convolution
  12. Flutter 项目实战 应用图标启动页三
  13. Win10 IE浏览器代理服务器没有响应 问题解决方法
  14. 聚合支付的清算风险有哪些?
  15. 每天一道面试题--- js 中 this 指针的用法
  16. 继神州行10元包月后:北京动感地带资费降至6元/月
  17. linux socket write()函数阻塞卡住线程问题(线程无法结束)write()非阻塞代码
  18. haproxy log日志简单记录
  19. js 中文汉字按拼音排序,浏览器英文环境也可正确运行
  20. linux命令总结-ls

热门文章

  1. 风雨20年:我所积累的20条编程经验
  2. 程序员成长的10个阶段
  3. WebService中文件传输
  4. jQuery上传插件Uploadify使用Demo、本地上传(ssm框架下)
  5. Hystix熔断解决雪崩问题
  6. Apache - Storm
  7. Hibernate 学习(一)
  8. Linux下快速搭建DNS服务器
  9. 白--留白与游戏设计
  10. iPhone iPad 各种控件默认高度