简单抽奖软件java程序设计

来源:互联网 发布:360自动优化工具下载 编辑:程序博客网 时间:2024/06/08 06:11

一.设计任务

   摇奖 描述:从候选手机号码里随机选取号码显示在屏幕上作为获奖手机号。此题训练多线程操作。 描述 提示和要求: 提示和要求 候选号码可以保存在数组中,也可以保存在数据库中。 抽奖人点击开始按钮时,号码开始翻动,点击停止按钮时,显示的号码即为获奖号码。 为保证公平,应该使每个号码被选中的几率相同。

 

二.功能描述

 

 

用户界面简介:用户界面如图所示;界面包括一个顶层容器框架;两个按钮控件:开始和停止;一个编辑框控件;和一个标注为“抽奖机”的标签。

功能简介:点击开始按钮如图所示号码快速闪动,以至于不能看清号码。

 

然后点击停止按钮,选出幸运号码;如图:

 

点击消息框的确定按钮,继续抽奖!!!!!

    

三.各功能具体完成的功能

   框架代码:

       Final Liu form = new Liu();//Liu是一个自定义的框架类

    form.setLocation(400,200);//设置框架位置坐标

    form.setSize(455,300);//设置框架大小(长度和宽度)

    form.setVisible(true);//设置框架是否可见

开始按钮代码:

   JButton startButton = new JButton("开始");

    startButton.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {

       

       str[0] = "b";

       new Thread(new Runnable(){  

       

       public void run(){  

       new Main().string();

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

           {

       if(str[0] == "a")

              break;

             form.getTextField().setText(new Main().string());

       }  

       }}).start();

       }

       });

    startButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));

        startButton.setBackground(Color.ORANGE);

     startButton.setBounds(80, 165, 117, 46);

     form.getContentPane().add(startButton);

开始按钮代码里面有一个内部线程new Thread(new Runnable)(){}).start(),这是我编程中的难点。

停止按钮代码:

       JButton stopButton = new JButton("\u505C\u6B62");

     stopButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

str[0] = "a";

   String st = form.getTextField().getText();

   st = "恭喜手机号为:" + st + "的用户获得百元大奖!!!!";

         new JOptionPane().showMessageDialog(null, st);

        }

      });

     stopButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));

       stopButton.setBackground(Color.magenta);

    stopButton.setBounds(240, 165, 117, 46);

 form.getContentPane().add(stopButton);

停止按钮代码里遇到线程结束问题非常头痛,通过多方面的查看资料,不断地调试,勉强解决,以后要加强线程的训练。

标签代码:

      JLabel lblNewLabel = new JLabel("抽奖机");

   lblNewLabel.setBackground(Color.MAGENTA);

   lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30));

         lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);

   lblNewLabel.setBounds(150, 21, 136, 50);

   getContentPane().add(lblNewLabel);

编辑框代码:

       txtEdit = new JTextField();

   txtEdit.setFont(new Font("微软雅黑", Font.PLAIN, 24));

   txtEdit.setBounds(118, 90, 200, 50);

   getContentPane().add(txtEdit);

txtEdit.setColumns(10);

   本程序中编辑框读写号码是问题的关键,这也是我非常头痛的问题之一。

四.功能实现的流程

            

 

      

五.实验体会

编程遇到的困难:

 编程过程中遇到很多困难,由于是第一次用可视化编程控件编程,所以对各个控件不太熟悉,走了很多弯路。由于对各个控件创建和设置都不能很好地把握,因此我运用eclipsewindowBuilder来编辑控件和设置属性等。其次就是对事件源,事件监听器,事件处理方法运用的不太熟练掌握的不太透彻。最大的困难就是创建线程和结束线程;尤其是结束线程可谓是绞尽脑汁。但是功夫不负有心人,在不断的坚持当中终于完成了任务。

经验总结:

  以后要加强自己的编程训练,提高自己的编程能力。一定要敢想,敢写,敢做。在本次编程中使我更加深刻的了解了java面向对象的编程思想和编程方法。对java类有了更深刻的理解。对线程的应用更得心应手。

附录:

Liu.Java:

package java课程设计; import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JOptionPane; import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent; import javax.swing.JTextField;import java.awt.Font;import java.awt.Color;import javax.swing.JLabel;import javax.swing.SwingConstants; public class Liu extends JFrame{   public JTextField txtEdit;   public Liu()   {   super();   getContentPane().setBackground(Color.GREEN);   getContentPane().setForeground(Color.MAGENTA);   getContentPane().setFont(new Font("微软雅黑", Font.PLAIN, 30));   getContentPane().setLayout(null);           txtEdit = new JTextField();   txtEdit.setFont(new Font("微软雅黑", Font.PLAIN, 24));   txtEdit.setBounds(118, 90, 200, 50);   getContentPane().add(txtEdit);   txtEdit.setColumns(10);      JLabel lblNewLabel = new JLabel("抽奖机");   lblNewLabel.setBackground(Color.MAGENTA);   lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30));   lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);   lblNewLabel.setBounds(150, 21, 136, 50);   getContentPane().add(lblNewLabel);      }   public JTextField getTextField()   {return txtEdit;      }}


Main.java:

package java课程设计; import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Random; import javax.swing.JButton;import javax.swing.JOptionPane;import javax.swing.JTextField;  public class Main{String string(){String [] phone = {"14854268096","17864268097","12345678912","13864268096","18964268097","12345678912","14564268096","16764268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912"};    Random random = new Random();        int ran = random.nextInt(20);        return phone[ran];}    public static void main(String [] args)    {    final String [] str = new String [5];    final Liu form = new Liu();    form.setLocation(400,200);    form.setSize(455,300);    form.setVisible(true);    JButton startButton = new JButton("开始");    startButton.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent e) {              str[0] = "b";       new Thread(new Runnable(){                public void run(){         new Main().string();       for(int i = 0;;++i)           {       if(str[0] == "a")              break;             form.getTextField().setText(new Main().string());       }         }}).start();       }       });    startButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));        startButton.setBackground(Color.ORANGE);     startButton.setBounds(80, 165, 117, 46);     form.getContentPane().add(startButton);          JButton stopButton = new JButton("\u505C\u6B62");     stopButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {str[0] = "a";   String st = form.getTextField().getText();   st = "恭喜手机号为:" + st + "的用户获得百元大奖!!!!";         new JOptionPane().showMessageDialog(null, st);        }      });     stopButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));        stopButton.setBackground(Color.magenta);    stopButton.setBounds(240, 165, 117, 46);    form.getContentPane().add(stopButton);       }}


0 0