Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать

Void rentRecord::insertRent(int aptNo, int month, float amount)

{

rentRow searchRow(aptNo); //Тимчасовий рядок з тим самим aptNo iter = setPtrsRR.beginO; // Пошук setPtrsRR while( iter != setPtrsRR.end()) {

if(searchRow==**iter) { // rentRow знайдений?

// так, заносимо

(*iter)->setRent(month, amount); // Рядок у перелік return;

}

else iter++;

} // He знайдений

rentRow* ptrRow = new rentRow(aptNo); // Новий рядок ptrRow->setRent(month, amount); // Занести в неї платіж

SetPtrsRr.Insert(ptrRow); // Занести рядок вектор

} // <—> Кінець insertRentO

void rentRecord::Display0 {

cout« endl «"AptNo\tCi4 Лют Бер Квіт Трав Черв"

«"Лип Серп Вер Жовт Лист Груд\п"

<<" "

«" "« endl;

If( setPtrsRr.Empty())

cout«"***Нема платежів!***" « endl;

else{

iter = setPtrsRR.begin(); while( iter != setPtrsRR.endO) cout«**iter++;

}

} // <—> Кінець DisplayO

float rentRecord::getSumOfRentsO // Сума усіх платежів {

float sumRents = 0.0;

iter = setPtrsRR.beginO; while( iter != setPtrsRR.end()) {

sumRents += (*iter)->getSumOfRow(); iter++;

}

return sumRents;

} // <—> Кінець getSumOfRentsO

// >—> Методи класу rentlnputScreen void rentlnputScreen::getRent()

{

cout«"Введіть ім'я мешканця:"; getaLine(renterName);

aptNo = ptrTenantList->getAptNo(renterName); if(aptNo > 0) { // Якщо ім'я знайдене

// Отримати суму платежу cout«"Введіть суму платежу (345.67):"; сіп »rentPaid; cin.ignore(80, '\п');

cout«"Введіть номер місяця оплати (1-12):"; сіп » month; cin.ignore(80, '\п');

month--; // (внутрішня нумерація 0-11) ptrRentRecord->insertRent(aptl\lo, month, rentPaid);

}

else // Повернення

cout«"Такого мешканця немає" « endl;

} // <—> Кінець getRentO

// Методи класу expense

bool operator < (const expense& e1, const expense& e2)

{ // Порівнює дати

if(e1 .month == e2.month) // Якщо той же місяць

return e1 .day < e2.day; // Порівняти дні

Else // Інакше

return e1 .month < e2.month; // Порівняти місяці

}

//.

bool operator == (const expense& e1, const expense& e2)

{return e1 .month == e2.month && e1 .day == e2.day;}

//.

ostream& operator«(ostream& s, const expense& exp)

{

s « exp.month « 7 « exp.day «'\t' « exp.payee «'\t';

s « exp.amount«'\f « exp.category « endl; return s;

}

//

bool compareDates::operator 0 (expense* ptrE1, expense* ptrE2) const {return *ptrE1 < *ptrE2;}

bool compareCategories::operator 0(expense* ptrE1, expense* ptrE2) const {return ptrE1->category < ptrE2->category;}

// >—> Методи класу expenseRecord

expenseRecord::~expenseRecordO // Оголошення деструктора

{

while( IvectPtrsExpenses.emptyO) {// Видалити об'єкти expense

// Видалити покажчики на вектор

iter = vectPtrsExpenses.beginO; delete *iter;

vectPtrsExpenses.erase(iter);

}

} // <—> Кінець -expenseRecordO

void expenseRecord::insertExp(expense* ptrExp)

{vectPtrsExpenses.push_back(ptrExp);}

void expenseRecord::DisplayO {

cout« endl «"Дата\Ютримувач\йЮума\ІКатегорія\п"

«" " « endl;

if( vectPtrsExpenses.size() == 0)

cout«"*** Витрат немає ***" « endl;

else{

sort( vectPtrsExpenses.beginO, Ч Сортування за датою

vectPtrsExpenses.endO, compareDatesO);

iter = vectPtrsExpenses.beginO;

while( iter != vectPtrsExpenses.endO)cou*<< **iter++;

}

} // <—> Кінець DisplayO

float expenseRecord::displaySummaryO // Використовується під час складання річного звіту {

float totalExpenses = 0; // Сума, всі категорії if( vectPtrsExpenses.size() == 0) {

cout«"\tBci категоріШ" « endl; return;

}

// Сортувати за категоріями sort( vectPtrsExpenses.begin(), vectPtrsExpenses.endO, compareCategoriesO);

// По кожній категорії сума записів iter = vectPtrsExpenses.begin(); string tempCat = (*iter)->category; float sumCat = 0.0;

while( iter != vectPtrsExpenses.endO) { if(tempCat == (*iter)->category)

sumCat += (*iter)->amount; // Та ж категорія else { // Інша

cout«'\f«tempCat«'\f« sumCat« endl; totalExpenses += sumCat; // Додати попередню категорію tempCat = (*iter)->category;

sumCat = (*iter)->amount; // Додати остаточне значення суми

}

iter++;

}// < > Кінець while

totalExpenses += sumCat; // Додати суму кінцевої категорії cout«'\t'«tempCat«'\f « sumCat« endl; return totalExpenses;

} // <—> Кінець displaySummaryO

// >—> Методи класу expenselnputScreen

expenselnputScreen::expenselnputScreen(expenseRecord* per): ptrExpenseRecord(per)

{/*пусто*/}

//.

void expenselnputScreen::getExpenseO {