编写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("很遗憾没有中奖"); } }