• 43.【Java 实现验证码获取 C++实现密码加密和删除和QQ登入系统】


    (一)、简要概述:

    验证码在我们生活中已经随处可以见,因为验证码的随机性也就是验证码的安全性的显著提高,而且我们也可以根据对验证码字数的设置,让安全性更加的稳定,不可破。接下来吉士先生就带领大家实现验证码的实现。

    1.思路分析

    需要到的包:
    随机包:

    import java.util.Random
    
    Random r=new Random()
    
    r.netxtInt();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    基本思路: 我们要知道数字0的ascil码十进制是: 48;大写字母A的十进制是65,小写字母a的十进制Ascii码是:97.所以首先我们要设置一个字符数组,目的是为了储存26+26+10=62个字符.然后进行初步判断进行得到小写字母a。然后通过65+i-26得到大写字母A。最后剩余的的补充数字.

    2.代码展示:

    package test;  //  包名
    import java.util.Random;
    public class test1 {     //项目名
    	static int count=48;      //目的是为了 数字0到9
    	public static void main(String []avgs)
    	{
    		Random r=new Random();       //随机数声明
    		char Eng[]=new char[62];
    		for(int i=0;i<Eng.length;i++)
    		{ 
    			if(i<=25)             //得出来小写字母
    			{
    			Eng[i]=(char) (97+i);
    			}
    			else if(i>25&&i<52)      //得出来大写字母
    			{
    				Eng[i]=(char)(65+i-26)  ;//27
    			}
    			else                   //得出来阿拉侬数字
    			{
    				Eng[i]=(char)(count);
    				count++;
    			}
    		}
    		String s=" ";             //进行合并复制
    		for(int i=0;i<6;i++)
    		{
    		int EngRandomIdex=r.nextInt(Eng.length);
    		s=s+Eng[EngRandomIdex];	
    		}
    	System.out.println("验证码是:"+s);       //输出
    		
    /*	for(int i=0;i	
    	}	
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    3.效果展示:

    验证码

    (二)、密码加密C++操作

    1.基本思路和解析:

    首先我们要知道c中有一个转义字符‘\b’,它是用来表示后退一步的。当后退一步的时候光标会移动到前一位数字的下面,当你输入一个数字便会覆盖你后退的那个数字(这个能够理解接下来的代码就没有问题了)

    2.代码展示:

    #include 
    #include 
    #include 
    using namespace std;
    int main()
    {
    	char s[100];
    	string s1 = "*";
    	char c;
    	int i = 0;
    	cout << "请输入您的密码:" << endl;
    	while (1)
    	{
    		c = _getch();
    		if (c == '\r')break;   //按下enter就会退出
    
    		if (c == '\b')   //按下backspace键就会删除
    		{
    			if (i > 0)        //目的是删除储存进来的那个数组元素
    			{	
    				i--;
    			}
    			printf("\b");  //回退一格光标
    			printf(" ");	//打印一个空格把要删除的字符覆盖了
    			printf("\b");	//再回退一格光标来掩饰掉打印的空格
    			continue;      //不能省略,一旦省略就会出现删除不动的错误.
    		}
    		s[i++] = c;
    		cout << "*";
    
    	}
    	cout << "您输入的密码是:" ;
    	for (int j = 0; j < i; j++)
    	{
    		cout << s[j];
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    密码加密删除效果

    (三)、QQ登入系统:

    1.建设QQ登入系统的背景.

    因为自己有一颗对系统非常敏感的心,所以在本人大一下学期也就是:2022年3月16日,于是啊,我下定决心尝试一个简介版的QQ登入系统。于是有了以下的基本想法.

    2.基本头文件

    #include 目的是为了作比较

    代码展示:

    #include 
    #include                     //判断字符数组相不相等的数据库
    using namespace std;
    int main()
    {
    double D=1.5;
    int C;
    //int Q,S,M,X;//字符数组进行比较大小要用string ,切记char 后面不能跟字母
    char Q[100],S[100],M[100],X[100];
    cout<<"===================================欢迎使用 QQ==================================="<<endl;
    cout<<"您要选择那种方式:"<<endl;
    cout<<"1.登入"<<endl;
    cout<<"2.注册"<<endl;
    cin>>C;
    if(D>C)
    {
        cout<<"===================================您选择了账号登入==================================="<<endl;
        cout<<"请输入您的QQ/手机号:"<<endl;
        cin>>Q;
        cout<<"请输入您的密码:"<<endl;
        cin>>S;
        cout<<"登入成功!"<<endl;
    }
    else//如果用else语句,则不用加后面的表达式
    {
        cout<<"===================================您选择了创建新账号==================================="<<endl;
        cout<<"请输入您的手机号:"<<endl;
        cin>>Q;
        cout<<"请输入您的验证码:"<<endl;
        cin>>S;
        cout<<"注册成功!"<<endl;
        cout<<"您的新账号为:2261203961"<<endl;
        cout<<"请设置您的QQ密码:"<<endl;//因为用的是int,如果用string可以 ,所以密码不能输入字符
        cin>>M;
        cout<<"请再次输入您的密码:"<<endl;
        cin>>X;
    //    if(X!=M)
        if(strcmp(X,M)!=0)//判断字符数组是否相等
    {
        //while(X!=M)
          while(strcmp(X,M)!=0)
        {
            cout<<"和原输入的密码不吻合,请再次输入您的密码!"<<endl;
            cin>>X;        
        }
            cout<<"登入成功!"<<endl;
        }
        else
        {
            cout<<"登入成功!"<<endl;
        }
    }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    效果展示:

    在这里插入图片描述

    (四)、抽奖系统:

    基本思路:

    题目要求我们进行随机抽取,且不能有重复中奖信息。首先我们需要使用静态数组进行操作设置奖项,然后设置一个空的数组,长度为静态数组的长度。然后设置一个回调函数,判断我们所引入的数组是否与中奖的名单相同,如果相同返回TURE,否则返回FALSE。然后在主函数中进行循环遍历,获得随机索引,然后再利用随机索引进行随即查找,判断,如果不同的话就行输出,相同继续循环.

    代码展示:

    package test;  //  包名
    import java.util.Random;
     public class test1 {     //项目名
     public static void main(String []avgs)
     {
       int number[]={2,588,888,1000,10000,4};     //共有奖项
       int newNumber[]=new int[number.length];    //定义一个空的  
       int idex;      //目的是为了游标
       Random r=new Random();
       for(int i=0;i<number.length; )
       {
        idex=r.nextInt(number.length);      //获得游标
        int prize=number[idex];    //获奖
       boolean flag=contains(newNumber,prize);
       if(!flag)
       {  newNumber[i]=prize;
       i++;
       System.out.println("恭喜您获得:"+prize+"元奖励");
       }
       System.out.println("再来一次!");
       }
     }
     
     public static boolean contains(int number[],int prize)
     {
       for(int i=0;i<number.length;i++)
       {
        if(number[i]==prize)  
        {
         return true;
        }
       }
       return false;
     }
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    效果展示:

    抽奖系统演练

    (五)、抽奖系统优化:

    基本思路:先乱序再排序

    图解:
    在这里插入图片描述

    代码展示:

    package test;  //  包名
    import java.util.Random;
     public class test1 {     //项目名
     public static void main(String []avgs)
     { 
    	 Random r=new Random();
       int number[]={2,588,888,1000,10000,4};     //共有奖项
      for(int i=0;i<number.length;i++)
      {
    	  	int   index=r.nextInt(number.length);     //先打乱再排序.
    	  	int temp;
    	  	temp=number[i];
    	  	number[i]=number[index];
    	  	number[index]=temp;
      }
      for(int i=0;i<number.length;i++)
      {
    	  System.out.println(number[i]);
      }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    效果展示:

    在这里插入图片描述
    如有不解 ,可支持私聊!

  • 相关阅读:
    sqlalchemy 连接池
    窗口函数-分组排序:row_number()、rank() 、dense_rank()、ntile()
    json对象中嵌套一个json字符串,python如何生成带有转义字符的json的字符串?
    尚硅谷设计模式学习(十)组合模式
    梅科尔工作室-华为14天鸿蒙设备开发实战笔记六
    Java大厂面试题第2季
    在Red Hat系统上卸载自己编译的Python 3环境
    服务响应时间的衡量指标
    本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!
    codeforces:F. Kirei and the Linear Function【暴力优化 + 避开大数运算 + 避开str切片转int】
  • 原文地址:https://blog.csdn.net/qq_69683957/article/details/126484482