반응형

포인터 배열로 바꿔보자!!!

구조는 전에있던 도서관리과 똑같다!



app.c


#include "main.h"
#include "book.h"
// 1. 정적배열 도서관리 -> 도서 추가, 삭제, 검색(책이름으로), 출력(전체출력)
void MemuDisplay()
{
	puts("1. 도서 추가");
	puts("2. 도서 삭제");
	puts("3. 도서 검색");
	puts("4. 도서 출력");
	puts("0. 종료");
}
int inputNo()
{
	int No;
	printf("입력 :");
	scanf("%d",&No);
	return No;
}
void selectMenu(int key,BOOK* (*bookList)[10])
{
	switch(key)
	{
	case 1:
		book_add(bookList);
			break;
	case 2:
		book_delete(bookList);
		break;
	case 3:
		book_seach(bookList); break;
	case 4:
		display(bookList);
		break;
	case 0:
		exit(0);
	default:
		puts("잘못된 값");break;
	}
}

void Run(BOOK* (*bookList)[10])
{
	book_array(bookList);
	int key =0;
	//printf("테스트\n---------------------------------\n");
	//display(bookList);
	while(1)
	{
		//system("cls");
		//display(bookList);
		MemuDisplay();		
		key = inputNo();
		system("cls");
		selectMenu(key,bookList);
		puts("계속하시려면 아무키나 누르세요!!");
		getch();
	}
}


book.c


#include "main.h"

//초기화
void book_array(BOOK* (*bookList)[10])
{
	int i;
	for(i=0;i<3;i++)
	{
		for(int j=0;jBookName = (char*)malloc(sizeof(char)*10);
			bookList[i][j]->BookName = NULL;
			//printf("테스트\n------------------------\n");
			strcpy(bookList[i][j]->BookWriter,"");
			bookList[i][j]->BookPrice=NULL;
		}
		printf("테스트\n------------------------\n");

	}
}

// 1. 정적배열 도서관리 -> 도서 추가, 삭제, 검색(책이름으로), 출력(전체출력)
void display(BOOK* (*bookList)[10])
{
	int i;
	printf("도서 칸을 입력 :(0~2)");
	scanf("%d",&i);
	for(int j=0;jBookName != NULL)
		{
			printf("도서이름 : %s \n도서저자 :%s\n도서가격 : %d\n--------------\n",
				bookList[i][j]->BookName,bookList[i][j]->BookWriter,bookList[i][j]->BookPrice);
		}
	}

}
// 삭제
void book_delete(BOOK* (*bookList)[10])
{
	int i,j,y,temp=0,a;
	char* name;
	char* name_1;
	printf("도서 칸을 입력 :(0~2)");
	scanf("%d",&i);
	printf("삭제하실 도서이름 :");
	name_1=(char*)malloc(sizeof(char)*10);
	name =(char*)malloc(sizeof(char)*10);
	scanf("%s",name);
	for(j=0;jBookName,NULL);
				strcpy(bookList[i][y]->BookWriter,NULL);
				bookList[i][y]->BookPrice=NULL;
				temp =1;
				break;
			}
		}
		if(temp ==1)
			break;

	}
}

// 검색
void book_seach(BOOK* (*bookList)[10])
{
	int i,j,y,temp=0;
	char* name;
	char* name_1;
	printf("도서 칸을 입력 :(1~3)");
	scanf("%d",&i);
	printf("검색하실 도서이름 :");

	name_1=(char*)malloc(sizeof(char)*10);
	name =(char*)malloc(sizeof(char)*10);
	scanf("%s",name);
	for(i=0;iBookName == NULL)
		{
			printf("도서 이름:");
			scanf("%s",name);
			printf("도서 저자:");
			scanf("%s",Writer);
			printf("도서 가격:");
			scanf("%d",&Price);
			(*bookList)[i][j].BookName = (char*)malloc(sizeof(char)*10);
			strcpy((*bookList)[i][j].BookName,name);
			strcpy((*bookList)[i][j].BookWriter,Writer);
			(*bookList)[i][j].BookPrice = Price; 
			break;

		}
	}
}


main.c


#include "main.h"
#include "app.h"

void main()
{
	// 3. 포인터 배열
	// main --> BOOK* BookList[3][10];
	BOOK* bookList[3][MAX]={NULL};
	Run(bookList);
}


app.h


//app.h
void MemuDisplay();
int inputNo();
void selectMenu(int key,BOOK* (*bookList)[10]);
void Run(BOOK* (*bookList)[10]);


book.h


void display(BOOK* (*bookList)[10]);

void book_delete(BOOK* (*bookList)[10]);

void book_seach(BOOK* (*bookList)[10]);

void book_add(BOOK* (*bookList)[10]);

void book_array(BOOK* (*bookList)[10]);


main.h


#include 
#include 
#include 
#include 
#include 
#define MAX 10
typedef struct book
{
	char* BookName;
	char BookWriter[20];
	int BookPrice;
}BOOK;


'C, C++' 카테고리의 다른 글

[C] c for문으로 문자열 길이 구하기!  (0) 2014.11.18
[C] 최대값, 최소값, 합계 구하기  (0) 2014.11.18
[C] 도서관리(동적)  (0) 2014.11.18
[C] 포인터 공부 5  (0) 2014.11.18
[C] 포인터 공부 4  (0) 2014.11.18

+ Recent posts