码迷,mamicode.com
首页 > 其他好文 > 详细

第六次作业:抽奖系统

时间:2016-05-07 22:07:31      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

本次作业主要练习了集合的用法。根据老师的要求,所购买彩票的人不能有重复的,所以我使用了集合set来存放买彩票的人。

我一共创建了两个类:一个用来兑奖开奖和购买,另一个用来存放查询抽奖人信息的方法

先放代码:

这是兑奖开奖类的:

package choujiang;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

public class test {
public Set<list> aset = new HashSet();
public int kaijianghao,kaijianghao1;
public void addPerson(){
    int hao,hao1;
    String namee;
    while(aset.size()<5){                                   //设定抽奖人数
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您的姓名:");
    namee = sc.nextLine();
    System.out.println("请输入您所选择的第一个号码(0-4号):");
    hao = sc.nextInt();
    System.out.println("请输入您所选择的第二个号码(5-9号):");
    hao1 = sc.nextInt();
    list a = new list(namee,hao,hao1);
    aset.add(a);


    }
    System.out.println("本期参与人数已满5人,感谢您的参与,请下次在来");
}
public void printperson(){
    System.out.println("抽奖者信息:\n"+aset);
}
public void kaijiang(){
    Random r = new Random();
    kaijianghao = r.nextInt(5);
    kaijianghao1 = r.nextInt(5)+5;
    System.out.println("本期中奖号码为:"+kaijianghao+"  "+kaijianghao1);
}
public void duijiang(){ 
    int i=2,j=1;                                                               //设置两个二等奖一个一等奖
    for (list list : aset) {     if(i>0&&j>0){                            
        if(kaijianghao==list.getNumber()||kaijianghao1==list.getNumber1()){          //防止重复中奖
            if(kaijianghao==list.getNumber()&&kaijianghao1==list.getNumber1()){   
                System.out.println("恭喜"+list.getName()+"中一等奖");
                j--;
                }else{if(i>0&&j>0){
            System.out.println("恭喜"+list.getName()+"中二等奖");
            i--;}
            }}}
        
    }
}
public void ceshi(){                      
    list a1 = new list("张三",0,5);
    list a2 = new list("李四",0,5);
    list a3 = new list("赵五",0,5);
    list a4 = new list("王六",3,8);
    list a5 = new list("郑七",4,9);
    aset.add(a1);
    aset.add(a2);
    aset.add(a3);
    aset.add(a4);
    aset.add(a5);
}
public static void main(String[] args) {
    test t = new test();
    t.addPerson();
    t.printperson();
    t.kaijiang();
    t.duijiang();
}
}

这是抽奖人信息类的:

package choujiang;

public class list {
private String name;
private int number;
private int number1;
public list(String name, int number, int number1) {
    super();
    this.name = name;
    this.number = number;
    this.number1 = number1;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getNumber() {
    return number;
}
public void setNumber(int number) {
    this.number = number;
}
public int getNumber1() {
    return number1;
}
public void setNumber1(int number1) {
    this.number1 = number1;
}
@Override
public String toString() {
    return "[抽奖者姓名:" + name + ", 第一个号码:" + number + ", 第二个号码:" + number1 + "]\n";
}
}

技术分享

因为中奖号码是随机的,为了能体现出我设置的只有两个二等奖和一个一等奖,我把所有购买奖券的人的数字全写成了0和5。

技术分享

本次随机开奖数出现了5,本应该有五个人都中二等奖,可以看出,只有最先购买彩票的李四和赵五得到了二等奖,而后面购买彩票的人虽然也获奖,但是名额满了,所以不显示获奖。

并且,在代码中,为了防止中了一等奖的人同时得到二等奖,我将两个if语句嵌套,解决了这一个问题。

还有老师要求要设置购买彩票的人数,我根据集合set的size大小用来成为设置人数的条件。

这次作业,把老师所要求的功能都实现了,并在代码中注释出了每个功能的位置。

因为上个学期期中就是做的彩票机,并且,本次作业主要是对集合的练习,所以我这次没有做GUI界面去演示。

这次作业完成后,让我对集合set的用法更加了解。

第六次作业:抽奖系统

标签:

原文地址:http://www.cnblogs.com/xuebagyp/p/5469182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!