-
C언어 도서관 좌석 예약 프로그램Visual Studio/C 실전 2015. 6. 19. 15:58
학교 과제로 하나 만들긴 했는데 소스가 2차원 배열 하나로 만들다보니 쓸 데 없이 길어졌습니다..
지적 달게 받고 코드 수를 줄일 수 있는 방안을 마련해주시면 적극 수렴하겠습니다. 감사합니다.
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>void SYSTEM();
void VIEW_SEAT(int chain[7][9]);
void SEAT(int chain[7][9], int width, int height);
void EXIT(int chain[7][9], int width, int height);main(){
srand(time(NULL));
printf("□□□□□□□□□□□□□□□□□□\n□ 좌석 예약 시스템 ver0.1 □\n□\t\t\t\t □\n□ Press any key to continue □\n□\t\t\t\t □\n□\t\t\t\t □\n□\t\t\t\t □\n□□□□□□□□□□□□□□□□□□\n");
getch();
system("cls");
SYSTEM();}
void SYSTEM(){
int i, j, select, width=0, height=0;
int chain[7][9]={0};for(i=1;i<=6;i++)
for(j=1;j<=8;j++)
chain[i][j]=rand()%2;for(i=1;i<=6;i++){
chain[i][3]=2;
chain[i][6]=2;
}while(1){
VIEW_SEAT(chain);printf("\n1. 예약하기\n\n2.퇴실하기\n\n3. 종료\n\n번호 입력 후Enter>");
scanf("%d", &select);
if(select==1){
SEAT(chain, width, height);
}
else if(select==2){
EXIT(chain, width, height);
}
else if(select==3){
break;
}
else{
system("cls");
printf("유효한 번호를 입력하세요.\n");
}
}
}
void VIEW_SEAT(int chain[7][9]){int width, height;
printf("빈 좌석 : □\n자리 있음 : ■\n\n");
printf(" 1 2 3 4 5 6\n");
for(height=1;height<=6;height++){
for(width=1;width<=8;width++){
if(chain[height][width]==0)
printf("□");
else if(chain[height][width]==1)
printf("■");
else if(chain[height][width]==2)
printf(" ");
}printf("\n");
}}
void SEAT(int chain[7][9], int width, int height){
int cnt;
while(1){
system("cls");
VIEW_SEAT(chain);printf("\n예약할 자리의 줄과 번호를 입력하시고 Enter\nex)3번째 줄 6번째 자리 : 3 6\n");
scanf("%d %d", &height, &width);
//---------------------------------------범위 체크------------------------------------------------
if(height>6 || width>6){
printf("\n범위를 넘어섰습니다. 다시 입력하세요. 아무 키나 누르면 다시 입력할 수 있습니다.\n\n");
getch();
}
else if(height<=6 || width<=6){
break;
}
}
//---------------------------------------범위 체크------------------------------------------------
for(cnt=1;cnt<=2;cnt++){
if(width==cnt){
if(chain[height][width]==1){
system("cls");
VIEW_SEAT(chain);
printf("\n이미 예약되어 있는 좌석입니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
}
}
if(width==3){
width+=1;
if(chain[height][width]==1){
system("cls");
VIEW_SEAT(chain);
printf("\n이미 예약되어 있는 좌석입니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else{
chain[height][width]=1;
width-=1;
}
}
else if(width==4){
width+=1;
if(chain[height][width]==1){
system("cls");
VIEW_SEAT(chain);
printf("\n이미 예약되어 있는 좌석입니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else
chain[height][width]=1;
}
else if(width==5){
width+=2;
if(chain[height][width]==1){
system("cls");
VIEW_SEAT(chain);
printf("\n이미 예약되어 있는 좌석입니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else
chain[height][width]=1;
}
else if(width==6){
width+=2;
if(chain[height][width]==1){
system("cls");
VIEW_SEAT(chain);
printf("\n이미 예약되어 있는 좌석입니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else
chain[height][width]=1;
}
else
chain[height][width]=1;
system("cls");}
void EXIT(int chain[7][9], int width, int height){
int cnt;
while(1){
system("cls");
VIEW_SEAT(chain);
printf("\n예약을 취소할 자리의 줄과 번호를 입력하시고 Enter\nex)3번째 줄 6번째 자리 : 3 6\n");
scanf("%d %d", &height, &width);
//---------------------------------------범위 체크------------------------------------------------
if(height>6 || width>6){
printf("\n범위를 넘어섰습니다. 다시 입력하세요. 아무 키나 누르면 다시 입력할 수 있습니다.\n\n");
getch();
}
else if(height<=6 || width<=6){
break;
}
}
//---------------------------------------범위 체크------------------------------------------------
for(cnt=1;cnt<=2;cnt++){
if(width==cnt){
if(chain[height][width]==1){
system("cls");
chain[height][width]=0;
VIEW_SEAT(chain);
printf("\n예약 취소가 완료되었습니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
else if(chain[height][width]==0){
printf("\n자리가 없는 곳입니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
}
}if(width==3){
width+=1;
if(chain[height][width]==1){
system("cls");
chain[height][width]=0;
VIEW_SEAT(chain);
printf("\n예약 취소가 완료되었습니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else if(chain[height][width]==0){
printf("\n자리가 없는 곳입니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
width-=1;
}
if(width==4){
width+=1;
if(chain[height][width]==1){
system("cls");
chain[height][width]=0;
VIEW_SEAT(chain);
printf("\n예약 취소가 완료되었습니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else if(chain[height][width]==0){
printf("\n자리가 없는 곳입니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
width=4;
}if(width==5){
width+=2;
if(chain[height][width]==1){
system("cls");
chain[height][width]=0;
VIEW_SEAT(chain);
printf("\n예약 취소가 완료되었습니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else if(chain[height][width]==0){
printf("\n자리가 없는 곳입니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
width-=2;
}if(width==6){
width+=2;
if(chain[height][width]==1){
system("cls");
chain[height][width]=0;
VIEW_SEAT(chain);
printf("\n예약 취소가 완료되었습니다. 아무 키나 누르면 다시 시작합니다.\n\n");
getch();
}
else if(chain[height][width]==0){
printf("\n자리가 없는 곳입니다. 아무 키나 누르면 하위 메뉴로 넘어갑니다.\n\n");
getch();
}
}
system("cls");
}'Visual Studio > C 실전' 카테고리의 다른 글
C언어 버블 정렬 (1) 2015.03.31 C언어 선택 정렬 (0) 2015.03.31 100명의 신상 정보를 관리하는 프로그램 (0) 2012.09.23