示例#1
0
  static void authorizeTransaction(String command) {
    if (command.split(" ").length < 3) {
      System.out.print("\tError! Not enough arguments for command.\n");
      return;
    }

    String accNum = command.split(" ")[1];

    double amount =
        -Double.parseDouble(
            command
                .split(" ")[
                2]); // Invert the amount because - means add to credit and + means take away from
    // credit
    CreditAccount[] records = loadData();

    for (int i = 0; i < records.length; i++) {
      if (records[i].getAccountNumber().equals(accNum)) {
        if (amount > 0) {
          if (records[i].getMaxLimit() == records[i].getAvailable())
            System.out.print("\tError! Authorization attempt failed. Credit is already max.\n");
          else if (records[i].getAvailable() + amount > records[i].getMaxLimit()) {
            records[i].setAvailable(records[i].getAvailable());
            System.out.print(
                "\tWarning! Authorization granted. Attempted to raise credit above max.\n");
            System.out.printf(
                "\tAccount %s|Transaction %.2f|Available Credit %.2f\n",
                accNum, amount, records[i].getAvailable());
          } else {
            records[i].setAvailable(records[i].getAvailable() + amount);
            System.out.print("\tAuthorization granted.\n");
            System.out.printf(
                "\tAccount %s|Transaction %.2f|Available Credit %.2f\n",
                accNum, amount, records[i].getAvailable());
          }
        } else {
          if (amount + records[i].getAvailable() < 0)
            System.out.print(
                "\tError! Authorization denied. Attempted to use more credit than available .\n");
          else {
            records[i].setAvailable(amount + records[i].getAvailable());
            System.out.print("\tAuthorization granted.\n");
            System.out.printf(
                "\tAccount %s|Transaction %.2f|Available Credit %.2f\n",
                accNum, amount, records[i].getAvailable());
          }
        }

        saveData(records);

        return;
      }
    }

    System.out.print("\tError! No record found for account " + accNum + ".\n");
  }
示例#2
0
  static void createAccount(String command) {
    if (command.split(" ").length < 2) {
      System.out.print("\tError! Not enough arguments for command.\n");
      return;
    }

    String issuerSym = command.split(" ")[1].toUpperCase();
    String accountNum;
    double maxCredit;

    CreditAccount account;
    CreditAccount[] oldRecords;
    CreditAccount[] newRecords;

    if (issuerSym.equals("AE")) accountNum = "3";
    else if (issuerSym.equals("V")) accountNum = "4";
    else if (issuerSym.equals("MC")) accountNum = "5";
    else if (issuerSym.equals("DIS")) accountNum = "6";
    else if (issuerSym.equals("DINE")) accountNum = "7";
    else {
      System.out.print("\tError! Issuer symbol [" + issuerSym + "] is not valid.\n");
      return;
    }

    for (int i = 0; i < 15; i++) accountNum += Integer.toString((int) (Math.random() * 10));

    maxCredit = Integer.parseInt(accountNum.substring(15)) >= 4 ? 1000.0f : 500.0f;

    account = new CreditAccount(accountNum, maxCredit);
    account.setIssuerSymbol(issuerSym.toUpperCase());
    account.setValid(true);

    oldRecords = loadData();
    newRecords = new CreditAccount[oldRecords.length + 1];

    for (int i = 0; i < oldRecords.length; i++) newRecords[i] = oldRecords[i];

    newRecords[oldRecords.length] = account;

    saveData(newRecords);

    System.out.print(
        "\tCreated new credit card account ["
            + issuerSym.toUpperCase()
            + "]:\tAccount Number "
            + accountNum
            + ", Credit Limit : "
            + account.getMaxLimit()
            + "\n");
  }