zoukankan      html  css  js  c++  java
  • 随机验证码实验报告

    程序设计思想

    定义一个Gui类,在类内创建控制对象,用户文本,密码文本,用户输入框,密码输入框,确认按钮,退出按钮,验证码文本,验证码文本框,验证码,定义一个 Mypanel类,设置验证码框背景颜色,设置验证码颜色,设置验证码,随机产生验证码,在主函数中新建对象。

     

    源程序

    package Homework;

    import java.awt.*;

    import javax.swing.*;

    public class Gui 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 Mypanel mp;

        //构造方法

        public Gui()

        {

            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, 20);

            //this.setSize(width, height)

            userTxt.setLocation(170, 95);

            //密码输入框

            pwdTxt = new JPasswordField();

            pwdTxt.setSize(100, 20);

            pwdTxt.setLocation(170, 135);

            //确认按钮

            sureBt = new JButton("登录");

            sureBt.setSize(60, 25);

            sureBt.setLocation(135, 260);

            //退出按钮

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

            quitBt.setSize(100, 25);

            quitBt.setLocation(240, 260);

            //验证码文本

            verCodeLa = new JLabel();

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

            verCodeLa.setSize(60, 50);

            verCodeLa.setLocation(100,165);

            //验证码文本框

            verCodeTxt = new JTextField();

            verCodeTxt.setSize(100, 20);

            verCodeTxt.setLocation(170, 180);

            //验证码

            mp = new Mypanel();

            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 Gui();

    }

    }

    package Homework;

    import java.awt.*;

    import java.util.*;

    public class Mypanel extends Panel {

        public void paint(Graphics g)

        {

            int height = 50;

            int width = 90;

            //验证码框背景颜色

            g.setColor(Color.LIGHT_GRAY);

            //填充验证码背景

            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);//写入验证码

        }

    }

    实验结果截图

     

    实验总结

     

    在编程时,在编写输出语句时,内部的关系容易混乱,尤其是加法运算时,在编写时更容易混乱。

  • 相关阅读:
    JavaScript的alert()突然出现中文乱码
    对ie CSS hack总结和理解
    getBoundingClientRect()获取元素相对浏览器视窗的坐标值
    typeof和instanceof的区别
    转载:Dos命令行下,关闭占用80端口的进程 (~~~这个比较实用!)
    关于JS浮点数计算误差问题和二进制浮点数表示法的思考
    callee与caller,apply与call的区别和作用
    [Javascript权威指南笔记01]后自增/后自减运算符的副作用 和 运算符的结合性
    转载:关于zindex的那些事(~~~比较理论的描述 堆栈上下文)
    西游东去 (~~创意?创新?恶搞?不置可否,不过有点意思)
  • 原文地址:https://www.cnblogs.com/dinghaisheng/p/9752465.html
Copyright © 2011-2022 走看看