BloomBank Financial Software Design

Similar documents
Encapsulation. Mason Vail Boise State University Computer Science

2.6 Error, exception and event handling

public class Account { private int id; private static int nextaccountid = 0; private String name; private double balance;

Intro to Computer Science 2. Inheritance

Java Puzzle Ball MOOC Lab 4: Lambda Expressions

CHAPTER 10 INHERITANCE

Eduardo M. Breijo Baullosa May 2, Assignment 17. Report

Chapter Goals. Chapter 9 Inheritance. Inheritance Hierarchies. Inheritance Hierarchies. Set of classes can form an inheritance hierarchy

Frequently Asked Questions

STUDENT LESSON A5 Designing and Using Classes

$ % $ % BankAccount. public class BankAccount {... private??? balance; } "commands, transformers, mutators! "abstract state! "queries, accessors!

ECE 122. Engineering Problem Solving with Java

Mobile Banking Online Banking Features Dashboard Pending Transactions Account Export Bill Pay Online Bill Pay

Consumer User Guide July 2017

Handout 9 OO Inheritance.

Administrivia. CPSC Winter 2008 Term 1. Department of Computer Science Undergraduate Events

UNIT 3 ARRAYS, RECURSION, AND COMPLEXITY CHAPTER 11 CLASSES CONTINUED

Programming a Bank Database. We ll store the information in two tables: INTEGER DECIMAL(10, 2)

CSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism

Ionic, LLC 7300 Turfway Road, Suite 190 Florence, KY Toll-free Telephone No. (866)

Java. Error, Exception, and Event Handling. Error, exception and event handling. Error and exception handling in Java

Java Puzzle Ball Nick Ristuccia

CS 61B Data Structures and Programming Methodology. July 7, 2008 David Sun

Recitation: Loop Jul 7, 2008

Click E Money Laravel Application

Inheritance Advanced Programming ICOM 4015 Lecture 11 Reading: Java Concepts Chapter 13

CSCI-1200 Data Structures Spring 2016 Lecture 23 C++ Exceptions, Inheritance, and Polymorphism

Inheritance & Abstract Classes Fall 2018 Margaret Reid-Miller

Exceptions, try - catch - finally, throws keyword. JAVA Standard Edition

COMP-202. Exceptions. COMP Exceptions, 2011 Jörg Kienzle and others

LunchTime Web Portal. Parents Guide to Getting Started

Homeowner Portal Tutorial Guide

CSE115 Introduction to Computer Science I Coding Exercise #7 Retrospective Fall 2017

Dr. Manal Helal CC316:Object Oriented Programming, Fall 2015 AASTMT College of Engineering & Technology

P2P Instructions. 4. Select Person to Person

Software Practice 1 - Error Handling Exception Exception Hierarchy Catching Exception Userdefined Exception Practice#5

Software Practice 1 - Error Handling

Problem description: After finishing the lab, the student will practice:

GETTING STARTED ONLINE

Lecture 20. Java Exceptional Event Handling. Dr. Martin O Connor CA166

Inheritance (P1 2006/2007)

Online Referee Management Solutions. Arbiter RefPay Integration

Storing Data in Objects

CS1020 Data Structures and Algorithms I Lecture Note #8. Exceptions Handling exceptional events

SIGN UP FOR AN AUTOMATIC PAYMENT PLAN

7.17: Here is a typical Java solution:


C# Programming for Developers Course Labs Contents

FDSc in ICT. Building a Program in C#

Le L c e t c ur u e e 5 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Exception Handling

Five EASY Steps to Switch to

Mutating Object State and Implementing Equality

CS1083 Week 3: Polymorphism

estatements Help Document October 2016

Point West Mobile Banking App. A Comprehensive Guide

EXAMINATIONS 2012 END-OF-YEAR SWEN222. Software Design. Question Topic Marks 1. Design Quality Design Patterns Design by Contract 12

Business Online Banking & Bill Pay Guide to Getting Started

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

CS 215 Software Design Sample Midterm Questions

How to make the switch to BSCU FREE Checking

CS 215 Software Design Sample midterm solutions

Eastern Bank TreasuryConnect Balance Reporting User Manual

7. How do I obtain a Temporary ID? You will need to visit HL Bank or mail us the econnect form to apply for a Temporary ID.

Object oriented programming

Isi Net User Manual for Bank customers

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 7

PNC Prepaid Card Programs Cardholder Website How-To Manual

Exceptions. References. Exceptions. Exceptional Conditions. CSE 413, Autumn 2005 Programming Languages

Class 09 Slides: Polymorphism Preconditions. Table of Contents. Postconditions

Introduction to Inheritance

Exceptions. CSE 142, Summer 2002 Computer Programming 1.

Exceptions. Readings and References. Exceptions. Exceptional Conditions. Reading. CSE 142, Summer 2002 Computer Programming 1.

1.1. HOW TO START? 1.2. ACCESS THE APP

Get the most from your Health Savings Account. Your guide to your HSA and online account access

Exception-Handling Overview

Mobile Banking. Bank wherever the Kina app takes you!

Chapter 10 Inheritance. Big Java by Cay Horstmann Copyright 2009 by John Wiley & Sons. All rights reserved.

SWITCH KIT SWITCH KIT. Make the switch to Bryn Mawr Trust in just five easy steps.

COMP-202 Unit 8: Defining Your Own Classes. CONTENTS: Class Definitions Attributes Methods and Constructors Access Modifiers and Encapsulation

Introduction to Programming Using Java (98-388)

Security We keep your security a priority

Basics of Java Programming. Hendrik Speleers

Banking System Upgrade - Frequently Asked Questions (FAQs)

The Scanner class reads data entered by the user. Methods: COSC Dr. Ramon Lawrence. Page 3. COSC Dr. Ramon Lawrence A) A = 6, B = 3

