2013-03-08 3 views
0

В настоящее время я пытаюсь создать машину atm в C#, и я совершенно новичок в этом. Я бы хотел, чтобы мой экран входа в систему вернулся к экрану приветствия после попытки 3 попытки попытаться войти в систему, но я не знаю, с чего начать, и как реализовать мой код в моей программе, чтобы сделать это.Как создать лимит входа на моем экране входа в систему?

Мой текущий код выглядит следующим образом мой экран входа:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 
using System.Data.Common; 

namespace bankkk 
{ 
    public partial class FrmLogin : Form 
    { 
     public FrmLogin() 
     { 
      InitializeComponent(); 
     } 

     public static OleDbConnection con = new OleDbConnection(); 

     string dbProvider; 
     string dbSource; 

     OleDbDataAdapter da; 

     public static DataSet ds1 = new DataSet(); 

     string sql; 
     string pin; 
     int rownum = 0; 
     bool valid = false; 

     private void FrmLogin_Load(object sender, EventArgs e) 
     { 
      dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"; 
      dbSource = "Data Source = 'd:\\bank11.accdb'"; 
      con.ConnectionString = dbProvider + dbSource; 
      ds1 = new DataSet(); 
      con.Open(); 
      sql = " SELECT tblCustomers.* FROM tblCustomers"; 
      da = new OleDbDataAdapter(sql, con); 
      rownum = da.Fill(ds1, "tblCustomers"); 

      con.Close(); 
     } 

     private void btnexit_Click(object sender, EventArgs e) 
     { 

      System.Environment.Exit(0); 
      this.Close(); 

     } 


     //METHOD VALIDATE 

     private bool validate() 
     { 
      ds1 = new DataSet(); 
      con.Open(); 

      sql = "SELECT tblCustomers.* FROM tblCustomers WHERE ((tblCustomers.AccountNo) = '" + txtAccount.Text + "')"; 
      da = new OleDbDataAdapter(sql, con); 
      rownum = da.Fill(ds1, "tblCustomers"); 
      con.Close(); 

      if (rownum != 1) 
      { 
       MessageBox.Show("Not a valid Account"); 
       return false; 
      } 
      else 
      { 
       pin = ds1.Tables["tblCustomers"].Rows[0][4].ToString(); 
       if (pin == txtPin.Text) 
       { 
        return true; 
       } 
       else 
       { 
        MessageBox.Show("INVALID PIN"); 
        return false; 
       } 
      } 
     } 

     private void btnLogin_Click(object sender, EventArgs e) 
     { 
      valid = validate(); 
      if (valid == true) 
      { 
       if (txtAccount.Text == "11111111" && txtPin.Text == "9999") 
       { 
        Frmmanager Manager = new Frmmanager(); 
        this.Close(); 
        Manager.Show(); 
       } 
       else 
       { 
        frmaccount account = new frmaccount(); 
        this.Close(); 
        account.Show(); 

        { 
         txtAccount.Clear(); 
         txtPin.Clear(); 
        } 
       } 
      } 
     } 

     private void btnlogin_Click_1(object sender, EventArgs e) 
     { 
      valid = validate(); 
      if (valid == true) 
      { 
       if (txtAccount.Text == "11111111" && txtPin.Text == "9999") 
       { 
        Frmmanager Manager = new Frmmanager(); 
        this.Close(); 
        Manager.Show(); 
       } 
       else 
       { 
        frmaccount account = new frmaccount(); 
        this.Close(); 
        account.Show(); 

        { 
         txtAccount.Clear(); 
         txtPin.Clear(); 
        } 
       } 
      } 
     } 
    } 
} 
+0

О. Вы не знаете, с чего начать после выполнения SQL-запросов ?. Рассматривали ли вы простое приложение для входа с нуля, без базы данных? –

+0

Вам просто нужно сохранить количество неудачных логинов в переменной и проверить на это. –

+0

Используйте переменную для хранения количества неудачных попыток входа в систему, увеличивайте это значение при каждом сбое входа в систему, проверьте это значение переменной на кнопке, нажав кнопку –

ответ

1

Вы хотите сказать, что Вернуться назад к моему экран приветствия, поэтому я полагаю, что вы показываете FrmLogin используя .ShowDialog() вместо .Show(). Таким образом, вам просто нужно закрыть свою старую форму.

Если вы просто делаете .Show(), вы можете сделать что-то вроде этого:

public partial class FrmWelcome { 

    //in some part of your code... 
    var frmLogin = new FrmLogin(); 

    //when the login form is closed, show this one. 
    //Depending on your application, you might want to add some boolean variable 
    //to the Login Form that will be true if the user authentication failed, and 
    //show this form again only if it is true. 
    frmLogin.Closed += (s, e) => this.Show(); 

    this.Hide(); 
    frmLogin.Show(); 
} 

Попробуйте код ниже. Идея состоит в том, чтобы иметь переменную failedAttempts, которая будет увеличиваться каждый раз, когда ваш код проверки не выполняется. Когда он равен 3, вы просто закрываете форму (см. Выше).

namespace bankkk 
{ 
    public partial class FrmLogin : Form 
    { 
     public FrmLogin() 
     { 
      InitializeComponent(); 
     } 

     ... 

     int failedAttempts = 0; 

     private void btnlogin_Click_1(object sender, EventArgs e) 
     { 
      valid = validate(); 
      if (!valid) { 
       //Increment the number of failed attempts 
       failedAttempts += 1; 

       //If equal to 3 
       if (failedAttempts == 3) { 
        //Just close this window 
        this.Close(); 
       } 
      } 
      else 
      { 
       //the same code you were using... 
      } 
     } 
    } 
} 
+0

Он не узнает, если вы сделаете это для него. : P –

+0

@DavidHughes Я отредактировал свой ответ, чтобы добавить некоторые пояснения в дополнение к коду :) –

+0

Спасибо Thats Great :) –

0

Вы можете добавить переменную в свою программу и увеличить ее количество, чтобы ограничить количество попыток входа в систему. Чтобы ограничить количество попыток для учетной записи, добавьте таблицу в базу данных, чтобы хранить информацию о регистрации, включая недопустимые попытки. Свяжите эту таблицу со своей таблицей. Когда недействительная попытка сделать вход в действительную учетную запись клиента увеличивающейся число недопустимых попыток и записать ее обратно в таблицу входа. При успешном входе в систему вы можете установить число недопустимых попыток на 0.

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