본문 바로가기

카테고리 없음

[C언어] 도서관리 프로그램 - 구현

struct book
{
	char name[10];
	char title[100];
	int page;
}typedef book;

void main()
{
	book bk[10] = {0};
	int index = 0;
	int cmd;
	int del_index;
	int i;

	while(1)
	{
		printf("입력[0] 삭제[1] 수정[2] 출력[3] 종료[-1]\n");
		printf("원하는 동작을 입력해 주세요 : ");
		scanf("%d", &cmd);
		if(cmd == 0)
		{
			for(index = 0; index < 10; index++)if(bk[index].page == 0)break;
			if(index == 10)
			{
				printf("더 이상 저장할 공간이 없습니다.\n\n");
				continue;
			}
			printf("저자를 입력해 주세요 : ");
			scanf("%s", bk[index].name);
			printf("제목을 입력해 주세요 : ");
			scanf("%s", bk[index].title);
			printf("page를 입력해 주세요 : ");
			scanf("%d", &bk[index].page);
			if(bk[index].page < 1)
			{
				printf("잘못된 값을 입력하셨습니다.\n\n");
				for(i = 0; i < 10; i++)bk[index].name[i] = 0;
				for(i = 0; i < 100; i++)bk[index].title[i] = 0;
				bk[index].page = 0;
				continue;
			}
			printf("저장되었습니다.\n\n");
		}
		else if(cmd == 1)
		{
			printf("삭제할 번호를 입력해 주세요 : ");
			scanf("%d", &del_index);

			if((del_index >= 0) && (del_index <= 9))
			{
				if(bk[del_index].page == 0)
				{
					printf("해당되는 책이 없습니다. \n\n");
					continue;
				}
				for(i = 0; i < 10; i++)bk[del_index].name[i] = 0;
				bk[del_index].page = 0;
				for(i = 0; i < 100; i++)bk[del_index].title[i] = 0;
				printf("삭제 했습니다.\n\n");
			}
			else printf("잘못된 번호를 입력하셨습니다.\n\n");
		}
		else if(cmd == 2)
		{
			printf("수정할 번호를 입력해 주세요 : ");
			scanf("%d", &del_index);

			if((del_index >= 0) && (del_index <= 9))
			{
				if(bk[del_index].page == 0)
				{
					printf("해당되는 책이 없습니다. \n\n");
					continue;
				}
				printf("저자를 입력해 주세요 : ");
				scanf("%s", bk[del_index].name);
				printf("제목을 입력해 주세요 : ");
				scanf("%s", bk[del_index].title);
				printf("page를 입력해 주세요 : ");
				scanf("%d", &bk[del_index].page);
				if(bk[del_index].page < 1)
				{
					printf("잘못된 값을 입력하셨습니다.\n\n");
					for(i = 0; i < 10; i++)bk[del_index].name[i] = 0;
					for(i = 0; i < 100; i++)bk[del_index].title[i] = 0;
					bk[del_index].page = 0;
					continue;
				}
				printf("수정 했습니다.\n\n");
			}
			else printf("잘못된 번호를 입력하셨습니다.\n\n");
		}
		else if(cmd == 3)
		{
			printf("\n");
			for(i = 0; i < 10; i++)
			{
				if(bk[i].page != 0)
				{
					printf("%d번\n", i);
					printf("저자 : %s\n", bk[i].name);
					printf("제목 : %s\n", bk[i].title);
					printf("page : %d\n\n", bk[i].page);
				}
			}
		}
		else if(cmd == -1) break;
		else printf("\n잘못된 값을 입력했습니다.\n\n");
	}
}

이것 저것 해야 하는 검사해야 하는 것들이 많아서 코드 길이가 조금 길다. 구조체를 이용해서 책에 대한 정보를 저장할 수 있도록 했다. 그리고 이 구조체를 배열로 선언해 10권을 저장할 수 있도록 했다.


index는 이 배열의 주소값을 지정하기 위해 사용하며 cmd는 어떤 동작을 해야 하는지 입력받는다. 그리고 del_index는 삭제하거나 수정해야 하는 주소 값을 입력받으며 i는 for문의 반복을 횟수용으로 사용한다.


프로그램 길이만 길지 어려운 내용은 없다. 다만 구조체 배열을 선언할 때 book bk[10] = {0}; 라고 해 주어 초기값을 다 0으로 주었다. 그래서 비어있는지 저장되어 있는지 구분을 할 수 있도록 하였다.