2013-11-27 47 views
-5

Выполнение программы, которая сообщает вам, соответствует ли пароль требованиям или нет. Требования;Требования к паролю C# WPF

Это должно быть 7 букв или более. Первая буква должна быть B. Пароль должен иметь как минимум 3 номера. Пароль должен иметь не менее 1 буквы.

Вопрос: Как мне это сделать? Использование Google без везения. Я не знаю, как установить требования.

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 букв или более

Вы можете вернуть это с помощью

lykilord.Length(); 
  • Первая буква должна быть B

    lykilord.Substring(0,1); 
    
  • Пароль должен быть не менее 3 номера

Немного выбора здесь. Я хотел бы использовать LINQ, если вы используете C# и вы можете сделать

int countOfNumbers = lykilord.Count(Char.IsDigit); 
  • Пароль должен иметь как минимум 1 букву

Очевидно, что если есть B в начале, то есть письмо, если нет, то это недействительно. Однако, если вы хотите, чтобы проверить письма в любом случае (для дальнейшего использования)

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

Используя все это вместе можно составить, если заявление, как это:

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 
    } 

Я сделал все возможное, чтобы разделить это до бит, чтобы вы учились на этом - он немного похож на часть домашней работы или часть академического задания. Мы не здесь, чтобы сделать это домашнее задание для вас.

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 ;'. (релевантный [вопрос SO] (http://stackoverflow.com/questions/46586/goto-still-considered-harmful) и [XKCD] (http://xkcd.com/292/)). – Nasreddine

+0

Sir, @Nasreddine Я ценю ваш комментарий, но если я использую return, я не могу удобно показать сообщение «Поздравления» пользователям. Вот почему. Или иначе мне придется использовать избыточный код. – manish

+0

Да, это возможно без какого-либо «избыточного кода». Просто замените каждый экземпляр 'goto END;' на 'return;' и удалите метку 'END:;'. – Nasreddine

Смежные вопросы