CIS 3260 Introduction to Programming: online banking application

Group Project (Final Version)

Project Description

The group project is to design and develop a simplified online banking application using object-oriented design and programming. It is a group project and each group should consist of two or three members of your choice. If you choose to work individually, you will have an additional 5 days to submit your assignment.

Application Specification

C&J Bank is a small community bank and offers two types of checking accounts and two types of saving accounts. The characteristics of those accounts are explained in those two tables below:

  Regular Checking Account Interest Checking Account
Earn interest from balance (APY[1]) No 0.01%
Minimum opening deposit $250.00 $500.00
Monthly maintenance fee $12.00, but no monthly fee if

(a)    One direct deposit of $250.00 or more

OR

(b)   Maintain an average daily balance of $1,500.00 or more

$25.00, but no monthly fee if the account maintains combined balance of $10,000 or more in all checking and saving accounts during each statement cycle
Overdraft protection No Yes. Automatically transfers from a linked savings account
Overdraft fee $35.00 per check (withdrawal) $35.00 per check (withdraw) if the balance combined with linked savings accounts cannot cover the amount of withdrawal. Otherwise, there is no fee.

 

  Regular Savings Account Money Market Savings Account
Earn interest from balance (APY) 0.02% 0.04%
Minimum opening deposit $25.00 $25.00
Monthly maintenance fee $5.00, but no fee during each statement cycle if maintain a $300 minimum daily balance $12.00, but no fee during each statement cycle if maintain a $2500 minimum daily balance

 

Account Information

Based on those two tables above, the following data items are identified for those accounts:

  • A unique account number and the type of the account, both assigned by the bank
  • Owners of the account
  • Annual interest rate
  • Minimal open deposit
  • Minimal monthly balance and monthly maintenance fee
  • Current balance
  • Service charge resulted from monthly maintenance fee
  • Overdraft protection applicable to checking accounts
  • Service charge resulted from overdraft applicable to checking accounts

Customer Information

The following information about each owner of an account is recorded when the account is opened:

  • Unique customer ID assigned by the bank
  • First name, middle name, and last name
  • Primary residence address including street number, city, state and zip code
  • Phone numbers and their types (home, work, or cellular)
  • Online access user ID and password selected by the user

An account may have multiple co-owners..

Business Rules of the Online Banking

A set of business rules has been specified for all banking operations provided by the online banking.

Online Banking Security

Before accessing to the accounts, a user is required to log in using the user ID and password of the user. If the user ID and password match that in the system, the user can access all accounts of which the user is an owner/co-owner.

Account Balance Inquiry

Upon receiving the balance inquiry request, the system should provide the following information of each account:

  • Account number
  • Account type
  • Current balance
  • Interest earned if applicable, which is calculated based on the current balance when the inquiry is made
  • Monthly maintenance fee charge
  • Overdraft fee charges
Account Deposit

A user can only deposit fund into an account of which the user is an owner/co-owner. The amount of deposit must be positive and there is no upper limit on the amount of deposit.

For a regular checking account, the service fee resulted from monthly maintenance fee is waived if the amount of a single deposit is $250.00 or more. Waiving of monthly maintenance fee is not applicable for all other types of accounts.

Account Withdrawal

A user can only withdraw fund from an account of which the user is an owner/co-owner. The amount to be withdrawn from an account must be equal to or less than the current balance of the account. If the requested amount is larger than the current balance, the withdrawal request must be rejected except for interest checking accounts as explained in the following paragraph.

If the requested amount is larger than current balance of an interest checking account, the system should automatically transfer some fund from the saving accounts linked to the checking account to cover the requested amount. However, if the balance combined with all linked accounts is still less than the requested amount, the withdrawal request must be rejected.

Monthly maintenance fee is charged to the account if the ending balance of a withdrawal is less than the minimal balance requirement of the account. Note that monthly maintenance fee is onetime service charge. If the maintenance fee is charged for a withdrawal, subsequent withdrawals should not be charged additional maintenance fees.

If the maintenance fee is waived by a deposit as described in the Account Deposit section above, subsequent withdrawals may be charged the maintenance fee if the ending balance is dropped below the minimal balance requirement.

A withdrawal from a checking account is regarded as an electronic check (e-check). If the requested amount of a withdrawal (an e-check) is larger than the balance of the account, the e-check is bounced (rejected) and the account is charged the overdraft fee. Note that, the combined balance should be used for an interest checking account.

Overdraft fees are accumulative. Each bounced e-check adds an overdraft fee to the account.

