Describe 손동일/TelephoneBook here.
Coding .. ¶
~cpp
#include <iostream>
using namespace std;
class TelephoneBook
{
private:
char tel_num[14];
char name[20];
char group[20];
char memo[50];
int count; // 등록되는 전화번호의 개수 ( 한명 등록시 1씩 증가 )
int mode; // 항목 선택시에 사용되는 변수
int menu_num; // menu 선택시에 사용되는 변수
char compare[20];
char compare2[14];
// char *compare2;
// char *compare3;
// char *compare4;
// char *compare5;
char compare3[20];
char compare4[20];
char compare5[50];
public:
TelephoneBook();
~TelephoneBook();
void show(); // 보여주는 것을 파일을 직접? 아니면 값을 옮겨서 옮긴 값을..
void input(); // 전화번호부에 적을 수 있는 환경을 만든다.
void save(); // 적은 내용들을 파일에 저장한다.
void menu();
void check(); // 검색 항목을 선택하는 함수
void check_search(); //
int mnreturn(); // menu_num 리턴해주는 함수
void change(); // 수정메뉴 선택시
void remove(); // 삭제메뉴 선택시
};
한칸띄고 ¶
~cpp
두번째 장소 ¶
~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;
}
Think about it.. ¶
~cpp 6/4 토토토토토토 포인터를 이용할 수 있는 방법일 듯.. compare2 = new char [4]; cin >> compare; // int ok; fin.getline(compare2, 30, '\n'); // fin >> compare2[0]; cout << compare2;










