瞭望_松译 2024-04-27 19:30 采纳率: 0%
浏览 38

有人能帮我看一下吗,银行系统代码找不出问题

有人能帮我看一下吗,找不出问题

from admin import Admin
from atm import ATM
import time
import csv


class HomePage:
    def __init__(self):
        self.allUserD = {}  # 使用字典存储数据
        a_head = ['卡号', '姓名', '身份证号', '手机号', '余额', '密码', '状态']
        with open('atmin.csv',mode='r') as csv_file:
            csv_reader = csv.DictReader(csv_file,a_head)
        self.csv_reader = csv_reader
        if self.csv_reader:
            for row in self.csv_reader:
                card = Card(csv_reader[row]['卡号'],csv_reader[row]['密码'],csv_reader[row]['余额'],csv_reader[row]['状态'])
                user = User(csv_reader[row]['姓名'],csv_reader[row]['身份证号'],csv_reader[row]['手机号'],card)
                self.allUserD[csv_reader[row]['卡号']] = user
        self.atm = ATM(self.allUserD)
        self.admin = Admin()  # 管理员开机界面

    def saveUser(self):
        self.allUserD.update(self.atm.alluser)
        with open('atmin.csv',mode='w') as csv_file:
            for row in self.allUserD.keys():
                CARDID = row
                NAME = self.allUserD[row].name
                UID = self.allUserD[row].id
                PHONE = self.allUserD[row].phone
                CARD = self.allUserD[row].card
                PRESTMONEY = CARD.prestmoney
                PWD = CARD.cardPwd
                TOF = CARD.cardLock
                rows = {'卡号':CARDID,'姓名':'NAME','身份证':UID,'手机号':PHONE,'余额':PRESTMONEY,'密码':PWD,'状态':TOF}
                wave(rows)
        print("数据存盘成功")

    def main(self):
        self.admin.printAdminView()
        resL = self.admin.adminOption()
        if not resL:
            while True:
                self.admin.printsysFunctionView()
                option = input("请输入您的操作:")
                if option not in ("1", "2", "3", "4", "5",
                                  "6", "7", "S", "Q", "q"):
                    print("输入操作项有误,请仔细确认!")
                    time.sleep(1)
                if option == "1":  # 开户
                    self.atm.creatUser()
                elif option == "2":  # 查询
                    self.atm.searchUser()
                elif option == "3":  # 取款
                    self.atm.getMoney()
                elif option == "4":  # 存储
                    self.atm.saveMoney()
                elif option == "5":  # 转账
                    self.atm.transferMoney()
                elif option == "6":  # 锁定
                    self.atm.lockCard()
                elif option == "7":  # 解锁
                    self.atm.unlockCard()
                elif option.upper() == "Q":
                    if not (self.admin.adminOption()):
                        self.saveUser()

                        print('退出系统')
                        return -1


if __name__ == "__main__":
    homepage = HomePage()
    homepage.main()


class Admin:
    adminU = 'songyi2024'  # 管理员的账号
    adpwd = '20111224'  # 管理员的密码

    def printAdminView(self):
        print("******************************************")
        print("***                                    ***")
        print("***                                    ***")
        print("***         欢迎登录银行系统            ***")
        print("***                                    ***")
        print("***                                    ***")
        print("******************************************")

    def printsysFunctionView(self):
        print("***********************************************")
        print("***                                         ***")
        print("***    1.开户(1)                2.查询(2)   ***")
        print("***    3.取款(3)                4.存款(4)   ***")
        print("***    5.转账(5)                6.锁定(6)   ***")
        print("***    7.解锁(7)                            ***")
        print("***                                         ***")
        print("***    退出(Q)                              ***")
        print("***                                         ***")
        print("***********************************************")

    def adminOption(self):
        adminInput = input("请输入管理员账户:")
        if self.adminU != adminInput:
            print("管理员账户输入错误......")
            return -1
        passwordInput = input("请输入密码:")
        if self.adpwd != passwordInput:
            print("输入密码有误......")
            return -1
        else:
            print("操作成功,请稍后......")
            return 0


from user import User
from card import Card
import random
import csv


