Python写银行系统

简介: Python两种银行系统对比简单易懂适合小白,都是干货,看完收获满满。

简介

两种都是静态银行系统,采用的知识都差不多,接下来大家来看看那种写的好。

静态银行系统(一)

此银行系统有11种功能,分别是开户、查询、取款、存款、转账、改密、冻结、解冻、补卡、销户以及退出,功能挺齐全的。

设置访问页面和菜单页面

import time
import time
import os
import pickle

class Admin(object):
    admin = 'admin'
    passwd = 'passwd'

    def AdminView(self):
        print("**********************************************")
        print("*               欢迎登录银行系统               *")
        print("**********************************************")

    #菜单界面
    def FunctionView(self):
        print("**********************************************")
        print("*           (1)开户     (2)查询              *")
        print("*           (3)取款     (4)存款               *")
        print("*           (5)转账     (6)改密               *")
        print("*           (7)锁定     (8)解锁               *")
        print("*           (9)补卡    (0)销户              *")
        print("*                  退出(q)                   *")
        print("**********************************************")

管理员登录验证

    def Check(self):
        inputAdmin = input("请输入管理员账户: ")
        if self.admin != inputAdmin:
            print("管理员账号输入错误!")
            return -1
        inputPasswd = input("请输入管理员密码: ")
        if self.passwd != inputPasswd:
            print("管理员密码输入错误!")
            return -1
        print("操作成功,请稍后...")
        time.sleep(2)
        return 0

开户功能

import random
class ATM(object):
    def __init__(self, allusers):
        #储存信息
        self.allUsers = allusers
#用户建立
    def CreatUser(self):
        name = input("请输入您的姓名:")
        idCard = input("请输入您的身份证号:")
        phone = input("请输入您的电话号码:")
        preMoney = int(input("请输入您的预存款金额:"))
        if preMoney < 0:
                print("预存款输入有误,开户失败......")
                return -1
        onePasswd = input("请输入密码:")
        if not self.checkPasswd(onePasswd):
            print("密码输入有误,开户失败......")
            return -1
            # 生成卡号
        cardStr = self.creatcardStr()

        card = Card(cardStr, onePasswd, preMoney)
        user = Person(name, idCard, phone, card)
        self.allUsers[cardStr] = user
        print("开户成功,请牢记卡号(%s)......" % cardStr)

查询功能

        # 查询余额
    def searchUserInfo(self):
        cardnum = input("请输入您的卡号:")
            # 验证是否存在该卡号
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
            # 判断是否锁定
        if user.card.cardlock == True:
            print("该卡已经被锁定,请解锁后再使用其他操作......")
            return -1
            # 验证密码
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,该卡已经被锁定......")
            user.card.cardlock = True
            return -1
            # 查询成功,输出结果
        print("账户:%s     余额:%d" % (user.card.cardStr, int(user.card.cardmoney)))

取款功能

        # 取款
    def getMoney(self):
        cardnum = input("请输入您的卡号:")
            # 验证是否存在该卡号
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
            # 判断是否锁定
        if user.card.cardlock == True:
            print("该卡已经被锁定,请解锁后再使用其他操作......")
            return -1
            # 验证密码
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,该卡已经被锁定......")
            user.card.cardlock = True
            return -1
        print('您目前余额为%d'% user.card.cardmoney)
        getmoney = int(input("请输入您取款金额:"))
        nowmoney = int(user.card.cardmoney)
        if getmoney > nowmoney:
            print("余额不足,取款失败......")
            return -1
        nowmoney -= getmoney
        user.card.cardmoney = nowmoney
        print("取款成功,您目前余额为:%d" % user.card.cardmoney)

存款功能

        # 存款
    def saveMoney(self):
        cardnum = input("请输入您的卡号:")
            # 验证是否存在该卡号
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
            # 判断是否锁定
        if user.card.cardlock == True:
            print("该卡已经被锁定,请解锁后再使用其他操作......")
            return -1
            # 验证密码
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,该卡已经被锁定......")
            user.card.cardlock = True
            return -1
        savemoney = int(input("请输入您存款金额:"))
        nowmoney = int(user.card.cardmoney)
        nowmoney += savemoney
        user.card.cardmoney = nowmoney
        print("取款成功,您目前余额为:%d" % user.card.cardmoney)

