python 銀行系統


目前代碼只寫到這 主要部分已經實現 功能部分展現

首先我們需要五個類

用戶類  : 成員屬性 name  id  以及 card

卡類: 成員屬性 卡號  密碼  余額   鎖

界面類:   管理員界面 用戶操作界面

銀行類 : 操作功能

ATM: 實現功能

用戶類:

class User():    
def __init__(self, name, IDnum, card): #傳入名字,id, 以及card
self.name = name
self.IDnum = IDnum
self.card = card

卡類:

class Card():                       
def __init__(self, cardid, money, passwd,): #傳入卡號 余額 密碼
self.cardid = cardid
self.money = money
self.passwd = passwd
self.lock = False #卡在剛創建時候默認無鎖

界面類:

import time

class Admin():
passaccount = "1"
passwrad = "1"

def printadmin_view(self): #管理員界面以及管理員輸入賬號密碼
        print("**********************************************************")
print("* *")
print("* *")
print("* 歡迎使用銀行 *")
print("* *")
print("* *")
print("* *")
print("**********************************************************")
intaccount = input("請輸入賬號:") #管理員操作驗證密碼
if intaccount != self.passaccount:
print('賬號輸入有誤')
return -1
intpasswrad = input("請輸入密碼:")
if intpasswrad != self.passwrad:
print('密碼輸入有誤')
return -1
print('歡迎')
time.sleep(2)
return 0

def printuser_view(self): #用戶操作時候的界面
print("***********************************************************")
print("* *")
print("* 開戶(open) 查詢(search) *")
print("* 改密(change) 鎖定(locking) *")
print("* 存錢(deposit) 取錢(withdraw) *")
print("* 轉賬(transfer) 補卡(ressiue) *")
print("* 解鎖(unlocking) 銷卡(destory) *")
print("* *")
print("***********************************************************")

銀行類:

from admin import Admin  # 導入我們自己寫入的界面類以及ATM類
from atm import ATM
import pickle
def main():
admin1 = Admin()
atm = ATM()
if admin1.printadmin_view():
return -1
while True:
admin1.printuser_view()
i = input("請輸入你想進行的操作:\n 輸入'quit'退出")
if i == 'quit':
atm.quit()
return -1
elif i == 'open':
atm.open_account()
elif i == 'search':
atm.search_account()
elif i == 'locking':
atm.locking_account()
elif i == 'unlocking':
atm.unlocking_account()


if __name__ == '__main__':
main()

ATM:

import random,pickle
from user import User #導入我們自己寫的卡類以及用戶類
from card import Card
class ATM():
def __init__(self):
self.all_users = {} #准備空字典存儲用戶信息
self.fp = open("alluser.txt", 'r+b') #打開文件存儲 字節流 寫入時候將覆蓋 所以下面將會讀出文件內容保存在字典中
try:
self.all_users = pickle.load(self.fp) #捕捉異常 當文件類容為空時pickle會報異常 沒有異常的話將會從文件讀取信息
except EOFError:
print("文件內容為空")
print(self.all_users)
def open_account(self): #開戶功能
name = input("請輸入你的名字:")        
IDnum = input("請輸入你的ID:")
card_id = self.random_acount() #調用下面的卡號生成方法 生成卡號
passwd = input("請輸入密碼:")
passwd_rp = input("請重復密碼:")

if self.verify_passwd(passwd_rp,passwd)==-1: #調用方法如經過兩次密碼不對 重新輸入三次不對退出操作
return -1

money = input("存入的金額:")
if int(money) < 0 : #判斷存入金額是否大於0
print("金額有誤,操作失敗")
return -1
  
card = Card(card_id,money,passwd) #生成卡對象
user = User(name,IDnum,card)      #生成用戶對象
self.all_users[card_id] = user     #存入字典 鍵為卡號 值為生成的用戶對象
      print("開卡成功您的卡號是:%s"%card_id)



def search_account(self): #搜索功能 利用鍵值卡號 搜索到對應的用戶
sch_card = input("請輸入要查詢的卡號:")
if not self.all_users.get(sch_card) : #判斷卡號是否存在
print("輸入的卡號錯誤")
sch_card = input("請重新輸入:\n輸入'q'退出:")
sch_user = self.all_users[sch_card]
intpass_wd = input("請輸入密碼:")
passwd = sch_user.card.passwd

if self.verify_passwd(intpass_wd,passwd) == -1: #輸錯密碼重復三次 否則退出操作(完善功能可以進行鎖卡)
return -1

print("余額:{}".format(sch_user.card.money)) #輸出余額
return 0


def change_pw(self):
pass

def locking_account(self): #鎖卡 也是輸入卡號 為鍵值 搜索用戶 得到用戶信息
lock_card = input("請輸入卡號:")
if self.whether_cardid(lock_card) == -1: #判斷卡號是否存在
return -1
if self.all_users[lock_card].card.lock: #判斷卡是否被鎖 (完善功能后開戶搜索都可以進行判斷)
print("卡已經鎖定")
return -1
lock_user = self.all_users[lock_card]
lock_passwd = input("請輸入密碼:") #輸入密碼 確認是否是本人操作
passwd = lock_user.card.passwd
if self.verify_passwd(lock_passwd,passwd) == -1: #輸入密碼錯誤重復密碼
print("密碼錯誤退出操作")
return -1
lock_user.card.lock = True #將卡對象的成員屬性鎖設為True 鎖卡成功
print("此卡已被鎖定")
return 0
def deposit_money(self):
pass

def withdraw_money(self):
pass

def transfer_money(self):
pass

def ressiue_card(self):
pass

def unlocking_account(self): #解鎖
unlock_card = input("請輸入卡號:")
if self.whether_cardid(unlock_card) == -1: 判斷卡號是否存在 不存在退出操作
return -1
if not self.all_users[unlock_card].card.lock:
print("卡未被鎖定")
return -1
unlock_user = self.all_users[unlock_card]
unlock_passwd = input("請輸入密碼:")
passwd = unlock_user.card.passwd
if self.verify_passwd(unlock_passwd,passwd) == -1: #輸錯密碼時 重復密碼
print("密碼錯誤退出操作")
unlock_user.card.lock = False
print("卡已解鎖")
def destory_account(self):
pass

def quit(self):
pickle.dump(self.all_users, self.fp) #退出時將字典寫進文件
self.fp.close() #關閉文件通道
def random_acount(self): #生成卡號
cardnum = ""
while True:
for i in range(6):
num = random.randint(0, 9)
cardnum += str(num)
if not self.all_users.get(cardnum):
return cardnum

def verify_passwd(self, passwd_rp, passwd):# 輸入錯誤時 驗證密碼
index = 2
while passwd_rp != passwd:
passwd_rp = input("密碼輸入錯誤請重新輸入:")
print("%d次機會"%index)
print("機會使用完畢將操作失敗")
index -= 1
if index == 0:
print("操作失敗 退出操作")
return -1
return 0

def whether_cardid(self,card_id): #判斷是否存在卡號
if self.all_users.get(card_id):
return 0
print("卡號不存在")
return -1

def main(): #測試代碼
atm = ATM()
atm.locking_account()
atm.unlocking_account()


if __name__ == '__main__':
main()








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM