使用python对银行信息管理系统的简单实现

2023-11-19

一.首先是用户属性的类

class account(object):
    # 储存用户信息的类
    def __init__(self, id1, name, tel, money):
        self.id = id1
        # 账户
        self.name = name
        # 姓名
        self.tel = tel
        # 电话
        self.money = money
        # 余额

    def __str__(self):
        return f'{self.id},{self.name},{self.tel},{self.money}'

二.然后就是整个管理类

1.储存信息的列表

    def __init__(self):
        self.users_list = []
        # 储存信息的列表

2.各个功能的选择部分函数,使用到的函数在下面都会有介绍

    def function(self):
        """调用各个函数的函数"""
        # 函数的说明文档,一般用来记录函数的作用
        self.load_users()
        # 将文件里的信息读取出来
        while True:
            self.show_menu()
            menu_num = int(input('请输入需要的功能序号'))
            if menu_num == 1:
                self.add_users()
            elif menu_num == 2:
                self.del_users()
            elif menu_num == 3:
                self.modify_users()
            elif menu_num == 4:
                self.query_users()
            elif menu_num == 5:
                self.show_users()
            elif menu_num == 6:
                self.save_users()
            elif menu_num == 7:
                print('感谢使用,再见')
                break
            else:
                print('输入有误,请重新输入')
                continue

3.展示功能菜单的函数

    def show_menu(self):
        """展示功能菜单"""
        print('1--添加用户')
        print('2--删除用户')
        print('3--修改用户')
        print('4--查询用户')
        print('5--显示所有用户')
        print('6--保存用户信息')
        print('7--退出系统')

4.添加用户信息的函数

    def add_users(self):
        """添加用户"""
        id1 = input('请输入用户账户')
        for i in self.users_list:
            # 增删改查里都有循环用来查找数据然后再进行对应操作
            if i.id == id1:
                print('输入的账户已存在!!!')
                return
        name = input('请输入用户姓名')
        tel = input('请输入用户电话')
        money = input('请输入用户余额')
        user = account(id1, name, tel, money)
        # 将所有信息放入列表
        self.users_list.append(user)
        # 将列表追加进储存的列表

5.删除用户信息的函数

    def del_users(self):
        """删除用户"""
        del_users_id = input('请输入需要删除用户的id')
        for i in self.users_list:
            if i.id == del_users_id:
                self.users_list.remove(i)
                break
        else:
            print('输入的用户不存在')

6.修改用户信息的函数

    def modify_users(self):
        """修改用户"""
        modify_users_id = input('请输入需要修改用户的id')
        for i in self.users_list:
            if i.id == modify_users_id:
                print('已查询到用户,下面请按提示输入修改后的信息')
                i.name = input('姓名:')
                i.tel = input('电话:')
                i.money = input('余额:')
                # 找到之后对姓名、电话、余额进行更改,可以做到单项更改,但是太麻烦了,也就是加上一些if而已
                # 账户不做更改,做更改还要判断账户是否重复,我嫌麻烦
                # 想加就把上面的for循环弄下来稍微改一下就行
                break
        else:
            print('输入的用户不存在')

7.查询用户信息的函数

    def query_users(self):
        """查询用户"""
        query_users_id = input('请输入需要查询用户的id')
        for i in self.users_list:
            if i.id == query_users_id:
                print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')
                break
        else:
            print('输入的用户不存在')

8.显示所有用户信息的函数

    def show_users(self):
        """显示所有用户"""
        for i in self.users_list:
            print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')

9.保存用户信息的函数

    def save_users(self):
        """将信息保存"""
        information = open('account.dat', 'w')
        new_list = [i.__dict__ for i in self.users_list]
        # ___dict___强调储存的是静态属性
        information.write(str(new_list))
        # 以字符串形式写入
        information.close()
        # 关闭文件

10.加载文件里信息的函数

    def load_users(self):
        """加载信息"""
        try:
            information = open('account.dat', 'r')
        except:
            information = open('account.dat', 'w')
        else:
            # 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]
            data = information.read()  # 字符串
            if len(data)!=0:
                # 判断读取的数据长度,如果没读到数据依旧运行下一行的代码会导致异常
                # 顺带着也当做优化了,没读取到也就不用运行转换循环了
                new_list = eval(data)
                self.users_list = [account(i['id'], i['name'], i['tel'], i['money']) for i in new_list]
                # 用循环将列表转换成字典形式
        finally:
            information.close()
            # 无论怎样最后都关闭文件

三.完整代码如下

class account(object):
    # 用户信息类
    def __init__(self, id1, name, tel, money):
        self.id = id1
        # 账户
        self.name = name
        # 姓名
        self.tel = tel
        # 电话
        self.money = money
        # 余额

    def __str__(self):
        return f'{self.id},{self.name},{self.tel},{self.money}'


