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 #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; }