博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机生成验证码
阅读量:5138 次
发布时间:2019-06-13

本文共 2677 字,大约阅读时间需要 8 分钟。

自动生成30道小学四则运算验证码

1.     设计思想

利用JFrame从而实现,编写两个类,第二个用来实现验证码的相关操作

2.     源程序代码

//班级:信1705-2

//姓名:马旺旺

//学号:20173564

import java.awt.*;

 

import javax.swing.*;

 

public class Yanzheng extends JFrame {

     

      private JLabel userLa;

    private JLabel pwdLa;

    private JLabel verCodeLa;//验证码

    private JTextField userTxt;

    private JPasswordField pwdTxt;

    private JTextField verCodeTxt;//验证码

    private JButton sureBt;

    private JButton quitBt;

    private Yangzhengma mp;

 

    //构造方法

    public Yanzheng()

    {

        Init();

    }

    public void Init()

    {

        this.setTitle("请登入");

 

        //创建出控件对象(因为上面只是声明出来,并没有给出实际的空间)

 

        //用户文本

        userLa = new JLabel();

        userLa.setText("用户名:");

        userLa.setSize(60, 50);

        userLa.setLocation(100, 80);

 

        //密码文本

        pwdLa = new JLabel();

        pwdLa.setText("密码:");

        pwdLa.setSize(50, 50);

        pwdLa.setLocation(100, 120);

 

        //用户输入框

        userTxt = new JTextField();

        userTxt.setSize(100, 30);

        //this.setSize(width, height)

        userTxt.setLocation(170, 95);

 

        //密码输入框

        pwdTxt = new JPasswordField();

        pwdTxt.setSize(100, 30);

        pwdTxt.setLocation(170, 135);

 

        //登陆

        sureBt = new JButton("登录");

        sureBt.setSize(100, 25);

        sureBt.setLocation(135, 220);

 

        //快速注册

        quitBt = new JButton("快速注册");

        quitBt.setSize(100, 25);

        quitBt.setLocation(135,260);

 

        //验证码文本

        verCodeLa = new JLabel();

        verCodeLa.setText("验证码:");

        verCodeLa.setSize(60, 50);

        verCodeLa.setLocation(100,165);

 

        //验证码文本框

        verCodeTxt = new JTextField();

        verCodeTxt.setSize(100, 30);

        verCodeTxt.setLocation(170, 180);

 

        //验证码

        mp = new Yangzhengma();

        mp.setSize(100, 30);

        mp.setLocation(280, 175);

 

        this.setLayout(null);

        this.setSize(500, 400);

        this.add(userLa);

        this.add(pwdLa);

        this.add(userTxt);

        this.add(pwdTxt);

        this.add(sureBt);

        this.add(quitBt);

        this.add(verCodeLa);

        this.add(verCodeTxt);

        this.add(mp);

        this.setVisible(true);

    }

 

public static void main(String[] args) {

      new Yanzheng();

}

 

}

package 练习一;

 

import java.awt.*;

import java.util.*;

public class Yangzhengma extends Panel {

    public void paint(Graphics g)

    {

        int height = 50;

        int width = 90;

        //验证码框背景颜色

        g.setColor(Color.BLUE);

        //填充验证码背景

        g.fillRect(0, 0, width, height);

        g.setColor(Color.BLACK);

        g.drawRect(0, 0, width-1, height-1);

        Random r = new Random();

        //设置干扰点

        for(int i = 0;i<100;i++)

        {

            int x = r.nextInt(width)-1;

            int y = r.nextInt(height)-1;

            g.drawOval(x, y, 2, 2);

        }

        g.setFont(new Font("黑体",Font.BOLD,20));//设置验证码字体以及大小

        g.setColor(Color.red);//设置验证码字体颜色

        //生成随机验证码

        char[] tmp = ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

        StringBuilder sb = new StringBuilder();

        for(int i = 0;i<4;i++)

        {

            int pos = r.nextInt(tmp.length);

            char c = tmp[pos];

            sb.append(c + " ");

        }

        g.drawString(sb.toString(), 10, 15);//写入验证码

    }

}

3.     实现结果截图

   

4.     实验总结

     本次实验为做一个文本框软件,验证码的实质即为随机数的综合应用,添加了英文字母的应用。

转载于:https://www.cnblogs.com/mawangwang/p/9752601.html

你可能感兴趣的文章
C 语言究竟是一门怎样的语言?
查看>>
Windows下学习C语言有哪些集成开发软件?
查看>>
STM32 HAL库学习系列第8篇---回调函数总结
查看>>
创建vue项目
查看>>
javascript let
查看>>
vim 使用
查看>>
shell 监控
查看>>
授权某个数据库某个表权限
查看>>
elasticsearch 安装
查看>>
vue 结构赋值
查看>>
mac必装软件
查看>>
Redis内存分析工具—redis-rdb-tools (转载http://www.voidcn.com/article/p-axfdqxmd-bro.html)...
查看>>
[转载]AngularJS入门教程03:迭代器
查看>>
live555学习笔记1-引子
查看>>
Android画布和图形绘制---Canvas and Drawables(一)
查看>>
(二十一)即时通信的聊天气泡的实现II
查看>>
(四十九)Quartz2D自定义控件
查看>>
Trac 经验谈之(5)插件篇
查看>>
NDK学习 登录逻辑 C调用java方法
查看>>
Form.ShowWithoutActivation 属性
查看>>