用Java简单实现抽奖功能

本文介绍了如何使用Java的Math库和ArrayList来设计一个模拟双十一抽奖活动的程序。通过控制台输入学生信息,实现添加学生并进行随机抽取,中奖者会得到恭喜提示。已中奖者将从集合中移除,支持回退到上级菜单操作。
摘要由CSDN通过智能技术生成

题目:

  • 使用Math和ArrayList完成一个摇奖机的功能:
    1. 将一些学生对象加入到ArrayList中(从控制台输入学生信息)
    1. 输入2抽象
  • ----------------------双11大抽奖--------------------
  • ------------------1.添加抽奖学生-------------------
    ---------------------2.开始抽奖----------------------
  •  输入1:
    
  •  输入学生信息,添加学生
    
  •  输入" end" 完成添加
    
  •  输入2:
    
  •  开始抽奖,对于被抽取到的学生提示:恭喜中奖,作业题10道!
    
  •  已经中过奖的学生从集合中移除 remove
    
  •  输入“back”可以返回上一级菜单
    

实现:

  • Student类

public class Student {

	private int sno;
	private String name;
	private String sex;
	
	public Student(int sno, String name, String sex) {
		super();
		this.sno = sno;
		this.name = name;
		this.sex = sex;
	}

	
	public int getSno() {
		return sno;
	}

	public void setSno(int sno) {
		this.sno = sno;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "Student [sno=" + sno + ", name=" + name + ", sex=" + sex + "]";
	}
	
	
}

Extruct类

import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Extruct {

	static ArrayList<Student> list = new ArrayList<>();
	private JFrame j;

	public void addStu() {
		System.out.println("请输入学生信息(例如:1001/softeem/男)");
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		String[] info = str.split("/");
		// 判断输入的内容是否包含三项信息
		if (info.length != 3) {
			System.out.println("信息输入有误,请重新输入");
			addStu();
			return;
		}
		Student s = new Student(Integer.parseInt(info[0]), info[1], info[2]);
		// 将对象加入集合
		list.add(s);
		System.out.println("输入end返回上一级菜单!输入其他继续添加");
		if ("end".equals(sc.nextLine())) {
			menu();
		} else {
			addStu();
		}

	}

	// 抽奖
	public void ext() {

		if (j != null) {
			j.setVisible(false);
		}
		// 从学生集合中随机一个索引
		int index = (int) (list.size() * Math.random());
		Student stu = list.get(index);
		System.out.println("中将学生" + stu.getName());
		showDialog(stu.getName());
		list.remove(index);
		// 返回上一级
		menu();
	}

	public void menu() {
		System.out.println("=================双十一抽奖====================");
		System.out.println("================【1】添加抽奖学生信息=================");
		System.out.println("================【2】抽奖==========================");
		System.out.println("================【0】退出==========================");
		System.out.println("================================================");

		Scanner sc = new Scanner(System.in);
		String i = sc.next();
		switch (i) {
		case "1":
			addStu();
			break;
		case "2":
			ext();
			break;

		case "0":
			System.out.println("谢谢使用,再见!");
			System.exit(0);
			break;

		default:
			System.out.println("请重新输入");
			menu();

		}
	}

	public void showDialog(String name) {
		j = new JFrame("中奖人");// 创建窗体
		j.setSize(500, 600);// 设置窗口大小
		j.setLocationRelativeTo(null);// 设置居中显示
		j.setAlwaysOnTop(true);
		j.setResizable(false);// 禁止改变窗口大小
		JLabel txt = new JLabel(name);// 创建JLabel

		txt.setForeground(Color.GREEN);
		txt.setFont(new Font("楷体", Font.BOLD, 50));
		// 将JLabel加入到窗体中显示
		j.add(txt);
		// 显示窗体
		j.setVisible(true);

	}

	public static void main(String[] args) {
		new Extruct().menu();
	}

}

测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值