class ATM:
    def __init__(self, alluser):
        self.alluser = alluser

    def save(list):
        a_head = ['卡号', '姓名', '身份证号', '手机号', '余额', '密码', '状态']

        file = open('atmin.csv', mode='w')
        csv_writer = csv.DictWriter(file, a_head)
        csv_writer.writeheader()
        csv_writer.writerows(list)

        file.close()
    def read(ad,namey):
        file = open('atmin.csv', mode='r')
        csv_reader = csv.DictReader(file)
        return csv_reader[ad-1][namey]
        file.close()
    def dex(ad,name,fi):
        with open('atmin.csv', mode='r') as file:
            csv_reader = csv.DictReader(file)
            csv_reader[ad-1][name] = fi
        with open('atmin.csv', mode='w') as file:
            csv_writer = csv.writer(file)
            csv_writer.writerows(csv_reader)
    def randomiCardId(self):  # 随机生成开户卡号
        while True:
            str_data = ''  # 存储卡号
            for i in range(6):  # 随机生成6位卡号
                ch = chr(random.randrange(ord('0'), ord('9') + 1))
                str_data += ch
            if not self.alluser.get(str):  # 判断卡号是否重复
                # save(str_data,Card)
                return str_data


    def creatUser(self):
        # 目标向用户字典中添加一个键值对(卡号、用户对象)
        name = input("请输入姓名:")
        Uid = input("请输入身份证号:")
        phone = input("请输入手机号:")
        prestMoney = float(input("请输入预存金额:"))
        if prestMoney <= 0:
            print("预存款输入有误,开户失败")
            return -1
        oncePwd = input("请输入密码:")
        passWord = input("请再次输入密码:")
        if passWord != oncePwd:
            print("两次密码输入不同......")
            return -1
        print("密码设置成功,请牢记密码:  %s " % passWord)
        cardId = self.randomiCardId()
        card = Card(cardId, oncePwd, prestMoney,False)  # 创建卡
        user = User(name, Uid, phone, card)  # 创建用户
        self.alluser[cardId] = user  # 存入用户字典
        print("您的开户已完成,请牢记开户账号: %s" % cardId)
        # ['卡号', '姓名', '身份证号', '手机号', '余额', '密码', '状态']
        # save([{'卡号':cardId,'姓名':name,'身份证号':Uid,'手机号':phone,'余额':prestMoney,'状态':False}])

    def checkpwg(self, realPwd):
        for i in range(3):
            psd2 = input("请输入密码:")
            if realPwd == psd2:
                return True
        print("密码输错三次,系统自动退出......")
        return False

    def lockCard(self):
        inptcardId = input("请输入您的卡号:")
        user = self.alluser.get(inptcardId)
        if not self.alluser.get(inptcardId):
            print("此卡号不存在...锁定失败!")
            return -1
        if user.card.cardLock:
            print("该卡已经被锁定,无需再次锁定!")
            return -1
        if not self.checkpwg(user.card.cardPwd):  # 验证密码
            print("密码错误...锁定失败!!")
            return -1
        user.card.cardLock = True
        print("该卡被锁定成功!")

    def searchUser(self, base=1):
        if base == 2:
            inptcardId = input("请输入转出主卡号:")
        elif base == 3:
            inptcardId = input("请输入转入卡号:")
        elif base == 1:
            inptcardId = input("请输入您的卡号:")
        user = self.alluser.get(inptcardId)
        # 如果卡号不存在,下面代码就会执行
        if not self.alluser.get(inptcardId):
            print("此卡号不存在...查询失败!")
            return -1
        if user.card.cardLock:
            print("该用户已经被锁定...请解卡后使用!")
            return -1
        if not self.checkpwg(user.card.cardPwd):  # 验证密码
            print("密码错误过多...卡已经被锁定,请解卡后使用!")
            user.card.cardLock = True
            return -1

        if not base == 3:  # 查询转入账户   不打印余额
            print("账户: %s   余额: %.2f  " %
                  (user.card.cardId, user.card.money))
        return user

    def getMoney(self):
        userTF = self.searchUser()
        if userTF != -1:
            if userTF.card.cardId != '':
                inptMoney = float(input("请输入取款金额:"))
                if inptMoney > int(userTF.card.money):
                    print("输入的金额大于余额,请先查询余额!")
                    return -1
                userTF.card.money = \
                    float(userTF.card.money) - inptMoney
                print("取款成功!  账户: %s   余额: %.2f  " %
                      (userTF.card.cardId, userTF.card.money))
        else:
            return -1

    def saveMoney(self):
        userTF = self.searchUser()
        if userTF != -1:
            if not userTF.card.cardLock == True:
                if userTF.card.cardId != '':
                    inptMoney = float(input("请输入要存入得金额:"))
                    if inptMoney < 0:
                        print("请输入正确金额")
                    else:
                        userTF.card.money += inptMoney
                        print("存款成功!  账户: %s   余额: %.2f  " %
                              (userTF.card.cardId, userTF.card.money))
        else:
            return -1

    def transferMoney(self):
        MasterTF = self.searchUser(base=2)
        if (MasterTF == -1):
            return -1
        userTF = self.searchUser(base=3)
        if (userTF == -1):
            return -1
        in_tr_Money = float(input("请输入转账金额:"))
        if MasterTF.card.money >= in_tr_Money:
            str = input("您确认要继续转账操作吗(y/n)?:")
            if str.upper() == "Y":
                MasterTF.card.money -= in_tr_Money
                userTF.card.money += in_tr_Money
                print("转账成功!  账户: %s   余额: %.2f  " %
                      (MasterTF.card.cardId, MasterTF.card.money))
            else:
                print("转账失败,中止了操作")
        else:
            print("转账失败,余额不足!  账户: %s   余额: %.2f  " %
                  (MasterTF.card.cardId, MasterTF.card.money))

    def unlockCard(self):
        inptcardId = input("请输入您的卡号:")
        user = self.alluser.get(inptcardId)
        while 1:
            if not self.alluser.get(inptcardId):
                print("此卡号不存在...解锁失败!")
                return -1
            elif not user.card.cardLock:
                print("该卡未被锁定,无需解锁!")
                break
            elif not self.checkpwg(user.card.cardPwd):
                print("密码错误...解锁失败!!")
                return -1
                user.card.cardLock = False  # 解锁

            print("该卡 解锁 成功!")
            break



