Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Если книги нет в массиве, вернуть ложь




если книга найдена:

- разрушить найденный объект;

- сжать массив;

- уменьшить число книг в массиве и вернуть истину.*/

bool CCatalogue::del(const string& key)

{ int i = find(key);

if (i < 0) return false;

delete m_pBook[i];

while(i < m_q-1)

m_pBook[i++] = m_pBook[i+1];

m_q--; return true;

}

/* поиск книги по названию

1) проверить название каждой книги;

Если есть совпадение, вернуть индекс книги

если нет совпадений, вернуть -1. */

int CCatalogue::find(const string& key) const

{ for (int i=0; i<m_q; i++)

if (m_pBook[i] -> check(key))

return i;

return -1;

}

// сортировка массива по авторам -

// метод пузырьковой сортировки

Void CCatalogue::sort()

{ for (int j=1; j<m_q; j++)

for (int i=0; i< m_q-1; i++)

if (m_pBook[i]->getAuthor() >

m_pBook[i+1]->getAuthor())

{ CBook* tmp = m_pBook[i];

m_pBook[i] = m_pBook[i+1];

m_pBook[i+1] = tmp;

}

}

//Объявление класса CMenu

Class CMenu

{ public:

CCatalogue* m_p; // указатель на каталог книг

CMenu(); ~CMenu();

Void showMenuAndSelect(); // активизация меню

private:

Void p_menu_find()const; //поиск книги по названию

Void p_menu_view()const; //просмотр состояния каталога

Void p_menu_ins(); // добавление книги

Void p_menu_del(); // удаление книги по названию

Void p_menu_sort(); //сортировка в каталоге по авторам

Void align(int) const; // выравнивание при выводе

};

//Определение методов класса CMenu

#include <iomanip>

const static int N(512);

CMenu::CMenu():m_p (new CCatalogue){}

CMenu::~CMenu(){delete m_p;}

Void CMenu::showMenuAndSelect()// активизация меню

{ char choice;

do

{ cout << "\n 1 - Поиск книги по названию";

cout << "\n 2 - Добавление книги";

cout << "\n 3 - Удаление книги";

cout << "\n 4 - Сортировка по авторам книг";

cout << "\n 5 - Просмотр каталога книг";

cout << "\n 0 - Выход\n";

cout << "\n Ваш выбор ->";

cin >> choice; cin.ignore();

if (m_p -> getNumberOfBook())

Switch(choice)

{ case '1': p_menu_find(); break;

case '2': p_menu_ins(); break;

case '3': p_menu_del(); break;

case '4': p_menu_sort(); break;

case '5': p_menu_view(); break;

}

Else

if (!m_p -> getNumberOfBook() && choice=='2')

p_menu_ins();

} while(choice!= '0');

}

Void CMenu::p_menu_find() const // поиск по ключу

{ string title;

cout << "\nВведите название книги -> ";

getline(cin, title);

int iKey = m_p->find(title);

if (iKey!= -1)

{ cout << "Автор: ";

cout << m_p->m_pBook[iKey]->getAuthor()<<endl;

cout << "Название: ";

cout << m_p->m_pBook[iKey]->getTitle()<<endl;

cout << "Год издания: ";

cout << m_p->m_pBook[iKey]->getYear()<<endl;

}

else cout << title << " - не найдена";

}

Void CMenu::p_menu_view() const // просмотр

{ int n = m_p -> getNumberOfBook();

align(20); cout << "Автор"; align(30);

cout << "Название";align(10);

cout << "Год издания"; cout<<endl;

for (int i=0;i<n;i++)

{ align(20); cout << m_p->m_pBook[i]->getAuthor();

align(30); cout << m_p->m_pBook[i]->getTitle();

align(10); cout << m_p->m_pBook[i]->getYear();

cout<<endl;

}

}

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...