使用Math和ArrayList完成一个摇奖机的功能
- 将一些学生对象加入到ArrayList中(从控制台输入学生信息 )
- 输入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();
}
}