python简易版,银行管理系统

import random
import time

##定义一个类,用来存放用户的属性,并且加以控制

class usersinfo(object):
    # 禁止外界添加属性
    __slots__ = '_name', '_age', '_money', '_account_number', '_password', '_isworker', '_isonline', '_lock', '_idcard'

    def __init__(self, name, age, account_number, password, id_card):
        """设置私有属性,不允许别人修改,只能固定人员通过get,set方法设置"""
        self._name = name
        self._age = age
        self._money = 0  # '余额默认设置为0'
        self._account_number = account_number
        self._password = password
        self._isworker = False  # 将所有注册的用户的标记为非工作人员
        self._isonline = False  # 判断是否登录
        self._lock = False
        self._idcard = id_card

    def getName(self):
        return self._name

    def setName(self, name):
        self._name = name

    def getMoney(self):
        '''
        获取余额
        :return:
        '''
        return self._money

    def setMoney(self, money):
        '''
        存钱
        :param money:
        :return:
        '''
        self._money = money

    def setPassword(self, password):
        '''用于设置密码,或者重置密码'''
        self._password = password

    def getPassword(self):
        '''

        :return:
        '''
        return self._password

    def getAccount_number(self):
        '''
        获取银行账号
        :return:
        '''
        return self._account_number

    def setAccount_number(self, account_number):
        self._account_number = account_number

    def getIsonline(self, isonline):
        '''获取是否在线'''
        return self._isonline

    def setIsonline(self, isonline):
        '''设置状态是否在线'''
        self._isonline = isonline

    def setLock(self, lock):
        self._lock = lock

    def getLock(self):
        return self._lock

    def getIdcard(self):
        return self._idcard

    def setIdcard(self, idcard):
        self._idcard = idcard

#定义一个公共类,里面存放写公共方法

class commonFunction(object):
    '''
    定义用户和银行人员一些公共的功能
    注册账户,存钱,取钱,转账,修改密码,查看余额
    '''

    # ui=usersinfo()
    def saveMoney(self, name):
        '''
        存钱不需要密码及其他信息
        :return:
        '''
        while True:
            money = int(input("请输入存钱金额,金额必须为50的倍数"))
            if money % 50 == 0 and money / 50 != 0:
                user[name].setMoney(str(int(user[name].getMoney()) + money))
                print("恭喜你,存钱成功,您当前余额为{}".format(user[name].getMoney()))
                break
            else:
                print("对不起,您的输入有误,请再次输入")
                continue

    def register(self):
        name = input("您已经进入了注册页面,首先请输入用户名:")
        while True:
            password1 = (input("请输入你的密码,密码必须为6位数字"))
            password2 = (input("请再次输入你的密码"))
            if password1 == password2 and len(password1) == 6:
                break
            else:
                print("对不起你两次密码不一致")
                continue
        age = input("请输入你的年龄:")
        while True:
            idcard = input("情输入你的身份证号")
            if idcard.isdigit():
                if len(idcard) == 16:
                    break
                else:
                    print("你输入的身份证号格式错误")
            else:
                print("你的身份证格式错误")
                continue
        print("您已经输入完毕请,等待目前正在生成你的账号")

        account = '61'
        for i in range(14):
            # global num
            num = random.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])
            account += num
        print("恭喜你,你的账号已经生成完毕,请您记住: {}".format(account))

        names = usersinfo(name, age, account, password1, idcard)

        user[name] = names

        return True

    def checkMoney(self, name):
        print("欢迎你,进入查询余额页面,请按照指示操作")
        while True:
            idcard = input("请您输入身份证号")
            print(user[name].getIdcard)
            if user[name].getIdcard() == idcard:
                time.sleep(1)
                print("验证成功")
                print("您当前余额为{}".format(user[name].getMoney()))
                break
            else:
                print("您输入的身份证号有误,请您再次输入")
                continue

    def drawMoney(self, name):
        print("欢迎您,进入取款页面,请您按照指示操作")
        while True:
            idcard = input("请您输入身份证号")
            password = input("情输入你的密码,你只有三次机会,请小心输入")
            if user[name].getIdcard() == idcard:
                time.sleep(1)
                if password == user[name].getPassword():
                    print("验证成功")
                    print("您当前余额为{}".format(user[name].getMoney()))
                    while True:
                        m = input("请输入你的取款金额,金额为50或者50的倍数,并且应该大于你的账户余额")
                        if int(m) % 50 == 0 and int(m) // 50 != 0 and int(m) >= int(user[name].getMoney()):
                            user[name].setMoney(str(int(user[name].getMoney()) - int(m)))
                            print("正在取款,请稍等")
                            time.sleep(1)
                            print("存款成功,当前余额为{}".format(user[name].getMoney()))
                            break
                        else:
                            print("你输入的金额有误,请重新输入")
                            continue

                else:
                    print("您输入的密码错误,请您重新输入信息")
                    continue
            else:
                print("您输入的身份证号有误,请您再次输入")
                continue
            break

    def transferMoney(self, name):
        print("欢迎您进入转账页面,请按照只是操作")
        while True:
            '''
            transferName 为转账对方的姓名
            '''
            transferName = input("请输入对方的姓名")
            if transferName in user.keys():
                transferAccount = input("请输入对方的账号")
                if user[name].getAccount == transferAccount:
                    while True:
                        money = input('情输入你的转账金额,请务必大于等于你的余额')
                        if int(money) >= user[name].getMoney():
                            print("正在转账,请稍等")
                            time.sleep(1)
                            user[name].setMoney(str(int(user[name].getMoney()) - int(money)))
                            user[transferName].setMoney(str(int(user[transferName].getMoney()) - int(money)))
                            print("您已经转账成功,目前您的余额为{}".format(user[name].getMoney()))
                            break
                        else:
                            print("你输入的金额大于你的余额,请重新输入")
                            continue
                else:
                    print("你输入的账号有误,请重新输入信息")
                    continue
            else:
                print("你输入的账号不存在,请重新输入")
                continue
            break

    def ifexit(self):
        exit('再见')