Technology Upgrade User Guide

Marco Polo Card User Guide

CMSC 202. Exceptions

Mobile App User Guide

CashLink Quick Reference Guide

edocs Aero Users Management

Internetbank AB.LV System. User Manual Internetbank AB.LV

QNB Bank-ONLINE AGREEMENT

Why Exceptions? (1.1) Exceptions. Why Exceptions? (1.2) Caller vs. Callee. EECS2030 B: Advanced Object Oriented Programming Fall 2018

Exceptions. EECS2030 B: Advanced Object Oriented Programming Fall 2018 CHEN-WEI WANG

FORUM Business Online Banking

Personal Banking Upgrade 2.MO Guide

Agenda: Notes on Chapter 3. Create a class with constructors and methods.

I don t yet have an account - how do I get one?

CSCI-1200 Data Structures Fall 2017 Lecture 25 C++ Inheritance and Polymorphism

PORK CHECKOFF ONLINE REMITTANCE USER GUIDE

Transcription:

BloomBank Financial Software Design CIS 3023 Project 6 Due date: Report on project classes and methods - July 27 th, 200 (Tue) Complete implementation - August 3 rd, 200 (Tue) Problem Statement: You work for Bloomberg. You are entrusted with the task of developing a financial software application called BloomBank in Java. The following are the basic requirements that you need to incorporate in the code. You may use any other Java functionality as appropriate and extend the interface. Requirements: The project should be implemented in three logical tiers as below: Tier I : Low level - Data Storage (File IO) All data from the transactions are stored in a directory called BloomBankDatabase. The first time the application is executed, this directory gets created. From then on, it is only loaded into the program for storing all banking transaction data. BloomBankDatabase directory can contain the files as described below. (Structure denotes the various fields (tokens) in the file and their order. The delimiter should always be a comma and the filetype should be csv. Name Structure Comments Customer.csv custid, custname, address, ssn, Stores customer information telephone, email CheckingAccount.csv checkingaccountid, custid, balance, checkingaccountfees Stores information about all checking accounts in the bank. SavingsAccount.csv savingsaccountid, custid, balance, savingsaccountfees Stores information about all savings accounts in the bank. Bank.csv username, userid, password Stores system access information. Default first entry should be admin,0,admin. Transaction.csv custid, checkingaccountid/ savingsaccountid, (account) type, withdraw / deposit, amount, remaining balance, current (logical) date-time (in EST) Stores all banking transactions along with current (logical*) date-time in EST. * User input during login. Admins get a userid from 0 and customers from 00. Each file is created only when the relevant operation is performed the first time. For e.g., only after the first customer is added, the file customer.csv will be created.

Tier II: Middle level Domain logic and controller. Exception Classes BloomBankIOException java.lang.exception BloomBankDatabaseNotFoundException BloomBankException BloomBankDatabaseFileNotFoundException BloomBankRuntimeException BloomBankCustomerNotFoundException BloomBankCustomerAccountNotFoundException BloomBankOverdraftException (a) BloomBankException extends Exception (Shows the message: General exception encountered. Restart!, prints the error stack trace and exits.) (b) For File Access: BloomBankIOException extends IOException. Catches all I/O Exceptions. Exception Message ( BloomBank IO Exception encountered! ). BloomBankDatabaseNotFoundException extends BloomBankIOException Checks to see if the directory BloomBankDatabase exists in the current path. Else throws exception message Non-existent BloomBankDatabase! BloomBankDatabaseFileNotFound extends BloomBankIOException Checks to see if a particular file exists in the BloomBankDatabase directory. Else throws exception message Non-existent BloomBankDatabaseFile! ) (c) For core banking application and user interface: BloomBankRuntimeException extends RuntimeException Catches runtime exception and handles it. (Message: BloomBankRuntimeException encountered! ) BloomBankOverdraftException extends BloomBankRuntimeException This handles cases where withdrawal of an amount greater than the existing balance is attempted. Overdraft fee of 20$ is charged to the Checking account. The withdrawal amount greater than balance