It is possible that the balance of an account is less than the sum of the service charges (the monthly maintenance fee and the overdraft fees). In this case, the owner(s) of the account owes the bank the difference between the account balance and the sum of the service charges.

Transaction Logs

If the balance of an account is changed resulted from either an account deposit or an account withdrawal, the change must be recorded in a transaction log. A transaction log must include the following information:

  • The date and time (timestamp) of the transaction
  • The beginning balance and ending balance
  • The type of the transaction (deposit or withdrawal)
  • Service charge or waive if any and the charge type (monthly maintenance fee or overdraft fee)
Account Statement

The account statement of account should provide the following information:

  • Account number
  • Account type
  • Current balance
  • Interest earned if applicable, which is calculated based on the current balance when the inquiry is made
  • Monthly maintenance fee charge
  • Overdraft fee charges
  • Transaction details in which each transaction should include
    • Date and time of the transaction
    • Transaction type (deposit or withdrawal)
    • The amount of the transaction (deposit or withdrawal)
    • Service charge if any
    • Ending balance

Application Functions

C&J Bank wants to create an online banking application that provides the following functions:

  • Balance inquiry. It displays the account balance information of one or multiple accounts owned by the customer.
  • It allows a customer to request withdrawal of a specified amount from one of the accounts owned by the customer.
  • It allows a customer to deposit a specified amount into one of the accounts owned by the customer.
  • Printing monthly account statement. It produces an account statement for one of the accounts owned by the customer.
  • Changing customer information (bonus). It allows the customer to modify all customer information except the customer number assigned by the bank and the online access user ID and password.

Application Process Flows

When the application starts, it should read in existing customers and the accounts of those customers from a text data file. After all data are read, the application should create all customer objects and account objects and establish the account ownership between the customers and accounts. It should list all customers and accounts to verify that customer objects and account objects are correctly created.

After all customer objects and account objects are created, the system should prompt the user to enter the user ID and password and then verify the entered ID and password. If the verification of the user ID and password failed, the user should be prompted to reenter the ID and password again. If the verification is successful, the system should then display the main menu listing the following functions:

  • Balance inquiry
  • Withdraw
  • Deposit
  • Print account statement
  • Change customer information (applicable only to bonus function)
  • Exit

Depending upon which function the user selected, the system should prompt the user to enter additional information before processing the request. The high level process flow of each function is shown in the diagram below.

 

 

 

Note that the diagrams above show only the high level process flows. The detailed design of each function is left to each team.

Note also that the data entered by the user may contain errors. Thus, your design and implementation must include input data validations.

Data and Program Provided

The text file for all those customers and accounts is prepared and provided by the instructor. The Java program for reading the data from the text file is also provided by the instructor. The text file format is described in Appendix A.

The text file prepared 10 customers and 21 accounts. You may add addition customers and accounts. However, you should first save the provided text file before changing it so that you can always go back to the original data file.

The Java program consists of nine class files. Each class include the complete data field declaration, a constructor and necessary methods for reading data from the text file and creating customer and account objects from the data. The UML class diagram below shows the classes and relationships between them. The customer class diagrams below depicted some of those classes.

The Account class diagram is shown below:

The subclasses of Account are left for each team to complete after studying the given Java programs.

The OnlineBanking class and the association relationships between OnlineBanking, Account, and Customer is shown below:

Note that in the OnlineBanking class, all accounts are stored as an array called accountDB. All customers are also stored as an array called customerDB.

Note also that the UML class diagrams shown above did not include all declarations of data fields and methods. Those missing data fields and methods are left to each team to complete as part of your project.

The methods in those provided Java classes should be left alone. You should add your own methods in those classes as needed in your implementation. Please study each class file to understand those methods provided by the instructor.

In the OnlineBanking class, methods were provided as examples of how to display the contents of all customers and accounts and the start of the application. Once you download those files, you should run the OnlineBanking class to get an idea on what functions are provided and what functions you need to implement. The executable jar file is also provided that shows the complete application. You can run the executable jar file when you have questions about the functions you are required to implement.

All required files of the given Java programs are zipped into a single file to be posted in Desire2Learn. You should download them and save them into a package in Eclipse so that you can edit and run the programs.

There are two files for the completed, executable application: the executable jar file and the input data file used by the jar file. You should download both files and save them into a separate directory of your choice which should not be part of the Eclipse directories.

Application Development Phases

