欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python銀行系統(tǒng)實戰(zhàn)源碼

 更新時間:2019年10月25日 09:13:10   作者:柯西帶你學編程  
這篇文章主要為大家詳細介紹了Python銀行系統(tǒng)實戰(zhàn)源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Python銀行系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

import time
import random
import pickle
import os


class Card(object):
 def __init__(self, cardId, cardPasswd, cardMoney):
  self.cardId = cardId
  self.cardPasswd = cardPasswd
  self.cardMony = cardMoney
  self.cardLock = False # 后面到了鎖卡的時候需要有個卡的狀態(tài)


class User(object):
 def __init__(self, name, idCard, phone, card):
  self.name = name
  self.idCard = idCard
  self.phone = phone
  self.card = card


class Admin(object):
 admin = "1"
 passwd = "1"

 def printAdminView(self):
  print("****************************************************")
  print("*             *")
  print("*             *")
  print("*    歡迎登陸銀行      *")
  print("*             *")
  print("*             *")
  print("****************************************************")

 def printSysFunctionView(self):
  print("****************************************************")
  print("*   開戶(1)   查詢(2)   *")
  print("*   取款(3)   存款(4)   *")
  print("*   轉(zhuǎn)賬(5)   改密(6)   *")
  print("*   鎖定(7)   解鎖(8)   *")
  print("*   補卡(9)   銷戶(0)   *")
  print("*     退出(q)      *")
  print("****************************************************")

 def adminOption(self):
  inputAdmin = input("請輸入管理員賬號:")
  if self.admin != inputAdmin:
   print("輸入賬號有誤!")
   return -1
  inputPasswd = input("請輸入管理員密碼:")
  if self.passwd != inputPasswd:
   print("密碼輸入有誤!")
   return -1

  # 能執(zhí)行到這里說明賬號密碼正確
  print("操作成功,請稍后······")
  time.sleep(2)
  return 0

 def ban(self, allUsers):
  for key in allUsers:
   print("賬號:" + key + "\n" + "姓名:" + allUsers[key].name + "\n" + "身份證號:" + allUsers[key].idCard + "\n" + "電話號碼:" + allUsers[
    key].phone + "\n" + "銀行卡密碼:" + allUsers[key].card.cardPasswd + "\n")


