2013-11-27 5 views
-5

암호가 요구 사항을 충족하는지 여부를 알려주는 프로그램 만들기. 요구 사항;암호 요구 사항 C# WPF

글자가 7 자 이상이어야합니다. 첫 번째 문자는 B 여야합니다. 암호는 3 자 이상이어야합니다. 비밀번호는 글자가 1 자 이상이어야합니다.

질문 : 어떻게해야합니까? 행운과 구글을 사용하고 있습니다. 요구 사항을 설정하는 방법을 모르겠습니다.

Lykilord는 암호를 의미합니다. 이것은 내가 지금까지 한 일이다

private void btathuga_Click(object sender, RoutedEventArgs e) 
    { 
     int lykilord = 0; 
     if (lykilord > 7) 
     { 
      MessageBox.Show("Wrong!"); 
     } 
     else if (true) 
     { 
      MessageBox.Show("Wrong!"); 
     } 
+0

도움이 될 수있다? 작동하지 않는 것은 무엇입니까? 어떤 구체적인 문제가 있습니까? 예 : 숫자와 문자를 확인하는 데 도움이 필요합니까? 다양한 입력 클래스를 세기? 솔직히 말해서, 이것은 과제물처럼 보입니다. 질문은 "제게 숙제 해주세요." – chwarr

+2

이것이 숙제가되기를 바랍니다. 그 규칙은 매우 어리 석다. – CodesInChaos

+1

귀하의 질문도 명확하지 않으며 귀하의 코드도 아닙니다. – manish

답변

2

하는 암호가이 암호와 사용자로부터 얻을 문자열하자. 그렇다면 당신은 그것을 받아 들일 것입니다.

if(password.Length>=7 && 
    password[0]=='B' && 
    password.Where(x => Char.IsDigit(x)).Count()>=3 && 
    password.Where(x => Char.IsLetter(x)).Count()>1) 
{ 
    // The password is ok. Here goes your code. 
} 
0

당신은 약간의 요구 사항을 가지고 있습니다 - 나는 그것을 나눌 것입니다.

  • 7 글자 이상
당신은 적어도 3이 있어야합니다

lykilord.Length(); 
  • 첫 번째 문자가 B해야

    lykilord.Substring(0,1); 
    
  • 비밀번호를 사용하여이를 반환 할 수

    숫자

몇 가지 선택 사항이 여기에 있습니다. 당신은 C#을 사용하는 경우 내가 LINQ를 사용하는 것입니다 그리고 당신은 시작에 B는 다음 편지가있을 경우

int countOfNumbers = lykilord.Count(Char.IsDigit); 
  • 비밀번호 분명히 적어도 한 편지를

이 있어야 할 수있는 그렇지 않은 경우 유효하지 않습니다.

if (lykilord.Substring(0,1).ToUpper() == "B" && // the ToUpper() will mean they can have either lowercase or uppercase B 
     lykilord.Length() > 7 && 
     countOfNumbers > 3 &&) 
     // i've excluded the letter count as you require the B 
    { 
     // password is good 
    } 
    else 
    { 
     // password is bad 
    } 

내가 분할하기 위해 최선을 다했습니다 :이 같은 문이있는 경우 함께 컴파일 수있는 이러한 모든 사용

int countOfLetters = lykilord.Count(Char.IsLetter); 

(나중에 참조) 어쨌든 문자를 확인하고 싶어하지만 경우 그것은 당신이 이것으로부터 배울 수 있도록 조금씩 올라갑니다. 그것은 마치 숙제의 한 부분이나 학업 과제의 일부처럼 보입니다. 우리는 당신을 위해이 숙제를하러 온 것이 아닙니다.

1

이 내가 당신의 질문에서 무엇을 추론했다되고,이 무엇을 노력하고 있습니다

private void button1_Click(object sender, EventArgs e) 
{ 
    if (textBox1.Text.Length < 7) 
     { 
      MessageBox.Show("Password can't be less than 7 letter long !"); 
      return; 
     } 
     else if (!textBox1.Text.ToString().Substring(0, 1).Equals("B")) 
     { 
      MessageBox.Show("Password's first letter must be 'B'"); 
      return; 
     } 
     int countOfDigit = 0, countOfLetters = 0; 
     foreach (var digit in textBox1.Text) 
     { 
      if (char.IsDigit(digit)) 
       ++countOfDigit; 
      if (char.IsLetter(digit)) 
       ++countOfLetters; 
     } 
     if (countOfDigit < 3) 
     { 
      MessageBox.Show("Password must have atleast 3 digits"); 
      return; 
     } 

     if (countOfLetters < 1) 
     { 
      MessageBox.Show("Password must have atleast 1 Letter"); 
      return; 
     } 
     MessageBox.Show("Congratulations ! Your Password is as per Norms !"); 
    } 
+0

'goto'! 대신에'return;'을 사용하십시오. (관련 [질문] (http://stackoverflow.com/questions/46586/goto-still-considered-harmful) 및 [XKCD] (http://xkcd.com/292/)). – Nasreddine

+0

선생님, @ Nasreddine 귀하의 의견을 주셔서 감사합니다. 그러나 반품을 사용하면 축하 메시지를 사용자에게 편리하게 표시 할 수 없습니다. 그래서 이유가 있습니다. 그렇지 않으면 중복 된 코드를 사용해야 할 것입니다. – manish

+0

예, "중복 코드"없이 가능합니다. 'goto END;의 모든 인스턴스를'return;'으로 대체하고 레이블'END :;'을 제거하십시오. – Nasreddine