一、注册
如果注册时输入的用户名和已有的用户名重复,则重新输入。
二、登录
如果输入的用户名和密码有一个不一致,则登录失败。
三、代码实现
项目结构目录:
1.创建用户类(使用了lombok插件,省去了构造方法和getters/setters,同下)
package org.jgs1904.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName User
* @Description 用户类
* @Author RenYuWen
* @Since 2019/12/4 10:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String username; // 用户名
private String password; // 密码
private String name; // 真实姓名
private String tel; // 手机号
}
2.创建注册类
package org.jgs1904.service;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jgs1904.entity.User;
import java.util.List;
import java.util.Scanner;
/**
* @ClassName Register
* @Description 注册
* @Author RenYuWen
* @Since 2019/12/4 10:51
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Register {
private List<User> list;
private Scanner input;
/**
* @Description: 注册方法
* @param: []
* @return: void
* @author: RenYuWen
* @date: 2019/12/6 16:52
*/
public void userRegister(){
String username = "";
boolean flag = true;
do{
System.out.println("请输入用户名");
username = input.next();
flag = false; // 如果没有与输入的用户名相同,直接赋值false,跳出while循环
for (User user1 : list) { // 遍历用户
if (user1.getUsername().equals(username)){ // 如果有用户名和输入的用户名一致
System.out.println("用户名已存在,更换用户名!");
flag = true; // flag赋值为true保证退出for循环后还能继续while循环
break; // 跳出for循环
}
}
}while (flag);
System.out.println("请输入密码");
String password = input.next();
System.out.println("请输入真实姓名");
String name = input.next();
System.out.println("请输入手机号");
String tel = input.next();
list.add(new User(username, password, name, tel)); // 将信息封装为对象并加入list对象集合
System.out.println("注册成功!");
}
}
3.创建登录类
package org.jgs1904.service;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jgs1904.entity.User;
import java.util.List;
import java.util.Scanner;
/**
* @ClassName Login
* @Description 登录
* @Author RenYuWen
* @Since 2019/12/4 10:51
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Login {
private List<User> list;
private Scanner input;
/**
* @Description: 登录方法
* @param: []
* @return: void
* @author: RenYuWen
* @date: 2019/12/6 17:17
*/
public void userLogin(){
System.out.println("请输入用户名");
String username = input.next();
System.out.println("请输入密码");
String password = input.next();
for (User user : list) { // 遍历用户
// 如果有满足用户名和密码相同的用户,就登录成功
if (user.getUsername().equals(username) && user.getPassword().equals(password)){
System.out.println("登录成功");
return; // 如果登录成功就直接结束登录方法
}
}
System.out.println("用户名或密码错误! 登录失败!");
}
}
4.程序入口
package org.jgs1904.start;
import org.jgs1904.entity.User;
import org.jgs1904.service.Login;
import org.jgs1904.service.Register;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @ClassName Main
* @Description 入口
* @Author RenYuWen
* @Since 2019/12/4 10:46
*/
public class Main {
public static Scanner input = new Scanner(System.in); // 用static修饰可以不用使用close方法关闭资源
public static void main(String[] args) {
//先创建一个用户实例,避免空指针
User ryw = new User("ryw", "123", "任玉文", "123");
List<User> list = new ArrayList<>(); // 创建一个list集合
list.add(ryw); // 将创建的实例加入到集合中
Register register = new Register(); // 创建注册类的对象,用来实现注册
register.setList(list); // 给类中的引用属性创建实例
register.setInput(input);
Login login = new Login(); // 创建登录类的对象,用来实现登录
login.setList(list); // 由于操作的是同一个集合对象,因此使用同一个list
login.setInput(input);
while (true){ // 让用户一直选择,直到选择退出,则退出循环
System.out.println("请选择:1. 注册 2.登录 3.退出");
int choose = input.nextInt();
switch (choose){
case 1:
register.userRegister();
break;
case 2:
login.userLogin();
break;
case 3:
return; // 结束main方法,程序结束
default:
break;
}
}
}
}