今天带大家使用java最基础的分支语句,循环,方法,以面向过程的方式来进行“模拟用户模块”的开发
首先,确认需求:
先把几个主要的功能列出来,然后根据我们所学的,是不是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;
}
}
这样初始界面就做出来,下面需要就是对模块功能的实现,我们一个一个来,先来说注册
注册怎么做?先来梳理一波结构。
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,所以又可以写下步骤
//这里是 是否重复注册
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();
}
}
这样注册的业务功能就完成了
接下来,我们写登录,同样先来分析一波。
//这里是登录
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()
,这是因为考虑到,登录成功的话,就只返回个登陆成功,有点太单调了,所以我们登陆成功后,跳转到真正的用户界面
我们可以简单的写一个计算器,计算两数的加减乘除。这样再梳理一下步骤。
//这里是登录后的用户界面
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 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;
}
}
我们想做一个可以循环使用的一个系统,类似取款机,一个用户使用结束后,另一个用户继续可以使用,所以我们可以用一个死循环来实现,但是不用担心,不想玩的时候,可以使用4,强制的退出
public static void main(String[] args) {
scanner = new Scanner(System.in);
while(true) {
System.out.println("**************************************************");
System.out.println("客官,里面请");
select_1();
}
}
到这就结束了,用兴趣的小伙伴可以自己去尝试一下,这可以考验我们最基础的逻辑思维能力,其实并没有想象的那么简单
所有的源代码呢,我就不放在这了,因为有200多行,说短也不短。我放到下一个博客里,顺便可以再水一波,有需要的小伙伴,可以去看一下
源代码地址