简易抽奖系统——java实现

目录

主要知识内容

制作思路

GUI实现

实现随机抽取奖品

全部代码

拓展提高


主要知识内容

知识内容 作用目的
swing 窗体添加控件
awt 设置样式,添加事件监听
Random 获取随机数,使奖品随机
List 存储id

制作思路

  1. 实例化一个窗体,用于显示。
  2. 给窗体添加控件,容易想到的有按钮,文本框,标签等。
  3. 获取文本框中的内容(id或者抽奖码),判断是否重复抽奖。
  4. 在窗体中显示中奖信息

GUI实现

	JLabel l1=new JLabel("每个id只能抽取一次");//标签组件
	JLabel l2=new JLabel("请输入您的id:");
	JLabel l3=new JLabel("");
	JLabel l4=new JLabel("");
	JButton b1=new JButton("开始抽奖");//按钮组件
	JButton b2=new JButton("查看奖品");
	JButton b3=new JButton("退出");
	JTextField jtf=new JTextField();//文本框组件
	jtf.setColumns(20);//设置文本框内容长度
	l1.setBounds(120,20,300,50);//绝对坐标,大小
	l1.setFont(new Font("宋体",Font.BOLD,26));//样式
	l2.setBounds(10,320,110,30);
	l2.setFont(new Font("宋体",Font.BOLD,15));
	l3.setFont(new Font("宋体",Font.BOLD,15));
	l4.setFont(new Font("宋体",Font.BOLD,13));
	l3.setBounds(150,100,170,30);
	l4.setBounds(150,130,170,30);
	jtf.setBounds(130,320,120,30);
	b1.setBounds(260,320,90,30);
	b3.setBounds(355,320,70,30);
	add(l1);//将组件加入到窗体里
	add(l2);
	add(l3);
	add(l4);
	add(b1);
	add(b2);
	add(b3);
	add(jtf);
	setBounds(320, 200, 500, 400);//设置窗体的坐标大小
	//setUndecorated(true);//是否消除窗体边框
	setLayout(null);//绝对布局
	setVisible(true);//是否显示

实现随机抽取奖品

1.设置一个全局变量prize,用来保存奖品信息。

public String prize[]= {"过期牛奶一箱","二手牙刷一个","小编秘制奥利给一份","雷碧一瓶","并夕夕优惠券",
			"半瓶开塞露","逍遥丸一粒","一袋旺仔牛逼糖","爆炒啤酒瓶一份"};//奖品信息

2.生成一个随机数(小于prize的长度)作为prize的索引,用一个字符串作为输出奖品信息的内容。

        Random r=new Random();//随机奖品
        int num=r.nextInt(prize.length);
        String p=prize[num];

3.在GUI实现中看到,窗体里有一个抽奖按钮,我们想通过点击这个按钮实现抽奖行为,所以为这个按钮添加事件监听new ActionListener(),点击按钮,显示中奖信息。

b1.addActionListener(new ActionListener() {//添加监听
			@Override
			public void actionPerformed(ActionEvent e) {
					l3.setText("您已成功参与抽奖!");
					l3.setForeground(Color.GREEN);
					Random r=new Random();//随机奖品
					int num=r.nextInt(prize.length)+1;
					String p=prize[num];
					l5.setText("恭喜您获得"+p);		
               }
		});	

4.判断输入的id有没有参与过抽奖,我们不知道会有几个id参与抽奖,所以我们选择用List存储已经参与抽奖的id。

if(list.contains(jtf.getText())) {//判断是否存在该id
					l3.setText("该id已参与抽奖!");
					l3.setForeground(Color.RED);//前景色
				}else {
					list.add(jtf.getText());
                       }

全部代码

为了方便大家直接使用,我将全部代码写在一个类里,只需要复制全部代码就可以实现抽奖。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Frame_1 extends JFrame {
/**
	 * @author ZYY
	 */
	private static final long serialVersionUID = 1L;
	
	public List<String> list=new ArrayList<String>();
	public String prize[]= {"奖品","过期牛奶一箱","二手牙刷一个","小编秘制奥利给一份","雷碧一瓶","并夕夕优惠券",
			"半瓶开塞露","逍遥丸一粒","一袋旺仔牛逼糖","爆炒啤酒瓶一份"};//奖品信息
public Frame_1() {
	JLabel l1=new JLabel("每个id只能抽取一次");//标签组件
	JLabel l2=new JLabel("请输入您的id:");
	JLabel l3=new JLabel("");
	JLabel l4=new JLabel("");
	JButton b1=new JButton("开始抽奖");//按钮组件
	JTextField jtf=new JTextField();//文本框组件
	jtf.setColumns(20);//设置文本框内容长度
	l1.setBounds(120,20,300,50);//绝对坐标,大小
	l1.setFont(new Font("宋体",Font.BOLD,26));//样式
	l2.setBounds(10,320,110,30);
	l2.setFont(new Font("宋体",Font.BOLD,15));
	l3.setFont(new Font("宋体",Font.BOLD,15));
	l4.setFont(new Font("宋体",Font.BOLD,13));
	l3.setBounds(150,100,170,30);
	l4.setBounds(150,130,170,30);
	jtf.setBounds(130,320,120,30);
	b1.setBounds(260,320,90,30);
	add(l1);//将组件加入到窗体里
	add(l2);
	add(l3);
	add(l4);
	add(b1);
	add(jtf);
	setBounds(320, 200, 500, 400);//设置窗体的坐标大小
	//setUndecorated(true);//是否消除窗体边框
	setLayout(null);//绝对布局
	setVisible(true);//是否显示
	b1.addActionListener(new ActionListener() {//添加监听
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if(list.contains(jtf.getText())) {//判断是否存在该id
				l3.setText("该id已参与抽奖!");
				l4.setText("");
				l3.setForeground(Color.RED);//前景色
			}else {
				list.add(jtf.getText());
				l3.setText("您已成功参与抽奖!");
				l3.setForeground(Color.GREEN);
				Random r=new Random();//随机奖品
				int num=r.nextInt(prize.length)+1;
				String p=prize[num];
				l4.setText("恭喜您获得"+p);
			}
		}
		});
   }

public static void main(String[] args) {
	new Frame_1();
}
}

拓展提高

我们发现这个程序每次启动都会重置List的内容,并不能保存我们曾经参与抽奖的id,所以本例只是简易基础版,我们可以试着添加奖品公示效果,让我们看到奖品有什么,可以查看有哪个id曾经抽过奖。。。如果想学习进阶版,请参考:中级抽奖——java实现(通过IO流保存中奖名单)_无忧#的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/weixin_52473454/article/details/121520004