Java注册登录抽奖系统模块化设计

分析

将整体系统分为以下部分:

测试类

注册类

登录类

抽奖类

保存用户信息的类

思考:

1、将用户信息保存在类中,并且定义为static,方便其他类调用

2、遇到需要的功能,尽量新建方法,在main方法中代码量尽量的少

3、设置变量定义登录与否的状态,在抽奖的时候通过用户名长度判断是否注册,通过记录登录状态的变量判断是否登录

通过卡号与用户信息中数据进行匹配判断卡号是否正确

4、在登录次数、和输错次数判断的时候,利用递归函数,就是使用if else语句,判断语句外定义变量,并且自增或者自减,

当if语句满足或者不满足条件的时候,继续执行函数,知道满足条件跳出判断语句

测试类代码:

public class CJTest {
	public static void main(String[] args) {
		//循环的判断条件 是否继续
		String isGoon = "";
		do {
			System.out.println("************幸运52***********");
			System.out.println("1.注册");
			System.out.println("2.登录");
			System.out.println("3.幸运大抽奖");
			System.out.println("***************************");
			System.out.println("请选择菜单");
			Scanner scanner = new Scanner(System.in);
			String menuNum = scanner.nextLine();
			//调用menuChoose方法
			menuChoose(menuNum);
			System.out.println("是否继续---输入y/n");
			//判断是否继续输入
			isGoon = scanner.nextLine();
		}while(isGoon.equals("y"));
		//循环结束提示
		System.out.println("欢迎下次使用");
	}
	//选择对应的方法
	public static void menuChoose(String menuNum) {
		//根据用户的选择来执行对应的功能
		switch (menuNum) {
		case "1":
			System.out.println("注册");
			Register.register();
			break;
		case "2":
			System.out.println("登录");
			//调用登录的方法,保存登录状态
			User.isLogin = Login.login();//直接调用有返回值的方法,不会报错。
		case "3":
			System.out.println("幸运抽奖");
			LuckDraw.luckDraw();
			break;
		default:
			System.out.println("输入错误,请重新输入");
			break;
		}
	}
}

注册类代码:

public class Register {
	public static void register() {
		System.out.println("请注册用户的个人信息");
		Scanner scanner =new Scanner(System.in);
		//scanner只能关闭一次,关闭后在本程序执行中再创建也不能接收键盘信息了
		System.out.println("用户名");
		//接收用户名,放在用户信息中
		User.name = scanner.next();
		System.out.println("密码");
		User.password =scanner.nextInt();
		System.out.println("卡号");
		//随机一个1000~2000的数,保存到用户中
		User.luckNumber = (int)(Math.random()*1001+1000);
		//显示用户的注册信息
		System.out.println("显示用户的注册信息");
		System.out.println("用户名:"+User.name);
		System.out.println("密码"+User.password);
		System.out.println("卡号"+User.luckNumber);
	}
}

登录类代码:

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) {
				login();
			}else {
				//三次机会已经使用 登录失败
				System.out.println("登录失败");
			}
			//写返回值的时候每一个分支都要有返回值
			return false;
		}
	}
}

抽奖类代码:

public class LuckDraw {
	static int a =0;
	public static void luckDraw() {
		//是否注册,注册不能抽,判断用户名是否存在
		//是否登录,没登录不让抽
		if(User.name.length()==0) {
			//没注册,下面都不执行
			System.out.println("没注册");
			return ;
		}
		if(!User.isLogin) {
			System.out.println("没登录");
			return;
		}
		//卡号是否正确
		if(!isLuckNumber()) {
			return;
		}
		//抽奖
		//首先定义一个变量保存中奖的结果
		Boolean isluck  = false ;
		//随机五个数打印出结果,并判断是否匹配幸运号码
		//定义一个变量保存累加的字符串
		String s  = "本次幸运数据:";
		for(int i = 0; i < 5; i++) {
			int num = (int)(Math.random()*1001+1000);
			//判断是否中奖
			if(User.luckNumber==num) {
				isluck = true;
			}
			//拼接要打印的字符串
			if(i!=4) {
			s = s  + num+","; 
			}else {
				s = s + num;
			}
		}
		//打印幸运数字
		System.out.println(s);
		//判断下,根据isluck打印结束语
		if(isluck) {
			System.out.println("恭喜你中奖了");
		}else {
			System.out.println("您没有中奖");
		}
		
	}
	public static boolean isLuckNumber() {
		System.out.println("请输入卡号");
		Scanner scanner = new Scanner(System.in);
		int luckNumber = scanner.nextInt();
		//判断用户输入的卡号是不是这个用户之前随机出来的那个数
		if(User.luckNumber==luckNumber) {
			//卡号相同 抽奖
			System.out.println("抽奖马上进行");
			return true;
		}else {
			//卡号不同  三次机会
			System.out.println("卡号不正确,请继续输入");
			a++;
			if(a!=3) {
				luckDraw();
			}else {
				System.out.println("机会使用完毕");
			}
			return false;
		}
	}
}

用户信息类代码:

public class User {
	public static String name;
	public static int password;
	public static int luckNumber;
	public static boolean isLogin; //登录状态,用于抽奖的时候进行判断
}



  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值