~cpp
#include <iostream>
using namespace std;
#include <fstream>
#include "TelephoneBook.h"
#include <cstring>
ofstream fout;
ifstream fin;
const char *filename = "text.txt";
const int base_save = 4; // 처음 기본으로 저장되어있는 전화번호 숫자.
TelephoneBook::TelephoneBook()
{
// compare2 = new char[14];
// compare3 = new char[20];
// compare4 = new char[20];
// compare5 = new char[50];
count = 0;
menu_num = 0;
};
TelephoneBook::~TelephoneBook()
{
};
void TelephoneBook::input() // 전화번호부에 적을 수 있는 환경을 만든다.
{
cout << "전화번호 : " ;
cin >> tel_num;
cout << "이름 : ";
cin >> name;
cout << "그룹명 : ";
cin >> group;
cout << "메모 : ";
cin >> memo;
save();
}
void TelephoneBook::save() // 적은 내용들을 파일에 저장한다.
{
fout.open(filename, ios::app);
fout << tel_num << endl;
fout << name << endl;
fout << group << endl;
fout << memo << endl;
count = count + 1;
fout.close();
}
void TelephoneBook::menu()
{
cout << "> 전화번호부 (입력:1, 검색:2, 끝내기:3)" << endl;
cin >> menu_num;
if(menu_num == 1)
{
input();
}
else if(menu_num == 2)
{
check();
// 확인하기 위한 문장
// cout << "메뉴 들어갑니다. " << endl;
// show();
}
else
{
exit(0);
}
}
void TelephoneBook::check_search()
{
fin.open(filename);
/*
if(check_num >= 1) // 구문체크를 위해서..
{
cout << compare << endl;
cout << compare2 << endl << compare3 << endl << compare4<<endl<<compare5<< endl;
}
*/
for(int i=0; i<(base_save+count)*4; i++)
{
fin.getline(compare2, 14, '\n');
fin.getline(compare3, 20, '\n');
fin.getline(compare4, 20, '\n');
fin.getline(compare5, 50, '\n');
if(mode == 1)
{
if(!strcmp(compare, compare2)) // 두개가 같다면 0을 리턴한다.
{
show();
}
}
else if(mode == 2)
{
if(!strcmp(compare, compare3)) // 두개가 같다면 0을 리턴한다.
{
show();
// check_num = check_num + 1; // 구문 체크를 위해서
// break 를 안써서.. ㅡㅜ;;
// compare 들이 값을 가지지 못해버렸다..
break;
}
}
else if(mode == 3)
{
if(!strcmp(compare, compare4)) // 두개가 같다면 0을 리턴한다.
{
show();
}
}
}
// cout << "for 문이 끝났습니다. " << endl;
fin.close();
// cout << compare2 << endl << compare3 << endl << compare4 << endl << compare5 << endl;
}
void TelephoneBook::check() // 검색 항목을 선택하는 함수
{
cout << "> 검색항목선택 (전화번호:1, 이름:2, 그룹명:3)" << endl;
cin >> mode;
if(mode == 1)
{
cout << "전화번호 : ";
cin >> compare;
check_search();
}
else if(mode == 2)
{
cout << "이름 : ";
cin >> compare;
// cout << compare;
check_search();
}
else if(mode == 3)
{
cout << "그룹명 : ";
cin >> compare;
check_search();
}
}
void TelephoneBook::show()
{
cout << "전화번호 : " << compare2 << endl;
cout << "이름 : " << compare3 << endl;
cout << "그룹명 : " << compare4 << endl;
cout << "메모 : " << compare5 << endl;
}
void TelephoneBook::change()
{
cout << "아직 미완성 입니다." <<endl;
// cout << compare2 << endl << compare3 << endl << compare4 << endl << compare5 << endl;
// fout.open(filename, ios::in | ios::out | ios::app );
// strcpy(compare2, " ");
// fout.seekp(compare2);
// fout << compare2;
}
void TelephoneBook::remove()
{
cout << "아직 미완성 입니다." <<endl;
// cout << compare2 << endl << compare3 << endl << compare4 << endl << compare5 << endl;
}
// 코드의 문제점
// 계속적으로 돌리는 것을 통해서 여러개의 것들이 계속 돌게되는 ㅡㅡ ㅋ;;
int TelephoneBook::mnreturn()
{
return menu_num;
}
int main()
{
// TelephoneBook *a = new TelephoneBook();
int ddd;
TelephoneBook a;
do
{
a.menu();
if(a.mnreturn() == 2)
{
cout << "(수정:1, 삭제:2, 상위메뉴:3) " << endl;
cin >> ddd;
if(ddd != 3)
break;
}
}while(a.mnreturn() == 2);
if(ddd == 1)
a.change();
if(ddd == 2)
a.remove();
cout << "끝났습니다." << endl;
return 0;
}