简易版银行管理系统

'''
2. 完成银行管理系统:
1.	进入银行系统:选择:普通用户,银行人员
2.	可以初始化银行人员的用户名和密码,注意添加标记是否是银行人员
True:银行人员
False:普通用户
3.	用户登录:
   选择普通用户:只有建卡成功才可以登录
   选择银行人员:银行人员可以通过建卡,添加普通用户
4.	普通用户功能:
查看余额 ,存款, 取款, 转账, 退出登录
5.	银行人员功能:
建户【0】 销户【1】 查看余额【2】 存款【3】 取款【4】
转账【5】  解锁【6】 用户信息【7】 修改用户信息【8】
退出登录【9】
注意:普通用户或者银行人员的功能都要通过函数定义完成
建户:
银行人员可以创建普通用户,普通用户注册需要密码,卡号(随机生成),真实姓名,身份证号码,手机号码,账户金额默认0元
 可以使用卡号和密码登录
 用户登录错误次数达到3次以上则锁定卡号 (定义函数实现)

销户:
删除创建的用户
查看余额,存款,取款,转账:
用户登录成功可以查看余额,存款,取款,转账。
存款,取款--》用户不能锁定,输入存款金额,必须大于0且50的倍数
转账:用户不能锁定,要求输入转账用户的卡号,金额(必须大于0且50的倍数)
      对方账户金额必须增加
查看余额:显示账户的总金额

解锁:需要卡号和身份证号码,正确则可以解锁,否则解锁失败
显示用户信息:打印用户的详细信息(根据卡号查询用户的详细信息)
修改用户信息:卡号,身份证号码,如果成功可以修改用户名,手机号码信息,修改成功后显示修改后的用户信息
退出:退出银行系统



'''
import random
import time

print('***************************银行管理系统****************************')
message = {
   }  # 普通人员信息,每建一个户就添加一个人员信息
lock_card = set()
bank_message = {
   '123456': '123456'}  # 银行人员默认就这一个人
iswork = False  # 默认银行人员下班


# 选择是普通人员还是银行人员,选择之前先判断有没有办卡
def choice():
    print('*********进入系统***********')
    time.sleep(1)
    people = int(input('请输入选择1:普通用户,2:银行人员.:'))
    if people == 1:
        print('您选择了普通用户')
        return False
    elif people == 2:
        print('您选择了银行人员')
        return True
    else:
        print('输入错误')
        choice()


# 检验是否办卡,其实没必要用装饰器写出来
def is_login(f):
    def wrapper(*args, **kwargs):
        username = input('请输入用户名:')
        if username in message:  # 信息里是否有银行人员或者普通人员的卡号
            print('您是普通用户')
            time.sleep(1)
            f()  # 若已建卡,请登录
        elif username in bank_message:
            print('您是银行人员')
            time.sleep(1)
            f()
        else:  # 否则去办卡
            print('没有该用户,请先咨询银行办卡')
            time.sleep(1)
            f()

    return wrapper


@is_login  # 选择之前先判断有没有建卡,办卡了就登录
def login():  # 登录
    identify = choice()
    global iswork  # 全局变量
    if identify:  # 银行人员
        username_bank = input('请输入用户名:')
        if username_bank in bank_message:
            password_bank = input('请输入密码:')
            if password_bank == bank_message[username_bank]:
                print('登陆成功,开始上班')
                iswork = True
                bank_function()  # 银行人员
            else:
                print('密码错误')
                iswork = False
        else:
            print('不存在该银行人员用户')
    else:  # 普通人员
        if iswork:  # 如果银行上班
            username = input('请输入用户名:')
            if username not in lock_card:
                if username in message:
                    for i in range(3):
                        password = input('请输入密码:')
                        if password == message[username][3]:
                            print('登陆成功!')
                            pople_function(username)
                            break
                        else:
                            print('密码错误')
                    else:
                        print('账号锁定')
                        lock_card.add(username)

                else:
                    print('没有该用户,请先建卡')
                    print('请先像银行人员询问建卡')  # 普通用户
                    time.sleep(1)
                    print('*********进入银行人员账户对普通人员进行操作*************')
                    bank_function()
                    username2 = input('请输入卡号:')
                    if username2 in message.keys():  # 检验银行是否开户,有可能直接选择9退出登录
                        for i in range(3):
                            print(message)
                            username1 
功能需求详细说明: 0、 显示所有账户 a) 查询出所有账户信息(账户名、账户ID、账户密码、账户余额); 1、 添加账户 a) 添加时先判断输入的账户Id在当前系统中存在不存在,不能重复,如果重复,提示退出程序; b) 添加账户分为两种情况: i. accounts数组未满,只需遍历当前的系统中账户信息,找到为null的位置将新的账户信息添加进去; ii. accounts满了,进行扩容操作,每次扩容10个,提示(在数组扩容之后要将原系统中的账户信息移到对应的新对象数组中); 2、 存钱 a) 判断存入的账户存在还是不存在,如果不存在给出相应提示; b) 如果存在,在存入金额的时候,判断金额是否合法(不能小于等于0),如果合法提示输入密码再次确认密码,如果密码输入错误,给出相关提示,如果正确,进行存钱; 3、 取钱 a) 判断取钱的账户存在还是不存在,如果不存在给出相应提示; b) 取钱判断输入的金额是否合法,如果合法提示输入密码,如果密码输入错误,给出相关提示; c) 取款金额要小于等于现有存款金额,不能超出现有余额,若超出,则取款失败,给出相关提示; 4、 转账 a) 要判断本人账户存在还是不存在,然后判断对方账户存在还是不存在,如果其中之一不存在,给出错误提示; b) 进行转账前,要判断本人账户余额是否满足转账金额,如果不足,提示账户余额不足,输出现有余额; c) 在转账金额满足的情况下需要确认密码才能进行转账,转账成功之后,给出相关提示; 5、 修改密码 a) 首先提示输入账户ID,如果不存在给出相关错误提示; b) 输入密码再次确认密码,在原密码和确认密码输入正确的情况下方可进入修改密码界面,如果不正确那么提示密码输入错误,如果输入的新密码和旧密码一样,提示新密码和原密码不能一样; c) 在新密码和确认新密码输入不正确的情况下,提示输入错误之后再次提示用户进行输入,在此处可以做一个循环提示,当新密码和确认新密码输入正确满足条件时则提示修改密码成功;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值