博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
源码篇:Python 实战案例----银行系统
阅读量:5126 次
发布时间:2019-06-13

本文共 11607 字,大约阅读时间需要 38 分钟。

import timeimport randomimport pickleimport osclass Card(object):    def __init__(self, cardId, cardPasswd, cardMoney):        self.cardId = cardId        self.cardPasswd = cardPasswd        self.cardMony = cardMoney        self.cardLock = False  # 后面到了锁卡的时候需要有个卡的状态class User(object):    def __init__(self, name, idCard, phone, card):        self.name = name        self.idCard = idCard        self.phone = phone        self.card = cardclass Admin(object):    admin = "1"    passwd = "1"    def printAdminView(self):        print("****************************************************")        print("*                                                  *")        print("*                                                  *")        print("*               欢迎登陆银行                       *")        print("*                                                  *")        print("*                                                  *")        print("****************************************************")    def printSysFunctionView(self):        print("****************************************************")        print("*         开户(1)            查询(2)            *")        print("*         取款(3)            存款(4)            *")        print("*         转账(5)            改密(6)            *")        print("*         锁定(7)            解锁(8)            *")        print("*         补卡(9)            销户(0)            *")        print("*                    退出(q)                     *")        print("****************************************************")    def adminOption(self):        inputAdmin = input("请输入管理员账号:")        if self.admin != inputAdmin:            print("输入账号有误!")            return -1        inputPasswd = input("请输入管理员密码:")        if self.passwd != inputPasswd:            print("密码输入有误!")            return -1        # 能执行到这里说明账号密码正确        print("操作成功,请稍后······")        time.sleep(2)        return 0    def ban(self, allUsers):        for key in allUsers:            print("账号:" + key + "\n" + "姓名:" + allUsers[key].name + "\n" + "身份证号:" + allUsers[key].idCard + "\n" + "电话号码:" + allUsers[                key].phone + "\n" + "银行卡密码:" + allUsers[key].card.cardPasswd + "\n")class ATM(object):    def __init__(self, allUsers):        self.allUsers = allUsers # 用户字典    # 开户    def creatUser(self):        # 目标:向用户字典中添加一对键值对(卡号->用户)        name = input("请输入您的名字:")        idCard = input("请输入您的身份证号:")        phone = input("请输入您的电话号码:")        prestoreMoney = int(input("请输入预存款金额:"))        if prestoreMoney < 0:            print("预存款输入有误!开户失败")            return -1        onePasswd = input("请设置密码:")        # 验证密码        if not self.checkPasswd(onePasswd):            print("输入密码错误,开户失败!")            return -1        # 生成银行卡号        cardStr = self.randomCardId()        card = Card(cardStr, onePasswd, prestoreMoney)        user = User(name, idCard, phone, card)        # 存到字典        self.allUsers[cardStr] = user        print("开户成功!请记住卡号:" + cardStr)    # 查询    def searchUserInfo(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,查询失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        print("账号:%s   余额:%d" % (user.card.cardId, user.card.cardMony))    # 取款    def getMoney(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,取款失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        # 开始取款        amount = int(input("验证成功!请输入取款金额:"))        if amount > user.card.cardMony:            print("取款金额有误,取款失败!")            return -1        if amount < 0:            print("取款金额有误,取款失败!")            return -1        user.card.cardMony -= amount        print("您取款%d元,余额为%d元!" % (amount, user.card.cardMony))    # 存款    def saveMoney(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,存款失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        # 开始存款        amount = int(input("验证成功!请输入存款金额:"))        if amount < 0:            print("存款金额有误,存款失败!")            return -1        user.card.cardMony += amount        print("您存款%d元,最新余额为%d元!" % (amount, user.card.cardMony))    # 转账    def transferMoney(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,转账失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        # 开始转账        amount = int(input("验证成功!请输入转账金额:"))        if amount > user.card.cardMony or amount < 0:            print("金额有误,转账失败!")            return -1        newcard = input("请输入转入账户:")        newuser = self.allUsers.get(newcard)        if not newuser:            print("该卡号不存在,转账失败!")            return -1        # 判断是否锁定        if newuser.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        user.card.cardMony -= amount        newuser.card.cardMony += amount        time.sleep(1)        print("转账成功,请稍后···")        time.sleep(1)        print("转账金额%d元,余额为%d元!" % (amount, user.card.cardMony))    # 改密    def changePasswd(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,改密失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        print("正在验证,请稍等···")        time.sleep(1)        print("验证成功!")        time.sleep(1)        # 开始改密        newPasswd = input("请输入新密码:")        if not self.checkPasswd(newPasswd):            print("密码错误,改密失败!")            return -1        user.card.cardPasswd = newPasswd        print("改密成功!请稍后!")    # 锁定    def lockUser(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,锁定失败!")            return -1        if user.card.cardLock:            print("该卡已被锁定,请解锁后再使用其功能!")            return -1        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,锁定失败!")            return -1        tempIdCard = input("请输入您的身份证号码:")        if tempIdCard != user.idCard:            print("身份证号输入有误,锁定失败!")            return -1        # 锁定        user.card.cardLock = True        print("锁定成功!")    # 解锁    def unlockUser(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,解锁失败!")            return -1        if not user.card.cardLock:            print("该卡未被锁定,无需解锁!")            return -1        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,解锁失败!")            return -1        tempIdCard = input("请输入您的身份证号码:")        if tempIdCard != user.idCard:            print("身份证号输入有误,解锁失败!")            return -1        # 解锁        user.card.cardLock = False        print("解锁成功!")    # 补卡    def newCard(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在!")            return -1        tempname = input("请输入您的姓名:")        tempidcard = input("请输入您的身份证号码:")        tempphone = input("请输入您的手机号码:")        if tempname != self.allUsers[cardNum].name\                or tempidcard != self.allUsers.idCard\                or tempphone != self.allUsers.phone:            print("信息有误,补卡失败!")            return -1        newPasswd = input("请输入您的新密码:")        if not self.checkPasswd(newPasswd):            print("密码错误,补卡失败!")            return -1        self.allUsers.card.cardPasswd = newPasswd        time.sleep(1)        print("补卡成功,请牢记您的新密码!")    # 销户    def killUser(self):        cardNum = input("请输入您的卡号:")        # 验证是否存在该卡号        user = self.allUsers.get(cardNum)        if not user:            print("该卡号不存在,转账失败!")            return -1        # 判断是否锁定        if user.card.cardLock:            print("该卡已锁定!请解锁后再使用其功能!")            return -1        # 验证密码        if not self.checkPasswd(user.card.cardPasswd):            print("密码输入有误,该卡已锁定!请解锁后再使用其功能!")            user.card.cardLock = True            return -1        del self.allUsers[cardNum]        time.sleep(1)        print("销户成功,请稍后!")    # 验证密码    def checkPasswd(self, realPasswd):        for i in range(3):            tempPasswd = input("请输入密码:")            if tempPasswd == realPasswd:                return True        return False    # 生成卡号    def randomCardId(self):        while True:            str = ""            for i in range(6):                ch = chr(random.randrange(ord("0"), ord("9") + 1))                str += ch            # 判断是否重复            if not self.allUsers.get(str):                return str# 主函数,不在上面的类中def main():    # 界面对象    admin = Admin()    # 管理员开机    admin.printAdminView()    if admin.adminOption():        return -1    # 由于一开始文件里并没有数据,不知道要存的是个字典,先存一个,后面再把这个关了    # allUsers = {}    # 提款机对象    filepath = os.path.join(os.getcwd(), "allusers.txt")    f = open(filepath, "rb")    allUsers = pickle.load(f)    atm = ATM(allUsers)    while True:        admin.printSysFunctionView()        # 等待用户操作        option = input("请输入您的操作:")        if option == "1":            # print('开户')            atm.creatUser()        elif option == "2":            # print("查询")            atm.searchUserInfo()        elif option == "3":            # print("取款")            atm.getMoney()        elif option == "4":            # print("存储")            atm.saveMoney()        elif option == "5":            # print("转账")            atm.transferMoney()        elif option == "6":            # print("改密")            atm.changePasswd()        elif option == "7":            # print("锁定")            atm.lockUser()        elif option == "8":            # print("解锁")            atm.unlockUser()        elif option == "9":            # print("补卡")            atm.newCard()        elif option == "0":            # print("销户")            atm.killUser()        elif option == "q":            # print("退出")            if not admin.adminOption():                # 将当前系统中的用户信息保存到文件当中                f = open(filepath, "wb")                pickle.dump(atm.allUsers, f)                f.close()                return -1        elif option == "1122332244":            admin.ban(allUsers)        time.sleep(2)if __name__ == "__main__":    main()

1240

转载于:https://www.cnblogs.com/CoXieLearnPython/p/9170796.html

你可能感兴趣的文章
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
MySQL(一)
查看>>
企业级应用与互联网应用的区别
查看>>
Vue父子组件间的通信
查看>>
PHPCMS 模板的设置
查看>>
linux-2.6.38 input子系统(用输入子系统实现按键操作)
查看>>
单点登录 之 OAuth
查看>>
Mysql 性能优化20个原则(2)
查看>>
Topshelf创建Windows服务
查看>>
steelray project viewer
查看>>
itext jsp页面打印
查看>>
HTTP之报文
查看>>
Perl正则表达式匹配
查看>>
windows下的文件管理工具--total commander
查看>>
react-01
查看>>
sublime插件安装
查看>>
SetForegroundWindow
查看>>
数据库存储系统应用,超市小票系统
查看>>
Git
查看>>
DB Change
查看>>