转账功能

        # 转账
    def transferMoney(self):
        cardnum = input("请输入您的卡号:")
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
        if user.card.cardlock == True:
            print("该卡已经被锁定,请解锁后再使用其他操作......")
            return -1
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,该卡已经被锁定......")
            user.card.cardlock = True
            return -1
        print("账户:%s     余额:%d" % (user.card.cardStr, int(user.card.cardmoney)))
        tocardStr = input("请输入您希望转账的账户:")
        usertoid = self.allUsers.get(tocardStr)
        if not usertoid:
            print("该卡号不存在,查询失败......")
            return -1
        tomoney = int(input("请输入您希望转账的金额:"))
        nowmoney = int(user.card.cardmoney)
        tonowmoney = int(usertoid.card.cardmoney)
        if tomoney > nowmoney:
            print("余额不足,转账失败......")
            return -1
        nowmoney -= tomoney
        tonowmoney += tomoney
        user.card.cardmoney = nowmoney
        usertoid.card.cardmoney = tonowmoney
        print("转账成功,您目前余额为:%d" % user.card.cardmoney)

改密功能

        # 改密码
    def changePasswd(self):
        cardnum = input("请输入您的卡号:")
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
        if user.card.cardlock == True:
            print("该卡已经被锁定,请解锁后再使用其他操作......")
            return -1
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,该卡已经被锁定......")
            user.card.cardlock = True
            return -1
        newpasswd = input("请输入新密码:")
        newpasswd2 = input("请确认新密码:")
        if newpasswd != newpasswd2:
            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
            # 锁定
        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
        temid = input("请输入您的身份证号:")
        if temid != 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
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误......")
            return -1
            # 重新生成卡号
        newcard = self.creatcardStr()
        user.card.cardStr = newcard
        print("补卡办理成功,这是您的新卡号:%s" % user.card.cardStr)

销户功能

        # 销户
    def killUser(self):
        cardnum = input("请输入您的卡号:")
        user = self.allUsers.get(cardnum)
        if not user:
            print("该卡号不存在,查询失败......")
            return -1
        if not self.checkPasswd(user.card.cardpasswd):
            print("密码错误,销户失败......")
            return -1
        self.allUsers.pop(cardnum)
        print("该账户已经被销户......")

        # 验证密码,循环三次没有正确就输出错误
    def checkPasswd(self, realPasswd):
        for i in range(3):
            temPasswd = input("请确认密码:")
            if temPasswd == realPasswd:
                return True
        return False

