Study/C / C++

Cpp / 스택을 이용한 주소록

slothCat 2014. 9. 5. 16:30

#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 << "잘못 입력하셧습니다." ;

}

}



}