-
编程实现:(仔细业务之间的包含关系,并完成以下编程需求,要适当提高代码的可复用性。)
-
用户:账号(int:系统随机产生8位数字)、姓名(str)、密码(int:6位数字)、地址、存款余额(int)、开户行(银行的名称(str))
-
地址:国家(str)、省份(str)、街道(str)、门牌号(str)
-
银行:能存储100用户的库(字典)、本银行名称(比如:中国工商银行的昌平支行,str)
-
银行业务功能
-
添加用户(传入参数:用户的所有信息。返回值:整型值(1:成功,2:用户已存在,3:用户库已满))
-
业务逻辑:
-
先检查该用户的账号在库里是否存在。若不存在则在用户库里添加一个该用户并返回代号1
-
若存在则返回代号2。另外在添加用户的时候检测用户库是否已注册满,若已满则返回代号3
-
存钱(传入值:用户的账号、存取的金额。返回值:布尔类型值)
-
业务逻辑:
-
先根据传入的账号信息查询用户库里是否有该用户。若没有则返回False
-
若有,则将该用户的金额存进去。
-
取钱(传入值:用户的账号,用户密码,取钱金额。返回值:整型值(0:正常,1:账号不存在,2:密码不对,3:钱不够))
-
业务逻辑:
-
先根据账号信息来查询该用户是否存在,若不存在,则返回代号1,
-
若存在,则继续判断密码是否正确,若不正确,则返回代号2。
-
若账号密码都正确,则继续判断当前用户的金额是否满足要取出的钱,若不满足,则返回代号3,
-
若满足,则将该用户的金额减去。
-
转账(传入值:转出的账号,转入的账号,转出账号的密码,转出的金额。返回值:0:正常,1:账号不对,2密码不对,3钱不够)
-
业务逻辑:
-
先查询用户库是否存在转出和转入的账号,若不存在则返回代号,1,
-
若账号都存在则继续判断转出账号的密码是否正确,若不正确,则返回2,
-
若正确则继续判断要转出的金额是否足够,若不够则返回3,
-
否则正常转出,转出的账号用户金额要相对应的减少,转入的金额相对应的增加。
-
查询账户功能(传入值:账号,账号密码,返回值:空)
-
业务逻辑:
-
先根据账号判断用户库是否存在该用户,若不存在则打印提示信息:该用户不存在。
-
否则继续判断密码是否正确。若不正确则打印相对应的错误信息。
-
若账号和密码都正确,则将该用户的信息都打印出来,比如:当前账号:xxxx,密码:xxxxxx,余额:xxxx元,用户居住地址:xxxxxxxxxxxxx,当前账户的开户行:xxxxxxxxxx.
-
界面类:在执行该入口程序时,就打印银行业务选择菜单:比如:
-
然后就开始处理各种输入操作,直到业务处理完成!
import random
#用户信息
user_list = ['name','password','money','用户居住地址','address']
user_dict = {}
#判断账户是否存在
def decide():
global user_dict
global i
global user_list
if len(user_dict) <= 100:
if i not in user_dict:
print('1.账号信息不存在')
id()
else:
print('2.账号信息已存在')
password1 = input('请输入您的卡号密码:')
if password1 != user_dict[i][1]:
print('密码输入错误,请重新输入')
decide()
else:
return
else:
print('3.银行用户库已满')
exit()
#随机生成卡号
def id():
global i
global user_dict
global user_list
i = random.randint(10000000, 100000000)
name = input('为您办理新卡,请输入你的姓名:')
password = input('请设置密码:')
money = input('请输入您要存入的金额:')
address = input('请输入您的居住地址:')
print(f'为您办理的卡号是:{i},%%%%%%%%%请您记牢%%%%%%%%%%')
user_list[0] = name
user_list[1] = password
user_list[2] = money
user_list[3] = address
user_list[4] = "中国XX银行XX支行"
user_dict[i] = user_list
print(f'银行卡开户成功,卡号:{i},客户信息:{user_dict[i]}')
use()
#开户
def user():
global i
global user_dict
global user_list
i = random.randint(10000000,100000000)
decide()
name = input('为您办理新卡,请输入你的姓名:')
password = input('请设置密码:')
money = input('请输入您要存入的金额:')
address = input('请输入您的居住地址:')
print(f'为您办理的卡号是:{i},%%%%%%%%%请您记牢%%%%%%%%%%')
user_list[0] = name
user_list[1] = password
user_list[2] = money
user_list[3] = address
user_list[4] = "中国XX银行XX支行"
user_dict[i] = user_list
print(f'银行卡开户成功,卡号:{i},客户信息:{user_dict[i]}')
use()
#存钱
def save_money():
global i
global user_dict
global user_list
i = int(input('请输入您要存款的银行卡号:'))
decide()
save = int(input('请输入您的存款金额:'))
user_dict[i][2] = save + int(user_dict[i][2])
print(f'您当前的余额为:{user_dict[i][2]}')
use()
#取钱
def cost_money():
global i
global user_dict
global user_list
i = int(input('请输入您要取款的银行卡号:'))
decide()
cost = int(input('请输入您的取款金额:'))
user_dict[i][2] = int(user_dict[i][2]) - cost
print(f'您当前的余额为:{user_dict[i][2]}')
use()
#转账
def enchange():
global i
global user_dict
global user_list
i = int(input('请输入您要转款的银行卡号:'))
decide()
cost = int(input('请输入您的转款金额:'))
user_dict[i][2] = int(user_dict[i][2]) - cost
print(f'您当前的余额为:{user_dict[i][2]}')
i = int(input('请输入您要转款的银行卡号:'))
decide()
user_dict[i][2] = cost + int(user_dict[i][2])
print(f'您当前的余额为:{user_dict[i][2]}')
use()
#查询
def search():
global i
global user_dict
global user_list
i = int(input('请输入您要查询的银行卡号:'))
decide()
print(f'当前账号:{i},密码:{user_dict[i][1]},余额:{user_dict[i][2]}元,用户居住地址:{user_dict[i][3]},当前账户的开户行:中国XX银行XX支行')
use()
def use():
print('****************************************************')
print('* 中国XX银行XX支行 *')
print('* 账户管理系统 *')
print('* V1.0 *')
print('****************************************************')
print(' ')
print('*1.开户 *')
print('*2.存钱 *')
print('*3.取款 *')
print('*4.转账 *')
print('*5.查询 *')
print('*6.Bye *')
print('****************************************************')
use = int(input('请输入您要办理的业务:'))
if use == 1:
user()
elif use == 2:
save_money()
elif use == 3:
cost_money()
elif use == 4:
enchange()
elif use == 5:
search()
elif use == 6:
exit()
use()