느낀점 및 설명 ¶
오오.. 귀차니즘이 글에달한 소스여요.ㅎ
선형 리스트로 데이터베이스 구축 -> 자료구조를 배열을 사용하세요~ 로 이해....OTL
그많은 자료구조중에서 왜 배열이냐고오..ㅠ.ㅜ 막강한 메모리 낭비와 오버플로우의 한계를 느끼고 싶은 것인가아..;;ㅁ;;
동적 할당이나 트리구조로 좀더 이쁘게 만들 수 있었으나.. 시키는 대로 해야지 뭐..ㅠ.ㅜ
그래서 작성. 결과는 아래와 같으며 심지어 id역시 문자열로 처리해서 맘껏 적어 넣을 수 있다.
그결과 자료역시 일반적으로 시간순서대로 저장하기때문에 검색속도는 평범..OTL
또한 소스에서 보시다시피.. 영어실력의 한계가 마구마구 느껴지며~
에러코드는.. 단순한 장식.. ㅋ (뭐든지 뽀대가 나고 봐야함.ㅎ)
그럼 좋은 하루 되시길.ㅎ
선형 리스트로 데이터베이스 구축 -> 자료구조를 배열을 사용하세요~ 로 이해....OTL
그많은 자료구조중에서 왜 배열이냐고오..ㅠ.ㅜ 막강한 메모리 낭비와 오버플로우의 한계를 느끼고 싶은 것인가아..;;ㅁ;;
동적 할당이나 트리구조로 좀더 이쁘게 만들 수 있었으나.. 시키는 대로 해야지 뭐..ㅠ.ㅜ
그래서 작성. 결과는 아래와 같으며 심지어 id역시 문자열로 처리해서 맘껏 적어 넣을 수 있다.
그결과 자료역시 일반적으로 시간순서대로 저장하기때문에 검색속도는 평범..OTL
또한 소스에서 보시다시피.. 영어실력의 한계가 마구마구 느껴지며~
에러코드는.. 단순한 장식.. ㅋ (뭐든지 뽀대가 나고 봐야함.ㅎ)
그럼 좋은 하루 되시길.ㅎ
// 실행해서 ?를 입력하면 입력 가능한 명령어를 볼 수 있습니다.
소스 ¶
~cpp #include <stdio.h> #include <string.h> const int MAX_DATA_SIZE=100; const int HANG_MOK=4; const int MAX_MENU=8; const int QUIT=6; const char menu[MAX_MENU][20]={"insert","modify","delete","undelete","search","list","quit","?"}; const char print_outs[HANG_MOK][5]={"id","name","tel","add"}; const int MAX_BLOCK_SIZE=256; const int FALSE=-1; const int ALL=-1; char datas[MAX_DATA_SIZE+1][HANG_MOK][MAX_BLOCK_SIZE]; int how_many_data=0; int prv_del=-1; int select_menu(); void function_insert();void function_modify();void function_delete();void function_undelete();void function_search();void function_list();void function_quit();void function_help(); int such_data(); void print_list(int); void modify_data(int); void print_cursur(); void main() { void (*functions[MAX_MENU])(void)={function_insert,function_modify,function_delete,function_undelete,function_search,function_list,function_quit,function_help}; while (1) { int selected_number=select_menu(); functions[selected_number](); if (QUIT==selected_number) break; } } int select_menu() { char temp_input[20]; while (1) { print_cursur(); scanf("%s",temp_input); for (register int i=0; i<MAX_MENU; ++i) { if (0==strcmp(temp_input,menu[i])) return i; } printf ("ERROR!! - code:00 - Wrong order!!\n"); } } void function_insert() { if (MAX_DATA_SIZE==how_many_data) printf("ERROR!! - code:03 - data overflow!!\n"); else { modify_data(how_many_data); ++how_many_data; } } void function_modify() { int target=such_data(); if (FALSE!=target) modify_data(target); } void function_delete() { int target=such_data(); if (FALSE!=target) { for (register int i=0; i<HANG_MOK; ++i) strcpy(datas[MAX_DATA_SIZE][i],datas[target][i]); for (register int i=target+1; i<how_many_data; ++i) { for (register int j=0; j<HANG_MOK; ++j) strcpy(datas[i-1][j],datas[i][j]); } --how_many_data; prv_del=target; } } void function_undelete() { if (-1==prv_del) printf("ERROR!! - code:02 - Can't find deleted data!!\n"); else { for (register int i=how_many_data-1; prv_del<=i; --i) { for (register int j=0; j<HANG_MOK; ++j) strcpy(datas[i+1][j],datas[i][j]); } for (register int i=0; i<HANG_MOK; ++i) strcpy(datas[prv_del][i],datas[MAX_DATA_SIZE][i]); ++how_many_data; prv_del=-1; } } void function_search() { int target=such_data(); if (FALSE!=target) print_list(target); } void function_list() { print_list(ALL); } void function_quit() { printf ("Goodbye~\n"); } void function_help() { printf("Menu: "); for (register int i=0; i<MAX_MENU; ++i) printf(" %s ",menu[i]); printf("\n"); } int such_data() { int select_number; char temp_data[MAX_BLOCK_SIZE]; printf("select number : "); for (register int i=0; i<HANG_MOK; ++i) printf("%d. %s\t",i,print_outs[i]); printf("\n"); print_cursur(); scanf("%d",&select_number); printf("content? "); scanf("%s",temp_data); for (register int i=0; i<how_many_data; ++i) { if (0==strcmp(temp_data,datas[i][select_number])) return i; } printf("ERROR!! - code:01 - Can't find!!\n"); return FALSE; } void print_list(int number) { for (register int i=0; i<HANG_MOK; ++i) printf("%s\t",print_outs[i]); printf("\n"); if (ALL==number) { for (register int i=0; i<how_many_data; ++i) { for (register int j=0; j<HANG_MOK; ++j) printf("%s\t",datas[i][j]); printf("\n"); } } else { for (register int j=0; j<HANG_MOK; ++j) printf("%s\t",datas[number][j]); printf("\n"); } } void modify_data(int target) { for (register int i=0; i<HANG_MOK; ++i) { printf("%s? ",print_outs[i]); scanf("%s",datas[target][i]); } } void print_cursur() { printf(">>"); }