반응형

C언어를 사용하여 콘솔환경에서 배열과 구조체 포인터를 사용해서 주차장 단어장을 만들어보자!!




app.c


#include "bit_main.h"
#include "pack.h"
#include "word_1.h"

void menu() 
{
	puts("1. 주차장");
	puts("2. 단어장");
	puts("0. 종료");
}

int inputNo() 
{
	int No;
	printf("선택 :");
	scanf("%d",&No);
	return No;
}

void selectMenu(int key,int* (*park)[5])
{
	switch(key)
	{
	case 1:
		Run1(park);  
		 break;
	case 2:
		Run2();
		 break;
	case 0:
		exit(0);
	default:
		puts("잘못된 값");break;
	}
}

void Run(int* (*park)[5])
{ 
	int key =0; 
	while(1)
	{
		menu();		
		key = inputNo(); 
		system("cls");
		selectMenu(key,park); 
		puts("계속하시려면 아무키나 누르세요!!");
		getch();
	}
}


bit_main.c


#include "bit_main.h"
#include "app.h"
//************************************************************
// 1. 주차장 !!
// [][][][][][][][][][][][][] 1.입차
// [][][][][][][][][][][][][] 2.출차
// [][][][][][][][][][][][][] 3.검색 (내차검색) --> 최단경로
// int Parking[3][5]
//************************************************************
// 2. 단어장
// [hi][:][안][녕][하][세][요][][][] 1. 저장 기능
// [me][:][나][][][][][][][]         2. 삭제 기능
// [][][][][][][][][][]              3. 검색 (영어로만 검색)
// [][][][][][][][][][]
// char [10][100];
//************************************************************
void main()
{
	int* park[3][5] = {0};
	
	Run(park); 
}


pack.c


#include "bit_main.h"
#include "app.h"

//************************************************************
// 1. 주차장 !!
// [][][][][][][][][][][][][] 1.입차
// [][][][][][][][][][][][][] 2.출차
// [][][][][][][][][][][][][] 3.검색 (내차검색) --> 최단경로
// int Parking[3][5]
//************************************************************

//int park[5][5];
//초기화

void Array_1(int* (*park)[5])
{
	int i,j,k=1;
	
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			park[i][j] = (int*)malloc(sizeof(int)); 
			*park[i][j] = k; 
			k++;
		}
	}	
}

// 화면 출력
void display(int* (*park)[5]) 
{

	int i,j,c=2;
	
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			if(*park[i][j] <10)
				printf("[   %d   ] ",*park[i][j]);
			else if(*park[i][j] < 30) 
				printf("[  %d   ] ",*park[i][j]);
			else
				printf("[  %d  ] ",*park[i][j]);
		}
		printf("\n");
	}
}


// 추가
void add(int* (*park)[5])
{
	int CarNo;
	int line_1;
	int i,j,k=1;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			if(*park[i][j] <100)
			{
				*park[i][j] = k;
			}
			k++;
		}
	}
	
	printf("차번호 입력해주세요: ");
	scanf("%d",&CarNo);
	printf("입차 시킬 곳을 정해주세요 (1 ~ 25):");
	scanf("%d",&line_1);


	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			if(line_1 == *park[i][j])
				*park[i][j] = CarNo;
		}
	}
}

//출차
void del(int* (*park)[5])
{
	int CarNo;
	int i,j,c=0,k=1;


	printf("차번호 입력해주세요: ");
	scanf("%d",&CarNo);
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{	
			c++;		
			if(CarNo == *park[i][j])
				*park[i][j] = c;			
		}
	}
}
//검색
void seach_pack(int* (*park)[5])
{
	int CarNo;
	int i,j,c=0,k;

	printf("차번호 입력해주세요: ");
	scanf("%d",&CarNo);
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{	
			c++;		
			if(CarNo == *park[i][j])
				printf("[ %d  ] 순서에 있습니다. \n",c);		
		}
	}
	puts("아무 숫자나 눌러주세요!!!");
	scanf("%d",&k);
	
	
	
}


//메뉴
void pack_Menu()
{
	puts("1. 입차 선택");
	puts("2. 출차 선택");
	puts("3. 검색");
	puts("0. 종료");
}

void select_pack(int key,int* (*park)[5])
{
	switch(key)
	{
	case 1:
		add(park);
		 break;
	case 2:
		del(park);
		 break;
	case 3:
		seach_pack(park);
		 break;
	case 0:
		exit(0);
	default:
		puts("잘못된 값");
		break;
	}
}


void Run1(int* (*park)[5]) 
{
	int key =0;	
	Array_1(park);

	while(1)
	{
		system("cls");
		display(park); 
		pack_Menu();
		key = inputNo();		
		select_pack(key,park);
	}


}


word_1.c


#include "bit_main.h"
#include "app.h"

//************************************************************
// 2. 단어장
// [hi][:][안][녕][하][세][요][][][] 1. 저장 기능
// [me][:][나][][][][][][][]         2. 삭제 기능
// [][][][][][][][][][]              3. 검색 (영어로만 검색)
// [][][][][][][][][][]
// char [10][100];
//************************************************************

//char word[10][50] = {{"qwe:키키"},{"asd:zxc"},{"cvb:qweassd"}};
char word[10][50];

//화면출력
void display_1(char (*word)[50])
{
	int i,j;	
	for(i=0;i<10;i++)
	{
		printf("%s",word[i]);		
		printf("\n");
	}
}
//추가
void add_1(char (*word)[50])
{
	int i;
	for(i =0;i<10;i++)
	{
		if(word[i][0] == NULL)
		{
			printf("입력해 주세요 : ");
			scanf("%s",word[i]);
			break;
		}
	}
				
}

//제거
void del_1(char (*word)[50])
{
	int i,j,i_1,j_1;
	char str[50]={""};
	char str_1[50] ={" "};
	printf("삭제하실 단어를 입력 :");
	scanf("%s",str);

	for(i=0;i<10;i++)
	{
		for(j=0;j<50;j++)
		{
			if(word[i][j] == ':')
			{
				for(i_1 =0;i_1 


app.h


void menu();
int inputNo();
void selectMenu(int key,int* (*park)[5]);
void Run(int* (*park)[5]);


bit_main.h


#include 
#include 
#include 


pack.h


void Array_1(int* (*park)[5]);
void display(int* (*park)[5]);
void add(int* (*park)[5]);
void del(int* (*park)[5]);
void seach_pack(int* (*park)[5]);
void pack_Menu();
void select_pack(int key,int* (*park)[5]);
void Run1(int* (*park)[5]);


word_1.h


void word_Menu();
void select_word(int key);
void Run2();
void display_1(char (*word)[50]);


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

[C] 포인터 공부 2  (0) 2014.11.18
[C] 포인터 공부 1  (0) 2014.11.18
[C] 파일 입출력  (0) 2014.11.18
[C] 바이너리 입출력  (0) 2014.11.18
[C] 예제  (0) 2014.11.18

+ Recent posts