== 느낀점 및 설명 == 이 더운 무더위에 나처럼 판타지나 보면서 뒹굴..이 아닌 열심히 공부하는 학생들을 위해서~ 이렇게 짜면 망한다는 사실을 보여주려고..(뭐냐! 원래는 그럴의도가 전혀 없었..짜다보니~ ~_~) 짜버렸다.ㅎ (거기다 이페이지 [LittleAOI]를 링크하고 있는걸로 봐서 관계있는듯..해서..ㅎ 난몰라~ >ㅁ<;;) 뭐.. 참고 할만한 부분은 참고하길 바란다..(만은 짜놓고 보니 도움이 안될듯..) 일단 내용을 읽어보면 데이터를 '추가' 는 하지만 '삭제'는 하지않는다. (아싸아~) 이로써 배열을 사용해도 빈공간이 생겨 자료를 땡긴다거나 하는 고생은 하지 않아도 된다는..(어이 그렇다고 배열로 짜냐;;) (사실 트리구조를 이용해서 적어도 이름만이라도 정렬을 하면 검색속도를 향상할 수 있으나..귀찮았다.....) C++의 특성이 많이 드러나지 않지만..(아마 본인이 C에 익숙한 탓..지뢰파인더는 그나마 C++적인데..//광고는 금물.) 나름대로 자료구조를 분리 시켰다. (그래도 C++답지는 않은듯..느낌탓인가..) (참가하고 싶으나 참가를 못하고..C++도 배운적이 없는탓에.(2학기에 한다니까) 전혀 C++답지 않지만 알고리즘은 있으니.ㅎ그거라도) 다른 작성하시는 분들은 이 무더위에 고생하시는데 잘 짜시길 바라며.. 그럴일 없겠지만 필요하면 참고하라고..그럼.. == 소스 == === main.cpp === {{{ #include #include "class.h" using namespace std; int input_book(); int book_process(int); book_database* datas; void main() { int select=0; datas=new book_database(); while (4!=select) { cout << "1.자료입력 2.대여 3. 반납 4.종료\n>>"; cin >> select; fflush(stdin); if (1==select) input_book(); else if (2==select || 3==select) book_process(select-2); } delete datas; } void print_line(char* temp_name, char* temp_writer, char* temp_isbn) { cout << "\n"; cout << "책의 이름 : " << temp_name << "\n"; cout << "책의 저자 : " << temp_writer << "\n"; cout << "책의 ISBN : " << temp_isbn << "\n"; } int input_book() { char temp_name[256]; char temp_writer[256]; char temp_isbn[256]; char y_n=0; cout << "책의 이름을 입력해주세요>>"; cin.getline(temp_name,256); cout << "책의 저자를 입력해주세요>>"; cin.getline(temp_writer,256); cout << "책의 ISBN을 입력해주세요>>"; cin.getline(temp_isbn,256); print_line(temp_name,temp_writer,temp_isbn); while (y_n!='n' && y_n!='N') { cout << "\n맞습니까?(Y/N)? "; cin >> y_n; fflush(stdin); if ('y'==y_n || 'Y'==y_n ) { datas->input_data(temp_name,temp_writer,temp_isbn); return 0; } } return -1; } int book_process(int select) { int selected=0, where; const char output_data[2][5]={"대여","반납"}; char temp_char[256], temp_name[256], temp_writer[256], temp_isbn[256]; char y_n=0; cout << output_data[select] << "하실 책을 무엇으로 검색하시겠습니까? (1.이름 2.ISBN)\n>>"; while (selected<1 || selected>2) { cin >> selected; } fflush(stdin); cout << "검색어를 입력해 주세요.\n>>"; cin.getline(temp_char,256); where=datas->such(temp_char,selected); if (-1==where) { cout << "검색어를 찾을 수 없습니다.\n"; return -1; } datas->return_line(where, temp_name, temp_writer, temp_isbn); print_line(temp_name,temp_writer,temp_isbn); while (y_n!='n' && y_n!='N') { fflush(stdin); cout << "\n맞습니까?(Y/N)? "; cin >> y_n; if ('y'==y_n || 'Y'==y_n ) { if (-1==datas->data_process(where, (select+1)%2)) cout << output_data[select] << "에 실패하였습니다.\n"; else cout << output_data[select] << "을 완료하였습니다.\n"; return 0; } } return -2; } }}} === class.cpp === {{{ #include "class.h" int book_database::get_size(char* target) { int i=0; while (0!=target[i]) ++i; return i+1; } void book_database::str_copy(char* target, char* original) { for (register int i=0; 0!=original[i];++i) target[i]=original[i]; target[i]=0; } int book_database::str_cmp(char* target_a, char* target_b) { for (register int i=0; 0!=target_a[i];++i) { if (target_a[i]!=target_b[i]) return -1; } if (target_a[i]!=target_b[i]) return -1; return 0; } book_database::book_database() { number_data=0; for (register int i=0; i