简单银行系统(JavaScript)

时间:2018-09-02 11:55:25

标签: javascript

我的主要目的是建立一个简单的银行系统(转账,取款,接收,交易历史记录,addCard),每个用户最多可以拥有3张卡。

这是我的代码:

const parameters = {
    tax: 0.05,
    cardsLimit: 3
}

function userCard(number) {
    const cardInformation = { 
    balance: 100,
    transactionLimit: 100,
    historyLogs: [],
    key: number 
    }

    // getCardOptions - return iformation about card
    function getCardOptions() {
      return cardInformation;
    }


    // putCredits
    function putCredits(amount) {
        cardInformation.balance = cardInformation.balance + amount;
        updateHistoryLogs('Received credits', amount)
    }

    // takeCredits
    function takeCredits(amount) {
            cardInformation.balance = cardInformation.balance - amount + amount * parameters.tax;
            updateHistoryLogs('Withdrawal of credits', amount);
    }

    // setTransactionLimit
    function setTransactionLimit(amount) {
        cardInformation.transactionLimit = amount;
        updateHistoryLogs('Transaction limit change', amount);
    }

    // transferCredits
    function transferCredits(amount, card) {
        let amountwithTaxes = amount + amount * parameters.tax;
        if (amountwithTaxes > cardInformation.balance) {
            console.log('Not enough money')
        } else if (amountwithTaxes > cardInformation.transactionLimit) {
            console.log('Amount exceed the Transaction limit')
        } else {
            this.takeCredits(amount);
            card.putCredits(amount);
        }
    }

    // Logs about past transactions
    function updateHistoryLogs(operation, credits) {
        let input = {
            operation,
            credits,
            operationTime: new Date().toLocaleString('en-GB')
        };
        cardInformation.historyLogs.push(input);
    }
    return {
      getCardOptions,
      putCredits,
      takeCredits,
      setTransactionLimit,
      transferCredits
      };

}

// addCard/getcardbyKey
class UserAccount {
    constructor(name) {
        this.name = name;
        this.cards = [];
    }
    addCard() {
        if (this.cards.length < parameters.cardsLimit) {
            console.log('You\'ve got too many cards')
        } else {
            this.cards.push(userCard(this.cards.length + 1));
        }
    }
    getCardByKey(number) {
        return this.cards[number - 1];
    }
}

当我尝试执行它并进行几次交易时,发生以下错误:

  

未捕获的TypeError:无法读取未定义的属性'putCredits'

我在主函数中定义了putCredits属性,不知道为什么代码未执行。

感谢任何帮助和建议!

这是我要执行的代码:

let user = new UserAccount('John');

user.addCard()
user.addCard()

let card1 = user.getCardByKey(1);
let card2 = user.getCardByKey(2);

card1.putCredits(1000);
card1.setTransactionLimit(500);
card1.transferCredits(500, card2);

card2.takeCredits(50);

console.log(card1.getCardOptions()); 

1 个答案:

答案 0 :(得分:4)

问题在于您永远不会添加任何卡,因为您的@on_status <class 'tweepy.models.Status'> test1! #picture @on_status <class 'tweepy.models.Status'> This is test picture tweet2! #picture 条件不正确。因此,当您尝试访问卡时:if不确定。

您的addCard let card1 = user.getCardByKey(1);条件应类似于:

if

代码:

if (this.cards.length > parameters.cardsLimit)