프로그래밍

 3198, 1/160 회원가입  로그인  
   ksbgenius
   (추가질문)C++ switch 문안에 switch문을 또 쓸 수 있나요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3013 [복사]


#include <iostream>
using namespace std;

void ShowMenu(void);//메뉴선택
void CollegeGraduate(void);//학사
void ManagementConsult(void);//상담관리
void Mileage(void);//마일리지
void MyMenu(void);//마이메뉴
void DataManagement(void);//학적자료관리
enum select {COLLEGEGRADUATE = 1, MANAGEMENTCONSULT, MILEAGE, MYMENU,EXIT};
int main(void)
{
        int menu;

        while(1) {
                ShowMenu();
                cout << "메뉴선택 : ";
                cin >> menu;
                
        switch(menu){
                case COLLEGEGRADUATE :
                        CollegeGraduate();
                        break;

                case MANAGEMENTCONSULT:
                        ManagementConsult();
                        break;

                case MILEAGE:
                        Mileage();
                        break;

                case MYMENU:
                        MyMenu();
                        break;

                case EXIT:
                        break;
                default:
                        cout <<"잘못 입력 하셨습니다." << endl;
        }
        return 0;
        }
}


void ShowMenu(void)
{
        cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 학    사" << endl;
        cout << "2. 상담관리" << endl;
        cout << "3. 마일리지" << endl;
        cout << "4. MY MENU " << endl;
        cout << "5. 종    료" << endl;
}
void CollegeGraduate(void)//학사
{
        cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 학적관리" << endl;
    cout << "2. 교육과정관리" << endl;
        cout << "3. 수업관리" << endl;
        cout << "4. E-Class" << endl;
        cout << "5. 수강관리" << endl;
        cout << "6. 성적관리" << endl;
        cout << "7. 등록관리" << endl;
}
void DataManagement(void)//학적자료관리
{
        cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 개인 정보 수정" << endl;
}

void ManagementConsult(void)//상담관리
{
    cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 상담관리[학생]" << endl;
          cout << "2. 상담신청" << endl;
}

void Mileage(void)//마일리지
{
    cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 학생메뉴" << endl;
}

void MyMenu(void)//마이메뉴
{
    cout << "========== 메   뉴 ==========" << endl;
        cout << "1. 마이메뉴관리" << endl;
          cout << "2. 개인정보수정" << endl;
        cout << "3. 학적변동현황" << endl;
        cout << "4. 휴학신청" << endl;
        cout << "5. 개설강좌조회" << endl;
        cout << "6. 시설보수요청" << endl;
        cout << "7. 공지사항조회" << endl;
}
여기서처럼
메뉴 선택으로 1번을 눌러서 collegegraduate를 호출하면
그에 해당하는 메뉴가 나오게 되는데
저는 여기에서 한번더 메뉴를 선택하여 세부적으로 더 들어가고 싶은데,
다른 반복문을 사용하는 법은 없을까요.

  Hit : 9074     Date : 2011/05/22 08:20



    
별빛을담아 스위치문 중첩 가능합니다.
함수에 함수 중첩도 가능하구요
2011/05/22  
ksbgenius 한가지 더

실행을 하면
만약 1번을 누르면 collegeGraduate()의 내용이 나옵니다.
cout << "========== 메 뉴 ==========" << endl;
cout << "1. 학적관리" << endl;
cout << "2. 교육과정관리" << endl;
cout << "3. 수업관리" << endl;
cout << "4. E-Class" << endl;
cout << "5. 수강관리" << endl;
cout << "6. 성적관리" << endl;
cout << "7. 등록관리" << endl;

이런 내용이 나오면
다시 한번 스위치 문을 써서 DataManagement()를 호출하고 싶습니다.
switch(menu){
case COLLEGEGRADUATE :
CollegeGraduate();
cout << "메뉴선택 : " << endl;

switch(5){
case 5 :
DataManagement();
break;
default:
cout <<"잘못 입력 하셨습니다." << endl;
}
break;

이렇게 해봤는데
1번을 누르면 collegeGraduate() , Datamanagement() 이 내용 둘이 같이 나와 버리네요...
숫자 누르는게 충돌? 겹칩현상? 그런 거 떄문 일까요.
2011/05/22  
늅늅 C++를 안해서 잘 모르겠네요.. 답변이 틀릴 수도 있으니 틀리면 틀리다고 해주시면 댓글 지울게요

조건문에서 0이 아니면 무조건 true 입니다.
따라서 두번째 switch 문에서
switch(5) 라고 하신건
switch 안에 조건문에 참이 되므로 실행이 되는것이지요
음.. 그 이유로 보통
switch(변수)
case ㅇㅂㅇㅂㅇㅂㅇㅂㅇ:
~~~
break;
이런식으로 구성합니다..
고로 cin >> 변수 >>endl; 이게 맞는지는 모르겠는데 요따구로 받으셔서 하시면 될듯 싶네요
2011/05/22