开户功能卡号生成方式

        # 随机生成卡号
    def creatcardStr(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
class Person(object):
    def __init__(self,name,idCard,phone,card):
        self.name = name
        self.idCard = idCard
        self.phone = phone
        self.card = card
class Card(object):
    def __init__(self,cardStr,cardpasswd,cardmoney):
        self.cardStr = cardStr
        self.cardpasswd = cardpasswd
        self.cardmoney = cardmoney
        self.cardlock = False

主程序

def main():
    # 界面对象
    admin = Admin()

    # 管理员开机
    admin.AdminView()
    if admin.Check():
        return -1

    # 存储信息的文件是否存在
    if os.path.exists("userinfo.txt"):
        filepath = "userinfo.txt"
    else:
        open("userinfo.txt", "wb")
        filepath = "userinfo.txt"

    if os.path.getsize(filepath):
        f = open(filepath, "rb")
        allusers = pickle.load(f)
    else:
        allusers = "正在打开功能菜单"
        allusers = {}
    print((allusers))
    atm = ATM(allusers)

    while True:
        admin.FunctionView()
        option = input("请输入您的操作:")
        if option == '1':
            # 开户
            atm.CreatUser()
        elif option == '2':
            # 查询
            atm.searchUserInfo()
        elif option == '3':
            # 取款
            atm.getMoney()
        elif option == '4':
            # 存款
            atm.saveMoney()
        elif option == '5':
            # 转账
            atm.transferMoney()
        elif option == '6':
            # 改密码
            atm.changePasswd()
        elif option == '7':
            # 锁定
            atm.lockUser()
        elif option == '8':
            # 解锁
            atm.unlockUser()
        elif option == '9':
            # 补卡
            atm.newCard()
        elif option == '0':
            # 销户
            atm.killUser()
        elif option == 'q':
            # 退出
            if not admin.Check():
                # 将当前系统中的用户信息保存到文件中
                f = open(filepath, "wb")
                pickle.dump(atm.allUsers, f)
                f.close()
                return -1

        time.sleep(2)

启动

if __name__ == "__main__":
    main()

静态银行系统(二)

此银行系统有6种功能,分别是开户、查询、取款、存款、转账以及退出,每选择一个功能都要确保用户信息是否正确。

管理员登录页面

class Preson(object):
    def __init__(self):
        self.name = ''
        self.Passwd = ''
        self.cardCode = 0
        self.money = 0
class Bank(object):
    dict1 = {}
    list1 = []

开户功能

    def open(self):        #开户
        per1 = Preson()
        per1.name = input("请输入用户名:")
        per1.Passwd = input("请输入登录密码:")
        c = per1.name
        Bank.dict1[c] = per1
        print("注册成功")

查询功能

    def see(self):           #查询方法
        a = input("请输入您的用户名")
        if a not in Bank.dict1.keys():       #判断是否存在用户名
            print("用户名不存在,返回上一级")
            return -1
        if Bank.dict1[a].cardCode >= 3:      #判断错误次数是否已有三次
            print("已错误3次")
            print("*****返回上一级*****")
            return -1
        else:
            while Bank.dict1[a].cardCode < 3:
                b = input("请输入密码")
                if b == Bank.dict1[a].Passwd:          #判断密码是否正确
                    Bank.dict1[a].cardCode = 0
                    print("密码正确,您当前余额为:",Bank.dict1[a].money)
                    print("*****返回上一级*****")
                    return -1
                else:
                    print("密码错误,请重新输入")
                    Bank.dict1[a].cardCode += 1
            print("已输入错误3次")
            print("*****返回上一级*****")

存款功能

    def saves(self):         #存款方法
        a = input("请输入用户名")
        if a not in Bank.dict1.keys():
            print("用户名不存在,返回上一级")
            return -1
        if Bank.dict1[a].cardCode >= 3:
            print("已错误3次")
            print("*****返回上一级*****")
            return -1
        else:
            while Bank.dict1[a].cardCode < 3:
                b = input("请输入密码")
                if b == Bank.dict1[a].Passwd:
                    Bank.dict1[a].cardCode = 0
                    while True:
                        c= int(input("密码正确,请输入您的存款金额:"))
                        if c <= 0:
                            print("存款金额必须大于0")
                        else:
                            break
                    Bank.dict1[a].money += c
                    print("存款成功您当前余额为:", Bank.dict1[a].money)
                    print("*****正在返回上一级*****")
                    return -1
                else:
                    print("密码错误,请重新输入")
                    Bank.dict1[a].cardCode += 1
            print("已输入错误3次")
            print("*****返回上一级*****")
    def draw(self):     #取款
        a = input("请输入您的用户名")
        if a not in Bank.dict1.keys():
            print("用户名不存在,返回上一级")
            return -1
        if Bank.dict1[a].cardCode >= 3:
            print("已错误3次")
            print("*****返回上一级*****")
            return -1
        else:
            while Bank.dict1[a].cardCode < 3:
                b = input("请输入密码")
                if b == Bank.dict1[a].Passwd:
                    Bank.dict1[a].cardCode = 0
                    while True:
                        c = int(input("密码正确,请输入您的取款金额:"))
                        if c >  Bank.dict1[a].money:
                            print("余额不足,请重新输入取款金额")
                        elif c <= 0:
                            print("取款金额必须大于0")
                        else:
                            break
                    Bank.dict1[a].money -= c
                    print("取款成功您当前余额为:", Bank.dict1[a].money)
                    print("*****正在返回上一级*****")
                    return -1
                else:
                    print("密码错误,请重新输入")
                    Bank.dict1[a].cardCode += 1
            print("已输入错误3次")
            print("*****返回上一级*****")

转账功能

    def transfer(self):#转账
        a = input("请输入您的用户名")
        if a not in Bank.dict1.keys():
            print("用户名不存在,返回上一级")
            return -1
        if Bank.dict1[a].cardCode >= 3:
            print("已错误3次")
            print("*****返回上一级*****")
            return -1
        else:
            while Bank.dict1[a].cardCode < 3:
                b = input("请输入密码")
                if b == Bank.dict1[a].Passwd:
                    Bank.dict1[a].cardCode = 0
                    c = input("密码正确,请输入你想转账的卡号:")
                    if c not in Bank.dict1.keys():
                        print("用户名不存在,返回上一级")
                        return -1
                    if Bank.dict1[c].cardCode >= 3:
                        print("密码错误次数过多")
                        print(".*****返回上一级*****")
                        return -1
                    if a == c:
                        print("不能给自己转账,返回上一级")
                        return -1
                    else:
                        while True:
                            d = int(input("请输入您想转账的金额:"))
                            if d > Bank.dict1[a].money:
                                print("余额不足,请重新输入转账金额")
                            elif d <= 0:
                                print("转账金额必须大于0")
                            else:
                                break
                        Bank.dict1[a].money -= d
                        Bank.dict1[c].money += d
                        print("转账成功,您当前余额为:", Bank.dict1[a].money )
                    print("*****正在返回上一级*****")
                    return -1
                else:
                    print("密码错误,请重新输入")
                    Bank.dict1[a].cardCode += 1
            print("已输入错误3次")
            print("*****返回上一级*****")
    def changepw(self):
        a = input("请输入您的用户名")
        if a not in Bank.dict1.keys():
            print("用户名不存在,返回上一级")
            return -1
        if Bank.dict1[a].cardCode >= 3:
            print("已错误3次")
            print("*****返回上一级*****")
            return -1
        else:
            while Bank.dict1[a].cardCode < 3:
                b = input("请输入密码")
                if b == Bank.dict1[a].Passwd:
                    c = input("请输入新的密码....")
                    while c != input("请确认您的新密码"):
                        c = input("请输入新的密码....")
                    Bank.dict1[a].Passwd = c
                    print("密码重置成功")
                    print("*****返回上一级*****")
                    return -1
                else:
                    print("密码错误,请重新输入")
                    Bank.dict1[a].cardCode += 1
            print("已输入错误3次")
            print("*****返回上一级*****")

退出功能

    def exit1(self):
        exit()

主程序

    def admin_register(self):
        print("欢迎使用本系统")
        while 1:
            admin = input("请输入管理员账号:")
            password = input("请输入管理员密码:")
            if admin == "admin" and password == "12345":
                print("登录成功,正在跳转......")
                break
            else:
                print("账号或密码错误,请重新输入")
        while 1:
            print("*********************************")
            print("*\t1、开户\t\t\t2、查询\t\t*\n*\t3、存款\t\t\t4、取款\t\t*"
                  "\n*\t5、转账\t\t\t6、修改密码\t*\n*\t\t\t7、退出\t\t\t\t*")
            print("*********************************")
            a = input("请输入操作:")
            if a == "1":
                self.open()
            elif a == "2":
                self.see()
            elif a == "3":
                self.saves()
            elif a == "4":
                self.draw()
            elif a == "5":
                self.transfer()
            elif a == "6":
                self.changepw()
            elif a == "7":
                self.exit1()
            else:
                print("输入错误,请重新输入......")
a = Bank()
a.admin_register()

后记

这次的小项目学会了吗,多支持一下哦!

这两种Python写的银行系统喜欢那种呢?

如果你觉得文章写的还不错,欢迎你帮助宣传扩散一下,这将是我继续更新的动力,切忌不要白嫖,会让自己变得廉价,好的文章值得分享。

害怕找不到的话请记得点赞评论关注哦!

相关文章
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
20 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
26天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
249 55
|
7天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
2月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
77 4
|
14天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
109 66
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
173 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1天前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习果蔬识别系统实现
本项目基于Python和TensorFlow,使用ResNet卷积神经网络模型,对12种常见果蔬(如土豆、苹果等)的图像数据集进行训练,构建了一个高精度的果蔬识别系统。系统通过Django框架搭建Web端可视化界面,用户可上传图片并自动识别果蔬种类。该项目旨在提高农业生产效率,广泛应用于食品安全、智能农业等领域。CNN凭借其强大的特征提取能力,在图像分类任务中表现出色,为实现高效的自动化果蔬识别提供了技术支持。
基于Python深度学习果蔬识别系统实现
|
4天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
18 3
|
16天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
47 5
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
42 4
基于Python深度学习的果蔬识别系统实现