U E D R , A S I H C RSS

기본데이터베이스/조현태

느낀점 및 설명

오오.. 귀차니즘이 글에달한 소스여요.ㅎ
선형 리스트로 데이터베이스 구축 -> 자료구조를 배열을 사용하세요~ 로 이해....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(">>");
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:47
Processing time 0.0164 sec