Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ Bank Accounting System Develop a bank account transaction processing system. This software is the basis for the software that would be used by a

C++

Bank Accounting System

Develop a bank account transaction processing system. This software is the basis for the software that would be used by a bank to manage user accounts. When developing the interface, you should imagine the interactions between a bank teller and a customer.

There are two main programs in this assignment. 1) teller_simulation, and 2) ReportGeneration.

Teller Simulation

The first program simulates a bank teller that customers would interact with to create accounts, deposit, or withdraw funds. The following dialog is one possible set of interactions that your software system must provide interfaces for:

Teller: Hello, Let's make a new account for you. CustomerRecord: My name is "Wade Wilson", I live at "201 14th Street, Seattle Washington, 91312", and I my social security number is "SSN_9999" Teller: Thank you! Now that you are a member of our bank, can we open an account? For you? CustomerRecord: Yes please. Please create both a checking account, and a saving account associated with my SSN. Teller: You two accounts are created with zero balance. Would you like to make a deposit? CustomerRecord: Please makeDeposit of $57 in my checking account. CustomerRecord: Please makeDeposit $77 in my savings account. Teller: Would you like to make a withdrawal? CustomerRecord: Yes, makeWithdrawal of $100 from my savings account. Teller: Sorry, you have insufficient funds to perform that task, your acount was not modified. 

At the beginging of each day when the bank accounting program starts, all previous customer transactions are read in from a file on disk.

At the end of the day when the program ends, the entire transaction history needs to be written to disk.

Report Generation

The second program reads a transaction history file (provided to the program as argv[1]), and generates a report of each customers account balances.

Robert Kaeding,CHECKING,1880 Brad Pitt,CHECKING,1937 Jade Steel,CHECKING,1988 Jade Steel,LOAN,190000 Curtis Black,CHECKING,1670 Doctor Travis,CHECKING,1956 Doctor Travis,SAVINGS,12022 Bruce Ellis,CHECKING,1984 Bruce Ellis,SAVINGS,120246 Sophie Nikka,CHECKING,1912 Sophie Nikka,SAVINGS,564 Halle Berry,CHECKING,1967 Halle Berry,SAVINGS,7.6e+06 Tom Cruise,CHECKING,1877 Tom Cruise,SAVINGS,470011 Paul Ryan,CHECKING,1981 Paul Ryan,SAVINGS,78 Jack Black,CHECKING,1910 Stan Lee,CHECKING,1822

GENERAL RULES:

All users need a name with more than 5 characters in their name.

CustomerSSN's must be unique (no two customers can have the same SSN)

Only 1 bank object can be used.

ZipCode must have exactly 5 digits.

State must be exactly 2 characters (bonus, validate only valid states).

All public interface times must be justified. Many private attributes will not have public getters/setters.

The only file where cin/cout console interactions are allowed are in the hw4.cpp file. Many solutions will have no cin/cout interactions with the user! (i.e. use command line transaction processing only.) You are allowed to use std::cerr only for error processing.

Address - Has Street - Has City - Has State - Has ZipCode Bank + Must be able to add a customer (and validate rules) + Must be able to change addresses + Must be able to verify that a customer exists (HasCustomer based on SSN). - Has many Customers - Has RoutingBankID (Can never be changed after bank is created) (RountingBankIDK always begins with the letter 'R') - Has Bank Name (Can never be changed after bank is created) - Has Address HINT: Some attributes will NOT have public geters/setters; HINT: maps need : object of type 'Bank' cannot be assigned because its copy assignment operator is implicitly deleted mapOfAllBanks[routingNumber] = myBank; const std::string m_RoutingBankID; ^ CustomerRecord + Must be able to create a new account ledger for Checking/Savings/or Loan accounts. Error checking must be available to check if an account already exists.
 - Has Address - Has CustomerRecord Name - Has Accounts (You may assume that a customer has at most 1 each type of account, but you may *not* assume that a customer has all accounts) - Has CustomerSSN (Can never be changed after customer is created) CustomerSSN (Always begins with letter 'S') AccountLedger + Must be able to make deposits (verified that only non-negative values are requested to be deposited). Invalid request result in error message but no transaction recorded. Deposits must optionally be annotated with a memo Timestamps for new transactions need to be timestamped with "chrono" + Must be able to make withdrawls (verified that non-negative values accepted to be withdrawn), Must verify that sufficient funds are available to make the withdrawal. Invalid request result in error message but no transaction recorded. Internal to the class, the value stored will be negated to indicate a reduction in the balance. Withdrawals must optionally be annotated with a memo + Must be able to compute the balance of the account as needed. The balance MUST NOT BE STORED, it must be computed from the list of transactions. - AccountLedger Type [Checking|Savings|Loan] - List of transactions Transaction - Change value - Date/Time (use time_t which is an integer representing # of seconds past a given epoch time) 

HINTS:

m_AccountMapping[type] = AccountLedger(type); This requires 3 functions to complete: m_AccountMapping[type] --> Needs AccountLedger() = --> needs operator=(....) AccountLedger(type) --> Needs AccountLedger( AccountType ) 

Use typedefs judiciously in this assignment. The types should be defined in the common.h file.

NameType --> std::string, or ?? SSNType --> std::string or char *, or class? StreetNameType --> std::string, or ?? ZipCodeType --> (int, or string, or float, or something else) 

Having a record like the following is not acceptable:

"","",""","","",""" 

See transactions.csv for a representation of the transaction files to process.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Concepts

Authors: David M Kroenke, David J Auer

6th Edition

0132742926, 978-0132742924

More Books

Students also viewed these Databases questions