Читать «С++ для "чайников" .» онлайн - страница 236
Стефан Рэнди Дэвис
class Savings
{
public :
Savings( int initialAN = 0 )
: accountNumber( initialAN ) ,
balance( 0.0 ) , noWithdrawals( 0 ) { }
/* функции обращения */
int accountNo( )
{
return accountNumber ;
}
double acntBalance( )
{
return balance ;
}
/* функции транзакций */
void deposit( double amount )
{
balance += amount ;
}
void withdrawal( double amount ) ;
/* Функция display — отображает объект */
void display( )
{
cout << "Счёт " << accountNumber
<< " = " << balance
<< " ( номер снятия = "
<< noWithdrawals
<< " )\n" ;
}
protected :
unsigned accountNumber ;
double balance ;
int noWithdrawals ;
} ;
void Savings::withdrawal( double amount )
{
if ( balance < amount )
{
cout << "Недостаточно денег на счёте: "
<< "баланс равен " << balance
<< ", снимается " << amount
<< "\n" ;
}
else
{
/* После первого в месяце снятия денег... */
_________________
350 стр. . Великолепная десятка
if ( ++noWithdrawals > 1 )
{
/* ...удерживать $5 */
balance -= 5.00 ;
}
/* Снять деньги */
balance -= amount ;
}
}
/* Объявление прототипов */
void process( Checking* pChecking ) ;
void process( Savings* pSavings ) ;
/* Объекты чековых и сберегательных счетов */
Checking* chkAcnts[ maxAccounts ] ;
Savings* svgAcnts[ maxAccounts ] ;
/* main — собирает и выводит данные */
int main( int argcs , char* pArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */
/* Повторять цикл до ввода 'X' или 'х' */
int noChkAccounts = 0 ; /* Содержит количество счетов */
int noSvgAccounts = 0 ;
char accountType ; /* Тип счёта — 'S' или 'С' */
while ( 1 )
{
cout << "Введите S для сберегательных счетов, " << "\n"
<< "С для чековых, "
<< "X для выхода:" ;
cin >> accountType ;
/* Выйти из цикла, если пользователь введёт X */
if ( accountType == 'x' || accountType == 'X' )
{
break ;
}
/* В противном случае обрабатывать соответствующий счёт */
switch ( accountType )
{
/* чековые счета */
case 'c' :
case 'C' :
if ( noChkAccounts < maxAccounts )
{
int acnt ;
cout << "Введите номер счёта:" ;
cin >> acnt ;
chkAcnts[ noChkAccounts ] = new Checking( acnt ) ;
process( chkAcnts[ noChkAccounts ] ) ;