일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영어
- 안드로이드 개발 강좌
- 구글 안드로이드 개발
- 안드로이드개발
- 스마트폰 배경화면
- Form Stuff
- 안드로이드 개발 2.0
- SKY 시리우스
- 아이폰 배경화면
- 스카이 안드로이드폰 시리우스 K양 동영상
- 안드로이드 개발
- 안드로이드2.0개발
- 스카이 안드로이드폰 시리우스
- 인기있는 블로그 만들기
- 안드로이드
- 아이폰 바탕화면
- 안드로이드 개발 2.0 강좌
- android
- 구글 안드로이드
- 안드로이드2.0
- 안드로이드 2.0 개발
- 안드로이드 배경화면
- 안드로이드 바탕화면
- 안드로이드폰
- objective-c
- 하루 한마디 영어
- 구글안드로이드
- MapView
- sky 시리우스폰
- 하루한마디영어
- Today
- Total
moozi
파일입출력 클래스 버전 -주소록 본문
#include <iostream>
#include <fstream>
using namespace std;
class Address
{
private:
char processNumber[10]; // Menu번호를 저장하는 변수
int quit; // 종료여부를 판단하기 위한 변수(1이면 종료)
public:
void intro(); // 초기 화면을 출력하는 함수
void seletMenu(); // 메뉴선택을 요구하는 함수
void inputPN(); // 메뉴번호를 입력받아 처리하는 함수
void readAddress(); // 주소록을 읽는 함수
void writeAddress(); // 주소록에 쓰는 함수
void searchAddress(); // 주소록을 검색하는 함수
int checkQuit(); // quit의 값을 읽는 함수
void ProcessQuit(); // 프로그램을 종료하기 위한 함수
};
/* 초기 화면을 출력하는 함수 */
void Address::intro()
{
/* 프로그램 제목을 출력합니다. */
cout << "********************************************** \n";
cout << "* * \n";
cout << "* 나의 주소록 * \n";
cout << "* * \n";
cout << "********************************************** \n";
}
/* 메뉴선택을 요구하는 함수 */
void Address::seletMenu()
{
cout << "\n"; //한줄 띄웁니다.
cout << "====MENU==== \n";
cout << "목록보기 : 1 \n";
cout << "입력하기 : 2 \n";
cout << "검색하기 : 3 \n";
cout << "종료하기 : 4 \n";
cout << "============ \n";
cout << "MENU 번호를 선택하세요 : ";
}
/* 메뉴번호를 입력받아 처리하는 함수 */
void Address::inputPN()
{
cin.getline(processNumber,sizeof(processNumber));
/* 사용자의 입력이 잘 못 되면 반복해서 다시 받는다. */
while ((atoi(processNumber)!=1) && (atoi(processNumber)!=2)
&& (atoi(processNumber)!=3) && (atoi(processNumber)!=4))
{
seletMenu();
cin.getline(processNumber,sizeof(processNumber));
}
if (atoi(processNumber)==1)
readAddress();
else if (atoi(processNumber)==2)
writeAddress();
else if (atoi(processNumber)==3)
searchAddress();
else if (atoi(processNumber)==4)
ProcessQuit();
}
/* 주소록을 읽는 함수 */
void Address::readAddress()
{
char list[300];
ifstream AddressList("주소록.txt");
if(!AddressList)
{
cout << "주소록파일을 열 수 없습니다. \n";
quit=1;
}
else
{
cout << "\n"; //한줄 띄웁니다.
cout << ">>>> 주소록 목록 <<<< \n";
while(!AddressList.eof())
{
AddressList.getline(list,sizeof(list));
cout << list << "\n";
}
}
AddressList.close(); // 파일닫기
}
/* 주소록에 쓰는 함수 */
void Address::writeAddress()
{
ofstream wAddress("주소록.txt", ios::app);//파일의 끝에 데이터를 추가합니다.
/* 파일을 여는데 실패하면 프로그램을 종료합니다. */
if(!wAddress)
{
cout <<"주소록파일을 열 수 없습니다. \n";
quit=1;
}
else
{
char name[20]; //이름
char address[100]; //주소
char handphone[20]; //핸드폰
cout << "\n";
cout << "이름입력 : ";
cin.getline(name,sizeof(name));
cout << "주소입력 : ";
cin.getline(address,sizeof(address));
cout << "핸드폰번호입력 : ";
cin.getline(handphone,sizeof(handphone));
wAddress << name << ", ";
wAddress << address << ", ";
wAddress << handphone << "\n";
wAddress.close(); // 파일을 닫습니다.
}
}
/* 주소록을 검색하는 함수 */
void Address::searchAddress()
{
char * searchResult; // 검색결과를 저장하는 변수
int findCounter=0; //키워드검색시 발견횟수를 저장하기 위한 변수
ifstream sAddress("주소록.txt");
if(!sAddress)
{
cout << "주소록파일을 열 수 없습니다. \n";
quit=1;
}
else
{
char keyWord[30]; // 검색어를 저장하는 변수
cout << "\n"; // 한줄 띄웁니다.
cout << "검색어를 입력하세요 : ";
cin.getline(keyWord,sizeof(keyWord));
cout << "\n"; // 한줄 띄웁니다.
cout << ">>>> 검색결과 <<<< \n";
while (sAddress)
{
char sAddressList[300]; // 주소록의 한 행을 읽어서 저장하기 위한 변수
sAddress.getline(sAddressList,sizeof(sAddressList));
searchResult = strstr(sAddressList, keyWord); // 한 행의 주소에 검색어가 포함되는지 확인
/* 검색어가 발견되면 해당행을 출력한다. */
if( searchResult )
{
cout << sAddressList << "\n";
++findCounter; // 발견횟수 증가
}
}
/* 검색자료가 없습니다. 출력하기*/
if(findCounter==0) // 발견횟수가 0이면 검색자료가 없습니다.
{
cout << "검색자료가 없습니다. \n";
}
sAddress.close();
}
}
/* quit의 값을 읽는 함수 */
int Address::checkQuit()
{
return quit;
}
/* 프로그램을 종료하기 위한 함수 */
void Address::ProcessQuit()
{
cout << "... 프로그램이 종료되었습니다.\n";
quit = 1;
}
/* main()함수입니다.*/
int main()
{
Address myAddress; // Address클래스를 이용해서 객체를 생성합니다.
myAddress.intro(); // 주소록 초기화면을 출력합니다.
while(myAddress.checkQuit()!=1) // 종료조건이 아닌 경우 반복합니다.
{
myAddress.seletMenu(); // 사용자가 Menu를 선택하도록 합니다.
myAddress.inputPN(); // 사용자가 선택한 Menu에 따라 처리합니다.
}
return 0;
}
'C++' 카테고리의 다른 글
끝말잇기게임 클래스 버전 (0) | 2015.11.17 |
---|---|
끝말잇기게임 (0) | 2015.11.12 |
파일입출력예제 클래스버젼 (0) | 2015.10.30 |
파일입출력 예제 (0) | 2015.10.27 |