今天偶尔在知乎上看到某大佬用Python写的ATM系统案例,然后观摩了下他的实现思路和源码,感觉受益颇多,于是就根据自己的思路和目前掌握的Python编程基础将ATM实现了一下,以下是案例解析的过程:

案例剖析:

1.atm主页面显示.

2.账号验证.

3.查询余额.

4.存款.

5.取款.

6.修改密码.

ps:我的思路是将以上的功能分成几大块,通过函数,循环和返回值来实现,话不多说直接上代码.

代码:

1.atm主页面显示

def index(nowUser):

print('=' * 10, '自动存取款机', '=' * 10)

print(getName(nowUser), '欢迎登陆!')

print('{:<10}{:^10}{:<10}'.format('1.修改密码', ' ', '2.查询余额'))

print('{:<10}{:^12}{:<10}'.format('3.存钱', ' ', '4.取钱'))

print('输入\'exit\'退出操作')

ps:使用format来进行格式的定义.

2.账号验证

def getId(nowUser):

'''获取当前用户在列表中的位置'''

index = -1

for i in range(len(userList)):

if userList[i]['cardid'] == nowUser:

index = i # 如果用户存在则返回它在列表中的下标

break

return index # 如果用户不存在则返回-1

def getName(nowUser):

''' 获取用户姓名'''

index = getId(nowUser)

return userList[index]['name']

def checkUser(cardid, password):

'''自定义用户检测功能,包括卡号及密码检测'''

index = getId(cardid)

if index == -1: # 如果用户不存在

return 'noCardId' # 卡号不存在

else:

if userList[index]['cardid'] == cardid and userList[index]['password'] == password: # 用户存在并且账号密码正确

return 'login' # 密码正确

else:

return 'errorPW' # 密码错误

ps:使用循环和返回值来进行账号的对比和检测.

3.查询余额

def showMoney(nowUser):

'''查询余额'''

index = getId(nowUser)

print('您当前的账户余额为:', userList[index]['money'], '元')

4.存钱

def saveMoney(nowUser, money):

'''存钱'''

index = getId(nowUser)

print("输入的金额是:", money)

userList[index]['money'] += int(money)

print('存入成功!')

5.取钱

def drawMoney(nowUser, money):

'''取钱'''

index = getId(nowUser)

nowMoney = userList[index]['money']

if nowMoney >= int(money):

userList[index]['money'] -= int(money)

print('已取出', money, '元')

else:

print('账户余额不足!')

6.修改密码

def changePW(nowUser, newPW):

'''修改密码'''

index = getId(nowUser)

userList[index]['password'] = newPW

7.定义用户操作函数

# 用户操作

def userChoice(nowUser):

choices = ['1', '2', '3', '4', 'exit']

# 循环获取用户操作

while True:

index(nowUser)

choice = input('请选择操作:')

if choice == '1': # 选择修改密码

oldPW = input('请输入原始密码:')

flag = checkUser(nowUser, oldPW)

if flag == "errorPW":

# print('密码错误!请重新输入,或输入\'back\'返回上一级')

print('密码错误!返回主界面')

elif flag == 'login':

changePW(nowUser, input('请输入新密码:'))

print('修改密码成功!')

continue

elif choice == '2': # 选择查询余额

showMoney(nowUser)

continue

elif choice == '3': # 选择存钱

saveMoney(nowUser, input('请输入存入金额:'))

continue

elif choice == '4': # 选择取钱

drawMoney(nowUser, input('请输入取出金额:'))

continue

elif choice == 'exit':

main() # 返回主界面

elif choice not in choices:

print('错误操作,请重新输入选项!')

continue

8.定义main主函数

# 主界面

def main():

# 定义错误次数

errorTime = 0

if errorTime >= 3: # 错误次数达三次退出系统后清零

errorTime = 0

while True:

# crs登陆主界面

print('=' * 10, '自动存取款机', '=' * 10)

nowUser = ''

# 用户输入卡号和密码

cardid = input('请输入卡号:')

password = input('请输入密码:')

# 判断卡号密码是否存在正确

# 卡号不存在

flag = checkUser(cardid, password)

if flag == 'noCardId':

print('卡号不存在!请重新输入')

continue

# 密码错误

elif flag == 'errorPW':

errorTime += 1

print('密码错误!错误次数达三次将自动退出本系统!')

print("错误次数:", errorTime)

if errorTime >= 3: # 错误次数达三次自动退出

print('密码输错三次,自动退出系统!')

exit(0)

continue

# 卡号密码正确进入系统

else:

nowUser = cardid

userChoice(nowUser)

9.最后定义函数主入口,进行ATM系统的测试

if __name__ == '__main__':

main()

收获:

通过ATM案例 ,将之前学习的Python基础重新进行了一次巩固,梳理和融会贯通,个人感觉 Python的函数和返回值是个特别神奇的东西,当然这个案例还有很大的改进空间,大家有什么好的建议也可以给我留言,我之后会慢慢进行改良哒!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-02-14

