具体的步骤,和分析在上一篇博客里,有兴趣的小伙伴,可以去了解一下,传送门
废话不多说,上代码地址
import java.util.Scanner;
public class UserModule {
//成员变量的定义,在成员变量里声明scanner,哪个方法都可以使用
static Scanner scanner;
//声明用户,密码,模拟数据库的存储
static String userNames[] = new String[666];
static String passwords[] = new String[666];
//下标,通过下标来实现账号密码的一一对应
static int number = 0;
//mian方法
public static void main(String[] args) {
scanner = new Scanner(System.in);
//死循环
while(true) {
System.out.println("**************************************************");
System.out.println("客官,里面请");
select_1();
}
}
//这里是初始界面
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();
// 如果isRegist为真(注册成功),!isRegist为假,所以不执行
// 如果isRegist为假(注册失败),!isRegist为真,所以执行
if(!isRegist) {
registNext();
}
break;
case "2":
System.out.println("**************************************************");
System.out.println("这里是登录");
boolean isLogin = login();
// 如果isLogin为真(登录成功),跳转登录后的界面
if(isLogin) {
select_2();
//否则(登陆失败),询问是否继续登录
}else {
loginNext();
}
break;
case "3":
System.out.println("**************************************************");
System.out.println("这里是修改密码");
boolean isChangePassword = changePassword();
// 如果isChangePassword为真(修改成功),!isChangePassword为假,所以不执行
// 如果isChangePassword为假(修改失败),!isChangePassword为真,所以执行
if(!isChangePassword) {
changePasswordNext();
}
break;
case "4":
System.out.println("欢迎下次光临");
System.out.println("**************************************************");
//退出程序(强制中断程序)
System.exit(0);
default:
System.out.print("输入错误,请重新输入:");
//递归
select_1();
break;
}
}
//这里是登录后的用户界面
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;
}
}
//这里是修改密码
public static boolean changePassword() {
System.out.print("请输入账号:");
String userName = scanner.next();
System.out.print("请输入旧密码:");
String password = scanner.next();
//声明一个下标
int i;
for(i=0;i<number;i++) {
//如果匹配上了,那么i就是我们需要找到的那个下标
if(userName.equals(userNames[i])) {
break;
}else {
System.out.println("修改密码失败");
System.out.println("账号不存在");
return false;
}
}
//因为userNames[i]和userName匹配上了
//所以passwords[i]也要和password匹配
if(password.equals(passwords[i])) {
System.out.print("请输入新密码:");
String password_1 = scanner.next();
System.out.print("请确认新密码:");
String password_2 = scanner.next();
if(password_1.equals(password_2)) {
//把新密码,赋给password[i]
passwords[i] = password_1;
System.out.println("修改密码成功");
return true;
}else {
System.out.println("修改密码失败");
System.out.println("两次密码不一致");
return false;
}
}else {
System.out.println("修改密码失败");
System.out.println("账号密码不匹配");
return false;
}
}
//这里是 是否重复修改密码
public static void changePasswordNext() {
System.out.print("是否重新修改密码(y/n):");
String tag = scanner.next();
if(tag.equals("Y")||tag.equals("y")) {
boolean isChangePassword = changePassword();
//再进行一次判断,递归调用自己
if(!isChangePassword) {
changePasswordNext();
}
}else if(tag.equals("N")||tag.equals("n")){
}else {
System.out.println("输入错误,请重新输入");
changePasswordNext();
}
}
//这里是登录
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();
}
}
//这里是注册
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也可以看作数组的长度
number++;
System.out.println("注册成功!");
return true;
}else {
System.out.println("注册失败");
System.out.println("两次密码不一致");
return false;
}
}
//这里是 是否重复注册
public static void registNext() {
System.out.print("是否重新注册(y/n):");
String tag = scanner.next();
if(tag.equals("Y")||tag.equals("y")) {
boolean isRegist = regist();
//再进行一次判断,递归调用自己
//没有这个判断的话,大家可以想一下会发生什么
if(!isRegist) {
registNext();
}
}else if(tag.equals("N")||tag.equals("n")){
}else {
System.out.println("输入错误,请重新输入");
registNext();
}
}
public static void add() {
System.out.print("请输入被加数:");
int a = scanner.nextInt();
System.out.print("请输入加数:");
int b = scanner.nextInt();
System.out.println(a+"+"+b+"="+(a+b));
}
public static void sub() {
System.out.print("请输入被减数:");
int a = scanner.nextInt();
System.out.print("请输入减数:");
int b = scanner.nextInt();
System.out.println(a+"-"+b+"="+(a-b));
}
public static void mul() {
System.out.print("请输入被乘数:");
int a = scanner.nextInt();
System.out.print("请输入乘数:");
int b = scanner.nextInt();
System.out.println(a+"*"+b+"="+(a*b));
}
public static void div() {
System.out.print("请输入被除数:");
int a = scanner.nextInt();
System.out.print("请输入除数:");
int b = scanner.nextInt();
System.out.println(a+"/"+b+"="+(a/b));
}
}