class Card:
    def __init__(self,cardId,cardPwd,money,cardlock):
        self.cardId = cardId
        self.cardPwd = cardPwd
        self.money = money
        self.cardLock = cardlock

class User:
    def __init__(self, name, id, phone, card):
        self.name = name
        self.id = id
        self.phone = phone
        self.card = card


目录如下:
银行系统.py
admin.py
atm.py
card.py
user.py

  • 写回答

3条回答 默认 最新

  • DTcode7 前端领域优质创作者 2024-05-28 09:53
    关注

    答案引用自chatgpt生成,望对题主有所帮助/启发;若有帮助,还望采纳!

    对不起,由于这是一个开放性的问题,我无法直接查看或分析具体的银行系统代码。但是,我可以提供一些通用的调试和故障排除技巧,这些技巧可能对你有帮助。

    1. 理解代码逻辑:首先,你需要理解代码的基本逻辑和功能。这可能需要你阅读相关的文档或者询问开发者。

    2. 逐步调试:你可以使用调试工具(如Python的pdb,Java的JDB等)来逐步执行代码,观察变量的值和程序的执行流程。

    3. 记录日志:在关键的地方添加日志输出,可以帮助你了解代码的执行过程。例如,你可以在每个函数开始和结束时输出一条日志,显示函数的输入和输出。

    4. 单元测试:编写针对关键功能的单元测试,可以帮助你发现代码中的错误。

    5. 代码审查:如果可能的话,让其他人审查你的代码也是一个好方法。他们可能会发现你没有注意到的问题。

    6. 性能分析:如果代码的性能不佳,你可以使用性能分析工具(如Python的cProfile,Java的VisualVM等)来找出瓶颈。

    7. 回滚和备份:在进行调试和修改之前,确保你有一份代码的备份,以防修改后的代码引入新的问题。

    以上只是一些基本的建议,具体的解决方案可能需要根据你的代码和问题来确定。如果你能提供更多的信息,我可能能给出更具体的建议。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月27日

悬赏问题

  • ¥100 TM4C1290NCPDT 在线调试
  • ¥15 bootstrap 表格不对齐,不对齐
  • ¥15 如何使用python-escpos库实现标签打印
  • ¥15 这个IC谁知道是什么用途及型号?
  • ¥15 sd问题(标签-stable diffusion|关键词-table)
  • ¥20 python-escpos 标签打印
  • ¥60 请求帮助 电脑无法安装exe
  • ¥15 怎么不用break/import过滤不符合要求的输入!求解答!
  • ¥15 cs2游戏卡顿,控制台一直跳码
  • ¥15 imshow 不能显示图片只有白色空白窗口