#include <iostream>
#include <vector>
#include <string>
using namespace std;
class book
{
wstring book_name, author, genre, book_publisher;
unsigned int year_edition;
public:
book()
{
wcout << L"Создаем новую книгу. Заполните следующие поля " << endl;
wcout << L"Название книги: ";
getline(wcin, book_name);
cin.ignore(10,'\n');
wcout << L"Автор: " ;
getline(wcin, author);
cin.ignore(10,'\n');
wcout << L"Жанр: ";
cin.ignore(10,'\n');
getline(wcin, genre);
wcout << L"Издательство: ";
getline(wcin, book_publisher);
cin.ignore(10,'\n');
wcout << L"Год издания: ";
wcin >> year_edition;
wcout << L"Книга создана.\n";
}
wstring get_book_name()
{
return book_name;
}
wstring get_author()
{
return author;
}
wstring get_genre()
{
return genre;
}
wstring get_book_publisher()
{
return book_publisher;
}
unsigned int get_year_edition()
{
return year_edition;
}
void show_book()
{
wcout << L"Название: ";
wcout << book_name;
wcout << L"\nАвтор: ";
wcout << author;
wcout << L"\nЖанр: ";
wcout << genre;
wcout << L"\nИздательство: ";
wcout << book_publisher;
wcout << L"\nГод издания: " << year_edition << "\n\n";
}
~book(){}
};
class home_library
{
vector<book> library;
public:
home_library()
{
wcout << L"Библиотека создана.\n\n";
}
//добавление книги
void add_book()
{
book b;
library.push_back(b);
wcout << L"Книга добавлена в библиотеку.\n\n";
}
//удаление книги
void erase_book()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
{
wstring author, book_name;
vector<book>::iterator index = library.begin();
bool condition;
wcout << L"Введите название книги, которую хотите удалить:\n";
getline(wcin, book_name);
wcout << L"Введите автора книги, которую хотите удалить:\n";
getline(wcin, author);
for (unsigned int i = 0; i < library.size(); i++)
{
if ( author == library[i].get_author() && book_name == library[i].get_book_name() )
{
index += i;
condition = true;
break;
}
}
if (condition)
{
library.erase(index);
wcout << L"Книга удалена\n";
}
else wcout << L"Данной книги не обнаружено\n";;
}
}
//поиск по автору
void search_author()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
{
wstring author;
wcout << L"Введите автора: ";
getline(wcin, author);
for (unsigned int i = 0; i < library.size(); i++)
if (author == library[i].get_author()) library[i].show_book();
}
}
//поиск по названию
void search_book_name()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
{
wstring book_name;
wcout << L"Введите название: ";
getline(wcin, book_name);
for (unsigned int i = 0; i < library.size(); i++)
if (book_name == library[i].get_author()) library[i].show_book();
}
}
//поиск по жанру
void search_genre()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
{
wstring genre;
wcout << L"Введите жанр: ";
getline(wcin, genre);
for (unsigned int i = 0; i < library.size(); i++)
if (genre == library[i].get_author()) library[i].show_book();
}
}
//поиск по издательству
void search_book_publisher()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
{
wstring book_publisher;
wcout << L"Введите издательство: ";
getline(wcin, book_publisher);
for (unsigned int i = 0; i < library.size(); i++)
if (book_publisher == library[i].get_author()) library[i].show_book();
}
}
void show_library()
{
if (library.empty()) wcout << L"Библиотека пуста.\n\n";
else
for (unsigned int i = 0; i < library.size(); i++)
{
library[i].show_book();
cout << endl;
}
}
};
int main()
{
//setlocale(LC_ALL, "Rus");
setlocale(LC_ALL, ".866");
wcout << L"*****Проверка работы методов класса home_library*****\n\n";
home_library home_library1;
wcout << L"Добавим несколько книг в библиотеку.\n\n";
for (int i = 0; i < 3; i++) home_library1.add_book();
wcout << L"Содержание библиотеки:\n\n";
home_library1.show_library();
wcout << L"Выполним поиск по автору.\n\n";
home_library1.search_author();
wcout << L"Выполним поиск по названию.\n\n";
home_library1.search_book_name();
wcout << L"Удалим выбранную книгу.\n";
home_library1.erase_book();
wcout << L"Содержание библиотеки:\n\n";
home_library1.show_library();
return 0;
}