使用Math和ArrayList完成一个摇奖机的功能

本文介绍如何利用Java的Math类和ArrayList来创建一个摇奖机功能。通过控制台输入学生信息,实现添加学生、抽奖、移除已中奖学生等功能。详细步骤包括创建学生类、设置属性、生成构造器和setter/getter方法,以及实现抽奖和菜单选择等操作。
摘要由CSDN通过智能技术生成
使用Math和ArrayList完成一个摇奖机的功能
  1. 将一些学生对象加入到ArrayList中(从控制台输入学生信息 )
  2. 输入1:添加抽奖学生
    输入2:抽奖

要求:
1: 输入学生信息,添加学生,输入" end" 完成添加输入
2: 开始抽奖,对于被抽取到的学生,提示:恭喜中奖!
3: 已经中过奖的学生从集合中移除 remove
4: 输入"back"可以返回上一级菜单

学生信息:学号,姓名,性别

一. 创建学生类,并设置属性

public class Student{
// 学号,姓名,年龄,性别
	private int sno;
	private String sname;
	private String sex;
	

二. 添加构造器
(Alt+ shift + S ==> 选择Generate Constructor using Fields…)

//无参构造器
public Student() {}
//包含三个参数的构造器
public Student(int sno, String sname, String sex) {
		super();
		this.sno = sno;
		this.sname = sname;
		this.sex = sex;
}

三. 生成Setter/Getter方法
(Alt + shift + S ==> 选择Generate Getters and Setters…)

    public int getSno() {
		return sno;
	}

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

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public String getSex() {
		return sex;
	}

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

四. 新建chouJiang类,创建数组列表

public class chouJiang {

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

五. 添加学生方法

    //添加学生
	public void addStu(){
		System.out.println("请输入学生信息,例如(学号/姓名/性别):");
		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("输入back返回上一级菜单,输入其他继续添加");
		if("back".equals(sc.nextLine())){
			menu();
		}else{
			addStu();
		}
	}

六. 抽奖方法

    //抽奖
	public void chouJiang(){
		//从学生集合中随机一个索引
		if(j != null)j.setVisible(false);
		if(list.size() > 0){
			int index = (int)(Math.random()*list.size());
			//获取中奖学生
			Student stu = list.get(index);
			showDialog(stu.getSname());
			//将学生移除
			list.remove(index);
			//返回上一级
			menu();
		}else{
			System.out.println("请添加抽奖人");
			addStu();
		}

	}

七. 显示抽奖名单窗口

    //显示窗口
	public void showDialog(String name){
		//创建窗体
		j = new JFrame("中奖名单");
		j.setSize(500,500);
		j.setLocationRelativeTo(null);
		j.setResizable(false);
		JLabel txt = new JLabel("恭喜:" + name + "!!");
		txt.setFont(new Font("宋体",Font.BOLD,30));
		txt.setForeground(Color.BLUE);
		//将JLabel加入到窗体中显示
		j.add(txt);
		//显示窗体
		j.setVisible(true);
	}

八. 选择菜单

//选择菜单
	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();
		case "2":
			chouJiang();
		case "0":
			System.out.println("谢谢使用!");
			System.exit(0);
			break;
		default:
			System.out.println("请重新输入");
			menu();
		}
		
	}

九. 测试类


public class Test {

	public static void main(String[] args) {

		new chouJiang ().menu();

	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值