Tutorial 01 4,5题

.任务四:

程序设计思想:利用Math.random()产生一个char类型的字符,再利用for循环是他们相加,最后将他们放在一个消息框中输出。

 

程序流程图:

 

 

源程序:           package test1;

 

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

//产生一位的字符

public class Test26 extends JFrame

{

         public static char Getrandomchar(char a1,char a2)

         {

                  return (char)(a1+Math.random()*(a2-a1+1));

                 

         }

//产生6位的验证码;

         public static String test()

         {

                   String s="";

                           char a;

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

                           {

                                    a=Getrandomchar('a','z');

                                    s=s+a;

                           }

                  return s;

         }

         public static void main(String[] args) {

//创建登录界面

                  final String userName = "abc";

                  final String passwrod = "123";

                  JFrame jFrame = new JFrame("登陆界面");

                  Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();

                  jFrame.setBounds(((int)dimension.getWidth() - 200) / 2, ((int)dimension.getHeight() - 300) / 2, 400, 200);

                  jFrame.setResizable(true);

                  jFrame.setLayout(null);

                  //jFrame.setForeground(Color.blue);//是背景颜色变为蓝色;

                  jFrame.getContentPane().setBackground(Color.blue);

                  //jFrame.getContentPane().setVisible(false);

                  jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                  //添加标签,内容为“姓名”

                  JLabel label1 = new JLabel("姓名");

                  label1.setBounds(10, 10, 100, 30);

                  jFrame.add(label1);

                  //添加标签,内容为“密码”

 

                  JLabel label2 = new JLabel("密码");

                  label2.setBounds(10, 40, 100, 30);

                  jFrame.add(label2);

                  //添加标签,内容为“验证码”;

    JLabel label3 = new JLabel("验证码:");

                  label3.setBounds(10, 70, 100, 30);

                  //label3.setForeground(Color.red);

                  jFrame.add(label3);

                  //添加标签,并调用产生验证码的函数,并将其作为标签的内容

                  JLabel label4 = new JLabel(test());

                  String s;

                  s=label4.getText();

                  label4.setBounds(70, 75, 130, 20);

                  label4.setForeground(Color.red);

                  jFrame.add(label4);

                  //输入用户名;

                  final JTextField text1 = new JTextField();

                  text1.setBounds(50, 15, 130, 20);

                  jFrame.add(text1);

                  //输入密码;

                  final JPasswordField text2 = new JPasswordField();

                  text2.setBounds(50, 45, 130, 20);

                  jFrame.add(text2);

                  //输入验证码;

                  final JTextField text3 = new JTextField();

                  text3.setBounds(150, 75, 130, 20);

                  jFrame.add(text3);

                 

                  JButton button1 = new JButton("取消");

                  button1.setBounds(160, 105, 150, 30);

                  button1.addActionListener(new ActionListener()

                  {

                           public void actionPerformed(ActionEvent e)

                           {

                                    jFrame.dispose();//关闭程序;

                           }

                  });

                  jFrame.add(button1);

                 

                  JButton button2 = new JButton("看不清,换一张");

                  button2.setBounds(300, 75, 150, 20);

                  button2.addActionListener(new ActionListener()

                  {

                           public void actionPerformed(ActionEvent e)

                           {

                                   

                                    text3.setText("");

                                   

                                    label4.setText(s);

                           }

                  });

                  jFrame.add(button2);

                  //检验是否登陆成功;

                  JButton button = new JButton("登录");

                  button.setBounds(10, 105, 150, 30);

                  button.addActionListener(new ActionListener() {

                           public void actionPerformed(ActionEvent e) {

                                    if(userName.equals(text1.getText()) && passwrod.equals(text2.getText())&&s.equals(text3.getText())) {

                                             JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);

                                    } else {

                                             JOptionPane.showMessageDialog(null, "错误", "提示", JOptionPane.ERROR_MESSAGE);

                                             text1.setText("");

                                             text2.setText("");

                                             text3.setText("");

                                             label4.setText(test());

                                    }

                           }

                  });

                  jFrame.add(button);

                 

                  jFrame.setVisible(true);

         }

}

程序结果截图:

 

总结分析:1.在登录时,无法判断验证码是否正确。

          解决方案:直接将产生验证码的程序定义为一个函数,也方便后边的调用。

          2.鼠标单击“取消”是无法关闭程序

          解决方案:在取消的按钮上加了一个动作监听器,如果单击“取消”,便会关闭程序。

 

 

任务五:

程序设计思想:利用Math.Random产生一个随机数(1-100),用户在从键盘输入猜的数,再利用while循环,判断是否猜的正确并给出提示信息,每次的输出结果都放在一个消息框中,直到用户猜出正确答案。

 

程序流程图:

 

 

程序源代码:

             import java.util.Random;

 

import javax.swing.JOptionPane;

 

public class Guess {

 

         public static void main(String[] args)

         {

                  String q="猜大了!";

                  String w="猜小了";

                  String e="恭喜你,答对了!";

                  String b;

                  int z;

                  int a=new Random().nextInt(100) +1;//产生1-100的随机数;

                  b=JOptionPane.showInputDialog(null,"输入自己猜的数:",a);//用户输入自己猜的数字;

                  z = Integer.parseInt(b);//将b转化为int类型;

                  while(z!=a)//判断输入的数是否与产生的数相同;

                  {

                           if(z>a)

                           {

                                    JOptionPane.showMessageDialog(null,q);

                                    b=JOptionPane.showInputDialog(null,"输入自己猜的数:");//用户输入自己猜的数字;

                                    z = Integer.parseInt(b);//将b转化为int类型;

                           }

                           else

                           {

                                    JOptionPane.showMessageDialog(null,w);

                                    b=JOptionPane.showInputDialog(null,"输入自己猜的数:");//用户输入自己猜的数字;

                                    z = Integer.parseInt(b);//将b转化为int类型;

                           }

                          

                  }

                  JOptionPane.showMessageDialog(null,e);

         }

 

}

 

程序截图验证:

 

 

原文地址:https://www.cnblogs.com/ljysy/p/7637071.html