抽奖
项目需求
- 用户注册
新用户输入用户名和密码注册用户。当用户注册成功后,可以为用户分配一个4位随机会员号。
开发时为了方便测试,会员号设置为1位。 - 用户登录
用户输入用户名和密码登录系统,若无该用户提示用户名密码错误,重新登录。 - 幸运抽奖
用户登录成功后可以进入抽奖功能进行抽奖,系统随机生成五个幸运数字,若该用户会员号等于某数组则抽奖成功。
1.0使用字符串数组
import java.util.Random;
import java.util.Scanner;
public class User {
static String[] user = new String[10] ;//用户名
static String[] passwd = new String[10];//密码
//static int[] ran = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1} ;
static int[] ran = new int[10];
//会员号
static boolean flag=false;//是否登陆成功
static int cnt = 3;//登录次数
static int i=0;//用户下标
static int pos=0;//保存当前登录用户的下标
static void print(){
System.out.println("**欢迎使用抽奖系统**");
System.out.println("* 1注册 *");
System.out.println("* 2登录 *");
System.out.println("* 3抽奖 *");
System.out.println("* 4退出 *");
System.out.println("*****************");
}
static boolean unContains(int[] arr,int a){//检查生成的随机数是否已生成过
for(int j=0;j<arr.length;j++){
if(arr[j]==a){
return false;
}
}
return true;
}
static void signUp(Scanner scan){
System.out.println("请输入用户名");
user[i] = scan.next();
System.out.println("请输入密码");
passwd[i] = scan.next();
Random r = new Random();
int tempRan = r.nextInt(9000)+1000;//(max -min )+min
while(!unContains(ran,tempRan)) tempRan = r.nextInt(9000)+1000;//每个用户会员号不同
ran[i] = tempRan;
System.out.println("注册成功!");
System.out.println("用户名:" + user[i]+ " 密码:" + passwd[i] + " 会员号:" + ran[i]);
i++;
}
static void signIn(Scanner scan){
String str1,str2;
System.out.println("请输入用户名");
str1 = scan.next();
System.out.println("请输入密码");
str2 = scan.next();
boolean juStr1 = false;
boolean juStr2 = false;
for(int j=0;j<10;j++){
if(str1.equalsIgnoreCase(user[j])) {
juStr1 = true;
if(str2.equalsIgnoreCase(passwd[j])) {
juStr2 = true;
pos = j;
break;
}
}
}
if (!juStr1||!juStr2) {
System.out.println("输入有误");
cnt--;
if (cnt == 0) {
System.out.println("三次机会已用完");
System.exit(0);
}
} else {
System.out.println("登陆成功!");
flag = true;
}
}
static void prize(){
boolean tmp=false;
Random r = new Random();
int []arr = new int[5];
int k = 1;
arr[0] = r.nextInt(9000)+1000;//第一个不用检查 (max-min )+min
while(k< arr.length){
int a = r.nextInt(9000)+1000;
if(unContains(arr,a))//生成的随机数之前没生成过
arr[k++] = a;
}
for(int j=0;j<5;j++){
if(arr[j] == ran[pos]) tmp = true;
System.out.print("中奖的号码:"+arr[j]+" ");
}
System.out.println();
System.out.println("您的号码:"+ran[pos]);
if(tmp) System.out.println("恭喜您中奖了!");
else System.out.println("很遗憾,您未中奖!");
}
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
String str;
do{
print();
int choose = scan.nextInt();
switch (choose) {
case 1:
signUp(scan);//注册
break;
case 2:
signIn(scan);//登录
break;
case 3:
if(!flag){
System.out.println("请先登录!");
break;
}
prize();//抽奖
break;
case 4:
System.exit(0);//退出
break;
default:
System.out.println("输入有误!");
}
System.out.print("是否继续?y/n ");
str = scan.next();
}while(str.equalsIgnoreCase("y"));
scan.close();
}
}
- 2.0使用对象数组
User类
mport java.util.Scanner;
import java.util.Random;
public class User
{
private String name = null;
private String passwd = null;
private int no =-1;
static Scanner input = new Scanner(System.in);
public void setNo(int no){
this.no = no;
}
public boolean judge2(int no){//判断会员号是否重复
if(this.no==no) return true;
return false;
}
public void signUp(){
System.out.println("请输入用户名:");
String name = input.next();
this.name = name;
System.out.println("请输入密码:");
String passwd = input.next();
this.passwd = passwd;
System.out.println("注册成功!");
System.out.println("用户名:" + this.name+ " 密码:" + this.passwd + " 会员号:" + this.no);
}
public boolean unContains(int[] arr,int a){//检查生成的随机数是否已生成过
for (int j=0;j<arr.length;j++){
if(arr[j]==a){
return false;
}
}
return true;
}
public boolean judge(String name,String passwd) {
if(name.equals(this.name)&&passwd.equals(this.passwd))
return true;
return false;
}
public void prize(){
boolean tmp=false;
Random r = new Random();
int []arr = {-1,-1,-1,-1,-1};
//int []arr = new int[5];//存放幸运号码
int k = 1;
arr[0] = r.nextInt(5);//第一个不用检查 (max-min )+min
while(k< arr.length){
int a = r.nextInt(5);
if(unContains(arr,a))//生成的随机数之前没生成过
arr[k++] = a;
}
System.out.println("您的号码:"+this.no);
for(int j=0;j<5;j++){
if(arr[j] == this.no) tmp = true;
System.out.print("中奖的号码:"+arr[j]+" ");
}
System.out.println("您的号码:"+this.no);
if(tmp) System.out.println("恭喜您中奖了!");
else System.out.println("很遗憾,您未中奖!");
}
}
Main类
import java.util.Scanner;
import java.util.Random;
public class Main {
static Scanner input = new Scanner(System.in);
static int pos =-1;//当前登录的用户
public static void print() {
System.out.println("**欢迎使用抽奖系统**");
System.out.println("* 1注册 *");
System.out.println("* 2登录 *");
System.out.println("* 3抽奖 *");
System.out.println("* 4退出 *");
System.out.println("*****************");
}
public static boolean unContains(User[]user,int num){
for(int j=0;j<10;j++){
if(user[j].judge2(num)) return false;
}
return true;
}
public static void signIn(User[] user){
out:do {
System.out.println("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
String passwd = input.next();
for (int j = 0; j < 10; j++) {
if (user[j].judge(name, passwd)) {
System.out.println("登陆成功");
pos = j;
break out;
}
}
System.out.println("输入有误,请重新输入!");
}while(true);
}
public static void main(String[] args) {
int i = 0;//标记用户下标
Random r = new Random();
int num ;
User[] user = new User[10];
for (int j = 0; j < 10; j++) {
user[j] = new User();
}
String str;
do {
print();
int choose = input.nextInt();
switch (choose) {
case 1:
num = r.nextInt(5);
while(!unContains(user,num))
num = r.nextInt(5);
user[i].setNo(num);
user[i].signUp();
i++;
break;
case 2:
signIn(user);
break;
case 3:
if(pos == -1) {
System.out.println("请先登录!");
break;
}
else user[pos].prize();
break;
case 4:
System.exit(0);
default:
System.out.println("输入有误,请重新输入!");
}
System.out.println("continue?y/n");
str = input.next();
} while (str.equals("y"));
}
}
运行结果
注册五个用户,每个用户会员号不同
登录
抽奖
抽出的5个幸运号码不同
未登录的情况下
已登录的情况下
ljm要加油