Python ATM功能實現程式碼例項
編寫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',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,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',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)) 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',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',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,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
'''以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。