zoukankan      html  css  js  c++  java
  • 随机生成验证码

    自动生成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.     实验总结

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

  • 相关阅读:
    关于表单提交的数据记录
    Hrbust 2363 Symmys (Manacher + DP)
    Codeforces 911F Tree Destruction(贪心 && 树的直径)
    Codeforces 903F Clear The Matrix(状态压缩DP)
    HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)
    Codeforces 912D Fishes (概率&期望,优先队列的应用)
    Codeforces 912E Prime Gift(预处理 + 双指针 + 二分答案)
    HDU 6251 Inkopolis(2017 CCPC-Final,I题,环套树 + 结论)
    HDU 6249 Alice’s Stamps(2017 CCPC-Final G题,DP)
    2017 ACM-ICPC EC-Final 记录
  • 原文地址:https://www.cnblogs.com/mawangwang/p/9752601.html
Copyright © 2011-2022 走看看