简单抽奖软件java程序设计

一.设计任务

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

 

二.功能描述

 

 

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

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

 

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

 

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

    

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

   框架代码:

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

   

    }
}


  • 9
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值