python银行ATM自动取款机

  • 银行自动取款机
    • main.py(主程序)
    • admin.py
    • atm.py
    • user.py
    • card.py
  • 总结

银行自动取款机


main.py(主程序)

main.py
from admin import Admin
from atm import ATM
import pickle
import os
import time
def main():# 界面对象admin = Admin()# 管理员开机admin.printAdminView()if admin.adminOption():return -1#提款机对象#读取user文件filePath = os.path.join(os.getcwd(), 'allusers.txt')f=open(filePath,'rb')allUsers=pickle.load(f)# allUsers={}atm=ATM(allUsers)while True:#等待用户操作time.sleep(1)admin.sysFunctionView()option=input('请输入您的操作:')if option=='1':# 开户atm.createUser()passelif option=='2':# 查询atm.searchUserInfo()elif option=='3':# 取款atm.withdrawals()elif option=='4':# 存款passelif option=='5':# 转账passelif option=='6':# 改密passelif option=='7':# 锁定atm.lockUser()elif option=='8':# 解锁atm.unlockUser()elif option=='9':# 补卡passelif option=='0':# 销户passelif option=='t':if not admin.adminOption():#考虑数据持久化#将当前系统中的用户信息保存到文件中#absPath=os.getcwd() #获取当前文件所在目录的绝对路径filePath=os.path.join(os.getcwd(),'allusers.txt')f=open(filePath,'wb')pickle.dump(atm.allUsers,f)f.close()return -1time.sleep(1)
if __name__ == '__main__':main()

admin.py

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

atm.py

atm.py
from card import Card
from user import User
import random
class ATM(object):def __init__(self,allUser):# 存储所有用户信息self.allUsers=allUser #卡号对应的用户#开户def createUser(self):#目标:向用户字典中添加一对键值对(卡号——用户)name=input('请输入您的姓名:')idCard=input('请输入您的身份证号码:')phone=input('请输入您的电话号码')prestoreMoney=int(input('请输入预存款金额:'))if prestoreMoney<0:print("预存款输入有误!!开户失败......")onePasswd=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 searchUserInfo(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 -1print('账号:%s    余额:%d'%(user.card.cardId,user.card.cardMoney))#取款def withdrawals(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=input('请输入取款金额:')if money>user.card.cardMoney:print('余额不足!!取款失败')return -1#取款user.card.cardMoney-=moneyprint('取款成功!余额:%d'%(user.card.cardMoney))#存款def saveMoney(self):pass#转账def transferMoney(self):pass#改密def changePasswd(self):pass#锁定def lockUser(self):cardNum=input('请输入您的卡号:')#验证卡号是否存在user=self.allUsers.get(cardNum)if not user:print('该卡号不存在!!锁定失败....')return -1if user.card.cardLock:print('该卡已被锁定!!请解锁后在使用其他功能....')# 验证密码if not self.checkPasswd(user.card.cardPasswd):print('密码输入错误,锁定失败......')return -1tempIdCard=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 user.card.cardLock:print('此卡没有锁定!!无需解锁....')return -1#验证密码,身份证号if not self.checkPasswd(user.card.cardPasswd):print('密码输入错误,解锁失败......')return -1tempIdCard=input('请输入您的身份证号:')if tempIdCard!=user.idCard:print('身份证输入错误!!解锁失败.....')return -1#解锁user.card.cardLock=Falseprint('解锁成功......')#补卡def newCard(self):pass#销户def killUser(self):pass# 验证密码def checkPasswd(self,realPasswd):for i in range(3):temPasswd=input('请输入密码:')if temPasswd==realPasswd:return Truereturn False#生成卡号def randomCardId(self):str=''for i in range(6):ch=chr(random.randrange(ord('0'),ord('9')+1))str+=ch#判断是否重复if not self.allUsers.get(str):return str

user.py

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

card.py

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

总结

xiaofengfeng的博客

功能已经完成大部分了,也存在bug,拿来练手将就着用可还行,
还可以用作学期期末作业

