Python面向对象编程2-面向过程的银行账号模拟程序 项目2.3 单个账户完整项目版本1

news2024/11/25 9:45:55

项目总目标:用面向过程思想设计一个简单的银行账号模拟程序。本次将迭代多个程序版本,每个版本都将添加更多功能。虽然这些程序没有达到发布的质量标准,但整个项目的目的是关注于代码如何与一个或多个银行账户的数据进行交互。

分析项目的必要操作和数据: 

客户对银行账户的操作包括 创建账户;存款,取款,查询余额

银行需要的数据包括 客户姓名;密码;余额
 

项目2.3 单个账户的完整银行账号模拟程序 版本1

# 定义了账户的相关信息
accountName = 'Joe'
accountBalance = 100
accountPassword = 'abed'

# 表示程序将一直执行,直到遇到break语句跳出循环。
while True:
    # 在每次循环开始时,会打印出一些指令供用户选择操作。指令包括查询余额、存钱、取款、显示账户和退出系统。
    print()
    print('b 查询余额')
    print('d 存钱')
    print('w 取款')
    print('s 显示账户')
    print('q 退出系统')
    print()

    action = input('输入指令: ')
    action = action.lower()  # force lowercase
    action = action[0]  # just use first letter
    print()

    # 用户输入的指令进行处理。在这段代码中,处理了显示余额('b')的操作
    if action == 'b':
        print('显示余额:')
        userPassword = input('请输入密码: ')
        if userPassword != accountPassword:
            print('密码错误')
        else:
            print('当前账户余额为: ', accountBalance)

    # 用户输入的指令进行处理。在这段代码中,只处理了存钱('d')的操作
    elif action == 'd':
        # 如果用户选择了存钱操作,程序会要求用户输入存款的数量(整数)和密码。
        print('存钱:')
        userDepositAmount = input('输入存钱数量(整数): ')
        userDepositAmount = int(userDepositAmount)
        userPassword = input('请输入密码: ')

        # 如果存款数量为非负数且密码验证通过,那么将存款金额加到账户余额accountBalance上
        if userDepositAmount < 0:
            print('不可以存入负数!')
        elif userPassword != accountPassword:
            print('密码错误')
        else:  # OK
            accountBalance = accountBalance + userDepositAmount
            print('当前账号余额为:', accountBalance)

    # 用户输入的指令进行处理。在这段代码中,处理了取钱('w')的操作
    elif action == 'w':
        print('取钱:')
        userWithdrawAmount = input('输入取钱数量(整数): ')
        userWithdrawAmount = int(userWithdrawAmount)
        userPassword = input('请输入密码: ')

        # 如果取款数量为非负数且密码验证通过并取款数量大于账户余额,那么将存款金额加到账户余额accountBalance上
        if userWithdrawAmount < 0:
            print('不可以取出负数!')
        elif userPassword != accountPassword:
            print('密码错误')
        elif userWithdrawAmount > accountBalance:
            print('不可取出大于账户余额的钱')
        else:
            accountBalance = accountBalance - userWithdrawAmount
            print('当前账号余额为:', accountBalance)

    # 用户输入的指令进行处理。在这段代码中,处理了显示余额('b')的操作
    elif action == 'b':
        print('显示余额:')
        userPassword = input('请输入密码: ')
        if userPassword != accountPassword:
            print('密码错误')
        else:
            print('当前账户余额为: ', accountBalance)

    # 显示账户名称,余额,密码
    elif action == 's':  # show
        print('Show:')
        print('       账户名', accountName)
        print('       账户余额:', accountBalance)
        print('       账户密码:', accountPassword)
        print()

    # 用户输入退出命令的操作
    elif action == 'q':
        break
print("再见,欢迎再次使用本系统")

效果如下:

程序分析:

