Python ATM功能實現(xiàn)代碼實例
編寫ATM程序?qū)崿F(xiàn)下述功能,數(shù)據(jù)來源于文件db.txt
1、充值功能:用戶輸入充值錢數(shù),db.txt中該賬號錢數(shù)完成修改
2、轉(zhuǎn)賬功能:用戶A向用戶B轉(zhuǎn)賬1000元,db.txt中完成用戶A賬號減錢,用戶B賬號加錢
3、提現(xiàn)功能:用戶輸入提現(xiàn)金額,db.txt中該賬號錢數(shù)減少
4、查詢余額功能:輸入賬號查詢余額
登錄功能
用戶登錄成功后,內(nèi)存中記錄下該狀態(tài),上述功能以當(dāng)前登錄狀態(tài)為準(zhǔn),必須先登錄才能操作
代碼如下
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 轉(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('用戶不存在') 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('用戶不存在') 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): ''' 余額查詢功能 :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('當(dāng)前余額為:{}'.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:轉(zhuǎn)賬 3:提現(xiàn) 4:查詢余額 0:登出 ''') if cmd == '1': username = input('輸入用戶名:') amount = input('輸入充值金額:') ad_credit(username, amount) elif cmd == '2': user_out = input('請輸入轉(zhuǎn)賬方:') user_in = input('請輸入接收方:') amount = input('輸入轉(zhuǎn)賬金額:') transfer(user_out, user_in, amount) elif cmd == '3': username = input('輸入用戶名:') amount = input('輸入提現(xiàn)金額') cashon(username, amount) elif cmd == '4': username = input('輸入用戶名:') check(username) elif cmd == '0': logout() tag = False else: print('請正確輸入序號')
以下是模擬結(jié)果
'''
/Users/chenfeng/PycharmProjects/ATM/venv/bin/python /Users/chenfeng/PycharmProjects/ATM/main.py
輸入用戶名xilou
輸入密碼666
登陸成功請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
1
輸入用戶名:xilou
輸入充值金額:200
充值成功,xilou的余額為700請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
2
請輸入轉(zhuǎn)賬方:xilou
請輸入接收方:heiren
輸入轉(zhuǎn)賬金額:200
轉(zhuǎn)賬成功,已成功從xilou向heiren匯款200請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
3
輸入用戶名:xilou
輸入提現(xiàn)金額100
已從余額中取出100,現(xiàn)余額為400請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
4
輸入用戶名:xilou
當(dāng)前余額為:400請輸入你想使用的功能序號
1:充值
2:轉(zhuǎn)賬
3:提現(xiàn)
4:查詢余額
0:登出
0
已成功登出Process finished with exit code 0
'''以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python企業(yè)編碼生成系統(tǒng)之系統(tǒng)主要函數(shù)設(shè)計詳解
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)之系統(tǒng)主要函數(shù)設(shè)計,涉及目錄操作、文件讀寫、驗證判斷、編碼輸出等功能實現(xiàn)技巧,需要的朋友可以參考下2019-07-07Python輸入圓半徑,計算圓周長和面積的實現(xiàn)方式
這篇文章主要介紹了Python輸入圓半徑,計算圓周長和面積的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12tensorflow使用range_input_producer多線程讀取數(shù)據(jù)實例
今天小編就為大家分享一篇tensorflow使用range_input_producer多線程讀取數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python Multiprocessing.Pool進程池模塊詳解
multiprocessing模塊提供了一個Process類來代表一個進程對象,multiprocessing模塊像線程一樣管理進程,這個是multiprocessing的核心,它與threading很相似,對多核CPU的利用率會比threading好的多2022-10-10python實現(xiàn)Excel文件轉(zhuǎn)換為TXT文件
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)Excel文件轉(zhuǎn)換為TXT文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04