主頁 > 知識(shí)庫 > 基于python實(shí)現(xiàn)銀行管理系統(tǒng)

基于python實(shí)現(xiàn)銀行管理系統(tǒng)

熱門標(biāo)簽:電話運(yùn)營(yíng)中心 呼叫中心市場(chǎng)需求 Win7旗艦版 百度AI接口 語音系統(tǒng) 客戶服務(wù) 硅谷的囚徒呼叫中心 企業(yè)做大做強(qiáng)

一、python銀行管理系統(tǒng)


二、分析部分


三、代碼部分

import random


class bankUser:
    # 卡號(hào),用戶姓名,身份證號(hào),手機(jī),預(yù)存,密碼
    Count_id = ""
    Count_Name = ""
    Count_IDCard = ""
    Count_phone = ""
    Count_Money = 0.00
    Count_password = ""
    Count_Root = True

    def __init__(self, Count_id, Count_IDCard, Count_Name, Count_phone, Count_Money, Count_password, Count_Root):
        self.Count_id = Count_id
        self.Count_IDCard = Count_IDCard
        self.Count_phone = Count_phone
        self.Count_Money = Count_Money
        self.Count_password = Count_password
        self.Count_Root = Count_Root
        self.Count_Name = Count_Name


class DaoServer:

    # 檢測(cè)賬號(hào)是否已經(jīng)被鎖
    def isLock(self, i_id):
        with open("F:\\userFile.txt", 'r') as seaFile:
            mes = seaFile.readlines()
            for index in mes:
                matchId = index.split("~")[0]
                if matchId == i_id and index.split("~")[6] is False:
                    return True
        pass
        return False

    # 作用1:開戶匹配是否有同樣的身份證注冊(cè)這個(gè)賬戶,有就返回假,沒有返回真。傳的參數(shù)是身份證號(hào)
    # 作用2:在查詢時(shí)看看是否存在這個(gè)賬號(hào)
    def searchBlock(self, IdCard):
        with open("F:\\userFile.txt", 'r') as seaFile:
            mes = seaFile.readlines()
            # id~pass~idcard~name~phone~money
            for index in mes:
                matchIdcard = index.split("~")[1]
                matchId = index.split("~")[0]
                if matchIdcard == IdCard or matchId == IdCard:
                    return False
        pass
        return True

    # 注冊(cè)賬戶
    def register(self, user):
        if self.searchBlock(user.Count_IDCard):
            # 開始開戶
            a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
            # 產(chǎn)生的一個(gè)賬號(hào)
            numArray = random.sample(a, 6)
            # id~pass~idcard~name~phone~money
            # Count_id, Count_IDCard, Count_phone, Count_Money, Count_password, Count_Root
            # user.Count_id = ''.join(str(k) for k in numArray)
            # 用于生成的賬戶是否已經(jīng)存在,如果存在就重新生成
            while not self.searchBlock(user.Count_id):
                numArray = random.sample(a, 6)
                # Count_id, Count_IDCard, Count_phone, Count_Money, Count_password, Count_Root
                user.Count_id = ''.join(str(k) for k in numArray)
            line = user.Count_id + "~" + user.Count_IDCard + "~" + user.Count_Name + "~" + user.Count_phone + "~" + str(
                user.Count_Money) + "~" + user.Count_password + "~" + str(user.Count_Root) + "\n"
            with open("F:\\userFile.txt", 'a+') as writeFile:
                writeFile.writelines(line)
                pass
            return True
        else:
            return False

    # 驗(yàn)證密碼和賬號(hào)是否一致
    # 正確返回user對(duì)象,否則返回Null
    def proof(self, pId, pPassword):
        with open("F:\\userFile.txt", 'r') as proofFile:
            proofMes = proofFile.readlines()
            for pIndex in proofMes:
                fId = pIndex.split("~")[0]
                fPassword = pIndex.split("~")[5]
                if fId == pId and fPassword == pPassword:
                    f = bankUser(pIndex.split("~")[0], pIndex.split("~")[1], pIndex.split("~")[2], pIndex.split("~")[3],
                                 pIndex.split("~")[4], pIndex.split("~")[5], pIndex.split("~")[6])
                    return f
            return None

    # 鎖控制函數(shù) + 還可以進(jìn)行重新數(shù)據(jù)更新后重新寫入數(shù)據(jù)
    # 數(shù)據(jù)更新函數(shù)
    def Lock(self, lockU, res):
        lId = lockU.Count_id
        r_mes = []
        with open('F:\\userFile.txt', 'r') as rFile:
            r_mes = rFile.readlines()
            for r_index in r_mes:
                if r_index.split("~")[0] == lId:
                    line = lId + "~" + r_index.split("~")[1] + "~" + r_index.split("~")[2] + "~" + r_index.split("~")[
                        3] + "~" + str(lockU.Count_Money) + "~" + r_index.split("~")[5] + "~" + str(res) + "\n"
                    r_mes.remove(r_index)
                    r_mes.append(line)
                    break
        pass

        with open('F:\\userFile.txt', 'w') as file:
            pass

        with open('F:\\userFile.txt', 'w') as file:
            for i in r_mes:
                file.writelines(i)
            pass

    # 查詢賬戶
    def search(self, sId, sPassword):
        # 看看有沒有這個(gè)賬戶
        # 參數(shù):賬戶
        if not self.searchBlock(sId):

            # 存在這個(gè)賬戶,然后進(jìn)行賬戶密碼驗(yàn)證
            # 查看是否被鎖定
            if self.isLock(sId):
                print("賬號(hào)有危險(xiǎn),程序自動(dòng)退出!")
                exit(0)
            res = self.proof(sId, sPassword)
            n = 1

            while res is None and n = 3:
                sPassword = input("密碼有誤,請(qǐng)重新輸入:")
                n = n + 1
                res = self.proof(sId, sPassword)

            if res is None:
                # 鎖住,返回
                self.Lock(sId, False)
                print("有危險(xiǎn),賬號(hào)已經(jīng)鎖?。?)
                return None
            else:
                # 打印信息
                print("=" * 50)
                print("||", " " * 13, res.Count_Name, " 先生(女士)", " " * 13, "||")
                print("||\t賬戶:", res.Count_id, " " * 6, "金額:", res.Count_Money, " " * 13, "||")
                print("=" * 50)
                return res
        else:
            print("本行沒有這個(gè)賬戶!")
            return None
        pass

    # 取款 | 存款
    #   1     2
    def getOrSaveMoney(self, flag, gId, gPassword):
        getRes = self.search(gId, gPassword)
        if getRes is None:
            return None
        else:
            if flag is 1:
                money = int(input("請(qǐng)輸入你要取的金額:"))
                getRes.Count_Money = int(getRes.Count_Money) - money
                if money = 0 or money > int(getRes.Count_Money):
                    print("輸入有誤")
                    return getRes
            else:
                money = int(input("請(qǐng)輸入你要存的金額:"))
                getRes.Count_Money = int(getRes.Count_Money) + money
            self.Lock(getRes, True)
            print(getRes.Count_Money)
            return getRes

    # 獲取轉(zhuǎn)向那個(gè)人的目標(biāo)錢數(shù)
    def getGoalMoey(self, goalId):
        with open("F:\\userFile.txt", 'r') as seaFile:
            mes = seaFile.readlines()
            for index in mes:
                if index.split("~")[0] == goalId:
                    return int(index.split("~")[4])
        pass

    # 轉(zhuǎn)賬
    def Transfer(self, tId, tPa):
        rRes = self.search(tId, tPa)
        if rRes is not None:

            if self.isLock(tId):
                print("此賬號(hào)有危險(xiǎn),程序自動(dòng)退出!")
                exit(0)

            # 轉(zhuǎn)向賬號(hào)
            goalId = input("請(qǐng)輸入你要轉(zhuǎn)向的那個(gè)人的賬號(hào):")
            if self.searchBlock(goalId):
                print("本行沒有 ", goalId, " 這個(gè)賬戶")
            else:
                much = int(input("請(qǐng)輸入你要轉(zhuǎn)的金額:"))
                if much  0 or much > int(rRes.Count_Money):
                    print("輸入有誤,即將退出...")
                    return None
                else:
                    u = bankUser(goalId, "", "", "", str(self.getGoalMoey(goalId) + much), "", True)
                    # def Lock(self, lockU, res):
                    self.Lock(u, True)
                    rRes.Count_Money = int(rRes.Count_Money) - much
                    self.Lock(rRes, True)
                    print("已經(jīng)完成轉(zhuǎn)賬!")
        else:
            print("本行沒有 ", tId, " 這個(gè)賬戶")


def welcomeView():
    print("*" * 40)
    print("***", " " * 32, "***")
    print("***", " " * 32, "***")
    print("***", " " * 7, "歡迎登錄銀行管理系統(tǒng)", " " * 7, "***")
    print("***", " " * 32, "***")
    print("***", " " * 32, "***")
    print("*" * 40)


def functionView():
    print("*" * 50)
    print("***", " " * 42, "***")

    print("***\t1.開戶(1)", " " * 20, "2.查詢(2)\t   ***")
    print("***\t3.取款(3)", " " * 20, "5.存款(4)\t   ***")
    print("***\t5.轉(zhuǎn)賬(5)", " " * 20, "6.鎖定(6)\t   ***")
    print("***\t7.解鎖(7)", " " * 32, "***")
    print("***", " " * 42, "***")
    print("***\t退出(Q)", " " * 35, "***")
    print("***", " " * 42, "***")
    print("*" * 50)




welcomeView()
print("歡迎管理員前來工作:")
b = True
m_id = input("請(qǐng)輸入管理員賬號(hào):")
while b:
    if m_id == "admine":
        break
    else:
        m_id = input("請(qǐng)重新輸入管理員賬號(hào):")
pas = input("請(qǐng)輸入管理員密碼:")
a = True
m_pas = input("請(qǐng)輸入管理員密碼:")
while a:
    if m_pas == "123":
        break
    else:
        m_pas = input("請(qǐng)重新輸入管理員密碼:")

functionView()
type = input("請(qǐng)輸入你的操作:")
while type is not 'Q':
    if type == "1":
        u_name = input("請(qǐng)輸入你的姓名:")
        u_phone = input("請(qǐng)輸入你的電話:")
        u_idCard = input("請(qǐng)輸入你的身份證號(hào):")
        u_money = input("請(qǐng)輸入你的預(yù)存金額:")
        u_pass = input("請(qǐng)輸入你的密碼:")
        u_user = bankUser("", u_idCard, u_name, u_phone, int(u_money), u_pass, True)
        d1 = DaoServer()
        boo = d1.register(u_user)
        if boo:
            print("注冊(cè)成功!")
        else:
            print("注冊(cè)失??!")
    elif type == "2":
        s_id = input("請(qǐng)輸入你的賬戶:")
        s_pass = input("請(qǐng)輸入你的密碼:")
        d2 = DaoServer()
        d2.search(s_id, s_pass)
    elif type == "3":
        d3 = DaoServer()
        g_id = input("請(qǐng)輸入你的賬戶:")
        g_pass = input("請(qǐng)輸入你的密碼:")
        d3.getOrSaveMoney(1, g_id, g_pass)
    elif type == "4":
        d4 = DaoServer()
        s_id = input("請(qǐng)輸入你的賬戶:")
        s_pass = input("請(qǐng)輸入你的密碼:")
        d4.getOrSaveMoney(2, s_id, s_pass)
    elif type == "5":
        t_id = input("請(qǐng)輸入你的賬戶:")
        t_pass = input("請(qǐng)輸入你的密碼:")
        d5 = DaoServer()
        d5.Transfer(t_id, t_pass)
    elif type == "6":
        d5 = DaoServer()
        p_id = input("請(qǐng)輸入你的賬戶:")
        p_pass = input("請(qǐng)輸入你的密碼:")
        flag = d5.proof(p_id, p_pass)
        if flag is not None:
            d5.Lock(flag, False)
            print("鎖定成功!")
        else:
            print("鎖定失敗")
    elif type == "7":
        d6 = DaoServer()
        ul_id = input("請(qǐng)輸入你的賬戶:")
        ul_pass = input("請(qǐng)輸入你的密碼:")
        flag = d6.proof(ul_id, ul_pass)
        if flag is not None:
            d5.Lock(flag, True)
            print("解鎖成功")
        else:
            print("解鎖失敗")
    elif type =="Q" or type == "q":
        exit(0)
    else:
        print("輸入有誤請(qǐng)重新輸入:")
    type = input("請(qǐng)輸入你的操作:")
    functionView()

到此這篇關(guān)于基于python實(shí)現(xiàn)銀行管理系統(tǒng)的文章就介紹到這了,更多相關(guān)python銀行管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 教你用python實(shí)現(xiàn)一個(gè)無界面的小型圖書管理系統(tǒng)
  • python實(shí)現(xiàn)學(xué)生管理系統(tǒng)源碼
  • 基于python實(shí)現(xiàn)圖書管理系統(tǒng)
  • python實(shí)現(xiàn)簡(jiǎn)易名片管理系統(tǒng)
  • Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)
  • python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng)
  • 使用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
  • 利用Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的完整實(shí)例
  • 教你用Python實(shí)現(xiàn)簡(jiǎn)易版學(xué)生信息管理系統(tǒng)(含源碼)

標(biāo)簽:安康 山西 喀什 海南 濟(jì)南 崇左 長(zhǎng)沙 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于python實(shí)現(xiàn)銀行管理系統(tǒng)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266