这个程序是一个简单的银行账户管理系统,它允许用户进行查询余额、存款、取款、显示账户信息和退出系统的操作。下面是程序的大致流程:

  1. 定义了账户的相关信息,包括账户名(accountName)、账户余额(accountBalance)和账户密码(accountPassword)。

  2. 使用一个无限循环(while True),确保程序会一直执行,直到遇到break语句跳出循环。

  3. 在每次循环开始时,打印出一些指令供用户选择操作,包括查询余额('b')、存款('d')、取款('w')、显示账户信息('s')和退出系统('q')。

  4. 用户输入一个指令,程序会将其转换为小写并只使用第一个字母。

  5. 根据用户输入的指令进行相应的处理:

    • 如果指令是查询余额('b'),用户需要输入密码进行验证,如果密码正确,则显示当前账户余额。
    • 如果指令是存款('d'),用户需要输入存款金额和密码进行验证,如果金额为非负数且密码正确,则将存款金额加到账户余额上。
    • 如果指令是取款('w'),用户需要输入取款金额和密码进行验证,如果金额为非负数、密码正确且取款金额不大于账户余额,则从账户余额中减去取款金额。
    • 如果指令是显示账户信息('s'),则打印出账户名、账户余额和账户密码。
    • 如果指令是退出系统('q'),跳出循环。
  6. 在循环结束后,打印出一条再见的消息,并结束程序。

整个缺乏模块化和代码重用:整个程序被放在一个主循环中,没有将功能划分为独立的函数或模块。这导致代码量较大且难以维护,也无法轻松地重用某些功能。需要在后续的版本中对其改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows11 WSL子系统ubuntu22.04 修改hostname

大家都知道以往我们修改 Linux系统的 hostname只要修改 /etc/hostname 这个文件中的名字即可&#xff0c;但是在WSL中修改该文件是无法生效的。 要修改Hostname并使它生效&#xff0c;我们必须修改 /etc/wsl.conf 文件。 编辑配置文件 sudo vi /etc/wsl.conf修改参数 将 ho…

SQL优化--如何定位慢查询?

目录 概述 检测方案 方案一&#xff1a;开源工具 方案二&#xff1a;MySQL自带慢日志 面试回答 大纲 范例 概述 在SQL中&#xff0c;“慢查询”是指执行速度较慢的数据库查询操作。 一般来说聚合查询&#xff0c;多表查询&#xff0c;表数据量过大查询&#xff0c;深度…

埃及极简史

埃及全称为阿拉伯埃及共和国&#xff0c;位于北非东部&#xff0c;领土还包括苏伊士运河以东、亚洲西南端的西奈半岛&#xff0c;埃及既是亚、非之间的陆地交通要冲&#xff0c;也是大西洋于印度洋之间海上航线的捷径&#xff0c;战略位置十分重要。 古埃及是古代四大文明古国之…

龙蜥白皮书精选:Ancert——硬件兼容性验证与守护

文/硬件兼容性 SIG Ancert 是龙蜥操作系统硬件兼容性测试套件&#xff0c;致力于验证硬件设备集成商等厂商发布的整机服务器和各种板卡外设与龙蜥操作系统 不同版本之间的兼容性&#xff0c;推动社区发行版在各种硬件设备上的适配&#xff0c;围绕龙蜥操作系统建立完善的硬件生…

Linux运维监控学习笔记5

监控项和应用集&#xff08;重点&#xff09; 监控项&#xff08;item&#xff09;&#xff1a;监控项是从主机收集的信息。一个监控项是一个独立的子标&#xff0c;代表收集数据或监控的最小的单位。 应用集&#xff08;applications&#xff09;&#xff1a;代表多个监控项…

手写数字识别Python+TensorFlow+CNN卷积神经网络【完整代码系统】

一、介绍 手写数字识别系统&#xff0c;使用Python语言&#xff0c;基于TensorFlow搭建CNN卷积神经网络算法对数据集进行训练&#xff0c;最后得到模型&#xff0c;并基于FLask搭建网页端界面&#xff0c;基于Pyqt5搭建桌面端可视化界面。 二、效果展示 三、演示视频完整代码…

【面试题】MySQL的面试题-分组后数据的处理

有一张业务表 data busi&#xff0c;字段为 id,业务号 busi no 以及编码 busi code,请写出根据busi code 将 busi no 合并去重的 sal。数据: 要求最后的结果为&#xff1a; 这个问题怎么解决呢&#xff1f; 其实解决这个问题的关键是分组后的数据合并&#xff0c;这里需要使用…

热加载工具spring-boot-devtools,使页面修改不重启服务器可以实时更新选择和创建数据库(谷粒商城)

阿丹&#xff1a; 希望可以通过工具进行来进行代码修改的时候能避免重启服务。来加快代码进度。 在pom.xml中添加spring-boot-devtools依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifact…

FI 创建资产和 子资产 BAPI_FIXEDASSET_OVRTAKE_CREATE