class accountmanager(object):
    # 管理系统类
    def __init__(self):
        self.users_list = []
        # 储存信息的列表

    def function(self):
        """调用各个函数的函数"""
        # 函数的说明文档,一般用来记录函数的作用
        self.load_users()
        # 将文件里的信息读取出来
        while True:
            self.show_menu()
            menu_num = int(input('请输入需要的功能序号'))
            if menu_num == 1:
                self.add_users()
            elif menu_num == 2:
                self.del_users()
            elif menu_num == 3:
                self.modify_users()
            elif menu_num == 4:
                self.query_users()
            elif menu_num == 5:
                self.show_users()
            elif menu_num == 6:
                self.save_users()
            elif menu_num == 7:
                print('感谢使用,再见')
                break
            else:
                print('输入有误,请重新输入')
                continue

    def show_menu(self):
        """展示功能菜单"""
        print('1--添加用户')
        print('2--删除用户')
        print('3--修改用户')
        print('4--查询用户')
        print('5--显示所有用户')
        print('6--保存用户信息')
        print('7--退出系统')

    def add_users(self):
        """添加用户"""
        id1 = input('请输入用户账户')
        for i in self.users_list:
            # 增删改查里都有循环用来查找数据然后再进行对应操作
            if i.id == id1:
                print('输入的账户已存在!!!')
                return
        name = input('请输入用户姓名')
        tel = input('请输入用户电话')
        money = input('请输入用户余额')
        user = account(id1, name, tel, money)
        # 将所有信息放入列表
        self.users_list.append(user)
        # 将列表追加进储存的列表

    def del_users(self):
        """删除用户"""
        del_users_id = input('请输入需要删除用户的id')
        for i in self.users_list:
            if i.id == del_users_id:
                self.users_list.remove(i)
                break
        else:
            print('输入的用户不存在')

    def modify_users(self):
    """修改用户"""
    modify_users_id = input('请输入需要修改用户的id')
    for i in self.users_list:
        if i.id == modify_users_id:
            print('已查询到用户,下面请按提示输入修改后的信息')
            i.name = input('姓名:')
            i.tel = input('电话:')
            i.money = input('余额:')
            # 找到之后对姓名、电话、余额进行更改,可以做到单项更改,但是太麻烦了,也就是加上一些if而已
            # 账户不做更改,做更改还要判断账户是否重复,我嫌麻烦
            # 想加就把上面的for循环弄下来稍微改一下就行
            break
    else:
        print('输入的用户不存在')

    def query_users(self):
        """查询用户"""
        query_users_id = input('请输入需要查询用户的id')
        for i in self.users_list:
            if i.id == query_users_id:
                print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')
                break
        else:
            print('输入的用户不存在')

    def show_users(self):
        """显示所有用户"""
        for i in self.users_list:
            print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')

    def load_users(self):
        """加载信息"""
        try:
            information = open('account.dat', 'r')
        except:
            information = open('account.dat', 'w')
        else:
            # 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]
            data = information.read()  # 字符串
            if len(data)!=0:
                # 判断读取的数据长度,如果没读到数据依旧运行下一行的代码会导致异常
                # 顺带着也当做优化了,没读取到也就不用运行转换循环了
                new_list = eval(data)
                self.users_list = [account(i['id'], i['name'], i['tel'], i['money']) for i in new_list]
                # 用循环将列表转换成字典形式
        finally:
            information.close()
            # 无论怎样最后都关闭文件

    def save_users(self):
        """将信息保存"""
        information = open('account.dat', 'w')
        new_list = [i.__dict__ for i in self.users_list]
        # ___dict___强调储存的是静态属性
        information.write(str(new_list))
        # 以字符串形式写入
        information.close()
        # 关闭文件


account_manager = accountmanager()
# 创建类
account_manager.function()
# 运行系统

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python对银行信息管理系统的简单实现 的相关文章

