1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
| #include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <map>
#include "avtor.h"
#include "locale.h"
using namespace std;
Avtor getAvtor()
{
string first;
string second;
cout << "Введите имя: ";
getline (cin, first);
cout << "Введите фамилию ";
getline (cin, second);
return Avtor (first,second);
}
void addEntry (map<Avtor, string> & book)
{
pair <Avtor, string> entry;
string books;
Avtor avtor = getAvtor ();
cout << "Введите название книги "
<< avtor.getName() << ":";
getline (cin, books);
entry = make_pair (avtor,books);
pair<map<Avtor,string>::iterator,bool> pr=book.insert (entry);
if(pr.second)
cout << "Введено успешно."<< endl;
else
{
cout << "Книга уже сушествует" << avtor.getName()
<< ". название: " <<pr.first->second<<endl;
}
}
void listEntries (map<Avtor, string >& book)
{
if(book.empty())
{
cout << "Библиотека пустая " << endl;
return;
}
map<Avtor,string>::iterator iter;
cout <<setiosflags(ios::left);
for (iter = book.begin(); iter != book.end(); iter++)
{
cout << "\n" << iter ->first.getName()
<< "\t" <<iter->second << endl;
}
//cout <<resetiosflags (ios::right);
}
void getEntry (map<Avtor,string>& book)
{
Avtor avtor = getAvtor();
map <Avtor,string>::const_iterator iter = book.find(avtor);
if (iter==book.end())
cout << "Не найдено книгу";
else cout << "Книжка " << avtor.getName()
<< " - \"" <<iter->second <<"\""<<endl;
}
void deleteEntry (map<Avtor, string>& book)
{
Avtor avtor = getAvtor();
map<Avtor, string>::iterator iter = book.find(avtor);
if (iter == book.end())
cout << "не найдено книгу " << avtor.getName() <<endl;
else
{
book.erase(iter);
cout << "Книга " <<avtor.getName() << " Удалена." <<endl;
}
}
int main ()
{setlocale (LC_ALL, "Russian");
map <Avtor,string> nbook;
char answer = 0;
while (true)
{
cout << "Ввести дание про книгу (Y или N): ";
cin >> answer;
cin.ignore();
if (toupper(answer) =='N' )
break;
if (toupper(answer) !='Y' ){
cout << "Неверний ответ." <<endl;
continue;
}
addEntry(nbook);
}
while (true)
{
cout <<endl << "Выберете режим: " <<endl
<< "A - добавит даные, D - удалить даные, G - найти книгу, "
<<endl
<<"L - вывести список книг, Q - выход" <<endl;
cin >> answer;
cin.ignore();
switch (toupper(answer))
{
case 'A':
addEntry (nbook);
break;
case 'G':
getEntry (nbook);
break;
case 'D':
deleteEntry(nbook);
break;
case 'L':
listEntries(nbook);
break;
case 'Q':
return 0;
default:
cout << "Неверний выбор" <<endl;
break;
}
}
system ("pause");
} |