热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初学者必备_java小项目之:抽奖系统!java初学者必备(内附源码)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了java小项目之:抽奖系统!java初学者必备(内附源码)相关的知识,希望对你有一定的参考价值。【

篇首语:本文由编程笔记#小编为大家整理,主要介绍了java小项目之:抽奖系统!java初学者必备(内附源码)相关的知识,希望对你有一定的参考价值。


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

       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

             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

             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 resultList = new ArrayList();

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学习资料的也可以私信我!

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


推荐阅读
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 本文介绍了一个实用的工具类 `ListExtensions`,提供了多种针对 `List` 的扩展方法,包括无序和有序列表中的对象检索及计数功能。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文将作为我硕士论文的一部分,但鉴于其内容的独特性和趣味性,决定单独发布。文中将定义一些皮亚诺公理,并介绍如何使用这些公理进行等式替换,以证明定理。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
author-avatar
手机用户2502876217
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有