|
|||
|
This is what I am supposed to do:
Create application that will allow you to create a new account either savings or checking for your customer. It must allow the customer to deposit as well as withdraw from his account. Assume that user deposits $100 for the checking account and $500 for the savings account when the account is created. You must create array at least 10 customers. Entry: • You must create an object array for customers who could have either a savings account or a checking account. • You must create a menu to ask the user if they wish to create a new account or they wish to deposit/withdraw from an account. • To create an account - the input you must get from the user is their first name, last name, four pin digit code, want to create a savings account or a checking account. • You must allow the user to return to the menu. • If the user chooses to deposit/withdraw option – then you need to ask if they wish to either deposit or withdraw. • You must then ask the user for his 4 digit pin code • Make sure it exists in the array Requirements: • Savings account and checking account must be subclasses of Account class. You need to think if you need to make the account class an abstract class or not. • In withdrawals you must charge $0.75 for any withdrawal over $2000 in the savings account and $0.50 for any withdrawal over $750 in the checking account. • You must not let the customer withdraw, if his withdrawal exceeds his balance Output: • If account is created – display pin code, first name, last name, the type of account, the amount in the account. • If the option chosen was withdrawal/deposit –you will need to display the Pin code number, last name, first name, deposit/withdrawal, charges if incurred, and the balance in the account I have created an abstract (Account) class along with two subclasses. (Checking and Savings), and a calculation class for output and calculation. Abstract account class: Java Code:
public abstract class Account {
protected int pinNumberInteger;
protected double withdrawChargeDouble, totalDouble, depositDouble, withdrawDouble;
protected String nameString;
public Account(){
this("No Account");
}
public Account(String customerName)
{
nameString = customerName;
}
public abstract void calculateAccount();
public String getNameString()
{
return nameString;
}
public double getWithdrawAmount()
{
return withdrawDouble;
}
public double getDepositAmount()
{
return depositDouble;
}
public double getWithdrawCharge()
{
return withdrawChargeDouble;
}
public double getTotal()
{
return totalDouble;
}
public double getPinNumber()
{
return pinNumberInteger;
}
}
Java Code:
public class Checking extends Account{
public Checking() {
super("No Account");
}
public void calculateAccount()
{
if(withdrawDouble > 750)
{
withdrawChargeDouble = .50;
}
else
{
withdrawChargeDouble = .00;
}
totalDouble += (depositDouble - withdrawDouble - withdrawChargeDouble);
}
}
Java Code:
public class Savings extends Account{
public Savings() {
super("No Account");
}
public void calculateAccount()
{
if(withdrawDouble > 2000)
{
withdrawChargeDouble = .75;
}
else
{
withdrawChargeDouble = .00;
}
totalDouble += (depositDouble - withdrawDouble - withdrawChargeDouble);
}
}
Java Code:
import javax.swing.*;
import java.awt.event.*;
public class ComputeTotals extends JFrame implements ActionListener {
Account account = null;
JPanel mainPanel = new JPanel();
JTextField nameTextField = new JTextField(15);
JTextField createPinTextField = new JTextField(4);
JButton newAccountButton = new JButton("Create an Account");
JTextField depositAmountTextField = new JTextField(10);
JTextField withdrawAmountTextField = new JTextField(10);
JTextField existingPinTextField = new JTextField(4);
JButton depositButton = new JButton("Deposit");
JButton withdrawButton = new JButton("Withdraw");
JTextArea outputTextArea = new JTextArea("Your Bank Statement:" , 10, 30);
JScrollPane outputScrollPane = new JScrollPane(outputTextArea);
String accountType[] = {"Checking", "Savings"};
JComboBox accountTypeComboBox = new JComboBox(accountType);
String [] customerAccountArray = new String[10] ;
int [] pinNumberArray = new int [10];
int existingPinNumberInteger, desiredPinNumberInteger, counterInteger;
double depositAmountDouble, withdrawAmountDouble;
String nameString;
public static void main(String[] args) {
ComputeTotals myTotals = new ComputeTotals();
myTotals.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public ComputeTotals()
{
designFrame();
add(mainPanel);
setTitle("Welcome to Maricon Bank");
setSize(832,287);
setVisible(true);
}
public void designFrame()
{
mainPanel.add(new JLabel(" Name: "));
mainPanel.add(nameTextField);
mainPanel.add(new JLabel(" Desired PIN Number "));
mainPanel.add(createPinTextField);
mainPanel.add(new JLabel(" Account Type "));
mainPanel.add(accountTypeComboBox);
mainPanel.add(newAccountButton);
mainPanel.add(new JLabel(" Enter PIN: "));
mainPanel.add(existingPinTextField);
mainPanel.add(new JLabel(" Amount: "));
mainPanel.add(depositButton);
mainPanel.add(depositAmountTextField);
mainPanel.add(withdrawButton);
mainPanel.add(withdrawAmountTextField);
mainPanel.add(outputTextArea);
newAccountButton.addActionListener(this);
depositButton.addActionListener(this);
withdrawButton.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{
Object sourceObject = evt.getSource();
if(sourceObject == newAccountButton)
{
getInputForCreation();
createAccount();
displayCreatedOutput();
}
else if(sourceObject == withdrawButton || sourceObject == depositButton)
{
getInputForExisting();
calculate();
displayStatementOutput();
}
}
public void getInputForCreation()
{
if (createPinTextField.equals(""))
{
JOptionPane.showMessageDialog(null, "Invalid input!");
}
else
{
desiredPinNumberInteger = Integer.parseInt(createPinTextField.getText());
}
if (nameTextField.equals(""))
{
JOptionPane.showMessageDialog(null, "Invalid input!");
}
else
{
nameString = nameTextField.getText();
}
}
public void getInputForExisting()
{
double depositDouble, withdrawDouble;
depositDouble = account.getDepositAmount();
withdrawDouble = account.getWithdrawAmount();
for(int i = 0; i <= 9; i++)
if(existingPinNumberInteger != pinNumberArray[i] || existingPinTextField.equals(""))
{
JOptionPane.showMessageDialog(null, "This pin number is not in the system");
break;
}
else
{
existingPinNumberInteger = Integer.parseInt(existingPinTextField.getText());
}
if (depositAmountTextField.equals("") && withdrawAmountTextField.equals("") )
{
JOptionPane.showMessageDialog(null, "Invalid input!");
}
else
{
depositDouble = Double.parseDouble(depositAmountTextField.getText());
withdrawDouble = Double.parseDouble(withdrawAmountTextField.getText());
}
}
public void createAccount()
{
for(int i = 0; i <= 9; i++)
{
if(desiredPinNumberInteger == pinNumberArray[i])
{
JOptionPane.showMessageDialog(null, "A customer with this PIN already exists");
break;
}
else
{
pinNumberArray[counterInteger] = desiredPinNumberInteger;
customerAccountArray[counterInteger] = nameString;
System.out.println(desiredPinNumberInteger + nameString);
}
}
}
public void getMethods()
{
if(accountTypeComboBox.getSelectedItem().equals("Checking"))
{
account = new Checking();
}
else
{
account = new Savings();
}
}
public void calculate()
{
if (account != null)
{
account.calculateAccount();
}
}
public void displayCreatedOutput()
{
double totalDouble;
if(accountTypeComboBox.getSelectedItem().equals("Checking"))
{
totalDouble = 100;
}
else
{
totalDouble = 500;
}
outputTextArea.setText("PIN code: " + desiredPinNumberInteger +
'\n' +"Name: " + nameString +
'\n' + "Type of Account:" + accountTypeComboBox.getSelectedItem() +
'\n' + "Amount:" + totalDouble);
}
public void displayStatementOutput()
{
double depositDouble, withdrawDouble, withdrawChargeDouble, totalDouble;
depositDouble = account.getDepositAmount();
withdrawDouble = account.getWithdrawAmount();
withdrawChargeDouble = account.getWithdrawCharge();
totalDouble = account.getTotal();
outputTextArea.setText("PIN code: " + existingPinNumberInteger +
"Name: " + nameString +
"Type of Account:" + accountTypeComboBox.getSelectedItem()
+ "Amount:" + totalDouble);
}
}
Java Code:
public void getInputForExisting()
{
double depositDouble, withdrawDouble;
depositDouble = account.getDepositAmount();
withdrawDouble = account.getWithdrawAmount();
for(int i = 0; i <= 9; i++)
if(existingPinNumberInteger != pinNumberArray[i] || existingPinTextField.equals(""))
{
JOptionPane.showMessageDialog(null, "This pin number is not in the system");
break;
}
else
{
existingPinNumberInteger = Integer.parseInt(existingPinTextField.getText());
}
if (depositAmountTextField.equals("") && withdrawAmountTextField.equals("") )
{
JOptionPane.showMessageDialog(null, "Invalid input!");
}
else
{
depositDouble = Double.parseDouble(depositAmountTextField.getText());
withdrawDouble = Double.parseDouble(withdrawAmountTextField.getText());
}
}
Also, I do not know how to associate the pin number with its amount, to create an entire account object which includes the corresponding pin number, name, and amount in the account. I have not done this with multiclasses before and some advice on how to do this would be great. UPDATE: i've been working on this for the last 2 days.... just stuck now. |
|
|||
|
You don't need to create the account object. Have the checking and savings accounts be subclasses of account so they automatically have all of the information in them that accounts has. Then you don't have to worry about transferring it.
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|