#定义一个银行人员的类,继承公共方法类,再加自己独有的几个功能

class bank_Worker_Function(commonFunction):
    '''继承公共的功能,再添加自己独有的功能'''
    """销户   解锁  用户信息  修改用户信息
"""

    def __init__(self):
        super().__init__()

    def destroyAccount(self, name):
        print("你已经进入了销户页面,请小心操作")
        while True:
            bankcard = input("请输入销户的银行卡号")
            if user[name].getAccount() == bankcard:
                choices4 = input("即将销户,确定请输入,yes否则就退出该页面")
                if choices4 == 'yes':
                    del user[name]
                else:
                    break
            else:
                print("对不起,你所输入的账号有误,请重新输入")
                continue

    def unLock(self):
        print("欢迎你进入,解锁页面")
        while True:
            name = input("请输入你要解锁的用户名")
            if name in user.keys():
                while True:
                    account = input("请输入你的账号名")
                    if account == user[name].getAccount():
                        print("输入完毕,正在确认信息")
                        time.sleep(1)
                        print("确认信息完毕,正在解锁,请稍等")
                        time.sleep(2)
                        user[name].setLock(False)
                        break
            else:
                print("对不起,你输入的用户不存在,请重新输入")
                continue
            break

    def userinfomation(self):
        while True:
            name = input("请输入需要查询的用户名")
            if name in user.keys():
                print("姓名:{},年龄:{},账号:{},身份证号{},是否锁定{}".format(user[name].getName(),
                                                               user[name].getAge(), user[name].getAccount(),
                                                               user[name].getIdcard()
                                                               , user[name].getLock()))
                choices5 = input("是否退出,退出请输入yes")
                if choices5 == 'yes':
                    break
            else:
                print("对不起,你所输入的用户不存在,请重新输入")
                continue

    def changeUserInformation(self):
        print("欢迎进入更改信息页面")
        while True:
            name = input("请输入需要更改的信息的账户名")
            if name in user.keys():
                password = input("请输入密码")
                if password == user[name].getPassword():
                    while True:
                        choice6 = input("情选择你要修改的项   1.年龄  2.密码 3. 身份证号 4. 性别(还没写)   其他:退出")
                        if choice6 == '1':
                            age = input("请输入你要修改的内容")
                            user[name].setAge(age)
                            print("正在修改,请稍等")
                            time.sleep(1)
                            print("修改完毕,修改完后的年龄为:{}".format(user[name].getAge()))
                        elif choice6 == '2':
                            password = input("情输入你要修改的密码")
                            user[name].setPassword(password)
                            print("正在修改,请稍等")
                            time.sleep(1)
                            print("修改完毕,修改完后的密码为{}".format(user[name].getPassword()))

                        elif choice6 == '3':
                            idcard = input("情输入你要修改的身份证号")
                            user[name].setIdcard(idcard)
                            print("正在修改,请稍等")
                            time.sleep(1)
                            print("修改完毕,修改完后的密码为{}".format(user[name].setIdcard()))
                        else:
                            print("")
                            break

