最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

本文實(shí)例為大家分享了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 # 后面到了鎖卡的時(shí)候需要有個(gè)卡的狀態(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("*   開(kāi)戶(1)   查詢(2)   *")
  print("*   取款(3)   存款(4)   *")
  print("*   轉(zhuǎn)賬(5)   改密(6)   *")
  print("*   鎖定(7)   解鎖(8)   *")
  print("*   補(bǔ)卡(9)   銷戶(0)   *")
  print("*     退出(q)      *")
  print("****************************************************")

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

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

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


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

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

  onePasswd = input("請(qǐng)?jiān)O(shè)置密碼:")
  # 驗(yàn)證密碼
  if not self.checkPasswd(onePasswd):
   print("輸入密碼錯(cuò)誤,開(kāi)戶失??!")
   return -1

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

  user = User(name, idCard, phone, card)
  # 存到字典
  self.allUsers[cardStr] = user
  print("開(kāi)戶成功!請(qǐng)記住卡號(hào):" + cardStr)

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

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

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

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

  # 開(kāi)始取款
  amount = int(input("驗(yàn)證成功!請(qǐng)輸入取款金額:"))
  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("請(qǐng)輸入您的卡號(hào):")
  # 驗(yàn)證是否存在該卡號(hào)
  user = self.allUsers.get(cardNum)
  if not user:
   print("該卡號(hào)不存在,存款失??!")
   return -1
  # 判斷是否鎖定
  if user.card.cardLock:
   print("該卡已鎖定!請(qǐng)解鎖后再使用其功能!")
   return -1

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

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

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

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

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

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

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

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

  # 開(kāi)始改密
  newPasswd = input("請(qǐng)輸入新密碼:")
  if not self.checkPasswd(newPasswd):
   print("密碼錯(cuò)誤,改密失敗!")
   return -1
  user.card.cardPasswd = newPasswd
  print("改密成功!請(qǐng)稍后!")

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


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

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

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

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

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

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

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


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

 # 管理員開(kāi)機(jī)
 admin.printAdminView()
 if admin.adminOption():
  return -1

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

 # 提款機(jī)對(duì)象
 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("請(qǐng)輸入您的操作:")
  if option == "1":
   # print('開(kāi)戶')
   atm.creatUser()
  elif option == "2":
   # print("查詢")
   atm.searchUserInfo()
  elif option == "3":
   # print("取款")
   atm.getMoney()
  elif option == "4":
   # print("存儲(chǔ)")
   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("補(bǔ)卡")
   atm.newCard()
  elif option == "0":
   # print("銷戶")
   atm.killUser()
  elif option == "q":
   # print("退出")
   if not admin.adminOption():
    # 將當(dāng)前系統(tǒng)中的用戶信息保存到文件當(dā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()

更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開(kāi)發(fā)》。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中使用裝飾器時(shí)需要注意的一些問(wèn)題

    Python中使用裝飾器時(shí)需要注意的一些問(wèn)題

    這篇文章主要介紹了Python中使用裝飾器時(shí)需要注意的一些問(wèn)題,裝飾器是Python學(xué)習(xí)進(jìn)階中的重要知識(shí)點(diǎn),需要的朋友可以參考下
    2015-05-05
  • 使用Python對(duì)微信好友進(jìn)行數(shù)據(jù)分析

    使用Python對(duì)微信好友進(jìn)行數(shù)據(jù)分析

    這篇文章主要介紹了使用Python對(duì)微信好友進(jìn)行數(shù)據(jù)分析的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 詳解Python爬取并下載《電影天堂》3千多部電影

    詳解Python爬取并下載《電影天堂》3千多部電影

    這篇文章主要介紹了Python爬取并下載《電影天堂》3千多部電影,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • OpenCV實(shí)現(xiàn)單目攝像頭對(duì)圖像目標(biāo)測(cè)距

    OpenCV實(shí)現(xiàn)單目攝像頭對(duì)圖像目標(biāo)測(cè)距

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)單目攝像頭對(duì)圖像目標(biāo)測(cè)距,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解

    Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解

    今天小編就為大家分享一篇Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • pandas通過(guò)字典生成dataframe的方法步驟

    pandas通過(guò)字典生成dataframe的方法步驟

    這篇文章主要介紹了pandas通過(guò)字典生成dataframe的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python之求任意正整數(shù)的階乘方式

    Python之求任意正整數(shù)的階乘方式

    這篇文章主要介紹了Python之求任意正整數(shù)的階乘方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python中yield函數(shù)的用法詳解

    python中yield函數(shù)的用法詳解

    這篇文章主要為大家詳細(xì)介紹了python中yield函數(shù)的用法,數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python使用pycharm導(dǎo)入pymysql教程

    Python使用pycharm導(dǎo)入pymysql教程

    這篇文章主要介紹了Python使用pycharm導(dǎo)入pymysql教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Python裝飾器使用你可能不知道的幾種姿勢(shì)

    Python裝飾器使用你可能不知道的幾種姿勢(shì)

    這篇文章主要給大家介紹了關(guān)于Python裝飾器使用你可能不知道的幾種姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論

大洼县| 来安县| 淮滨县| 白河县| 鄂尔多斯市| 扎囊县| 清河县| 平邑县| 泽库县| 页游| 泰安市| 凤凰县| 买车| 邢台县| 阿合奇县| 峡江县| 罗源县| 汶川县| 罗山县| 会昌县| 桐乡市| 长岛县| 余干县| 石首市| 义乌市| 大兴区| 惠东县| 霞浦县| 牙克石市| 于田县| 乐至县| 平遥县| 宝兴县| 双城市| 施秉县| 乌鲁木齐市| 孙吴县| 馆陶县| 许昌市| 临汾市| 大新县|