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

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

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

package zhidao

import java.util.HashSet

import java.util.Random

import java.util.Scanner

import java.util.Set

/**

* @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

System.out.println(xian)

System.out.println("欢培念迎使用xxx 抽奖系统!")

System.out.println(xian)

Scanner scanner = new Scanner(System.in)

System.out.println("请输入号码范围例如 1 10:")

start = scanner.nextInt()

end = scanner.nextInt()

System.out.println("请输入奖项个数:")

prizeNum = scanner.nextInt()

System.out.println("请输入指笑中定中奖号码个数,不指定请输入0:")

defaNum = scanner.nextInt()

int[] defa = new int[defaNum]

if (defaNum != 0) {

System.out.println("请输入指定的中奖号码,空格隔开:")

for (int i = 0i <defaNumi++) {

defa[i] = scanner.nextInt()

}

}

System.out.println(xian)

System.out.println("本次抽奖中奖号码为:")

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

System.out.print(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 (defa.length == 0) {

//随机抽 prizeNum 个奖

while (set.size() <prizeNum) {

set.add(new Random().nextInt(end - start + 1) + start)

}

return set

} else {

//指定了中奖号码

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

for (int num : defa) {

set.add(num)

}

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

while (set.size() <prizeNum - defa.length) {

set.add(new Random().nextInt(end - start + 1) + start)

}

return set

}

}

}

2、运行效果如图

指定了中奖号码

未指定中奖号码

未指定中奖号码

import java.util.Scanner

public class LuckyNumber {

/**

* 幸运抽奖

*/

public static

void main(String[] args) {

String answer

= "y"// 标识是否继续

String

userName = ""睁缓// 用户名

String

password = ""// 密码

int cardNumber

= 0// 卡号

boolean

isRegister = false// 标识是否注册

boolean

isLogin = false// 标识是否登录

int max =

9999

int min =

1000

Scanner input

= new Scanner(System.in)

do {

System.out.println("*****欢迎进入奖客富翁系统*****")

System.out.println("\t1.注册")

System.out.println("\t2.登录")

System.out.println("\t3.抽奖")

System.out.println("***************************")

System.out.print("请选择菜单:")

int choice =

input.nextInt()

switch

(choice) {

case 1:

System.out.println("[奖客富翁系统

>注册]")

System.out.println("请填写个人注册信息:")

System.out.print("用户名:")

userName =

input.next()

System.out.print("密码:")

password =

input.next()

//

获取4位随机数作为卡号

cardNumber =

(int)(Math.random()*(max-min))+min

System.out.println("\n注册成功,请记好您的会员卡号")

System.out.println("用户名\t密码\t会员卡号")

System.out.println(userName

+ "\t" + password + "\t" + cardNumber)

isRegister =

true// 注册成功,标志位设置为true

break

case 2:

System.out.println("[奖客富翁系统

>登录]")

if

(isRegister) { // 判断是否做早厅注册

/纯隐/

3次输入机会

for (int i

= 1i <= 3i++) {

System.out.print("请输入用户名:")

String

inputName = input.next()

System.out.print("请输入密码:")

String

inputPassword = input.next()

if

(userName.equals(inputName) &&password.equals(inputPassword)) {

System.out.println("\n欢迎您:"

+ userName)

isLogin =

true// 登录成功,标志位设置为true

break

} else if

(i <3) {

System.out.println("用户名或密码错误,还有"

+ (3 - i) + "次机会!")

} else

{

System.out.println("您3次均输入错误!")

}

}

} else

{

System.out.println("请先注册,再登录!")

}

break

case 3:

System.out.println("[奖客富翁系统

>抽奖]")

if

(!isLogin) { // 判断是否登录

System.out.println("请先登录,再抽奖!")

} else

{

//生成5个4位随机数字,并保存在数组中

int[]

luckynums = new int[5]

for(int i

= 0i <luckynums.lengthi++){

luckynums[i] =

(int)(Math.random()*(max-min))+min

}

System.out.print("请输入您的卡号:")

int

yourcard = input.nextInt()

int

i

System.out.print("\n本日的幸运数字为:")

for (i = 0

i <luckynums.lengthi++) {

System.out.print(luckynums[i]

+ " ")\

}

for (i = 0

i <luckynums.lengthi++) {

if

(luckynums[i] == yourcard) {

System.out.println("\n恭喜!您是本日的幸运会员!")

break

}

}

if (i ==

luckynums.length) {

System.out.println("\n抱歉!您不是本日的幸运会员!")

}

}

break

default:

System.out.println("[您的输入有误!]")

break

}

System.out.print("继续吗?(y/n):")

answer =

input.next()

System.out.println("")

} while

("y".equals(answer))

if

("n".equals(answer)) {

System.out.println("系统退出,谢谢使用!")

}

}

}


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

原文地址:https://www.54852.com/yw/12561264.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存