返回顶部
首页 > 资讯 > 后端开发 > Python >基于python实现银行管理系统
  • 905
分享到

基于python实现银行管理系统

2024-04-02 19:04:59 905人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、python银行管理系统二、分析部分三、代码部分一、Python银行管理系统 二、分析部分 三、代码部分 import random class bankU

一、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()

到此这篇关于基于python实现银行管理系统的文章就介绍到这了,更多相关python银行管理系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于python实现银行管理系统

本文链接: https://lsjlt.com/news/123987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于python实现银行管理系统
    目录一、python银行管理系统二、分析部分三、代码部分一、python银行管理系统 二、分析部分 三、代码部分 import random class bankU...
    99+
    2024-04-02
  • 如何基于python实现银行管理系统
    这篇文章将为大家详细讲解有关如何基于python实现银行管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
  • java实现银行ATM管理系统
    本文实例为大家分享了java实现银行ATM管理系统的具体代码,供大家参考,具体内容如下 功能 账户类、首页设计 分析 ① 每个用户一个账户对象,需要设计账户类,账户类至少包含(卡号、...
    99+
    2024-04-02
  • Java基于对象流实现银行系统
    Java基于对象流实现银行系统的具体代码,供大家参考,具体内容如下 系统特点: 数据持久化到文件中,系统启动后,加载文件中数据到集合中,相当于做了一个缓存。文件读写使用的是对象流(O...
    99+
    2024-04-02
  • 基于python实现图书管理系统
    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 添加新书 查询 借阅 二次添加新书(读取已有的.xls并修改) 代码: imp...
    99+
    2024-04-02
  • Java实现银行账户管理子系统
    本文实例为大家分享了Java实现银行账户管理子系统的具体代码,供大家参考,具体内容如下 所用到的知识点:面向对象基础语法,封装,方法覆盖(重写)、继承、多态 话不多说,直接上代码 A...
    99+
    2024-04-02
  • python基于Tkinter实现人员管理系统
    前言 Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为Mongodb 代码 时间宝贵!直接上代码! from tkinter...
    99+
    2024-04-02
  • Java实现基础银行ATM系统
    目录一、前言二、使用步骤三、运行效果图:本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下 一、前言 银行ATM系列简单操作 二、使用步骤 1.创建...
    99+
    2024-04-02
  • Java如何实现银行账户管理子系统
    本文小编为大家详细介绍“Java如何实现银行账户管理子系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java如何实现银行账户管理子系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。所用到的知识点:面向对象基...
    99+
    2023-06-30
  • 基于Python实现的购物商城管理系统
    完整项目地址: https://github.com/kongxiangchx/Shopping-mall-management-system 简介 本项目使用Python语言编写,实现了顾客端和商家端。 功能 ...
    99+
    2022-06-02
    python 购物管理系统 python 商城系统
  • python基于Tkinter怎么实现人员管理系统
    小编给大家分享一下python基于Tkinter怎么实现人员管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为M...
    99+
    2023-06-21
  • 基于C++实现酒店管理系统
    现今大多数宾馆所提供的服务样式都各式各样,规模大小也是各有不同,但是归总下来,不可或缺的两类模块还是顾客和工作人员。由于对宾馆行业内部没有很深刻的理解,此次系统设计包括数据库和功能模...
    99+
    2024-04-02
  • 基于C++实现信息管理系统
    基于c++设计的信息管理系统,供大家参考,具体内容如下 1、使用类+函数实现2、使用STL容器的vector3、fstream的文件存储方式4、xls文件读入 写出5、数据的四大功能...
    99+
    2024-04-02
  • 基于C++实现职工管理系统
    本文实例为大家分享了C++实现职工管理系统的具体代码,供大家参考,具体内容如下 1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 利用C++来实现一个基于多态的职工管理...
    99+
    2024-04-02
  • 基于C#实现宿舍管理系统
    目录前言一、项目创建二、主页面设计三、主页面代码1.登录按钮2.退出按钮3.注册按钮4.SQL配置5.主页总体代码前言 本次项目主要是因为我们的大作业要求要求,因为网上C#的资源不太...
    99+
    2024-04-02
  • 基于Java实现考试管理系统
    目录项目简述项目运行项目技术效果图展示主要代码项目简述 本系统功能包括: 支持单选题、多选题、判断题支持学生(student)、教师(teacher)、管理员(admin)三种角色学...
    99+
    2024-04-02
  • C语言实现银行管理系统(文件操作)
    本文实例为大家分享了C语言实现银行管理系统的具体代码,供大家参考,具体内容如下 银行管理系统主要有五个模块组成: 1、查询账户信息2、存钱3、取款4、转账5、退出系统 测试文件:(首...
    99+
    2024-04-02
  • Java实现ATM银行管理系统(控制台版本)
    目录前言介绍创建抽象类Card类创建普通银行类继承Card创建普通信用卡继承Card创建普通医保卡继承CardATM主要方法业务类逻辑实现main方法测试启动类控制台打印前言介绍 最...
    99+
    2024-04-02
  • 基于Python实现简易学生信息管理系统
    目录一、系统简介二、步骤分析三、需求实现四、具体实现4.1 添加学生信息的函数4.2 删除学生信息的函数4.3 修改学生信息的函数4.4 查询学生信息的函数4.5 显示所有学生信息五...
    99+
    2024-04-02
  • 基于java SSM springboot实现景区行李寄存管理系统
    主要技术实现设计:spring、 springmvc、 springboot、 springboot security权限控制、mybatis 、session、 jquery 、 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作