项目总目标:用面向过程思想设计一个简单的银行账号模拟程序。本次将迭代多个程序版本,每个版本都将添加更多功能。虽然这些程序没有达到发布的质量标准,但整个项目的目的是关注于代码如何与一个或多个银行账户的数据进行交互。
分析项目的必要操作和数据:
客户对银行账户的操作包括 创建账户;存款,取款,查询余额
银行需要的数据包括 客户姓名;密码;余额
项目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("再见,欢迎再次使用本系统")
效果如下:
程序分析:
这个程序是一个简单的银行账户管理系统,它允许用户进行查询余额、存款、取款、显示账户信息和退出系统的操作。下面是程序的大致流程:
-
定义了账户的相关信息,包括账户名(accountName)、账户余额(accountBalance)和账户密码(accountPassword)。
-
使用一个无限循环(while True),确保程序会一直执行,直到遇到
break
语句跳出循环。 -
在每次循环开始时,打印出一些指令供用户选择操作,包括查询余额('b')、存款('d')、取款('w')、显示账户信息('s')和退出系统('q')。
-
用户输入一个指令,程序会将其转换为小写并只使用第一个字母。
-
根据用户输入的指令进行相应的处理:
- 如果指令是查询余额('b'),用户需要输入密码进行验证,如果密码正确,则显示当前账户余额。
- 如果指令是存款('d'),用户需要输入存款金额和密码进行验证,如果金额为非负数且密码正确,则将存款金额加到账户余额上。
- 如果指令是取款('w'),用户需要输入取款金额和密码进行验证,如果金额为非负数、密码正确且取款金额不大于账户余额,则从账户余额中减去取款金额。
- 如果指令是显示账户信息('s'),则打印出账户名、账户余额和账户密码。
- 如果指令是退出系统('q'),跳出循环。
-
在循环结束后,打印出一条再见的消息,并结束程序。
整个缺乏模块化和代码重用:整个程序被放在一个主循环中,没有将功能划分为独立的函数或模块。这导致代码量较大且难以维护,也无法轻松地重用某些功能。需要在后续的版本中对其改进。