JavaSE基础总结(模拟用户模块)

初始界面

今天带大家使用java最基础的分支语句,循环,方法,以面向过程的方式来进行“模拟用户模块”的开发
首先,确认需求:

  1. 注册
  2. 登录
  3. 修改密码
  4. 退出

先把几个主要的功能列出来,然后根据我们所学的,是不是switch分支就用到了?先写一个函数来做我们的初始页面

//我们的初始选择界面
public static void select_1() {
		System.out.println("可选择的操作有:\n1.注册\n2.登录\n3.修改密码\n4.退出");
		System.out.print("请选择您的操作:");
		String tag = scanner.next();
		switch (tag) {
		case "1":
			System.out.println("这里是注册");
			break;
		case "2":
			System.out.println("这里是登录");
			break;
		case "3":
			System.out.println("这里是修改密码");
			break;
		case "4":
			System.out.println("欢迎下次光临");
			//退出程序(强制中断程序)
			System.exit(0);
		default:
			System.out.print("输入错误,请重新输入:");
			//防止有一些瓜娃子皮的很,不按提示操作,递归调用自己
			select_1();
			break;
		}
	}

注册

这样初始界面就做出来,下面需要就是对模块功能的实现,我们一个一个来,先来说注册
注册怎么做?先来梳理一波结构。

  1. 提示用户输入账号,获取用户注册的账号
  2. 提示用户输入密码1,获取用户注册的密码1
  3. 提示用户确认密码2,获取用户注册的密码2
  4. 判断用户注册的账号是否存在?若存在,注册失败,若不存在,继续往下执行。
  5. 判断用户输入的两次密码是否一致,若不一致,注册失败,若一致,继续往下执行。
  6. 存储用户的账号,密码,注册成功。
    获取用户的账号是不是需要用到Scanner?导包
 import java.util.Scanner;

怎么存储用户的账号密码呢?我们可以使用成员变量,用户显然不止一个,所以我们定义为数组类型,账号和密码应该是一一对应的,怎么实现一一对应呢?我们可以再定义一个下标,两个数组可以通过下标一致,来一一对应

static Scanner scanner;
static String userNames[] = new String[666];
static String passwords[] = new String[666];
static int number = 0;

接下来,就是把上述注册的步骤用代码翻译过来

 //这里是注册
	public static boolean regist() {
		System.out.print("请输入账号:");
		String userName = scanner.next();
		System.out.print("请输入密码:");
		String password_1 = scanner.next();
		System.out.print("请确认密码:");
		String password_2 = scanner.next();
		for(int i=0;i<number;i++) {
			if(userName.equals(userNames[i])) {
				System.out.println("注册失败");
				System.out.println("账号已存在");
				return false;
			}
		}
		if(password_1.equals(password_2)) {
			userNames[number]=userName;
			passwords[number]=password_1;
			number++;
			System.out.println("注册成功!");
			return true;
		}else {
			System.out.println("注册失败");
			System.out.println("两次密码不一致");
			return false;
		}
	}

这样注册功能就实现了,但是如果用户注册失败,就会退出,什么也不发生,这显然是不合理的,我们需要让用户自己决定,是否再一次进行登录
我们又想到了switch,所以又可以写下步骤

  1. 询问用户是否继续注册(y/n)
  2. 如果用户选择y,返回注册
  3. 如果用户选择n,返回初始界面
  4. 如果用户皮了起来,选了别的东西,返回这个方法本身(递归)
 //这里是   是否重复注册
	public static void registNext() {
		System.out.print("是否重新注册(y/n):");
		String tag = scanner.next();
		if(tag.equals("Y")||tag.equals("y")) {
			registNext();
		}else if(tag.equals("N")||tag.equals("n")){
			select();
		}else {
			System.out.println("输入错误,请重新输入");
			registNext();
		}
	}

这样注册的业务功能就完成了

登录

接下来,我们写登录,同样先来分析一波。

  1. 提示用户输入账号,获取用户输入的账号
  2. 提示用户输入密码,获取用户输入的密码
  3. 遍历我们注册成功得到的成员变量账号,密码
  4. 使用for循环,进行一一匹配(账号密码通过下标一致,来进行匹配)
  5. 若匹配成功,登陆成功
  6. 否则,登陆失败
 //这里是登录
	public static boolean login() {
		System.out.print("请输入账号:");
		String userName = scanner.next();
		System.out.print("请输入密码:");
		String password = scanner.next();
		for(int i=0;i<number;i++) {
			if(userNames[i].equals(userName)&&passwords[i].equals(password)) {
				System.out.println("登陆成功!");
				return true;
			}
		}
			System.out.println("登陆失败!");
			System.out.println("账号密码不匹配");
			return false;

	}

同样,我们考虑到,功能的合理性,要再加一个是否继续登录的方法,和是否继续注册几乎差不多

//这里是   是否重复登录
		public static void loginNext() {
			System.out.print("是否重新登录(y/n):");
			String tag = scanner.next();
			if(tag.equals("Y")||tag.equals("y")) {
				boolean isLogin = login();
				if(isLogin) {
					select_2();
				}else {
					loginNext();
				}
			}else if(tag.equals("N")||tag.equals("n")){
				
			}else {
				System.out.println("输入错误,请重新输入");
				loginNext();
			}
		}

