c++을 배우고 난 후 미니 프로젝트를 진행해보고 싶어 만들게 되었음
이 프로그램은 연락처를 저장하고 관리할 수 있는 콘솔 기반 주소록 두 개의 클래스로 구성되어 있으며, 각각 다음의 역할을 함:
-
Contact 클래스
- 연락처 정보(이름, 전화번호, 이메일, 주소)를 저장
- set/get 함수 및 display 함수 제공
-
AddressBook 클래스
- 여러 개의 Contact 객체를
vector로 관리 - 추가, 검색, 수정, 삭제, 조회 기능 제공
- 여러 개의 Contact 객체를
-
멤버 변수
name: 이름phoneNumber: 전화번호email: 이메일address: 주소
-
생성자
- 기본값을 모두 빈 문자열("")로 두어 객체 생성 시 초기화
-
set 함수
setName(),setPhoneNumber(),setEmail(),setAddress()- 객체 생성 후 값을 업데이트할 때 사용
-
get 함수
getName(),getPhoneNumber(),getEmail(),getAddress()- 저장된 값을 읽어오기 위해 사용
-
display 함수
- 해당 Contact 객체에 저장되어 있는 정보를 출력하는 함수
-
멤버 변수
vector<Contact> contacts: 여러 연락처를 동적으로 관리하기 위해 사용
-
멤버 함수
-
addContact()- 새 연락처를 추가
cin.ignore()로 입력 버퍼 정리 후getline()으로 각 항목 입력emplace_back()로contacts벡터에 새Contact객체 삽입
-
searchContact()- 입력한 이름(검색어)이 포함된 연락처를 찾아 **displayContact()**로 출력
contacts.empty()로 비어있는지 확인string::find()로 이름 검색 (string::npos판별)
-
editContact()- 수정할 이름으로 연락처를 찾은 뒤,
set함수를 통해 정보 변경 contacts.empty()면 수정 불가 메시지 표시
- 수정할 이름으로 연락처를 찾은 뒤,
-
deleteContact()- 삭제할 이름을 입력받아, 일치하는 연락처를
vector에서erase()로 제거
- 삭제할 이름을 입력받아, 일치하는 연락처를
-
displayAllContacts()- 전체 연락처 정보를 순회하며 display
-
-
전체 실행 흐름
- 메뉴를 통해 추가, 검색, 수정, 삭제, 전체 보기, 종료 등을 선택
cin >> choice로 메뉴 입력 후switch문으로 각 기능 실행
cin.ignore()cin과getline()혼용 시, 입력 버퍼에 남은 개행 문자 제거
getline(cin, 변수)- 한 줄 전체를 문자열로 입력받을 때 사용
emplace_back()vector의 끝에 새 요소를 직접 생성하여 추가
find()- 문자열에서 검색어를 찾아 인덱스 반환, 찾지 못하면
string::npos
- 문자열에서 검색어를 찾아 인덱스 반환, 찾지 못하면
erase()vector에서 지정된 위치의 요소 제거
-
Contact
- 연락처 정보 저장/관리
-
AddressBook
- 여러
Contact객체를vector로 동적 관리하며,- 추가
- 검색
- 수정
- 삭제
- 전체 조회
등 기능을 제공
- 여러
-
필수 포인트
cin.ignore()와getline()조합find()+string::npos로 검색erase()로 연락처 삭제
메인 함수에서 AddressBook 객체를 생성, run() 호출로 프로그램을 실행