Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
break ;
default :
cout << "Непонятный символ...\n" ;
}
}
/* А теперь показать общую сумму */
double chkTotal = 0 ;
cout << "Чековые счета:\n" ;
for ( int i = 0 ; i < noChkAccounts ; i++ )
{
chkAcnts[ i ] -> display( ) ;
chkTotal += chkAcnts[ i ] -> acntBalance( ) ;
}
double svgTotal = 0 ;
cout << "Сберегательные счета:\n" ;
for ( int j = 0 ; j < noSvgAccounts ; j++ )
{
svgAcnts[ j ] -> display( ) ;
svgTotal += svgAcnts[ j ] -> acntBalance( ) ;
}
double total = chkTotal + svgTotal ;
cout << "Сумма по чековым счетам = "
<< chkTotal
<< "\n" ;
cout << "Сумма по сберегательным счетам = "
<< svgTotal
<< "\n" ;
cout << "Общая сумма = "
<< total
<< "\n" ;
_________________
352 стр. Часть 6. Великолепная десятка
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
/* обработка( Checking ) — ввод данных по чековым счетам */
void process( Checking* pChecking )
{
cout << "Введите положительное число для вклада,\n"
<< "отрицательное для снятия, 0 для завершения\n" ;
double transaction ;
do
{
cout << ":" ;
cin >> transaction ;
// Вклад
if ( transaction > 0 )
{
pChecking -> deposit( transaction ) ;
}
// Снятие
if ( transaction < 0 )
{
pChecking -> withdrawal( -transaction ) ;
}
} while ( transaction != 0 ) ;
}
/* обработка( Savings ) — ввод данных для сберегательных счетов */
void process( Savings* pSavings )
{
cout << "Введите положительное число для вклада,\n"
<< "отрицательное для снятия, 0 для завершения\n" ;
double transaction ;
do
{
cout << ":" ;
cin >> transaction ;
// Вклад
if ( transaction > 0 )
{
pSavings -> deposit( transaction ) ;
}
// Снятие
if ( transaction < 0 )
{
pSavings -> withdrawal( -transaction ) ;
}
} while ( transaction != 0 ) ;
}
_________________
353 стр. Глава 31. Программа BUDGET
Я запустил эту программу с приведёнными ниже данными для того, чтобы продемонстрировать, как она работает. Жирным шрифтом выделен пользовательский ввод, а обычным представлены сообщения программы.
Введите S для сберегательных счетов,
С для чековых, X для выхода: S
Введите номер счёта: 123
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: S
Введите номер счёта:234
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -10
: -10
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: С
Введите номер счёта: 345
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: С
Введите номер счёта: 456
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 600
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: Х
Чековые счета:
Счёт 345 = 179.8
Счёт 456 = 580
Сберегательные счета:
Счёт 123 = 180 ( номер снятия = 1 )
Счёт 234 = 175 ( номер снятия = 2 )
Сумма по чековым счетам = 759.8
Сумма по сберегательным счетам = 355
Общая сумма = 1114.8
Press any key to continue...
Рассмотрим каждую из функций-членов, начиная с класса Checking . Конструктор присваивает счёту его номер. Значение по умолчанию "= 0" позволяет программе создавать объект с номером счёта по умолчанию, равным нулю.
Checking c1 = new Checking( 124 ) ;
Checking с2 = new Checking( ) ;
_________________
354 стр. Часть 6. Великолепная десятка
В данном случае объект c1 класса Checking создаётся с номером счёта, равным 123, тогда как объект с2 создаётся с номером счёта по умолчанию, который равен нулю.
Функции accountNo( ) и acntBalance( ) предоставляют внешнему миру доступ к защищённым членам accountNumber и balance . Задачей этих функций является предоставление внешним функциям — не членам значений, изменить которые невозможно. Кроме того, эти функции, обеспечивающие доступ к членам, предохраняют внешние функции от необходимости внесения изменений при переменах в методе хранения номера счёта или баланса.
Функции deposit( ) и withdrawal( ) отвечают за вложение и снятие денег со счёта. Поскольку функция deposit( ) довольно проста, она была определена как inline -функция. Функция withdrawal( ) , будучи несколько сложнее, объявлена в классе, но определяется позже.
Функция display( ) выводит важные данные на устройство стандартного вывода.
Класс Savings , в сущности, идентичен классу Checking , за исключением дополнительного члена noWithdrawals , который отслеживает количество проведённых снятий.
Место под объекты сберегательного и чекового счёта выделяется в массивах svgAcnts и chkAcnts соответственно. Максимальное количество счетов определено величиной maxAccounts .
Функция main( ) несколько сложнее своей сестры из программы BUDGET1, поскольку она имеет дело с двумя разными типами счетов. После проверки ввода на равенство " X " функция main( ) использует конструкцию switch , чтобы выбрать тип счёта: С для чекового и S для сберегательного. Конструкция switch использована в этой программе по двум причинам: во-первых, её проще расширить, добавляя к ней дополнительные варианты; во-вторых, она предоставляет вариант default ( вариант по умолчанию ) для обработки неверного ввода.
Как и ранее, вторая часть функции main( ) обеспечивает отображение информации о счёте, собранной в первой части этой функции.
Обратите внимание на то, как содержимое классов Checking и Savings скрыто от main( ) . Так, например, main( ) просит объект показать своё содержимое, однако при этом не имеет никакого представления о том, как класс выбирает, что именно и как это показать.
Функция process( ) , которая обрабатывает текущие вложения и снятия, полагается на функции-члены deposit( ) и withdrawal( ) , которые выполняют за неё всю чёрную работу. Хотя вы и знаете, как именно выполняются эти действия, помните, что process( ) об этом не имеет никакого понятия. Работа счёта касается только самого класса счёта.
Читать дальшеИнтервал:
Закладка: