C#窗体实现验证码的编程思想

一、要使用(学习)到的知识点

1、伪随机数生成器(Random)

(1)什么是伪随机数生成器?

​ 它是一种产生满足某些随机性统计要求的数字序列设备。

(2)功能?有什么属性?

​ 功能:就是产生随机数;

​ 属性:

 sj.Next(0, 2);//Next表示返回一个非负随机整数,它有两个值,或者说它有一个范围,那就是,下限(包括下限)-上限(不包括上限)。那么,这个代码就会随机0,1这两个数
(3)如何使用Random呢?

​ ①Random它是一个函数更是一个对象,所以就相当于要创建Random类型的对象

​ ②正确的创建方法:

 Random sj= new Random();	//意思就是说创建了一个Random类型的对象,叫做sj(随机—)

2、定义数据类型以及数据类型之间的转换

(1)定义数据类型并赋值

​ 例1:

int type = sj.Next(0, 2);//意思就是定义一个叫type的有符号整数,并将随机数的值赋值给type

​ 例2:

String zd = "";//意思就是定义一个叫zd的字符串类型,并将一个空值赋值给ad

这两个在下面的案例中都可以用到。

(2)数据类型之间的转换

​ ①隐式转换——在数据类型后加点方法 .ToString ()

zd = sj.Next(0, 10).ToString();//将右边的有符号整数类型转换为字符串类型

​ ②强制转换——将右边的大写字母随机数直接转换为char字符类型

zd += ((char)sj.Next(65, 91)).ToString();//这个是限将这个有符号整数类型先通过强制转换为字符类型,再将字符类型通过隐式转换变为字符串类型

3、ascII码表中的大小写字母

(1)大写字母(A-Z)

​ 它ascII码表中的范围是(65-90)

​ 当然,在随机数中我们不能直接写这个范围,因为它的下限是不包含下限的,所以应写(65-91)

(2)小写字母(a-z)

​ 它ascII码表中的范围是(97-122)

​ 当然,在随机数中我们不能直接写这个范围,因为它的下限是不包含下限的,所以应写(97-123)

4、for循环的使用以及if-else条件的使用

(1)for(初始化,条件,控制)

​ {

​ 循环体;//它是一直被循环的

​ }

(5)if(条件){ //如果成立执行if中的语句1,否则执行else中的语句2

​ 语句1;

​ }else{

​ 语句2;

​ }

5、要用到的控件以及属性

(1)lablel控件

​ ①lablel功能?

​ 为控件运行时提供的信息或说明性文字

​ ②它有什么属性?

label1.Text//Text的意思是获取或设置控件关联的文本
label1.ForeColor = Color.FromArgb(sj.Next(0, 255), sj.Next(0, 255), sj.Next(0, 255));
//forcolor表示获取或设置控件的前景色
//FromArgb表示color中指定的八位颜色值的结构

(2)buttom控件

​ ①功能:当用户单击时触发事件,实则就是一个按钮

​ ②属性

Buttom.Text//Text的意思是获取或设置控件关联的文本

6、链接字符

​ (1)功能——就是将四个字符链接起来

​ (2)如何使用

​ ①在左边的字符串类型后直接用+

zd += ((char)sj.Next(65, 91)).ToString();

​ ②在右边的值前用左前的被赋值+后半的赋值

zd = zd+ sj.Next(0, 10).ToString()

7、控制台

将随机数写进控制台

 Console.WriteLine(int中创建的随机数的名字)//意思就是将随机数写入或者展示到控制台
 // Console表示控制台应用程序的标准输入流、输出流和错误流
//WriteLine表示将当前行终止符写入标准输出流

二、验证码的规则

​ 1、由四个字符组成的字符串

​ 2、字符时随机的,可以是数字+数字,数字+字母,字母+字母

​ 3、颜色是随机的

三、编程思想

​ 1、要想实现验证码,就必须是字符串,所以我们应该在局部变量中定义一个空的字符串类型来装或者放这四个字符

​ 2、要在全局变量中创建Random随机数对象或者随机数函数

​ 3、然后它由四个字符组成,所以就要让他是四个数,所以我们这里就要用到for循环,让它的初始值从0开始循环,条件为i<4,控制就为++,i<4就是0、1、2、3循环四次,输出的数就为4位

​ 4、接着又因为,可能是字母或者汉字,我们就只让它输出随机数0或者1,所以这时我们可以用到判断语句if-else,因为是数字和字母这来你这两种,如果输出1则创建字母,否则创建数字。所以if条件应为(随机数==1)

​ 5、我们将产生的四个字符拼接到一起,然后赋值给tablel

​ 6、设置验证码的随机颜色

四、代码如下

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 验证码
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

​    private void Form2_Load(object sender, EventArgs e)
​    {

​    }
​    Random sj = new Random();
​    private void button1_Click(object sender, EventArgs e)
​    {
​        String zd = "";//要将最后生成的4个随机数或随机字母链接(放)到这个空的字符串中
​        //创建空的String类型的变量
​        //label1.Text = type.ToString();
​        for (int i = 0; i < 4; i++)//执行四次
​        {
​            int type = sj.Next(0, 2);//随机出来的结果有两种情况,0或者1
​            //可能为00,11或者01,10
​            //Console.WriteLine(i);
​            if (type == 0)//判断随机出的数字为0,则创建字母
​            {
​                zd += ((char)sj.Next(65, 91)).ToString();//将字母赋值给zd字符串
​                //运用隐式转换和强制转换的方法把随机数转换为字符串类型
​                //先将随机数强制转换为字符类型,再将字符类型强制转换为字符串类型
​            }
​            else
​            {//否则创建随机数字

​                zd = zd+ sj.Next(0, 10).ToString();//将1-9之间的随机数字赋值给zd这个字符串
​            }
​        }
​        label1.Text = zd;//将zd中的四个字符链接起来赋值给lablel1
​        label1.ForeColor = Color.FromArgb(sj.Next(0, 255), sj.Next(0, 255), sj.Next(0, 255));//设置随机颜色
​        //ForeColor表示获取或设置控件的前景色
​        //FromArgb表示创建color从指定的8位颜色值的结果
​    }

}

}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值