The development of the application is divided into the following phases:

  • Requirement analysis – Understand the requirements and collect all missing information in the assignment by communicating with the instructor. It should also decide the detailed design of the reports and the layout of screen displays interacting with the user.
  • Application design – The application design consists of data design and application process design.
    • The data design is done in terms of class diagrams that show the classes and relationships between the classes. Each class should include the declaration of all fields and methods. They are presented as UML class diagrams with explanations. Since those classes have been defined in the provided Java programs, your task is to study those class definitions and complete the UML class diagrams which must include all data fields and methods including those you added.
    • The application process design is to show the detailed process flows and interactions similar to the process flow diagrams shown in the previous section. Your process flow diagrams should supply all required details left out in those diagrams. The results of the design phase are the process flow diagrams and explanations.
  • Implementation – It implements the application in Java and test the application. Testing data will be provided. The given programs provided a complete implementation of InterestCheckingAcount and SavingsAccount as examples. The following functions are left out for your team to implement:
    • Balance inquiry function
    • Print account statement function
    • Withdrawal function for regular checking accounts
    • Deposit function for regular checking account

It is very important to understand the functions implemented in the superclasses so that your team can determine which portion of the business logic has been implemented already and what else you need to implement. That is, you should reuse what have already been implemented in superclasses and not replicate the implementation. Otherwise points will be deducted.

Test Cases

You should design detailed test cases to cover all application functions. Below are some specific test scenarios should be included in your test cases:

  • Balance inquiry – The inquiries should cover one and multiple accounts owned by the customer and include one case for each type of the accounts.
  • Withdrawal – The test scenarios should include all types of accounts and involve normal withdrawal, overdraft with no overdraft fee, and overdraft with overdraft fee.
  • Deposit – Should make a deposit into each type of the accounts.
  • Printing account statements – Test scenarios should include each type of the accounts.
  • Changing customer information (bonus) – Two scenarios should be tested: a single field change and multiple field changes.

Note that your test cases should include both correct input data and incorrect data input to demonstrate the data validation capability of your program.

Project Milestones

The table below lists the key milestones of the project:

  Milestone Status Report
Week 10 (oct 27) Project team formation Team member names
Week 11

(nov 3)

Requirement analysis Questions about the requirements
Week 12

(nov 10)

Initial application design UML class diagram
Week 13

(nov 17)

High level class definitions Class definition Java programs
Week 14

(dec 1)

Full implementation Last chance to ask questions
Week 15

(dec 8)

Project completion Final project report (groups)
Week 16

(dec 13)

Project completion Final project report (individuals)

The weekly status reports are due at the end of each week and should be submitted to the corresponding dropboxes in Desire2Learn. The status reports are not graded and mainly for the instructor to keep track the progress of each project team.

Project Final Report

The final report consists of the following documents:

  • The application design consists of
    1. UML class diagrams & process flow diagrams (should be part of b.) My notes.xxx
    2. Application design description in Microsoft Word providing detailed information about the implementation of each function and a summary about the final state of the application.
    3. The design of test cases and their description in Microsoft Word
  • Java program source code
  • Application test output
  • Project team peer evaluation (online survey in D2L)

Project Assessment

The assessment rubric is for the group project is shown below:

Task Items Assessment Rubric
UML Class Diagrams (10%)
Process flowchart Diagrams (10%)
Correctness, completeness, meet application requirement, and matched w/ the implementation
Application Design (10%) (same as above)
Java Program (55%) Implemented the design, all functions are working with sufficient error checking, good programming style, well commented
Testing Completeness (10%) Designed good test cases as specified in the requirements and provide clear, documented test results
Peer Evaluation (5%) Submitted the peer evaluation

 

 

 

Appendix A: Input Data File Format

Customer data records are followed. Each customer record consists of the following lines:

customer id

first-name;mid-name;last-name

street-number;street-name;city;state;zip-code

the-number-of-phone-numbers

phone-number;phone-type

     … (repeated with each phone number)

online-use-id;online-password

The account records immediately follow customer records in the following format:

the-total-number-of-accounts

the-total-number-of-savings-accounts

Followed by each account record and each savings account record consists of the following lines:

account-number;account-type

customer-id1;customer-id2;… (repeat for each co-owner)

interest-rate;mini-open-amount;maintenance-fee;mini-balance;initial-balance;current-balance

The checkings account data records follow the savings records in the following format:

the-total-number-of-checking-accounts

followed by checking account records and each record consists of the following lines:

account-number;account-type

customer-id1;customer-id2;… (repeat the id for each co-owner)

interest-rate;mini-open-amount;maintenance-fee;mini-balance;initial-balance;current-balance

online-user-ID;online-user-password

number-of-linked-savings-account;saving-account-number1;saving-account-number2;…

 

[1] APY – Annual Percentage Yield