新建一个普通用户的字典 key为用户名,value为用户的类对象,存放信息,先新建一个账号用来转账

user = {"zly": usersinfo('zly', '18', '1' * 16, '123', '2' * 16)}
bankworker = {"遥遥哥": '123'}  # 新建一个银行人员的字典 ,key为银行人员的用户名,value为密码,银行人员不可注册,以后只能通过数据库插入

“”"
bug:
1.由于用户是字典,且用户名为key,所以用户名不能重复,且用户和银行人员的账户不通
“”"

#主程序入口
if __name__ == '__main__':
print("欢迎来到银行管理系统")
func = commonFunction()
bwf = bank_Worker_Function()
count = 0  # 计数用,如果密码输错三次,就给账户上锁
while True:
    name = input("""请输入用户名""")
    if name in user.keys():
        for i in user.values():
            if not user[name].getLock():  # 判断账户是否上锁
                password = input("请输入你的密码,输错三次就会锁定,目前还剩下{}次".format(3 - count))
                if i.getPassword() == password:
                    print("*****登录成功,尊敬的用户******")
                    while True:
                        choices3 = input("""请选择功能,1.查看余额 ,2.存款, 3.取款, 4.转账, 5.退出登录""")
                        if choices3 == '1':
                            func.checkMoney(name)
                        if choices3 == '2':
                            func.saveMoney(name)
                        if choices3 == '3':
                            func.drawMoney(name)
                        if choices3 == '4':
                            func.transferMoney(name)
                        if choices3 == '5':
                            func.ifexit()
                else:
                    print("您输入的密码有误,请你再次输入")
                    count += 1
                    if count >= 3:  # 当计数器大于等于三次时,给账户上锁,并且提醒用户
                        user[name].setLock(True)
                        print("对不起,由于密码输错三次,您的账户已经被锁,请您去办理解锁业务")
                    continue
            else:
                print("对不起,由于密码输错三次,您的账户已经被锁,请您去办理解锁业务")
                break

    elif name in bankworker:
        print("系统检测到,你是银行人员,请按照指示输入信息登录")
        while True:
            password = input("请输入你的密码")
            if bankworker[name] == password:
                print("欢迎你,请选择你的功能")
                while True:
                    choices3 = input("""建户【0】 销户【1】 查看余额【2】 存款【3】 取款【4】
转账【5】  解锁【6】 用户信息【7】 修改用户信息【8】
退出登录【9】""")
                    if choices3 == '0':
                        bwf.register()  # 通过子类调用父类方法
                    elif choices3 == '1':
                        name = input("情输入需要注销的账户名,然后继续操作")
                        bwf.destroyAccount(name)
                    elif choices3 == '2':
                        name = input("情输入要查看的账户名")
                        bwf.checkMoney(name)
                    elif choices3 == '3':
                        name = input("情输入要存款的账户名")
                        bwf.saveMoney(name)
                    elif choices3 == '4':
                        name = input("请输入取款的用户名")
                        bwf.drawMoney(name)
                    elif choices3 == '5':
                        name = input("请输入用于转账的用户名")
                        bwf.drawMoney(name)
                    elif choices3 == '6':
                        bwf.unLock()
                    elif choices3 == '7':
                        bwf.userinfomation()
                    elif choices3 == '8':
                        bwf.changeUserInformation()
                    elif choices3 == '9':
                        bwf.ifexit()

            else:
                print("你的密码输入错误,请重新输入")
                continue
    else:
        choices2 = input("""检测到你并不是我银行的用户,如果你需要办理业务请你注册一个账号,确实请输入yes,否则那就再见吧""")
        if choices2 == 'yes':
            if func.register() == True:
                print("恭喜你,已经注册成功,请重新登录")
                continue
        else:
            break
    print("欢迎您的下次使用,再见")
    break
print("感谢您的使用,下次再见")


你可能感兴趣的:(Python基础)