plus 20$ is debited from the customer s Savings account -if it exists and has the balance. If the customer does not have a Savings account or if the balance in Savings is not sufficient, then the savings account is not debited. Instead a further 30$ is debited from the Checking account. For these, enter overdraft fees into Transaction.csv file. NOTE: Any exception class may be extended or other messages and handling code can be added to improve the functionality. However, these existing exceptions should be thrown/ handled somewhere appropriately in the code. 2. Classes for the core banking application. The application should have classes for Bank, Account, CheckingAccount, SavingsAccount, and Customer. The Bank can have several customers and Checking/Savings Accounts. Customers are identified by a unique ID. The name, address, telephone and email information for customers is also saved. Each customer can have zero or more Checking accounts, but only one Savings Account. The account itself is defined as an abstract class. Checking and Savings accounts have their own unique ids. Each customer s account is identified uniquely using the customer id, account type and the account id. Some of the classes signatures are provided below (extend as required). Abstract Class Account - counter: static int - type: String - balance: double - owner: Customer +exists() : bool + getbalance( ) : double +withdraw(double amount) : int (0-success) +deposit(double amount) : int (0-success) Class Checking Account - checkingaccountid:int - custid: int - checkingaccountfees: double + processcheck(checktoprocess : Check) During withdrawal: Check if balance is less than 500$ after a withdrawal. If so, debit 0$ as TransactionOverhead Fees. Enter into Transaction.csv as Checking Fees. Class SavingsAccount - savingaccountid: int - custid: int - interestrate: double