这样登录功能就也实现了

计算器

细心的朋友可能在是否继续登录的代码里,发现了我们没有写的方法,select_2(),这是因为考虑到,登录成功的话,就只返回个登陆成功,有点太单调了,所以我们登陆成功后,跳转到真正的用户界面
我们可以简单的写一个计算器,计算两数的加减乘除。这样再梳理一下步骤。

  1. 登陆成功后,应该有个界面,用户可以选择想要使用的计算方式(switch)
  2. 计算加法的方法
  3. 计算减法的方法
  4. 计算乘法的方法
  5. 计算除法的方法
  6. 返回到登录界面
  7. 选择失败后,递归调用自己
 //这里是登录后的用户界面
	public static void select_2() {
		System.out.println("欢迎来到计算器");
		System.out.println("可选择的操作有:\n1.加法\n2.减法\n3.乘法\n4.除法\n5.退出");
		String tag = scanner.next();
		switch (tag) {
		case "1":
			System.out.println("**************************************************");
			System.out.println("这里是加法");
			add();
			select_2();
			break;
		case "2":
			System.out.println("**************************************************");
			System.out.println("这里是减法");
			sub();
			select_2();
			break;
		case "3":
			System.out.println("**************************************************");
			System.out.println("这里是乘法");
			mul();
			select_2();
			break;
		case "4":
			System.out.println("**************************************************");
			System.out.println("这里是除法");
			div();
			select_2();
			break;
		case "5":
			System.out.println("退出");
			select_1();
			break;

		default:
			System.out.println("输入错误,请重新输入");
			select_2();
			break;
		}
	}

加减乘除的方法都比较简单,我这里就不放代码了,免得大家厌烦

修改密码

修改密码的思想和登录注册都差不多,大家可以自己尝试写一下,这个方法我只给大家梳理一下步骤

  1. 提示用户输入账号,获取用户输入的账号
  2. 提示用户输入旧密码,获取用户输入的旧密码
  3. 遍历注册成功获得的账号,判断是否匹配
  4. 如果匹配,继续往下执行,如果不匹配,返回错误,账号不存在
  5. 根据上述匹配成功的账号,获取他的下标
  6. 判断密码是否和用户输入的旧密码
  7. 如果匹配,下一步,如果不匹配,返回错误,账号密码不一致
  8. 提示用户输入新密码,获取用户输入的新密码1
  9. 提示用户确认新密码,获取用户输入的新密码2
  10. 判断密码1和密码2是否一致,如果不一致,则返回错误,两次密码不一致
  11. 如果一致,则把新密码赋给之前匹配上的密码,修改成功
    这样修改密码的步骤就写完了,看着比较复杂,其实和上面的注册,登录差不多
    同样,我们还要写一下是否继续修改密码的方法

初始界面

看到这,大家可能会有疑问,我们的第一步不久是写的初始界面嘛,为什么功能实现完了,还有再写初始界面呢
因为,我们最开始写的只是系统的大纲,只是一个空架子,所以在把方法写完之后,需要完善我们的初始界面,调用我们的方法

//这里是初始界面
	public static void select_1() {
		System.out.println("**************************************************");
		System.out.println("可选择的操作有:\n1.注册\n2.登录\n3.修改密码\n4.退出");
		System.out.print("请选择您的操作:");
		String tag = scanner.next();
		switch (tag) {
		case "1":
			System.out.println("**************************************************");
			System.out.println("这里是注册");
			boolean isRegist = regist();
			if(!isRegist) {
				registNext();
			}
			break;
		case "2":
			System.out.println("**************************************************");
			System.out.println("这里是登录");
			boolean isLogin = login();
			if(isLogin) {
				select_2();
			}else {
				loginNext();
			}
			break;
		case "3":
			System.out.println("**************************************************");
			System.out.println("这里是修改密码");
			boolean isChangePassword = changePassword();
			if(!isChangePassword) {
				changePasswordNext();
			}
			break;
		case "4":
			System.out.println("欢迎下次光临");
			System.out.println("**************************************************");
			//退出程序(强制中断程序)
			System.exit(0);
		default:
			System.out.print("输入错误,请重新输入:");
			select_1();
			break;
		}
	}

main方法

我们想做一个可以循环使用的一个系统,类似取款机,一个用户使用结束后,另一个用户继续可以使用,所以我们可以用一个死循环来实现,但是不用担心,不想玩的时候,可以使用4,强制的退出

public static void main(String[] args) {
	scanner = new Scanner(System.in);
	while(true) {
		System.out.println("**************************************************");
		System.out.println("客官,里面请");
		select_1();
	}
}

到这就结束了,用兴趣的小伙伴可以自己去尝试一下,这可以考验我们最基础的逻辑思维能力,其实并没有想象的那么简单
所有的源代码呢,我就不放在这了,因为有200多行,说短也不短。我放到下一个博客里,顺便可以再水一波,有需要的小伙伴,可以去看一下

源代码地址

你可能感兴趣的:(java,javase)