modify the CheckingAccount class to add the following instance members: an array
ID: 3760264 • Letter: M
Question
modify the CheckingAccount class to add the following instance members: an array(self expanding type) or ArrayList of Transaction objects and a int variable transCount(incremented each time a new Transaction object is created). Create a Transaction class that stores an int transNumber(will be the current value of transCount), an int transId (1 = check, 2 = deposit 3 = service charge) and a double transAmt. Prompt the user for the choice of a) entering a transaction, b) listing all transations, c) listing all checks, d) listing all deposits.(implement these options with JFrame,JLabel, JRadioButton, ButtonGroup, and a listener) The listings must go to a Dialog box. Add instance methods to the CheckingAccount class like addTrans(put a trans into the account), getTrans(get a transaction from the array) getTransCount(get the current value of transCount class variable) and any other methods you wish to implement. This program is event-driven. You cannot put all the processing steps/logic in main. You can put them in helper methods in the Main class, in the GUI objects class, or in the CheckingAccount class, so they can be called by the listener method. in java please.
Explanation / Answer
Accounting class
import java.util.ArrayList;
public class CheckingAccount
{
private double balance;
private double totalServiceCharge;
private ArrayList<Transaction> transList;
private int transCount = 0;
private int transSize = 0;
public CheckingAccount(double initialBalance)
{
balance = initialBalance;
totalServiceCharge = 0;
}
public double getBalance()
{
return balance;
}
public void setBalance(double transAmt, int tCode)
{
if(tCode==1)
balance-=transAmt;
else if(tCode==2)
balance+=transAmt;
}
public double getServiceCharge()
{
return totalServiceCharge;
}
public void setServiceCharge(double currentServiceCharge)
{
totalServiceCharge += currentServiceCharge;
}
public void addTrans(Transaction newTrans)
{
transList = new ArrayList<Transaction>();
transList.add(newTrans);
}
public int getTransCount()
{
transCount++;
return transCount;
}
public Transaction getTrans(int i)
{
return transList.get(i);
}
public int getSize()
{
transSize = transList.size();
return transSize;
}
}
Transaction class:
public class Transaction
{
private int transNumber;
private int transId;
private double transAmt;
public Transaction(int number, int id, double amount)
{
transNumber = number;
transId = id;
transAmt = amount;
}
public int getTransNumber()
{
return transNumber;
}
public int getTransId()
{
return transId;
}
public double getTransAmount()
{
return transAmt;
}
}
checking account class
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import javax.swing.*;
public class CheckingAccountActions extends JPanel
{
public static double initialBalance, transactionAmount;
public static int firstTime = 0;
static CheckingAccount ca;
static DecimalFormat dollar;
static Transaction t;
public static int check = 1, deposit = 2, serviceCharge = 3;
private JLabel message;
private JRadioButton transaction, listTrans, checks, deposits;
ArrayList transList;
public CheckingAccountActions()
{
initialBalance = initialBalance();
ca = new CheckingAccount(initialBalance);
dollar = new DecimalFormat("#,###.00");
message = new JLabel ("Choose an action: ");
message.setFont (new Font ("Helvetica", Font.BOLD, 24));
transaction = new JRadioButton("Entering a Transaction");
transaction.setBackground (Color.yellow);
listTrans = new JRadioButton("Listing All Transactions");
listTrans.setBackground(Color.yellow);
checks = new JRadioButton("Listing All Checks");
checks.setBackground(Color.yellow);
deposits = new JRadioButton("Listing All Deposits");
deposits.setBackground(Color.yellow);
ButtonGroup group = new ButtonGroup();
group.add(transaction);
group.add(listTrans);
group.add(checks);
group.add(deposits);
CheckingAccountActionsListener listener = new CheckingAccountActionsListener();
transaction.addActionListener(listener);
listTrans.addActionListener(listener);
checks.addActionListener(listener);
deposits.addActionListener(listener);
add(message);
add(transaction);
add(listTrans);
add(checks);
add(deposits);
setBackground(Color.RED);
setPreferredSize (new Dimension(250, 180));
}
private class CheckingAccountActionsListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
int transactionCode;
double transAmt = 0;
int i = 0;
if(source==transaction)
{
transactionCode = getTransCode();
t = new Transaction(ca.getTransCount(),transactionCode,transAmt);
ca.addTrans(t);
switch(transactionCode)
{
case 1:
transAmt = getTransAmt();
ca.setBalance(transAmt, transactionCode);
processCheck(transAmt);
JOptionPane.showMessageDialog(null, transList.get(i));
break;
case 2:
transAmt = getTransAmt();
ca.setBalance(transAmt, transactionCode);
processDeposit(transAmt);
JOptionPane.showMessageDialog(null, transList.get(i));
break;
case 0:
JOptionPane.showMessageDialog(null, "Transaction: End "+"Current Balance: $" + ca.getBalance()+" "+"Total Service Charge: $" + dollar.format(ca.getServiceCharge()) + " "+ "Final Balance: $"+ dollar.format(ca.getBalance() - ca.getServiceCharge()));
break;
default:
JOptionPane.showMessageDialog(null, "Invalid Choice. Enter Again.");
}
}
else if(source==listTrans)
{
int types = 0;
int nums = 0;
double amount = 0;
String line;
line = String.format("List All Transactions" + " " + "ID Type Amount" + " ");
for(int index = 0; index < ca.getSize(); index++)
{
types = ca.getTrans(index).getTransId();
nums = ca.getTrans(index).getTransNumber();
amount = ca.getTrans(index).getTransAmount();
line += String.format("%-10s %3d %10s", nums,types,amount) + " ";
}
JTextArea text = new JTextArea(line);
text.setBorder(null);
text.setOpaque(false);
text.setFont(new Font("Monospaced", Font.PLAIN, 14));
JOptionPane.showMessageDialog(null, text);
}
else if(source==checks)
{
String line = String.format("Checks made: ");
JTextArea text = new JTextArea(line);
text.setBorder(null);
text.setOpaque(false);
text.setFont(new Font("Monospaced", Font.PLAIN, 14) );
JOptionPane.showMessageDialog(null, text);
}
else if(source==deposits)
{
String line = String.format("Deposits made: ");
JTextArea text = new JTextArea(line);
text.setBorder(null);
text.setOpaque(false);
text.setFont(new Font("Monospaced", Font.PLAIN, 14) );
JOptionPane.showMessageDialog(null, text);
}
}
}
public static int getTransCode()
{
int code;
String userInput;
userInput=JOptionPane.showInputDialog("Enter the transaction code: "+"1) Check 2) Deposit 0) Exit the program");
code=Integer.parseInt(userInput);
return code;
}
public static double initialBalance()
{
double initialBalance;
String userInput;
userInput = JOptionPane.showInputDialog("Enter initial account balance :");
initialBalance = Double.parseDouble(userInput);
return initialBalance;
}
public static double getTransAmt()
{
double amount;
String userInput;
userInput=JOptionPane.showInputDialog("Enter the transaction amount: ");
amount=Double.parseDouble(userInput);
return amount;
}
public static double processCheck(double transAmt)
{
ca.setBalance(transAmt, 1);
ca.setServiceCharge(0.15);
if(ca.getBalance()<500)
{
if(firstTime==0)
{
ca.setServiceCharge(5.00);
JOptionPane.showMessageDialog(null,"Transaction Amount: Check in Amount of $"+ transactionAmount + " " +"Current Balance: $" + dollar.format(ca.getBalance())+ " "+"Service Charge: Check --- charge $0.15 " + "Service Charge: Below $500 --- charge $5.00 " + "Total Service Charge: $" + dollar.format(ca.getServiceCharge()) );
firstTime++;
}
JOptionPane.showMessageDialog(null,"Transaction Amount: Check in Amount of $"+ transactionAmount + " " +"Current Balance: $" + dollar.format(ca.getBalance())+ " "+"Service Charge: Check --- charge $0.15 "+ "Total Service Charge: $" + dollar.format(ca.getServiceCharge()) );
}
else
{
JOptionPane.showMessageDialog(null,"Transaction Amount: Check in Amount of $"+ transactionAmount + " " + "Current Balance: $" + dollar.format(ca.getBalance())+ " "+"Service Charge: Check --- charge $0.15 "+ "Service Charge: None " + "Total Service Charge: $" + dollar.format(ca.getServiceCharge()) );
}
if(ca.getBalance()<0)
{
ca.setServiceCharge(10.00);
JOptionPane.showMessageDialog(null, "Your balance is under $0.");
}
if(ca.getBalance()<50)
{
JOptionPane.showMessageDialog(null, "Your balance is under $50.");
}
return transAmt;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.