圆月山庄资源网 Design By www.vgjia.com
今天偶尔在知乎上看到某大佬用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的函数和返回值是个特别神奇的东西,当然这个案例还有很大的改进空间,大家有什么好的建议也可以给我留言,我之后会慢慢进行改良哒!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,ATM,系统
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]
- TWINS.2004-SUCHABETTERDAY精美礼盒特别版2CD【英皇娱乐】【WAV+CUE】
- 音乐磁场.1991-1998-音乐磁场系列22CD【瑞星】【WAV+CUE】
- 韦绮姗.1993-LOVE.ME.ONCE.AGAIN【永高创意】【WAV+CUE】