编写Java程序,实现一个抽奖程序,主要包括注册、登录和抽奖等功能。具体要求如下: (1)显示。如输出显示抽奖程序欢迎语,提示用户输入不同数字进入注册、登录和抽奖模块,用户 输入数字错误做相应提示等。同时通过判断用户输入y或n来判断继续选择菜单或退出系统。 (2)注册。用户输入用户名和密码,并由系统产生固定位数的随机数作为该用户的卡号。 (3)登录。如输入正确的用户名和密码,登录成功,提示欢迎信息;如输入错误的用户名和密码, 提示继续输入,并设置输入机会的最大次数。 (4)抽奖。定义抽奖接口,该接口中具有抽奖方法。定义实现该抽奖接口的类重写抽奖方法模拟不 同的抽奖方式:比如可以输入会员卡号,系统生成若干个相同位数随机数作为幸运数字,如会员卡号是其 中之一则中奖;再比如系统生成一个随机数,用户猜对数字中奖。 (5)测试该抽奖程序的相关功能。
import java.util.*;
public class Test {
public static void main(String[] args) {
String Goon = ""; //循环的判断条件
Scanner scanner = new Scanner(System.in);
do {
System.out.println("$$$$$$$$$$$超级幸运大抽奖$$$$$$$$$$$\n"); //登录界面
System.out.println(" 1.注册 ");
System.out.println(" 2.登录 ");
System.out.println(" 3.卡号抽奖" );
System.out.println(" 4.猜数抽奖\n" );
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
System.out.println("请输入对应的数字选择相应的功能");
String menuNum = scanner.nextLine();
menu(menuNum); //调用menu方法
System.out.println("是否继续---输入y/n"); //判断是否继续
Goon = scanner.nextLine();
}while(Goon.equals("y"));//输入y继续,n结束
System.out.println("欢迎您下次使用");//结束提示
}
public static void menu(String Num) { //菜单:根据用户输入1、2、3来执行对应的功能
switch (Num) {
case "1":
System.out.println("注册");
Register.register(); //调用登录方法
break;
case "2":
System.out.println("登录");
User.isLogin = Login.login(); //调用登录方法
break;
case "3":
System.out.println("幸运大抽奖");
Judge.judge();
Luck.Luck1();
break;
case "4":
System.out.println("幸运大抽奖");
Judge.judge();
Luck.Luck2(); //调用抽奖方法
break;
default:
System.out.println("输入范围1-4,请重新输入");
break;
}
}
}
public class User { //存放用户信息:用户名、卡号、密码
public static String name;
public static int password;
public static int Number;
public static boolean isLogin; //登录状态,用于抽奖的时候进行判断
}
import java.util.*;
public class Register {//注册
public static void register() {
Scanner scanner =new Scanner(System.in);
System.out.println("请注册用户信息");
System.out.println("用户名:");
User.name = scanner.next();
System.out.println("密码:");
User.password =scanner.nextInt(); //放在用户信息中
User.Number = (int)(Math.random()*10001+10000); //随机产生一个10000~20000的数作为卡号
System.out.println("显示用户的注册信息");
System.out.println("用户名:"+User.name);
System.out.println("密码:"+User.password);
System.out.println("卡号:\n"+User.Number); //显示用户的注册信息
}
}
import java.util.*;
public class Login { //登录
public static int number = 0;
public static boolean login() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名");
String username = scanner.nextLine();
System.out.println("请输入密码");
int password = scanner.nextInt();
if(username.equals(User.name)&&password==User.password) { //判断用户名、密码是否匹配
System.out.println("登录成功");
return true;
}
else{
System.out.println("登录失败");
number++;
System.out.println("密码还能输入"+(3-number)+"次");
if(number!=3) { //最多输入3次密码
login();
}
else {
System.out.println("登录失败");
}
return false; //每一个分支都要有返回值,否则会报错
}
}
}
public class Judge { //判断注册状态和登录状态
static int a =0;
public static void judge() {
if(User.name.length()==0) { //通过User.name的长度来判断是否注册,如果没注册,下面都不执行
System.out.println("您还没有注册,请注册");
return ;
}
if(!User.isLogin) { //判断是否登录
System.out.println("您还没有登录,请登录");
return;
}
}
}
public interface LuckDraw1 { //抽奖接口
public static void Luck1() {}
public static void Luck2() {}
}
import java.util.*;
public class Luck implements LuckDraw1 { //实现抽奖接口
public static void Luck1() { //中奖方式1:生成与卡号位数相同的三个数,判断是否相同,若相同则为中奖
int a[]=new int[3];
int i;
System.out.println("您的卡号为"+User.Number);
for(i=0;i<3;i++) {
a[i]=(int)(Math.random()*10001+10000);
System.out.println("中奖号码为"+a[i]);
}
for(i=0;i<3;i++) {
if(User.Number==a[i]) { //直接用User.Number就不用再输入卡号。
System.out.println("恭喜您中奖啦!");
}
else {
System.out.println("很遗憾没有中奖");
break;
}
}
}
public static void Luck2() { //中奖方式2:随机产生一个0-99的数,用户输入一个数字,若相同则中奖。
System.out.println("请输入0-99的数");
Scanner scanner = new Scanner(System.in);
int j=(int)(Math.random()*100);
int num=scanner.nextInt();
if(num==j)
System.out.println("恭喜您中奖啦!");
else System.out.println("很遗憾没有中奖");
}
}