前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python ATM功能实现代码实例

Python ATM功能实现代码实例

作者头像
砸漏
发布2020-10-30 11:06:04
5090
发布2020-10-30 11:06:04
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

编写ATM程序实现下述功能,数据来源于文件db.txt

1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改

2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱

3、提现功能:用户输入提现金额,db.txt中该账号钱数减少

4、查询余额功能:输入账号查询余额

登录功能

用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作

代码如下

代码语言:javascript
复制
import os
user_staus = {'username': None}
def ad_credit(username, amount):
"""
充值功能
:param username:
:param amount:
:return:
"""
if user_staus['username'] is None:
login()
with open('db.txt', 'rt', encoding='utf-8')as f1, \
open('db.txt.swap', 'wt', encoding='utf-8')as f2:
while True:
cont = f1.readline()
if len(cont) == 0:
break
name, remain = cont.strip().split(':')
if username in name:
remain = int(remain) + int(amount)
f2.write('{}:{}\n'.format(name, remain))
print('充值成功,{}的余额为{}'.format(username, remain))
else:
f2.write(cont)
os.remove('db.txt')
os.rename('db.txt.swap', 'db.txt')
def transfer(user_out, user_in, amount):
'''3
转账功能
:param user_out:
:param user_in:
:param amount:
:return:
'''
if user_staus['username'] is None:
login()
with open('db.txt', 'rt', encoding='utf-8')as f1, \
open('db.txt.swap', 'wt', encoding='utf-8')as f2:
userinfo = {}
for line in f1:
name, remind = line.strip().split(':')
userinfo[name] = int(remind)
if user_out not in userinfo:
print('用户不存在')
return
if user_in not in userinfo:
print('收款方不存在')
return
if user_out in userinfo and user_in in userinfo:
if userinfo[user_out]  = int(amount):
userinfo[user_out] -= int(amount)
userinfo[user_in] += int(amount)
print('转账成功,已成功从{}向{}汇款{}'.format(user_out, user_in, amount))
elif userinfo[user_out] < amount:
print('余额不足')
return
for name, remind in userinfo.items():
f2.write('{}:{}\n'.format(name, remind))
os.remove('db.txt')
os.rename('db.txt.swap', 'db.txt')
def cashon(username, amount):
'''
提现功能
:param username:
:param amount:
:return:
'''
if user_staus['username'] is None:
login()
with open('db.txt', 'rt', encoding='utf-8')as f1, \
open('db.txt.swap', 'wt', encoding='utf-8')as f2:
userinfo = {}
for line in f1:
name, remind = line.strip().split(':')
userinfo[name] = int(remind)
if username not in userinfo:
print('用户不存在')
return
if username in userinfo and userinfo[username]  = int(amount):
userinfo[username] -= int(amount)
print('已从余额中取出{},现余额为{}'.format(amount, userinfo[username]))
elif userinfo[username] < amount:
print('余额不足,提现失败')
return
for name, remind in userinfo.items():
f2.write('{}:{}\n'.format(name, remind))
os.remove('db.txt')
os.rename('db.txt.swap', 'db.txt')
def check(username):
'''
余额查询功能
:param username:
:return:
'''
if user_staus['username'] is None:
login()
with open('db.txt', 'rt', encoding='utf-8')as f:
userinfo = {}
for line in f:
name, remind = line.strip().split(':')
userinfo[name] = remind
if username not in userinfo:
print('用户不存在')
return
if username in userinfo:
print('当前余额为:{}'.format(userinfo[username]))
def login():
username = input('输入用户名')
userpassword = input('输入密码')
with open('login.txt', 'rt', encoding='utf-8')as login_f:
login = {}
for line in login_f:
name, psd = line.strip().split(':')
login[name] = psd
if username in login:
if login[username] == userpassword:
print('登陆成功')
user_staus['username'] = username
break
elif username not in login:
print('用户名不存在')
return
def logout():
user_staus['username'] = None
print('已成功登出')
return
login()
tag = True
while tag:
cmd = input('''
请输入你想使用的功能序号
1:充值
2:转账
3:提现
4:查询余额
0:登出
''')
if cmd == '1':
username = input('输入用户名:')
amount = input('输入充值金额:')
ad_credit(username, amount)
elif cmd == '2':
user_out = input('请输入转账方:')
user_in = input('请输入接收方:')
amount = input('输入转账金额:')
transfer(user_out, user_in, amount)
elif cmd == '3':
username = input('输入用户名:')
amount = input('输入提现金额')
cashon(username, amount)
elif cmd == '4':
username = input('输入用户名:')
check(username)
elif cmd == '0':
logout()
tag = False
else:
print('请正确输入序号')

以下是模拟结果

”’ /Users/chenfeng/PycharmProjects/ATM/venv/bin/python /Users/chenfeng/PycharmProjects/ATM/main.py 输入用户名xilou 输入密码666 登陆成功 请输入你想使用的功能序号 1:充值 2:转账 3:提现 4:查询余额 0:登出 1 输入用户名:xilou 输入充值金额:200 充值成功,xilou的余额为700 请输入你想使用的功能序号 1:充值 2:转账 3:提现 4:查询余额 0:登出 2 请输入转账方:xilou 请输入接收方:heiren 输入转账金额:200 转账成功,已成功从xilou向heiren汇款200 请输入你想使用的功能序号 1:充值 2:转账 3:提现 4:查询余额 0:登出 3 输入用户名:xilou 输入提现金额100 已从余额中取出100,现余额为400 请输入你想使用的功能序号 1:充值 2:转账 3:提现 4:查询余额 0:登出 4 输入用户名:xilou 当前余额为:400 请输入你想使用的功能序号 1:充值 2:转账 3:提现 4:查询余额 0:登出 0 已成功登出 Process finished with exit code 0

”’以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档