基于python实现银行管理系统

一、python银行管理系统

基于python实现银行管理系统

基于python实现银行管理系统
基于python实现银行管理系统

二、分析部分

基于python实现银行管理系统
基于python实现银行管理系统

三、代码部分

import random


class bankUser:
    # 卡号,用户姓名,身份证号,手机,预存,密码
    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:

    # 检测账号是否已经被锁
    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:开户匹配是否有同样的身份证注册这个账户,有就返回假,没有返回真。传的参数是身份证号
    # 作用2:在查询时看看是否存在这个账号
    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

    # 注册账户
    def register(self, user):
        if self.searchBlock(user.Count_IDCard):
            # 开始开户
            a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
            # 产生的一个账号
            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)
            # 用于生成的账户是否已经存在,如果存在就重新生成
            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

    # 验证密码和账号是否一致
    # 正确返回user对象,否则返回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

    # 锁控制函数 + 还可以进行重新数据更新后重新写入数据
    # 数据更新函数
    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):
        # 看看有没有这个账户
        # 参数:账户
        if not self.searchBlock(sId):

            # 存在这个账户,然后进行账户密码验证
            # 查看是否被锁定
            if self.isLock(sId):
                print(\"账号有危险,程序自动退出!\")
                exit(0)
            res = self.proof(sId, sPassword)
            n = 1

            while res is None and n <= 3:
                sPassword = input(\"密码有误,请重新输入:\")
                n = n + 1
                res = self.proof(sId, sPassword)

            if res is None:
                # 锁住,返回
                self.Lock(sId, False)
                print(\"有危险,账号已经锁住!\")
                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(\"本行没有这个账户!\")
            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(\"请输入你要取的金额:\"))
                getRes.Count_Money = int(getRes.Count_Money) - money
                if money <= 0 or money > int(getRes.Count_Money):
                    print(\"输入有误\")
                    return getRes
            else:
                money = int(input(\"请输入你要存的金额:\"))
                getRes.Count_Money = int(getRes.Count_Money) + money
            self.Lock(getRes, True)
            print(getRes.Count_Money)
            return getRes

    # 获取转向那个人的目标钱数
    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

    # 转账
    def Transfer(self, tId, tPa):
        rRes = self.search(tId, tPa)
        if rRes is not None:

            if self.isLock(tId):
                print(\"此账号有危险,程序自动退出!\")
                exit(0)

            # 转向账号
            goalId = input(\"请输入你要转向的那个人的账号:\")
            if self.searchBlock(goalId):
                print(\"本行没有 \", goalId, \" 这个账户\")
            else:
                much = int(input(\"请输入你要转的金额:\"))
                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(\"已经完成转账!\")
        else:
            print(\"本行没有 \", tId, \" 这个账户\")


def welcomeView():
    print(\"*\" * 40)
    print(\"***\", \" \" * 32, \"***\")
    print(\"***\", \" \" * 32, \"***\")
    print(\"***\", \" \" * 7, \"欢迎登录银行管理系统\", \" \" * 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.转账(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(\"请输入管理员账号:\")
while b:
    if m_id == \"admine\":
        break
    else:
        m_id = input(\"请重新输入管理员账号:\")
pas = input(\"请输入管理员密码:\")
a = True
m_pas = input(\"请输入管理员密码:\")
while a:
    if m_pas == \"123\":
        break
    else:
        m_pas = input(\"请重新输入管理员密码:\")

functionView()
type = input(\"请输入你的操作:\")
while type is not \'Q\':
    if type == \"1\":
        u_name = input(\"请输入你的姓名:\")
        u_phone = input(\"请输入你的电话:\")
        u_idCard = input(\"请输入你的身份证号:\")
        u_money = input(\"请输入你的预存金额:\")
        u_pass = input(\"请输入你的密码:\")
        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(\"注册成功!\")
        else:
            print(\"注册失败!\")
    elif type == \"2\":
        s_id = input(\"请输入你的账户:\")
        s_pass = input(\"请输入你的密码:\")
        d2 = DaoServer()
        d2.search(s_id, s_pass)
    elif type == \"3\":
        d3 = DaoServer()
        g_id = input(\"请输入你的账户:\")
        g_pass = input(\"请输入你的密码:\")
        d3.getOrSaveMoney(1, g_id, g_pass)
    elif type == \"4\":
        d4 = DaoServer()
        s_id = input(\"请输入你的账户:\")
        s_pass = input(\"请输入你的密码:\")
        d4.getOrSaveMoney(2, s_id, s_pass)
    elif type == \"5\":
        t_id = input(\"请输入你的账户:\")
        t_pass = input(\"请输入你的密码:\")
        d5 = DaoServer()
        d5.Transfer(t_id, t_pass)
    elif type == \"6\":
        d5 = DaoServer()
        p_id = input(\"请输入你的账户:\")
        p_pass = input(\"请输入你的密码:\")
        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(\"请输入你的账户:\")
        ul_pass = input(\"请输入你的密码:\")
        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(\"输入有误请重新输入:\")
    type = input(\"请输入你的操作:\")
    functionView()
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容