2014-01-20 52 views
-2

所以當我選擇讓我們先說選項1。所以Active Directory,然後選擇選項3將用戶添加到組。它要求輸入用戶名。所以沒關係。但是,當我輸入用戶名時,它會一遍又一遍地顯示菜單,而不是提示組添加它們。我在很久以前就沒有碰過C++,而且我從來沒有過得很好。但只是尋求一些建議。也許甚至更好的菜單系統。開關無意循環

void ActiveDirectoryMenu() 
{ 
    do 
    { 
     cout << "\n1. Active Directory clean up\n2. Copy over use permissions"; 
     cout << "\n3. Add user to group\n4. Reset user password\n5. Enable - Disable account\n"; 
     cin >> tempChoice; 

     switch (tempChoice) { 
      case 1: 
       ActiveDirectoryCleanUp(); 
       break; 
      case 2: 
       cout << "Execute copy"; 
       break; 
      case 3: 
       ActiveDirectoryAddGroup(); 
       break; 
      case 4: 
       cout << "Specify username: "; 
       cin >> tempUser; 
       cout << "\nDefault password: "; 
       cin >> temp; 
       break; 
      case 5: 
       cout << "Specify username: "; 
       cin >> tempUser; 
       cout << "\n1. Enable\n2. Disable\n"; 
       cin >> tempChoice; 
     } 
    } 
    while (tempChoice != 6); 
} 
void ExchangeMenu() 
{ 

} 
void ActiveDirectoryCleanUp() 
{ 
    cout << "Executing AD clean up...."; 
} 
void ActiveDirectoryAddGroup() 
{ 
    cout << "Specify user: "; 
    cin >> tempUser; 

    if (tempUser == "") { 
     cout << "\nSpecify group: "; 
     cin >> tempGroup; 
    } else { 
     cout << "Please enter valid user" << endl; 
    } 
} 
+0

看不到任何你說的無限循環的原因 - 你在循環體的第三行提示輸入,所以它至少應該暫停。確保你正在檢查你的輸入;你永遠不能確定用戶將輸入一個數字而不是一堆字符(或者他們永遠不會輸錯數字並且不小心添加一個字符到最後) – AndyG

+0

循環將運行,只要用戶不會在執行之前從菜單中選擇的動作之後,請勿輸入「6」。 –

回答

1

您是不是要找

if (tempUser != "") { 

,而不是

if (tempUser == "") { 

我認爲,如果輸入的用戶名,你在這裏檢查是不是""。如果「」,則提示輸入無效名稱。

+0

雖然可能是正確的,但這並不能解釋OP描述的行爲! (應該是一個註釋可能) –

+0

@πάνταῥεῖ事實上它確實..仔細閱讀這個句子_But當我輸入用戶名時,它會一遍又一遍地顯示菜單而不是提示組添加它們到_ 因此,只有當用戶名不是「」時纔可能。 –

+0

我一直在經歷,你是對的!這是一個非常嚴重的問題:/。 –

0

你只要求組件,如果tempuser ==「」。我懷疑你打算測試tempuser是否不等於「」。