简易抽奖系统——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博客

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,我很乐意为您解答关于Java课程设计中彩票购买抽奖系统的问题! 彩票购买抽奖系统是一个非常有趣的主题,有着广泛的应用场景。在这个系统中,用户可以购买彩票,并在开奖时参与抽奖。以下是一些实现该系统所需的基本功能: 1. 用户注册和登录:用户需要注册并登录才能购买彩票和参与抽奖。 2. 彩票购买:用户可以在系统中购买不同种类的彩票,例如双色球、大乐透等。在购买彩票时,用户需要选择号码和注数,并支付相应的费用。 3. 彩票兑奖:当彩票中奖时,用户可以在系统中进行兑奖操作。系统需要计算中奖金额,并将奖金发放给用户。 4. 抽奖:在开奖时,系统需要随机生成中奖号码,并计算中奖情况。中奖情况包括一等奖、二等奖、三等奖等多个等级。系统需要根据中奖情况计算中奖金额,并将奖金发放给中奖用户。 5. 数据统计:系统需要记录彩票购买和抽奖的数据,并进行统计分析。例如,系统可以统计每种彩票的销售情况、中奖情况等信息。 以上是彩票购买抽奖系统的基本功能,当然还可以根据实际需求进行扩展。在Java课程设计中,您可以使用Java语言和相关技术实现该系统,例如Java Servlet、JSP、MySQL等。同时,您需要考虑系统的安全性和可靠性,例如用户信息的保护、交易数据的安全等。希望这些信息能对您的课程设计有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无忧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值