AS01 AS11 对应的BAPI 都是 BAPI_FIXEDASSET_OVRTAKE_CREATE 创建子资产有个标记CREATESUBNUMBER

PV180R1K1T1NMMC德国产派克柱塞泵

PV180R1K1T1NMMC德国产派克柱塞泵 派克柱塞泵的介绍&#xff1a; PARKER柱塞泵根据倾斜元件的不同&#xff0c;有斜盘式和斜轴式两种。斜盘式是斜盘相对回转的缸体有一倾斜角度&#xff0c;而引起柱塞在泵缸中往复运动。传动轴轴线和缸体轴线是一致的。这种结构较简单&#x…

async_await异常捕获

写在前面 不知道大家项目里面是怎么处理 async/await 的异常&#xff0c;我斗胆在我们项目里翻了一下&#xff0c;发现大量使用 try-catch 来处理 async/await 异常。 首先说明一下&#xff0c; try-catch 处理并没有什么问题&#xff0c;我只是觉得这么写代码会有点乱&#x…

如何设计一个高效的分布式日志服务平台

作者 | 百度智能小程序团队 导读 本文首先介绍了分布式服务下日志服务建设的挑战&#xff0c;然后介绍了下业内ELK的通用解决方案及与天眼日志服务的差异性&#xff0c;接下来详细介绍了天眼日志服务平台的整体架构&#xff0c;如何做采集、传输、检索、隔离、清理等机制的&…

自定义element-table列表展示(可设置按钮权限)

<template><!-- 二次封装表格&#xff0c; 仅支持单选 :style"{ height: height }"--><div class"self_table"><el-table:data"tableData"style"width: 100%"v-loading"loading"stripeselection-chang…

苹果手机备份占内存吗 苹果手机备份到电脑怎么操作

苹果手机备份占内存吗&#xff1f;实际上&#xff0c;苹果手机备份并不占用本机内存。在使用苹果手机的过程中&#xff0c;备份是一个必要的操作&#xff0c;可以避免丢失重要的数据或者恢复丢失的数据。但是有些用户可能会担心备份会占用手机的内存&#xff0c;从而影响手机的…

统信UOS系统开发笔记(五):安装QtCreator开发IDE中的中文输入环境Fcitx输入法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/131302096 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

MySQL 日志管理、备份与恢复

目录 一、 MySQL日志管理1.1 日志的分类1.1.1 错误日志1.1.2 通用查询日志1.1.3 二进制日志1.1.4 慢查询日志1.1.5 配置日志 1.2 日志的查询 二、数据库备份的分类2.1 数据备份的重要性2.2 数据库备份的分类2.3 常用的备份方法2.4 MySQL完全备份2.4.1 mysql完全备份2.4.2 mysql…

【FPGA入门】第五篇、按键消抖

目录 第一部分、按键抖动现象 第二部分、消抖思路及代码 1、简单的按键消抖思路 2、实际按键消抖思路 3、实际按键消抖模块代码 第三部分、总结 第一部分、按键抖动现象 只要学习过单片机的都会知道&#xff0c;按键在按下去和松开的那个瞬间都存在抖动&#xff0c;在单片…

玩转AI绘图 电脑配置怎么选?

大家好&#xff0c;我是权知星球&#xff0c;很多小伙伴留言想了解一下AI绘图相关知识&#xff0c;那么&#xff0c;想要玩转AI绘图&#xff0c;电脑配置该怎么选呢&#xff1f; 首先我们了解一下什么叫AI绘图&#xff1f; AI绘图指的是利用人工智能技术实现的自动绘图&#x…

小白到运维工程师自学之路 第三十七集 (mha高可用集群)

一、概述 MHA&#xff08;Master High Availability&#xff09;是一个开源的MySQL高可用性解决方案&#xff0c;它可以自动监测MySQL主节点的状态&#xff0c;并在主节点发生故障时自动将从节点提升为新的主节点&#xff0c;从而实现MySQL的高可用性。MHA集群通常由多个MySQL实…

C++基础(7)——类和对象(5)

前言 本文主要介绍C中的继承 4.6.1&#xff1a;继承和继承方式&#xff08;公有、保护、私有&#xff09; 4.6.2&#xff1a;继承中的对象模型&#xff0c;sizeof()求子类对象大小 4.6.3&#xff1a;子类继承父类后&#xff0c;两者构造和析构顺序 父类先构造、子类先析构 如…