Tom Kelliher, CS18
Mar. 20, 1996
Checking account +.
Elements:
/**********************************************************************
* checking.h --- Class declaration for a simple checking account.
* Tom Kelliher
*
* A Checking object consists of an account number and balance.
* Allowed operations:
* Constructor: Create a checking account with a given account
* number and balance.
* inputTrans: Apply a transaction (from enum TransactionType) to
* the account.
* printBalance: Print the account number and balance.
*
* This class is a base class for a joint checking class.
**********************************************************************/
#ifndef __CHECKING_H
#define __CHECKING_H
// Types of allowed transaction.
enum TransactionType { DEPOSIT = 'D', WITHDRAWAL = 'W' };
class Checking
{
private:
int accntNumber;
double accntBalance;
public:
Checking(int number, double balance);
void inputTrans(TransactionType type, double amount);
void printBalance(void);
};
#endif
#include <iostream.h>
#include <iomanip.h>
#include "checking.h"
// These methods are documented in checking.h
/**********************************************************************
* Checking::Checking
**********************************************************************/
Checking::Checking(int number, double balance)
: accntNumber(number), accntBalance(balance)
{
}
/**********************************************************************
* Checking::inputTrans
**********************************************************************/
void Checking::inputTrans(TransactionType type, double amount)
{
switch (type)
{
case DEPOSIT:
accntBalance += amount;
break;
case WITHDRAWAL:
accntBalance -= amount;
break;
default:
cout << "Illegal transaction code: " << char(type) << endl;
break;
}
}
/**********************************************************************
* Checking::printBalance
**********************************************************************/
void Checking::printBalance(void)
{
// This method twiddles with output formatting. We need to save
// the output formatting and then restore it before returning.
long oldPrecision;
long oldFixed;
cout << "The balance for account " << accntNumber << " is ";
// Save previous formatting.
oldPrecision = cout.precision(2);
oldFixed = cout.setf(ios::fixed, ios::floatfield);
cout << accntBalance << ".\n";
// Restore previous formatting.
cout.precision(oldPrecision);
cout.setf(oldFixed, ios::floatfield);
}
/**********************************************************************
* joint.h --- Class declaration for a simple joint checking account.
* Tom Kelliher
*
* A Joint object consists of a Checking base class with appendant
* owner and joint owner SSNs.
* Allowed operations:
* Constructor: Create a joint checking account with owner and
* joint owner SSNs, an account number, and an account balance.
* printSsn: Print the SSNs of the two owner.
*
* Public inheritance of the Checking class is used, so see checking.h
* for other allowed operations.
**********************************************************************/
#ifndef __JOINT_H
#define __JOINT_H
// Read header file for base class.
#include "checking.h"
class Joint : public Checking // Checking is inherited with public
// access.
{
private:
long ownerSsn;
long jointOwnerSsn;
public:
Joint(long oSsn, long jSsn, int number, double balance);
void printSsn(void);
};
#endif
#include <iostream.h>
#include "joint.h"
// These methods are documented in joint.h
/**********************************************************************
* Joint::Joint
**********************************************************************/
Joint::Joint(long oSsn, long jSsn, int number, double balance)
: Checking(number, balance), // Invoke constructor for base class.
ownerSsn(oSsn), jointOwnerSsn(jSsn)
{
}
/**********************************************************************
* Joint::printSsn
**********************************************************************/
void Joint::printSsn(void)
{
cout << "Owner SSN: " << ownerSsn << endl;
cout << "Joint SSN: " << jointOwnerSsn << endl;
}
#include <iostream.h>
#include "checking.h"
#include "joint.h"
int main()
{
Checking check(569248, 1000.00);
Joint joint(111223333, 444556666, 987234, 500.00);
check.inputTrans(DEPOSIT, 100.00);
check.printBalance();
check.inputTrans(WITHDRAWAL, 50.00);
check.printBalance();
cout << endl;
joint.printSsn();
joint.inputTrans(DEPOSIT, 39.00);
joint.printBalance();
return 0;
}
The balance for account 569248 is 1100.00. The balance for account 569248 is 1050.00. Owner SSN: 111223333 Joint SSN: 444556666 The balance for account 987234 is 539.00.