PythonATM関数の実装コード例

次の機能を実現するATMプログラムを作成します。データは、ファイルdb.txtから取得されます。

1、 リチャージ機能:ユーザーがリチャージ金額を入力すると、db.txtのアカウント金額が変更されます

2、 転送機能:ユーザーAがユーザーBに1,000元を転送し、ユーザーAのアカウントがdb.txtで削減され、ユーザー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()withopen('db.txt','rt', encoding='utf-8')as f1, \
open('db.txt.swap','wt', encoding='utf-8')as f2:while True:
cont = f1.readline()iflen(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()withopen('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('ユーザーは存在しません')returnif user_in not in userinfo:print('受取人は存在しません')returnif 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('残高不足')returnfor 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()withopen('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('ユーザーは存在しません')returnif username in userinfo and userinfo[username]=int(amount):
userinfo[username]-=int(amount)print('バランスから撤退{}、現在の残高は{}'.format(amount, userinfo[username]))
elif userinfo[username]< amount:print('バランスが不十分で、引き出しに失敗しました')returnfor 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()withopen('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('ユーザーは存在しません')returnif username in userinfo:print('現在の残高は次のとおりです。{}'.format(userinfo[username]))
def login():
username =input('ユーザー名を入力して下さい')
userpassword =input('パスワードを入力する')withopen('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('正常にサインアウトしました')returnlogin()
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
転送は成功し、200はxilouからheirenに正常に転送されました
使用したい機能のシリアル番号を入力してください
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

「上記はこの記事の全内容です。皆さんの研究に役立つことを願っています。

Recommended Posts

PythonATM関数の実装コード例
Python描画ローズ実装コード
Python正規式サンプルコード
Pythontcp伝送コードの例の分析
Pythonリクエストモジュールセッションコード例
Python検証コード傍受識別コードの例
Pythonオブジェクト指向の例
Python enumerate()関数
Python関数バッファー
AI自動マットサンプル分析のPython実装
手描き効果の例の共有のPython実装
Pythonカスタム関数の基本
Python3.7デバッグサンプルメソッド
Python組み込み関数-compile()
Python関数の基礎学習
Pythonデータ分析-関数の適用
Python3組み込み関数table.md
PythonSMS爆撃コード
Python補間補間の例
Pythonプリントプリントタイマー機能
Pythonの上位関数の使用法の概要!
バグを見つけるためのPythonコード(2)
pythonコードにコメントする方法
バグを見つけるためのPythonコード(4)
バグを見つけるためのPythonコード(3)
Pythonの負の弾性率の操作例
Python3ロギングログパッケージの例
gomokuプログラムのPython実装
Pythonトルネードアップロードファイル機能
Pythonはコードブロックフォールディングを実装します
Python出力数学記号の例
Pythonマジック関数eval()学習
PythonインストールOpenCVサンプルコード
バグを見つけるためのPythonコード(6)
PythonがFTP機能を実装する方法
Python反復可能オブジェクトの重複排除の例
バグを見つけるためのPythonコード(1)
バグを見つけるためのPythonコード(8)
Pythonは検証コード認識を実装します
バグを見つけるためのPythonコード(5)
Python一次元二次元補間の例
pythonコードは大文字と小文字を区別しますか
PythonGUIシミュレーション実装計算機
Pythonドローバーグラフ(バーグラフ)の例
Pythonの右揃えの例の方法
Pythonは画像スティッチング機能を実装しています
Pythonの上位関数の使用法の概要!