ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.