java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现

java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现,第1张

1、简单控制台程序如下,如需界面需要自己加个。

package zhidao;

import javautilHashSet;

import javautilRandom;

import javautilScanner;

import javautilSet;

/

@author bufei

@datetime 2020年8月31日15:54:11

/

public class YaoHao {

public static void main(String[] args) {

String xian = "= = = = = = = = =";

// 起点        终点     奖个数          指定的号码个数

int start = 0, end = 0, prizeNum = 0, defaNum = 0;

Systemoutprintln(xian);

Systemoutprintln("欢迎使用xxx 抽奖系统!");

Systemoutprintln(xian);

Scanner scanner = new Scanner(Systemin);

Systemoutprintln("请输入号码范围例如 1 10:");

start = scannernextInt();

end = scannernextInt();

Systemoutprintln("请输入奖项个数:");

prizeNum = scannernextInt();

Systemoutprintln("请输入指定中奖号码个数,不指定请输入0:");

defaNum = scannernextInt();

int[] defa = new int[defaNum];

if (defaNum != 0) {

Systemoutprintln("请输入指定的中奖号码,空格隔开:");

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

defa[i] = scannernextInt();

}

}

Systemoutprintln(xian);

Systemoutprintln("本次抽奖中奖号码为:");

for (int num : randomDraw(start, end, prizeNum, defa)) {

Systemoutprint(num+" ");

}

}

/

@param start    抽奖范围起点

@param end      抽奖号码范围终点

@param prizeNum 中奖号码个数

@param defa     指定中奖号码

@return

/

public static Set<Integer> randomDraw(int start, int end, int prizeNum, int[] defa) {

Set<Integer> set = new HashSet<>();

// 未指定中奖号码

if (defalength == 0) {

//随机抽 prizeNum 个奖

while (setsize() < prizeNum) {

setadd(new Random()nextInt(end - start + 1) + start);

}

return set;

} else {

//指定了中奖号码

//把指定的号码加入进去

for (int num : defa) {

setadd(num);

}

//如果没有全部指定 则继续抽剩余的奖项

while (setsize() < prizeNum - defalength) {

setadd(new Random()nextInt(end - start + 1) + start);

}

return set;

}

}

}

2、运行效果如图

指定了中奖号码

未指定中奖号码

未指定中奖号码

思路是对的,按照你前面的思路,后面只需要在页面上用JS来控制随机显示,和抽取了。

但是一般不这么做,因为你这么做不方便控制作弊,和中奖概率。还有JS控制抽奖很容易就能作弊。

我之前做过的一个抽奖项目是这样的:抽奖程序(抽奖界面)用flash来写,这样既方便作弊也能控制中奖概率,同时更安全,JAVA后台提供抽奖名单,中奖概率等数据,抽奖程序调用java的API获得抽奖数据,这里需要在后台对抽奖信息进行加密,我们使用的是base64加密(方便反向解密),然后由用户点击flash抽奖界面抽奖,中奖后,同样使用base64加密中奖信息,发送到java后台,然后保存在DB,同时后台程序发送中奖信息给用户。

我写给你,如果是本专业,以后要多多学习。JDK 16

import javaawtGridLayout;

import javaawteventMouseEvent;

import javaawteventMouseListener;

import javautilIterator;

import javautilRandom;

import javautilSet;

import javautilTreeSet;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJTextField;

public class LuckyDrawn {

private JFrame f = new JFrame("Lucky Drawn");

private JButton btn = new JButton("Drawn");

private JTextField result = new JTextField("Result");

private static final int MIN = 1;

private static final int MAX = 30;

private static final int RESULT_COUNT = 7;

public LuckyDrawn(){

fadd(btn);

fadd(result);

resultsetEditable(false);

btnaddMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent e) {

Random rand = new Random();

Set<Integer> set = new TreeSet<Integer>();

while(setsize() < RESULT_COUNT){

setadd(new Integer(randnextInt(MAX)+ 1));

}

StringBuffer sb = new StringBuffer("Lucky numbers are: ");

for (Iterator iter = setiterator(); iterhasNext();) {

sbappend(((Integer) iternext())intValue())append(", ");

}

resultsetText(sbsubstring(0, sblength() - 2)toString());

fpack();

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

});

fsetLayout(new GridLayout(2, 1));

fsetVisible(true);

fsetLocation(500, 200);

fpack();

fvalidate();

fsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

}

public static void main(String[] args) {

new LuckyDrawn();

}

}

以上就是关于java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现全部的内容,包括:java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现、如何用java写一个抽奖程序 web类型的、用java编写一个彩票抽奖程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9767288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存