Python ATM功能實(shí)現(xiàn)代碼實(shí)例
編寫(xiě)ATM程序?qū)崿F(xiàn)下述功能,數(shù)據(jù)來(lái)源于文件db.txt
1、充值功能:用戶(hù)輸入充值錢(qián)數(shù),db.txt中該賬號(hào)錢(qián)數(shù)完成修改
2、轉(zhuǎn)賬功能:用戶(hù)A向用戶(hù)B轉(zhuǎn)賬1000元,db.txt中完成用戶(hù)A賬號(hào)減錢(qián),用戶(hù)B賬號(hào)加錢(qián)
3、提現(xiàn)功能:用戶(hù)輸入提現(xiàn)金額,db.txt中該賬號(hào)錢(qián)數(shù)減少
4、查詢(xún)余額功能:輸入賬號(hào)查詢(xún)余額
登錄功能
用戶(hù)登錄成功后,內(nèi)存中記錄下該狀態(tài),上述功能以當(dāng)前登錄狀態(tài)為準(zhǔn),必須先登錄才能操作
代碼如下
import osuser_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 轉(zhuǎn)賬功能 :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(’用戶(hù)不存在’) 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(’轉(zhuǎn)賬成功,已成功從{}向{}匯款{}’.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): ’’’ 提現(xiàn)功能 :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(’用戶(hù)不存在’) return if username in userinfo and userinfo[username] >= int(amount): userinfo[username] -= int(amount) print(’已從余額中取出{},現(xiàn)余額為{}’.format(amount, userinfo[username])) elif userinfo[username] < amount: print(’余額不足,提現(xiàn)失敗’) 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): ’’’ 余額查詢(xún)功能 :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(’用戶(hù)不存在’) return if username in userinfo: print(’當(dāng)前余額為:{}’.format(userinfo[username]))def login(): username = input(’輸入用戶(hù)名’) 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(’用戶(hù)名不存在’)returndef logout(): user_staus[’username’] = None print(’已成功登出’) returnlogin()tag = Truewhile tag: cmd = input(’’’ 請(qǐng)輸入你想使用的功能序號(hào) 1:充值 2:轉(zhuǎn)賬 3:提現(xiàn) 4:查詢(xún)余額 0:登出 ’’’) if cmd == ’1’: username = input(’輸入用戶(hù)名:’) amount = input(’輸入充值金額:’) ad_credit(username, amount) elif cmd == ’2’: user_out = input(’請(qǐng)輸入轉(zhuǎn)賬方:’) user_in = input(’請(qǐng)輸入接收方:’) amount = input(’輸入轉(zhuǎn)賬金額:’) transfer(user_out, user_in, amount) elif cmd == ’3’: username = input(’輸入用戶(hù)名:’) amount = input(’輸入提現(xiàn)金額’) cashon(username, amount) elif cmd == ’4’: username = input(’輸入用戶(hù)名:’) check(username) elif cmd == ’0’: logout() tag = False else: print(’請(qǐng)正確輸入序號(hào)’)
以下是模擬結(jié)果
’’’/Users/chenfeng/PycharmProjects/ATM/venv/bin/python /Users/chenfeng/PycharmProjects/ATM/main.py輸入用戶(hù)名xilou輸入密碼666登陸成功
請(qǐng)輸入你想使用的功能序號(hào)1:充值2:轉(zhuǎn)賬3:提現(xiàn)4:查詢(xún)余額0:登出1輸入用戶(hù)名:xilou輸入充值金額:200充值成功,xilou的余額為700
請(qǐng)輸入你想使用的功能序號(hào)1:充值2:轉(zhuǎn)賬3:提現(xiàn)4:查詢(xún)余額0:登出2請(qǐng)輸入轉(zhuǎn)賬方:xilou請(qǐng)輸入接收方:heiren輸入轉(zhuǎn)賬金額:200轉(zhuǎn)賬成功,已成功從xilou向heiren匯款200
請(qǐng)輸入你想使用的功能序號(hào)1:充值2:轉(zhuǎn)賬3:提現(xiàn)4:查詢(xún)余額0:登出3輸入用戶(hù)名:xilou輸入提現(xiàn)金額100已從余額中取出100,現(xiàn)余額為400
請(qǐng)輸入你想使用的功能序號(hào)1:充值2:轉(zhuǎn)賬3:提現(xiàn)4:查詢(xún)余額0:登出4輸入用戶(hù)名:xilou當(dāng)前余額為:400
請(qǐng)輸入你想使用的功能序號(hào)1:充值2:轉(zhuǎn)賬3:提現(xiàn)4:查詢(xún)余額0:登出0已成功登出
Process finished with exit code 0
’’’以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解Android studio 動(dòng)態(tài)fragment的用法2. 編程語(yǔ)言PHP在Web開(kāi)發(fā)領(lǐng)域的優(yōu)勢(shì)在哪?3. 什么是python的自省4. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁(yè)效果(實(shí)例代碼)5. 解決Android studio xml界面無(wú)法預(yù)覽問(wèn)題6. 基于android studio的layout的xml文件的創(chuàng)建方式7. Android如何加載Base64編碼格式圖片8. Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案9. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)10. 圖文詳解vue中proto文件的函數(shù)調(diào)用

網(wǎng)公網(wǎng)安備