随机推荐

  • ​2 万字系统总结,带你实现 Linux 命令自由?

    前言 Linux 的学习对于一个程序员的重要性是不言而喻的 前端开发相比后端开发 接触 Linux 机会相对较少 因此往往容易忽视它 但是学好它却是程序员必备修养之一 如果本文对你有所帮助 请点个 吧 作者使用的是阿里云服务器 ECS 最便
  • redis主从同步,总是显示master_link_status:down的解决方法

    前几天 在修改一台从节点的redis的监听端口后 重启了下redis 发现master link status 很长时间一直都是down状态 查看了redis日志 发现日志里出现很多的 I O error trying to sync wi
  • 解决Java连接MySQL后出现的时区错误问题

    好不容易连接好数据库后 第二天打开运行 发现底下一串报红 The server time zone value is unrecognized or represents more than one time zone 线程 main ja
  • Java中变量的作用域【Java基础】

    最近在看 Thinking in Java 想把Java基础再巩固一下 在博客上遇到的以前没注意到的知识点或者较难的知识点记录下来 与大家分享 Java中的基本类型变量的作用域为 int x 1 变量x的作用域只在大括号内 System o
  • QT文件读取路径

    最近在弄中兴的一个程序大赛 用QT读取XML文件的编程 在编程中发现QT文件读取路径与VS有不同之处 我们提供给QFile的文件路径无非就是绝对路径和相对路径 绝对路径是绝对没问题的 不过相对路径就得小心了 谈到相对路径 需要注意区分进程所
  • MES系统给制造型企业带来了哪些效益

    MES系统要怎么给制造型企业带来效益 在这场剧烈的市场竞争中 制造企业不只要在产品质量和创新上具有竞争优势 而且产品的价格在很大程度上决定了企业的市场竞争力 MES系统如何去打破生产暗箱 建造通明化工厂 提高生产效率 如今 中国工厂存在两大
  • 逃逸闭包和非逃逸闭包

    在使用swift开发 使用闭包作为参数传递到函数中 但是总是默认提示加上 escaping 逃逸闭包 是指闭包在函数结束时 闭包就会随着函数的结束而被释放 非逃逸闭包 是指闭包在函数结束时 逃逸函数 不会随函数的结束而被释放 在该闭包执行后
  • ubuntu 下实现 docker+ovs+quagga搭建网络---bgp

    注 本机上现有quagga镜像 ovs虚拟交换机 2 9 1 docker 18 09 7 实现bgp网络搭建 1 sudo ovs vsctl add br br1 增加一个ovs网桥br1 2 sudo docker images 查看
  • ADFS 概念与基本开发介绍 (1)

    如您转载本文 必须标明本文作者及出处 如有任何疑问请与我联系 me nap7 com ADFS 相关开发技术的中文资料相对匮乏 之前再弄这个东西的时候搞的比较辛苦 因此总结此文档 以解后人之忧 本文会首先介绍与联合身份验证有关的概念及相关的
  • 泰迪杯挑战赛优秀论文-A题-基于数据挖掘的上市公司高送转预测

    目 录 第 1 章 绪论 1 1问题背景 1 2问题重述 1 3本文主要工作与创新点 1 4模型假设 1 5本文研究意义 第 2 章 相关理论 2 1高送转相关知识介绍 2 1 1高送转的实质 2 1 2预测下一年上市公司高送转的一些其他条
  • Redis 事务

    目录 Redis 事务 一 Redis事务的概念 二 redis事务提出的逻辑 三 redis事务的基本操作 四 事务的执行流程 五 redis锁 六 redis分布式锁 Redis 事务 一 Redis事务的概念 Redis 事务的本质是
  • 3、思科模拟器介绍 (认识思科模拟器界面、安装思科模拟器、思科模拟器汉化)

    认识思科模拟器界面 标题栏 菜单栏 思科模拟器软件包 CSDN思科模拟器安装 https download csdn net download weixin 53645521 85135225 百度网盘思科模拟器安装包 链接 https p
  • 图像恢复(加噪与去噪)

    人工智能导论实验导航 实验一 斑马问题 https blog csdn net weixin 46291251 article details 122246347 实验二 图像恢复 https blog csdn net weixin 46
  • tar命令笔记

    作用 tar 可以保存文件属性 本身不具备压缩能力 配合gzip或者bzip 进行压缩解压缩 参数 相关参数如下 来自百度百科 c create 创建新的tar文件 x extract get 解开tar文件 t list 列出tar文件中
  • 火狐浏览器文本两端对齐无效text-align: justify

    找了很多地方 尝试很多办法都不好使 直到看到这篇 只需要设置了text align justify时加设一个white space pre line就可以了
  • [Docker]使用Docker部署Kafka

    Kafka 是一个分布式流处理平台 它依赖于 ZooKeeper 作为其协调服务 在 Kafka 集群中 ZooKeeper 负责管理和协调 Kafka 的各个节点 因此 要在 Docker 容器中启动 Kafka 通常需要同时启动一个 Z
  • 对数器的简单使用

    对数器 1 前言 2 内容 简介对数器 以排序算法的检测为实例 3 总结 4 更新日志 1 前言 学习左神的数据结构的过程中 推荐使用对数器检验自己的算法是否正确 2 内容 简介对数器 1 对数器的作用 在一个题目未OJ的时候 可以通过对数
  • Transformer学习笔记

    一 Transformer诞生背景 Transformer模型是解决序列转录问题的一大创新 在Transformer模型之前 序列转录模型都或多或少的基于复杂的循环或卷积神经网络 循环神经网络的计算是时序性的 位置的计算必须基于之前所有位置
  • 微信小程序数据 \n 换行符失效解决办法

    最近遇到一个问题 使用uni app写小程序时 拿到一个字符串 后台返回的 需要在 n 处换行 但是直接使用 let title 黄鹤楼送 n孟浩然之广陵
  • 使用python对银行信息管理系统的简单实现

    一 首先是用户属性的类 class account object 储存用户信息的类 def init self id1 name tel money self id id1 账户 self name name 姓名 self tel tel