编写ATM程序实现下述功能,数据来源于文件db.txt
1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
4、查询余额功能:输入账号查询余额
登录功能
用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作
代码如下
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
'''以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Python,ATM,功能
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 群星《前途海量 电影原声专辑》[FLAC/分轨][227.78MB]
- 张信哲.1992-知道新曲与精丫巨石】【WAV+CUE】
- 王翠玲.1995-ANGEL【新艺宝】【WAV+CUE】
- 景冈山.1996-我的眼里只有你【大地唱片】【WAV+CUE】
- 群星《八戒 电影原声带》[320K/MP3][188.97MB]
- 群星《我的阿勒泰 影视原声带》[320K/MP3][139.47MB]
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[320K/MP3][148.91MB]
- 刘雅丽.2001-丽花皇后·EMI精选王【EMI百代】【FLAC分轨】
- 齐秦.1994-黄金十年1981-1990CHINA.TOUR.LIVE精丫上华】【WAV+CUE】
- 群星.2008-本色·百代音乐人创作专辑【EMI百代】【WAV+CUE】
- 群星.2001-同步过冬AVCD【环球】【WAV+CUE】
- 群星.2020-同步过冬2020冀待晴空【环球】【WAV+CUE】
- 沈雁.1986-四季(2012梦田复刻版)【白云唱片】【WAV+CUE】
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[FLAC/分轨][257.88MB]
- 《国语老歌 怀旧篇 3CD》[WAV/分轨][1.6GB]