- withdrawalcounter: int -savingsaccountfees: double + depositmonthlyinterest() During withdrawal: Check if 3 withdrawals have already happened during the current month. If so, debit 20$ as SavingsTransactionOverhead Fees (Enter into Transaction.csv as Savings Fees ) and reset the counter to zero. No minimum balance is required for Savings accounts. Use the file called Transactions.csv to record all transactions in the format below: custid, checkingaccountid/ savingsaccountid, (account) type, withdraw / deposit, amount, remaining balance, current (logical) date-time (in EST) Here is an example entry: 00,,checking,withdraw,00,900,Mon 8 Jul 200 2:08:56-0500 You may use any format for the date-time as convenient. Remember to update the methods for withdrawal for charging fees. Class Check - amount: double - checknumber: int - checkbookownername: String - accountnumber: int + getamount(): double + getchecknumber(): int This class represents bearer check which is not written to the order of a particular person and anyone may present the check and deposit it into his/her account. A customer is able to write checks and all checks need to be stored in a CheckLinkedList. Each check must have a unique number. Customers must present the unique number of a check in order to deposit it into their account. Then the check is retrieved from the checklinkedlist and the transfer of funds gets processed. Class OrderCheck - totheorderof: String + gettotheorderof(): String

This class extends the class Check and represents order check. The customer who is trying to deposit the check must present his ID. You need to retrieve the customer s name from list of customers using the presented ID; the customer name must be equal to the name stated by totheorderof. Class CheckLinkedList - head: CheckHolder + add(check:check): void + retrieve(checknum:int): Check This class implements a linked-list to maintain all checks been issued by customers. Each check is stored in a linked-list node called CheckHolder. CheckLinkedList only keeps the head of the chain of checkholders. The method add() creates a checkholder and adds it to the end of the list. The method retrieve() searches through the list to find a check that has the unique number equal to checknum. The found check should get removed from the list. Implementing appropriate constructors and get/set methods are left to you.

External view of class relationships BloomBank 0... * Account -counter: int keeps track of total number of opened accounts -type: String account type -balance: double account balance -owner: Customer +exists(): boolean +getbalance(amount:double): double +withdraw(amount:double): int returns 0 if it fails, success otherwise +deposit(amount:double): int returns 0 if it fails, success otherwise 0... * Customer -accounts: Account[] +WriteCheck(amount:double,account:Account, totheorderof:customer): int returns the check# +depositcheck(checknum:int,toaccount:account): void deposits the check to toaccount of this customer this customer should be equal to the check's order name Check bearer check -amount: double -checknumber: int -checkbookownername: String -accountnumber: int -counter: int keeps track of number of created checks used in order to establish a unique number for each check +getamount(): double +getchecknumber(): int CheckLinkedList maintains all written checks -head: CheckHolder +add(check:check): void +retrieve(checknum:int): Check 0... * CheckHolder +check: Check +next: CheckHolder OrderCheck -totheorderof: String +gettotheorderof(): String SavingAccount -savingaccountid: int -custid: int -withdrawalcounter: int -savingsaccountfees: double -interestrate: double +depositmonthlyrate(): void CheckingAccount -checkingaccountid: int -custid: int -checkingaccountfees: double +processcheck(checktoprocess:check): void

Tier III: High level - User Interface (Driver) At the start of the program, a menu should give the user options for console input or GUI. You have to implement the console input as the default case. The second menu should have a textbox for providing logical time input, and should further indicate these options: Login as admin. Login as customer. (If Login as customer is chosen the first time, an exception is thrown with the message Nonexistent BloomBankDatabase! Login as admin to create database. ) The login screen should take a username and password, and login as admin or customer based on the userid. When an admin logs in, the following options should be available: Create BloomBank database. (only available the first time when the dir does not exist). Create a new customer. Add Checking Account for customer Add Savings Account for customer See available Checking Accounts (sort by id) See available Savings Accounts (sort by id) For the customer, after login the following options should be available. See account balance (lists all accounts and balances, sorted by opening date). Deposit Withdraw Close account Each of the operations should be performed by calling methods in the relevant classes and any abnormality should handled using the custom exceptions appropriately. You are free to design the exact user-interface yourself and add additional features as you want. However, these above features are mandatory and should be incorporated in your code. GRADING: Total points: 250.. Preliminary report (Class diagram/ working documentation ) 50 pts 2. User-interface design, coding style (logic, ease of use, appropriate commenting, etc.) 00 pts 3. Use of the required classes, exceptions and methods 50pts 4. Additional improvements and extensions 50pts. ***