python atm银行取款系统_Python实现ATM系统相关推荐

  1. python atm银行取款系统_银行 ATM 系统项目

    取钱:卡是否存在,是否冻结,取钱金额是否正确 转账:把一个卡里的钱转到其他卡内 (卡是否存在,是否冻结,对方账户是否存在,转账的金额是否正确) 改密:(1)原密码改密 (2)身份证改密 解卡:判断卡号 ...

  2. python atm银行取款系统_python ATM机 案例代码

    利用目前学的流程控制写的 ''' ATM机 需求: 1.登陆 输入账号输入密码 每日只有3次登陆密码错误的机会,超过3次禁止登陆 2.查询余额 3.存款 4.取款 5.转帐 6.退出 ''' info ...

  3. python atm作业详解_python完成ATM(分目录)

    模块跳转: 项目需求: 用**规范化项目目录**的格式模拟一个ATM系统. 项目功能: 1. 登录(可支持多个账户(非同时)登录). 2. 注册. 3. 查看余额. 4. 存钱. 5. 转账(给其他用 ...

  4. python做一个考试系统_Python在线考试系统防作弊功能的思路和实现

    我自己用Python开发了一套教学管理软件,具有在线点名.提问.答疑.交作业.自测.在线考试.数据导入导出与汇总.Word试卷生成等多个功能,其中在线考试系统具有防作弊的功能,不少人觉得很神奇,其实思 ...

  5. python如何定义自定义函数_python类中系统自定义函数

    标签: python类 双下划线特殊函数 今天遇到python类内部系统以双下划线开头和结尾的情况,特去学习一部分的应用情况,顺便记录一下.python 的OOP编程中,每个类拥有一些系统特殊定义的函 ...

  6. python数据分析系统_Python数据分析,系统步骤介绍!

    原标题:Python数据分析,系统步骤介绍! 摘要 在用Python做数据分析的过程中,有一些操作步骤和逻辑框架是很固定的,只需要记住其用法即可.本节内容介绍Pandas模块在数据分析中的常用方法. ...

  7. python获取指定端口流量_python如何查看系统网络流量的信息

    前言 流量信息可以直接在/proc/net/dev中进行查看,笔者实现的程序使用命令: python net.py interface 其中interface为网卡名称,使用什么网卡,电脑有哪些网卡, ...

  8. python局域网监控系统_python 局域网监控系统

    如何在局域网内部署服务器监控 ? 背景 随着互联网的发展,各种网络攻击手段也层出不穷,不管是大型企业还是中小企业,随时都有被攻击的危险,因此很多公司都会采取各种手段来维护自己服务器安全,其中比较常见的 ...

  9. python投票系统_python实时投票系统的课设

    季元峰脸色铁青,秦齐竟然敢这么跟他说话,实在是不知死活,难道秦齐现在还没有看清局势不成?python实时投票系统的课设 巴小琪如今的神志,显然已经被尼德霍格所侵蚀,连他都是不认识了. "这是 ...

最新文章

  1. SpringBoot 操作 ElasticSearch 详解(万字长文)
  2. Mac 配置flutter
  3. linux https重定向,Linux | Apache环境下强制http跳转至https的配置总结
  4. 英语在线听力翻译器_仁爱版初一英语免费听力训练电子教程
  5. 网上商城—管理员删除商品
  6. jq 组装数组_Jquery 数组操作
  7. Spring全家桶面试真题
  8. 2020深度文本匹配最新进展:精度、速度我都要!
  9. node.js + express 初体验【hello world】
  10. java8 64_【java8下载】Java8最新版下载 64位-七喜软件园
  11. Unity官方文档(英文)
  12. 消息中间件MQ与RabbitMQ面试题
  13. 由QQ电脑管家的提示看对新增系统启动项的提示和保护
  14. c# 判断路径是否存在
  15. littlefs系列:重要的数据结构
  16. 详解ReID的各部分组成及Trick——FastReID中的baseline配置
  17. Kubernetes多运营商云服务器部署(kubeadm+ipvs+flannel)
  18. 【关于QT QMediaPlayer 打包后不能播放声音(plugins文件问题引起)】
  19. 网易云音乐插件现已登陆 Visual Studio Code
  20. PS笔刷:150个天气套装

热门文章

  1. Establishing SSL connection without server's identity verification is not recommended.
  2. Linux内核Socket参数调优
  3. Thread.CurrentPrincipal HttpContext.Current.User
  4. TCP的几个状态(SYN/FIN/ACK/PSH/RST)
  5. 我的asp.net学习心得
  6. 什么是高并发,如何避免高并发
  7. [pytorch、学习] - 3.5 图像分类数据集
  8. jquery --- pip方法
  9. Python 杨辉三角形的简单实现
  10. 看我如何基于PythonFacepp打造智能监控系统