⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawlots.java

📁 抽奖系统。营销活动现场
💻 JAVA
字号:
//DrawLots.javapackage com.cy;import java.util.*;public class DrawLots {  int[] roundArray;  int[][] luckyUserArray;  int currentRound=0;  private int currentRoundUser=0;  int userCount;  Vector snCollection;  Random randomObject = new Random();  /**   * 构造函数   * @param userCount - 总共多少用户参加抽奖   * @param rounds - 一共有几轮抽奖,每轮抽奖的奖项是多少,例如   * rounds.length就表示有少轮抽奖,rounds[0]表示第一轮抽奖应该产生的奖项数   * rounds[1]表示第二轮抽奖应该产生的奖项数..一次类推   */  public DrawLots(int userCount,int[] rounds) {    currentRound = 0;    currentRoundUser = 0;    this.userCount = userCount;    setRoundArray(rounds);    init();  }  /**   * 为每个用户生成一个整数,即记录索引,当开始抽奖时候,抽取就是从   * 这个记录索引集里面抽取记录,然后根据里面的整数作为用户表格对应的记录索引   * 来获取用户信息   */  void init(){    snCollection = new Vector(userCount);    for (int i = 0; i <userCount;i++){      snCollection.add(new Integer(i));    }  }  /**   * 生成抽奖数组,这个二维数组不是常规的矩形数组,而是非规则数组,例如抽奖分两轮   * 分别是5个奖和三个奖,则最后生成的数组是二维数组,   * round[0] = new int[5];   * round[1] = new int[3];   * 这个数组里面存放了幸运用户在数据表格里面的记录索引(而不是编号)   */  void setRoundArray(int[] rounds){    roundArray=new int[rounds.length];    for (int i=0;i<rounds.length;i++){      roundArray[i] = rounds[i];    }    //though it can be done in one loop, but for the code clearness, we make it separatelly    luckyUserArray =new int[roundArray.length][];    for (int i=0;i<roundArray.length;i++){      luckyUserArray[i] = new int[roundArray[i]];    }  }  /**   * 检查是否普通用户数足够,能够开始抽奖   */  boolean isUserNumberEnough(){    int summation = 0;    for (int i = 0; i<roundArray.length;i++){      summation += roundArray[i];    }    if (summation > userCount) {      return false;    }else{      return true;    }  }  /**   * 获得指定范围内的随机数   */  int getRandomNumber(){    int number = Math.abs(randomObject.nextInt());    number = number % snCollection.size();    return number;  }  /**   * 通过当前用户的记录索引获得用户的编号   */  int getUserSN(int index){    Integer snObj = (Integer)snCollection.elementAt(index);    int sn = snObj.intValue();    UserInfo user = (UserInfo)AppState.userList.elementAt(sn);    return user.getSn();  }  /**   * 通过当前用户记录索引获得用户名称   */  String getUserName(int index){    Integer snObj = (Integer)snCollection.elementAt(index);    int sn = snObj.intValue();    UserInfo user = (UserInfo)AppState.userList.elementAt(sn);    return user.getName();  }  /**   * 将索引针对的记录中用户编号抽出   */  int draw(int index)  {    Integer intObj = (Integer)snCollection.elementAt(index);    int id = intObj.intValue();    luckyUserArray[currentRound][currentRoundUser] = id;    snCollection.remove(index);    return id;  }  /**   * 获得幸运用户的编号数组   */  int[][] getLuckyUserArray(){    return luckyUserArray;  }  /**   * 为开始下一次抽奖作准备,设置当前抽奖对象的一些状态   */  boolean stepToNextDraw(){    if ((currentRoundUser+1)>roundArray[currentRound]-1){      if (currentRound==roundArray.length-1){        return false;      }else{        currentRound++;        currentRoundUser = 0;      }    }else{      currentRoundUser++;    }    return true;  }  public int getCurrentRound() {    return currentRound;  }  public void setCurrentRound(int currentRound) {    this.currentRound = currentRound;  }  public int getCurrentRoundUser() {    return currentRoundUser;  }  public void setCurrentRoundUser(int currentRoundUser) {    this.currentRoundUser = currentRoundUser;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -