Olá amigos,
neste mês irei dar continuidade ao artigo iniciado no mês anterior.
Demonstrarei toda a codificação necessária para obtermos a funcionalidade
proposta. Lembramos que estamos utilizando o Microsoft Visual Studio, junto com
a linguagem C#. Desenvolveremos alguns métodos, como por exemplo: o
“EmbaralhaLista ()”, responsável por embaralhar os números do teclado numérico,
o “CarregaNumeros ()”, o qual irá alimentar os textos dos botões em diversos
momentos, entre outros.
Codificando o Exemplo
Inicialmente
deveremos declarar alguns namespaces, sendo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
O uso do
Namespace “System.Collections” foi necessário para utilizar principalmente a
classe “List”.
A
rotina “EmbaralhaLista” recebe como parâmetro um dado do tipo “List” com uma
determinada lista numérica. Irá nos retornar uma “List” com uma numeração
embaralhada. Para isto criamos uma varável “randomList”, uma do tipo “Random” e
um inteiro chamado “randomIndex”. Dentro de um laço de repetição “While” iremos
varrer todos os itens recebidos como parâmetro de entrada e contidos na
variável “inputList” atribuindo o índice randômico e logo em seguida
adicionando na lista randômica. O resultado será uma lista de 10 números
sortidos. Ver Listagem 01.
public List<E>
EmbaralharLista<E>(List<E> inputList)
{
List<E>
randomList = new List<E>();
Random r = new Random();
int randomIndex = 0;
while (inputList.Count
> 0)
{
randomIndex = r.Next(0,
inputList.Count);
randomList.Add(inputList[randomIndex]);
inputList.RemoveAt(randomIndex);
}
return randomList;
}
Listagem
01.
O método “CarregarNumeros()” irá atribuir valores numéricos à propriedade “Text” dos cinco botões do teclado, sendo:
Botão 01
|
0 - 1
|
Botão 02
|
2 – 3
|
Botão 03
|
4 – 5
|
Botão 04
|
6 – 7
|
Botão 05
|
8 – 9
|
O primeiro passo seria criar uma variável do tipo “List” contendo valores inteiros. Adicione o intervalo de 0 a 9 nesta variável, com o auxílio da estrutura de repetição “For”. Neste momento iremos fazer o uso da função “EmbaralhaLista” descrita anteriormente, declarando mais uma variável do tipo List<int> e invocando o método “EmbaralhaLista”. Montaremos a propriedade “Text” dos botões com dois números aleatórios separados um traço “ – “. Ver Listagem 02.
public void CarregarNumeros()
{
List<int> numeros = new List<int>();
for (int i = 0; i <= 9; i++)
{
numeros.Add(i);
}
List<int> numeros_randomicos = new List<int>();
numeros_randomicos = EmbaralharLista(numeros);
btn01.Text = numeros_randomicos[0].ToString() + " - " +
numeros_randomicos[1].ToString();
btn02.Text = numeros_randomicos[2].ToString() + " - " + numeros_randomicos[3].ToString();
btn03.Text = numeros_randomicos[4].ToString() + " - " +
numeros_randomicos[5].ToString();
btn04.Text = numeros_randomicos[6].ToString() + " - " + numeros_randomicos[7].ToString();
btn05.Text = numeros_randomicos[8].ToString() + " - " + numeros_randomicos[9].ToString();
}
Listagem 02.
Listagem 02.
Não podemos
esquecer de implementar a função “CarregarNumeros” no método “Load” da página.
Listagem 03.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CarregarNumeros();
}
}
Listagem 03.
A implementação
da função “RecebeValores” foi de extrema importância para armazenarmos apenas
os valores numéricos dos botões, ou seja, teremos como valores de entrada o
texto puro da propriedade “Text” do botão e o retorno numérico. Ver listagem 04.
public string RecebeValores(string btn)
{
return btn.Substring(0,
1) + btn.Substring(4, 1);
}
Listagem 04.
Listagem 04.
Teremos
a mesma codificação no evento “Click” dos cinco botões. Iremos testar o campo
TextBox txtSenha verificando se a mesma possui um tamanho menor que 6 e logo em
seguida atribuímos o valor “#”, assim conseguimos identificar que foi digitado
algum valor. Usaremos uma “Session” para armazenar nossos valores. Ver Listagem
05 abaixo.
protected void btn01_Click(object sender, EventArgs e)
{
if (txtSenha.Text.Length < 6)
{
txtSenha.Text += "#";
Session["senha"]
+= RecebeValores(btn01.Text)+",";
}
}
protected void btn02_Click(object sender, EventArgs e)
{
if (txtSenha.Text.Length < 6)
{
txtSenha.Text += "#";
Session["senha"]
+= RecebeValores(btn02.Text)+",";
}
}
protected void btn03_Click(object sender, EventArgs e)
{
if (txtSenha.Text.Length < 6)
{
txtSenha.Text += "#";
Session["senha"]
+= RecebeValores(btn03.Text)+",";
}
}
protected void btn04_Click(object sender, EventArgs e)
{
if (txtSenha.Text.Length < 6)
{
txtSenha.Text += "#";
Session["senha"]
+= RecebeValores(btn04.Text)+",";
}
}
protected void btn05_Click(object sender, EventArgs e)
{
if (txtSenha.Text.Length < 6)
{
txtSenha.Text += "#";
Session["senha"]
+= RecebeValores(btn05.Text)+",";
}
}
Listagem 05.
Listagem 05.
No evento Click do botão “Ok” faremos o trabalho de
comparar a senha digitada com a senha contida em uma tabela de um banco de
dados por exemplo. No nosso caso específico iremos criar uma senha a partir de
uma variável do tipo “String”, contendo qualquer valor numérico aleatório com
seis caracteres.
Exemplo: string senha_banco = “855971”.
Faremos a comparação da senha e do cpf digitado.
Trataremos a variável “senhadigitada” armazenando cada caracatere em uma
variável alfanumérica. A minha sugestão de lógica seria ir comparando caractere
por caractere através de uma combinação de “Ifs” com o auxílio da função
“Substring”. Confiram maiores detalhes
na Listagem 06.
protected void btnOk_Click(object sender, EventArgs e)
{
string senha_banco = "855971";
string cpf_banco = "31222288860";
if (cpf_banco == txtCpf.Text)
{
string senha_digitada
= Session["senha"].ToString();
if (senha_digitada.Length ==
18)
{
string[]
senha_digitada_char = senha_digitada.Split(',');
string str0 =
senha_digitada_char[0];
string str1 =
senha_digitada_char[1];
string str2 =
senha_digitada_char[2];
string str3 =
senha_digitada_char[3];
string str4 = senha_digitada_char[4];
string str5 =
senha_digitada_char[5];
if ((str0.Substring(0, 1) == senha_banco.Substring(0, 1)) ||
(str0.Substring(1, 1) == senha_banco.Substring(0, 1)))
{
if ((str1.Substring(0, 1) == senha_banco.Substring(1, 1)) ||
(str1.Substring(1, 1) == senha_banco.Substring(1, 1)))
{
if ((str2.Substring(0, 1) == senha_banco.Substring(2, 1)) ||
(str2.Substring(1, 1) == senha_banco.Substring(2, 1)))
{
if ((str3.Substring(0, 1) == senha_banco.Substring(3, 1)) ||
(str3.Substring(1, 1) == senha_banco.Substring(3, 1)))
{
if ((str4.Substring(0, 1) == senha_banco.Substring(4, 1)) ||
(str4.Substring(1, 1) == senha_banco.Substring(4, 1)))
{
if ((str5.Substring(0, 1) == senha_banco.Substring(5, 1)) ||
(str5.Substring(1, 1) == senha_banco.Substring(5, 1)))
{
Response.Write("Autenticação Realizada
com Sucesso!");
}
}
}
}
}
}
}
}
}
Listagem 06.
No evento
“Click” do botão “limpar” removeremos todos os dados contidos na sessão, e por
consequência limparemos o componenete “txtsenha”. Ver código abaixo na Listagem
07.
protected void btnLimpar_Click(object sender, EventArgs e)
{
txtSenha.Text = "";
Session.Contents.Remove("senha");
}
Listagem 07.
Teremos um
resultado idêntico ao da Figura 01.
![]() |
Figura 01: Resultado Final. |
Conclusões
Nesta
segunda e última parte procurei explorar todo o código necessário, contendo
todas as explanações e comentários referentes a este tipo de funcionalidade utilizando
páginas Web Asp.Net.
Espero ter
ajudado, fica aí a dica galera.
Nenhum comentário:
Postar um comentário