【Java】Java摇奖源码,Java抽奖源码,Java随机抽奖源码

任务描述

本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了。
注册

用户选择“注册”菜单,进入注册界面。输入用户名和密码后,系统提示注册成功,并给出会员卡号。
登录

注册成功后,用户选择“登录”菜单,进入登录界面。输入注册时的用户名和密码。登录成功,系统提示欢迎信息。如果用户和密码输入错误,提示用户继续输入,最多有3次机会。
抽奖

登录成功后,用户选择“抽奖”菜单,进入幸运抽奖界面。输入会员卡号,系统生成5个4位随机数作为幸运数字。如果会员卡号是其中之一,则成为本日幸运会员。
源代码

import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;

import com.thinkive.base.jdbc.DataRow;

public class TurnTable {

static Object[][] prizeArr = new  Object[][]{

//里面的指针转动

{1,"一等奖",0.0001},

{2,"不要灰心",39.9994},

{3,"祝您好运",20.0},

{4,"二等奖",0.0002},

{5,"再接再厉",20.0},

{6,"运气先攒着",10.0},

{7,"三等奖",0.0003},

{8,"谢谢参与",10.0}

};

Object result[] = award(prizeArr);//抽奖后返回奖品等级及奖品描述

//抽奖后返回奖品等级及奖品描述

public static Object[] award(Object[][] prizeArr){

//概率数组

float obj[] = new float[prizeArr.length];

for(int i=0;i<prizeArr.length;i++){

obj[i] = Float.parseFloat(prizeArr[i][2].toString());

}

Integer prizeId = getRand(obj); //根据概率获取奖项号码

String msg = (String) prizeArr[prizeId][1];//奖品信息

Integer prizeIds = prizeId +1;

System.out.println("奖品号: "+prizeIds +" 获奖等级:"+msg);

return new Object[]{prizeId,msg};

}

//根据概率获取奖项

public static Integer getRand(float obj[]){

Integer result = null;

try {

float sum = 0.0f;//概率数组的总概率精度

float min = 0.0f;//

for(int i=0;i<obj.length;i++){

BigDecimal beforSum = new BigDecimal(Float.toString(sum));

BigDecimal objValue = new BigDecimal(Float.toString(obj[i]));

sum = beforSum.add(objValue).floatValue();

}

for(int i=0;i<obj.length;i++){//概率数组循环

BigDecimal db = new BigDecimal(Math.random() * (sum - min) + min);

BigDecimal b = new BigDecimal(Float.toString(obj[i]));

if(compareMethod(db,b) == -1){//中奖

result = i;

break;

}else{

sum -=obj[i];

}

}

} catch (Exception e) {

e.printStackTrace();

}

/**

* 奖品控制代码,这里可以控制我们的奖品的等级

* **/

return result;

}

public static void main(String[] args) {

DataRow data = new DataRow();//此处DataRow为封装了的 HashMap

List<DataRow> resultList = new ArrayList<DataRow>();

for (int i = 0; i < 10000; i++) {

int k = 1;

Object result[] = award(prizeArr);//抽奖后返回角度和奖品等级

String prize = "";

String comment = "";

for (Object object : result) {

if(k==1){

prize = object.toString();

}else if(k==2){

comment = object.toString();

}

k++;

}

if(k==3){

data.set("prize", Integer.valueOf(prize)+1);

data.set("comment", comment);

resultList.add(data);

}

}

}

public static int compareMethod(BigDecimal a,BigDecimal b){

return a.compareTo(b);

}

}

喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我!

祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!

java小项目之:抽奖系统!java初学者必备(内附源码)的更多相关文章

  1. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  2. Ext.NET 4.1 系统框架的搭建(后台) 附源码

    Ext.NET 4.1 系统框架的搭建(后台) 附源码 代码运行环境:.net 4.5  VS2013 (代码可直接编译运行) 预览图: 分析图: 上面系统的构建包括三块区域:North.West和C ...

  3. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  4. 干货:Java多线程详解(内附源码)

      线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关). 在java中开启一个新线程非常简单,创建一个Thread对象,然后调用它的start方法,一个 ...

  5. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  6. Java小项目--坦克大战(version1.0)

    Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...

  7. Java小项目之:教你做个聊天系统!

    Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...

  8. Java小项目之:五子棋,你下棋下得过电脑吗?

    Java小项目之:五子棋,你下棋下得过电脑吗? Java五子棋功能要求: 1.创建窗口和设计一个棋盘界面 2.实现鼠标点击,棋子出现,黑白棋轮流下 3.能够判断五子相连输赢 4.添加重新开始,悔棋,退 ...

  9. java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

随机推荐

  1. python setattr()、getattr()、hasattr() 函数用法介绍

    一.函数介绍 在动态检查对象是否包含某些属性(包括方法〉相关的函数有如下几个: hasattr(object,name):检查 object 对象是否包含名为 name 的属性或方法. getattr ...

  2. 吴裕雄--天生自然Numpy库学习笔记:NumPy 统计函数

    NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. numpy.amin() 用于计算数组中的元素沿指定轴的最小值. numpy.amax() 用于计算数组中的 ...

  3. ASA密码恢复流程

    1.建立console连接2.重启启动安全设备 3.进入ROMMMON模式出现Use BREAK or ESC to interrupt boot字样时,按下ESC键进入ROMMON模式.4.设置RO ...

  4. Fiddler一次性发多个请求

    Fiddler一次发送多个请求 选中某个请求: 选中 : Raw, 将request数据拷出: 包含请求header和request body 替换request header里面的ASP.NET_S ...

  5. mcast_get_if函数

    #include <errno.h> int sockfd_to_family(int); int mcast_get_if(int sockfd) { switch (sockfd_to ...

  6. 基于Struts2+Hibernate开发小区物业管理系统 附源码

    开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 运行效果图: 源码及原文链接:https://javadao.xyz/forum.php?mo ...

  7. 看完这篇微服务架构设计思想,90%的Java程序员都收藏了

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...

  8. MRCP接口MRCPRecog 简介

    功能:开始一个语音识别,一边讲话,一边识别,需要ASR服务器. 原型:MRCPRecog (grammar, options) grammar ---- 语法文件,可以是一个xml文件 options ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:让表格更加紧凑

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. js 中一些重要的字符串方法

    String 对象方法 方法 描述 charAt() 返回在指定位置的字符. charCodeAt() 返回在指定的位置的字符的 Unicode 编码. concat() 连接两个或更多字符串,并返回 ...