banking/Account.java
banking/Account.java
package banking ;
import java . time . * ;
import java . util . * ;
import java . util . stream . Collectors ;
/**
*
* @author wpollock
*/
public abstract class Account implements Comparable < Account > {
private static int nextId = 1 ;
protected final Customer customer ;
protected final String accountId ;
protected String description ;
protected final LocalDateTime creationDate ;
// protected StatementCycle statementCycle; // An enum representing any
// // possible statement cycle
protected double balance ;
protected List < Transaction > transactions = new ArrayList <> ();
/**
* @param cust Customer owning this account
* @param initialBalance Current balance
* @param accountDescription A description
*/
public Account ( Customer cust , double initialBalance ,
String accountDescription ) {
this . customer = cust ;
this . creationDate = LocalDateTime . now ();
this . accountId = "" ;
// Stub
}
/**
* @param amount The amount to deposit
*/
public abstract void deposit ( double amount );
/**
* If the account doesn't have sufficient funds for the specified
* amount, an insufficient funds fee (penalty) is charged on the
* account.
* @param amount The amount to withdraw
*/
public abstract void withdraw ( double amount );
/** Transfer funds between two accounts of a single customer.
*
* @param fromAccount The source of the funds
* @param toAccount The account in which the funds will be deposited
* @param amount The amount to transfer
*/
public static void transfer ( Account fromAccount , Account toAccount ,
double amount ) {
// Stub
}
/**
* @return The description for this account
*/
public String getAccountDescription () {
return null ; // Stub
}
/**
* @param accountDescription The replacement description of this account
*/
public void setAccountDescription ( String accountDescription ) {
// Stub
}
/**
* @return The current account balance
*/
public double getBalance () {
return 0.00 ; // Stub
}
/**
* @return read-only view of the account's transaction list
*/
public List < Transaction > getTransactions () {
return null ; // Stub
}
/**
* @param transactionId The id of the transaction to search for
* @return the matching transaction
* @throws IllegalArgumentException when no such transaction exists
*/
public Transaction getTransaction ( int transactionId ) {
return null ; // Stub
}
/**
* @return Account's ID
*/
public String getAccountId () {
return null ; // Stub
}
/**
* @return the customer who owns this account
*/
public String getCustomerId () {
return null ; // Stub
}
/**
* @return The date and time the account was created.
*/
public LocalDateTime getAccountCreationDate () {
return null ; // Stub
}
@ Override
public int hashCode () {
return 0 ; // Stub
}
@ Override
public boolean equals ( Object obj ) {
return false ; // Stub
}
@ Override
public int compareTo ( Account other ) {
return 1 ; // Stub
}
@ Override
public String toString () {
return null ; // Stub
}
}
banking/Bank.java
banking/Bank.java
package banking ;
import java . util . * ;
import java . util . stream . Collectors ;
/**
* @author wpollock
*
*/
public class Bank {
private final String NAME ;
private final Map < String , Customer > customers = new HashMap <> ();
private double insufficientFundsPenalty = 10.00 ; // Default, in dollars
/** Creates a new Bank object with the given name.
*
* @param name Name of the bank
*/
public Bank ( String name ) {
this . NAME = "" ; // Stub
}
/** Starts up the Bank simulator
* @param args command line arguments - ignored
*/
public static void main ( String [] args ) {
System . out . println ( "Hello from Bank" ); // Stub
}
/**
* @return the insufficientFundsPenalty
*/
public double getInsufficientFundsPenalty () {
return insufficientFundsPenalty ;
}
/**
* @param insufficientFundsPenalty the insufficientFundsPenalty to set
*/
public void setInsufficientFundsPenalty ( double insufficientFundsPenalty ) {
// Stub
}
/**
* @return the name
*/
public String getNAME () {
return NAME ;
}
/** Adds a new bank account
*
*/
public void addAccountWizard () {
// Stub
}
/** Generates a report of all current accounts, in account ID order
* @return A list of all accounts of all customers of this bank, sorted
* by ID.
*
*/
public SortedSet < Account > getAllAccounts () {
// for each customer, get accounts and add to sorted set.
return null ; //Stub
}
/** Add a new customer to the bank, using a GUI form
*
*/
public void addCustomerWizard () {
}
/** Add a new customer to the bank.
* @param lastName Customer's last (sur- or family) name
* @param firstName Customer's first (or given) name
* @return the customer's ID
*/
public String addCustomer ( String lastName , String firstName ) {
return null ; // Stub
}
/** Deletes a customer from the bank.
* (In reality, just marks the customer as non-current.)
* @param customerId the ID of the customer to remove
*/
public void removeCustomer ( String customerId ) {
// Stub
}
/** Generates a report of all current customers, in customer ID order
* @return SortedSet of all customers at this bank.
*/
public SortedSet < Customer > getAllCustomers () {
return null ; // Stub
}
/** Get a Customer object, given a customer's ID
*
* @param customerId The ID of the customer
* @return That customer's Account, or null
*/
public Customer getCustomer ( String customerId ) {
return null ; // Stub
}
/** Get a List of Customer objects, given a customer's last and
* first names
*
* @param lastName The customer's last name
* @param firstName The customer's first name
* @return a List of Customers with that first and last name,
* or null if no such customer exists
*/
public List < Customer > getCustomer ( String lastName , String firstName ) {
return null ; // Stub
}
/** Return a List of a given customer's accounts (if any)
*
* @param customerId The Customer ID who's account list is desired.
* @return a List of the accounts of that customer, if any.
*/
public List < Account > getCustomersAccounts ( String customerId ) {
return null ; // Stub
}
}
banking/Customer.java
banking/Customer.java
package banking ;
import java . util . * ;
/**
* @author wpollock
*
*/
public class Customer implements Comparable < Customer > {
private static int nextId = 1 ;
private final Bank bank ;
private final String customerId ;
private final String lastName ;
private final String firstName ;
private final SortedSet < Account > customerAccounts = new TreeSet <> ();
/** Creates a new Customer object from a name.
* Note for this project, we assume bank names are unique.
* @param bank The bank owning this account
* @param lastName The last name of the account owner.
* @param firstName The first name of the account owner.
*/
public Customer ( Bank bank , String lastName , String firstName ) {
this . bank = null ;
this . customerId = "" ;
this . lastName = "" ;
this . firstName = "" ;
// Stub
}
/**
* @return the bank
*/
public Bank getBank () {
return null ; // Stub
}
/** Getter for customer's ID
* @return The customer's ID
*/
public String getCustomerId () {
return null ; // Stub
}
/** Getter for the customer's last name
* @return The customer's last name
*/
public String getLastName () {
return null ; // Stub
}
/** Getter for the customer's first name
* @return The customer's first name
*/
public String getFirstName () {
return null ; // Stub
}
/** Returns a read-only SortedSet of the customer's active
* accounts (if any)
*
* @return an immutable SortedSet of accounts (check for
* immutability of accounts; use a List?)
*/
public SortedSet < Account > getCustomerAccounts () {
return null ; // Stub
}
/** Returns the total fees (including penalties) paid by this customer
* for year-to-date
*
* @return YTD fees paid
*/
public double ytdFees () {
return 0.0 ; // Stub
}
/** Returns the total interest paid to this customer for year-to-date
* @return YTD interest payed
*/
public double ytdInterest () {
return 0.0 ; // Stub
}
/** Adds a new bank account
* @param initBal Initial balance
* @param desc A description for the account, chosen by the customer
* @return the newly added account object
*/
public SavingsAccount addSavingsAccount ( double initBal , String desc ) {
return null ; // Stub
}
/** Deletes a given account (in the real world, just marks it as defunct
* or something)
* @param accountId the ID of the account to remove
*/
public void removeAccount ( String accountId ) {
// Stub
}
/** Find an account given an account ID
*
* @param accountId The ID of the desired account
* @return The Account object, or null if no such account
*/
public Account getAccount ( String accountId ) {
return null ; // Stub
}
@ Override
public String toString () {
return "" ; // Stub
}
@ Override
public int hashCode () {
return 0 ; // Stub
}
@ Override
public boolean equals ( Object obj ) {
return false ; // Stub
}
@ Override
public int compareTo ( Customer other ) {
return 1 ; // Stub
}
}
banking/SavingsAccount.java
banking/SavingsAccount.java
package banking ;
import static banking . TransactionType . * ;
/**
* @author wpollock
*
*/
public class SavingsAccount extends Account {
// Default monthly interest rate, applied on last day of statement cycle:
private static double DEFAULT_INTEREST_RATE = 2.0 ; // a percent
/** SavingsAccount constructor, using default interest rate.
* @param cust The customer that owns this account
* @param initialBalance The initial account balance
* @param description An account description provided by the owner
*/
public SavingsAccount ( Customer cust , double initialBalance ,
String description ) {
super ( cust , initialBalance , description );
}
/** SavingsAccount constructor, using a custom interest rate.
* @param cust The customer that owns this account
* @param initialBalance The initial account balance
* @param description An account description provided by the owner
* @param interestRate Account's default monthly interest rate
*/
public SavingsAccount ( Customer cust , double initialBalance ,
String description , double interestRate ) {
super ( cust , initialBalance , description );
// Stub
}
@ Override
public void deposit ( double amount ) {
// Stub
}
@ Override
public void withdraw ( double amount ) {
// Stub
}
/** Adds a transaction "INTEREST PAYMENT" based on this account's
* monthly interest rate.
* @param rate Interest rate to apply, as a percentage (e.g. 2.1".
*/
public void addInterestTransaction ( double rate ) {
// Stub
}
/**
* @return the interestRate
*/
public static double getDefaultInterestRate () {
return 0.00 ; // Stub
}
/**
* @param interestRate the interestRate to set
*/
public static void setDefaultInterestRate ( double interestRate ) {
// Stub
}
}
banking/Transaction.java
banking/Transaction.java
package banking ;
import java . time . * ;
/**
* @author wpollock
*
*/
public class Transaction implements Comparable < Transaction > {
private static int nextID = 1 ;
private final int id ;
private final LocalDateTime timestamp ;
private final TransactionType type ;
private final double amount ;
private final String description ;
/**
* @param type The type of this transaction
* @param amount The amount of the transaction
* @param description The description of the transaction.
* This may include check numbers, memo, payee, etc.
*/
public Transaction ( TransactionType type , double amount ,
String description ) {
this . id = 1 ;
this . type = null ;
this . amount = 0.00 ;
this . description = "" ;
this . timestamp = LocalDateTime . now ();
// Stub
}
/**
* @return the id
*/
public int getId () {
return 0 ; // Stub
}
/**
* @return the timestamp for this transaction
*/
public LocalDateTime getTimestamp () {
return null ; // Stub
}
/**
* @return the transaction type
*/
public TransactionType getType () {
return null ; // Stub
}
/**
* @return the amount of this transaction.
* Transaction amounts are always positive.
*/
public double getAmount () {
return 0.00 ; // Stub
}
/**
* @return the description
*/
public String getDescription () {
return null ; // Stub
}
@ Override
public String toString () {
return "" ; // Stub
}
@ Override
public int hashCode () {
return 1 ; // Stub
}
@ Override
public boolean equals ( Object obj ) {
return false ; // Stub
}
@ Override
public int compareTo ( Transaction other ) {
return 0 ; // Stub
}
}
banking/TransactionType.java
banking/TransactionType.java
package banking ;
/** A list of the possible types of transactions in the banking simulation.
* @author wpollock
*
*/
public enum TransactionType {
DEPOSIT , WITHDRAWAL , INTEREST , CHECK , FEE , PENALTY , ADJUSTMENT ;
}
Applied Sciences
Architecture and Design
Biology
Business & Finance
Chemistry
Computer Science
Geography
Geology
Education
Engineering
English
Environmental science
Spanish
Government
History
Human Resource Management
Information Systems
Law
Literature
Mathematics
Nursing
Physics
Political Science
Psychology
Reading
Science
Social Science
Home
Blog
Archive
Contact
google+twitterfacebook
Copyright © 2019 HomeworkMarket.com