Cpp / 스택을 이용한 주소록
#include <iostream>
#include <vector>
using namespace std;
class CONTACTS
{
private:
char name[20];
int number;
vector<CONTACTS> vec;
public:
void setNumber(int newN);
void setName(char* newN);
int getNumber();
char* getName();
void add();
void erase();
void serch();
void print();
};
void CONTACTS::setNumber(int newN)
{
number = newN;
}
void CONTACTS::setName(char* newN)
{
strcpy(name,newN);
}
int CONTACTS::getNumber()
{
return number;
}
char* CONTACTS::getName()
{
return name;
}
void CONTACTS::add()
{
char Mname[20];
int Mnumber;
CONTACTS ct;
cout << "추가하실 이름을 입력하시오 :: ";
cin >> Mname;
cout << "추가하실 나이을 입력하시오 :: ";
cin >> Mnumber;
ct.setName(Mname);
ct.setNumber(Mnumber);
vec.push_back(ct);
}
void CONTACTS::erase()
{
int count=0;
bool find = false;
char Sname[20];
CONTACTS ct;
vector<CONTACTS>::iterator it;
cout << "찾으실 분의 이름을 입력하시오." << endl;
cout << "입력 :: ";
cin >> Sname;
for (it = vec.begin();it != vec.end();)
{
if(strcmp(it->name,Sname)==0)
{
it = vec.erase(it);
break;
}
else{
it++;
}
}
}
void CONTACTS::serch()
{
int count=0;
bool find = false;
char Sname[20];
vector<CONTACTS>::iterator it;
cout << "찾으실 분의 이름을 입력하시오." << endl;
cout << "입력 :: ";
cin >> Sname;
for (it = vec.begin();it != vec.end();)
{
if(strcmp(it->name,Sname)==0)
{
find = true;
break;
}
else{
it++;
}
}
if(find == true)
{
cout << "찾으시는 분의 이름이 주소록에 있습니다." << endl;
cout << it->name << " " << it->number << endl;
}
else
{
cout << "찾으시는 분의 이름이 주소록에 없습니다." << endl;
}
cout << count << endl<< endl<< endl;
}
void CONTACTS::print()
{
vector<CONTACTS>::iterator it;
for (it = vec.begin();it != vec.end();it++)
{
cout << it->name << it->number << endl;
}
}
void main()
{
int flag;
CONTACTS ct;
while(1)
{
cout << "기능을 선택하시오." << endl;
cout << "1. 추가 2. 삭제 3. 검색 4. 출력"<< endl;
cout << "입력 :: ";
cin >> flag;
switch(flag)
{
case 1:
ct.add();
break;
case 2:
ct.erase();
break;
case 3:
ct.serch();
break;
case 4:
ct.print();
break;
default:
cout << "잘못 입력하셧습니다." ;
}
}
}