python银行ATM自动取款机相关推荐

  1. 写一个简单的自动取款机c语言程序,C语言编程模仿银行ATM自动取款机功能

    编程模仿银行ATM自动取款机功能,要求能实现以下功能: 1. 输入储户基本信息(既开户功能,开户成功需要打印储户基本信息): 2. 开户成功后打印欢迎界面,比如"开户成功,欢迎使用**银行自 ...

  2. 银行ATM自动取款机模拟程序C语言——课程设计实习

    绪论 ATM即自动取款机的意识,ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务.在ATM自动取款机上也可以进行账户查询和改密的业务.作为 ...

  3. 【历史上的今天】9 月 2 日:互联网的“诞生日”;三星逐步跌落神坛;世界上第一个 ATM 自动取款机

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 将计算机网络相互连接在一起称为"网络互联",在其基础上连接覆盖全世界的"网络互联" ...

  4. 【历史上的今天】9 月 2 日:互联网的“诞生日”;三星逐步跌落神坛;世界上第一个ATM自动取款机

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 将计算机网络相互连接在一起称为"网络互联",在其基础上连接覆盖全世界的"网络互联" ...

  5. 项目名称:银行ATM存取款机系统设计与实现(sql语句模拟操作)

    项目名称:银行ATM存取款机系统设计与实现 一.创建数据库....................................................................... ...

  6. 基于C++的ATM自动取款机设计

    一.ATM自动取款机设计要求 1.实现ATM取款机的基本功能,如给用户提供开户.查询余额.取款.修改密码.吃卡.退出系统等服务,可根据实际情况添加(如缴费.转账等服务). 2.对于用户要求输入相应的帐 ...

  7. atm自动取款机c语言编码,ATM自动取款机C语言源代码.doc

    #includevoid main() { int choice(int n,int money); int balance=1000000; int password,m=0; int n=0; p ...

  8. C语言ATM自动取款机系统项目的设计与开发

    文章目录 基于C语言的ATM自动取款机系统项目设计与开发 一.ATM自动取款机系统功能分析与介绍 二.开发ATM自动取款机系统的工具以及创建项目的过程 2.1.本项目使用Visual Studio 2 ...

  9. 画出ATM自动取款机系统相关图

    ATM自动取款机(automatic teller machine)是银行在银行营业大厅.超市.商业机构.机场.车站.码头和闹市区设置的一种小型机器,利用一张信用卡大小的胶卡上的磁带[或芯片卡上的芯片 ...

最新文章

  1. 欧文分校的计算机科学博士,UCI的CS「加州大学欧文分校计算机科学系」
  2. [JSOI 2015] 子集选取
  3. [转载](热议)“我不伟大”,但可以让善良“春暖花开”
  4. 物联网核心安全系列——车载物联网的加密防盗版
  5. 网易博客技巧(表格的高级样式)
  6. python编程教学软件-Python编程教学app
  7. C/C++学习路线(总体把握C/C++)
  8. 爱情指数测试脸型软件,心理测试:你和谁的脸型最像?测出你的幸运指数是多少!...
  9. html中半透明效果,CSS半透明效果的属性和场景
  10. 李宏毅自然语言处理——GPT3简介
  11. sticky 失效问题
  12. CSS浮动(涉及到清除浮动)及易忽略的点
  13. 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)
  14. OPPO A96 参数配置
  15. ff新推荐的关闭办法
  16. UnityEditor之属性1
  17. 布隆(Bloom Filter)过滤器——全面讲解,建议收藏
  18. 开关霍尔简易估算电角度
  19. 浅谈 RISC-V 软件开发生态之 IDE
  20. 联想超级计算机盈利,联想集团2019年营收 联想集团全年营收多少

热门文章

  1. 最新显卡功耗表和官方功耗表
  2. 自己写一个含有周、月、年模式的日历组件
  3. 一步一脚印,创造辉煌
  4. SX126x-工作模式分析
  5. 大数据分析10年本科专业排名:什么专业最热门,这问题太难了!!
  6. 5. ESP8266固件的编译(RTOS SDK固件)
  7. MySQL(15) 学习笔记大全
  8. 2019年国际APT组织情况汇总
  9. Unity5 弹力球的制作
  10. Tkinter之Scrollbar篇