class ATM(object):
 def __init__(self, allUsers):
  self.allUsers = allUsers # 用戶字典

 # 開戶
 def creatUser(self):
  # 目標:向用戶字典中添加一對鍵值對(卡號->用戶)
  name = input("請輸入您的名字:")
  idCard = input("請輸入您的身份證號:")
  phone = input("請輸入您的電話號碼:")
  prestoreMoney = int(input("請輸入預存款金額:"))
  if prestoreMoney < 0:
   print("預存款輸入有誤!開戶失敗")
   return -1

  onePasswd = input("請設(shè)置密碼:")
  # 驗證密碼
  if not self.checkPasswd(onePasswd):
   print("輸入密碼錯誤,開戶失敗!")
   return -1

  # 生成銀行卡號
  cardStr = self.randomCardId()
  card = Card(cardStr, onePasswd, prestoreMoney)

  user = User(name, idCard, phone, card)
  # 存到字典
  self.allUsers[cardStr] = user
  print("開戶成功!請記住卡號:" + cardStr)

 # 查詢
 def searchUserInfo(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,查詢失敗!")
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1
  print("賬號:%s 余額:%d" % (user.card.cardId, user.card.cardMony))

 # 取款
 def getMoney(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,取款失?。?)
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1

  # 開始取款
  amount = int(input("驗證成功!請輸入取款金額:"))
  if amount > user.card.cardMony:
   print("取款金額有誤,取款失敗!")
   return -1
  if amount < 0:
   print("取款金額有誤,取款失??!")
   return -1
  user.card.cardMony -= amount
  print("您取款%d元,余額為%d元!" % (amount, user.card.cardMony))

 # 存款
 def saveMoney(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,存款失??!")
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1

  # 開始存款
  amount = int(input("驗證成功!請輸入存款金額:"))
  if amount < 0:
   print("存款金額有誤,存款失?。?)
   return -1
  user.card.cardMony += amount
  print("您存款%d元,最新余額為%d元!" % (amount, user.card.cardMony))

 # 轉(zhuǎn)賬
 def transferMoney(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,轉(zhuǎn)賬失?。?)
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1

  # 開始轉(zhuǎn)賬
  amount = int(input("驗證成功!請輸入轉(zhuǎn)賬金額:"))
  if amount > user.card.cardMony or amount < 0:
   print("金額有誤,轉(zhuǎn)賬失??!")
   return -1

  newcard = input("請輸入轉(zhuǎn)入賬戶:")
  newuser = self.allUsers.get(newcard)
  if not newuser:
   print("該卡號不存在,轉(zhuǎn)賬失?。?)
   return -1
  # 判斷是否鎖定
  if newuser.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1
  user.card.cardMony -= amount
  newuser.card.cardMony += amount
  time.sleep(1)
  print("轉(zhuǎn)賬成功,請稍后···")
  time.sleep(1)
  print("轉(zhuǎn)賬金額%d元,余額為%d元!" % (amount, user.card.cardMony))

 # 改密
 def changePasswd(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,改密失敗!")
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1
  print("正在驗證,請稍等···")
  time.sleep(1)
  print("驗證成功!")
  time.sleep(1)

  # 開始改密
  newPasswd = input("請輸入新密碼:")
  if not self.checkPasswd(newPasswd):
   print("密碼錯誤,改密失??!")
   return -1
  user.card.cardPasswd = newPasswd
  print("改密成功!請稍后!")

 # 鎖定
 def lockUser(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,鎖定失敗!")
   return -1
  if user.card.cardLock:
   print("該卡已被鎖定,請解鎖后再使用其功能!")
   return -1
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,鎖定失??!")
   return -1
  tempIdCard = input("請輸入您的身份證號碼:")
  if tempIdCard != user.idCard:
   print("身份證號輸入有誤,鎖定失敗!")
   return -1
  # 鎖定
  user.card.cardLock = True
  print("鎖定成功!")


 # 解鎖
 def unlockUser(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,解鎖失??!")
   return -1
  if not user.card.cardLock:
   print("該卡未被鎖定,無需解鎖!")
   return -1
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,解鎖失??!")
   return -1
  tempIdCard = input("請輸入您的身份證號碼:")
  if tempIdCard != user.idCard:
   print("身份證號輸入有誤,解鎖失??!")
   return -1
  # 解鎖
  user.card.cardLock = False
  print("解鎖成功!")

 # 補卡
 def newCard(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在!")
   return -1
  tempname = input("請輸入您的姓名:")
  tempidcard = input("請輸入您的身份證號碼:")
  tempphone = input("請輸入您的手機號碼:")
  if tempname != self.allUsers[cardNum].name\
    or tempidcard != self.allUsers.idCard\
    or tempphone != self.allUsers.phone:
   print("信息有誤,補卡失??!")
   return -1
  newPasswd = input("請輸入您的新密碼:")
  if not self.checkPasswd(newPasswd):
   print("密碼錯誤,補卡失??!")
   return -1
  self.allUsers.card.cardPasswd = newPasswd
  time.sleep(1)
  print("補卡成功,請牢記您的新密碼!")

 # 銷戶
 def killUser(self):
  cardNum = input("請輸入您的卡號:")
  # 驗證是否存在該卡號
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號不存在,轉(zhuǎn)賬失??!")
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請解鎖后再使用其功能!")
   return -1

  # 驗證密碼
  if not self.checkPasswd(user.card.cardPasswd):
   print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")
   user.card.cardLock = True
   return -1

  del self.allUsers[cardNum]
  time.sleep(1)
  print("銷戶成功,請稍后!")

 # 驗證密碼
 def checkPasswd(self, realPasswd):
  for i in range(3):
   tempPasswd = input("請輸入密碼:")
   if tempPasswd == realPasswd:
    return True
  return False

 # 生成卡號
 def randomCardId(self):
  while True:
   str = ""
   for i in range(6):
    ch = chr(random.randrange(ord("0"), ord("9") + 1))
    str += ch
   # 判斷是否重復
   if not self.allUsers.get(str):
    return str


# 主函數(shù),不在上面的類中
def main():
 # 界面對象
 admin = Admin()

 # 管理員開機
 admin.printAdminView()
 if admin.adminOption():
  return -1

 # 由于一開始文件里并沒有數(shù)據(jù),不知道要存的是個字典,先存一個,后面再把這個關(guān)了
 # allUsers = {}

 # 提款機對象
 filepath = os.path.join(os.getcwd(), "allusers.txt")
 f = open(filepath, "rb")
 allUsers = pickle.load(f)
 atm = ATM(allUsers)

 while True:
  admin.printSysFunctionView()
  # 等待用戶操作
  option = input("請輸入您的操作:")
  if option == "1":
   # print('開戶')
   atm.creatUser()
  elif option == "2":
   # print("查詢")
   atm.searchUserInfo()
  elif option == "3":
   # print("取款")
   atm.getMoney()
  elif option == "4":
   # print("存儲")
   atm.saveMoney()
  elif option == "5":
   # print("轉(zhuǎn)賬")
   atm.transferMoney()
  elif option == "6":
   # print("改密")
   atm.changePasswd()
  elif option == "7":
   # print("鎖定")
   atm.lockUser()
  elif option == "8":
   # print("解鎖")
   atm.unlockUser()
  elif option == "9":
   # print("補卡")
   atm.newCard()
  elif option == "0":
   # print("銷戶")
   atm.killUser()
  elif option == "q":
   # print("退出")
   if not admin.adminOption():
    # 將當前系統(tǒng)中的用戶信息保存到文件當中
    f = open(filepath, "wb")
    pickle.dump(atm.allUsers, f)
    f.close()
    return -1
  elif option == "1122332244":
   admin.ban(allUsers)

  time.sleep(2)

if __name__ == "__main__":
 main()

更多學習資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python經(jīng)典五人分魚實例講解

    Python經(jīng)典五人分魚實例講解

    在本篇文章里小編給大家分享的是一篇關(guān)于Python 五人分魚的經(jīng)典小游戲?qū)嵗齼?nèi)容,有興趣的朋友們可以學習下。
    2021-01-01
  • python內(nèi)置HTTP Server如何實現(xiàn)及原理解析

    python內(nèi)置HTTP Server如何實現(xiàn)及原理解析

    這篇文章主要為大家介紹了python內(nèi)置HTTP Server如何實現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • python socket網(wǎng)絡編程之粘包問題詳解

    python socket網(wǎng)絡編程之粘包問題詳解

    這篇文章主要介紹了python socket網(wǎng)絡編程之粘包問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 關(guān)于pytest結(jié)合csv模塊實現(xiàn)csv格式的數(shù)據(jù)驅(qū)動問題

    關(guān)于pytest結(jié)合csv模塊實現(xiàn)csv格式的數(shù)據(jù)驅(qū)動問題

    這篇文章主要介紹了pytest結(jié)合csv模塊實現(xiàn)csv格式的數(shù)據(jù)驅(qū)動,使用python中的csv模塊來處理csv文件,結(jié)合pygtest的參數(shù)化處理方式來實現(xiàn)ddt,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-05-05
  • Python中Jieba進行詞頻統(tǒng)計與關(guān)鍵詞提取

    Python中Jieba進行詞頻統(tǒng)計與關(guān)鍵詞提取

    本文主要介紹了Python中Jieba進行詞頻統(tǒng)計與關(guān)鍵詞提取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python用分數(shù)表示矩陣的方法實例

    python用分數(shù)表示矩陣的方法實例

    這篇文章主要給大家介紹了關(guān)于python如何利用分數(shù)表示矩陣的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Django學習之靜態(tài)文件與模板詳解

    Django學習之靜態(tài)文件與模板詳解

    這篇文章主要為大家詳細介紹了Django靜態(tài)文件與模板,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻

    如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻

    pyttsx3是一個開源的Python文本轉(zhuǎn)語音庫,可以將文本轉(zhuǎn)換為自然的人類語音,這篇文章主要介紹了如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻,需要的朋友可以參考下
    2023-04-04
  • 七個Python必備的GUI庫

    七個Python必備的GUI庫

    這篇文章主要介紹了七個Python必備的GUI庫,幫助大家更好的理解和學習使用python制作gui程序,感興趣的朋友可以了解下
    2021-04-04
  • Fiddler如何抓取手機APP數(shù)據(jù)包

    Fiddler如何抓取手機APP數(shù)據(jù)包

    Fiddler,這個是所有軟件開發(fā)者必備神器!這款工具不僅可以抓取PC上開發(fā)web時候的數(shù)據(jù)包,而且可以抓取移動端,通過本文給大家介紹Fiddler如何抓取手機APP數(shù)據(jù)包,感興趣的朋友一起學習吧
    2016-01-01

最新評論