要求
通过list存放3个用户的信息:用户名,密码,姓名。循环输入用户名密码,判断用户是否登录成功。不成功则最多输入5次后提示失败次数过多,成功则提示:欢迎回来,xxx(用户姓名)!
流程
1.新建Java项目
2.删除main类,右键src新建一个包(Package),命名:LoginSystem
3.右键LoginSystem,新建两个包(entiy,service)和一个类(Application)
4.右键entiy新建一个类,命名User;右键service新建一个接口(UserService)与类(UserServiceImpl)
代码实现
User类
package LoginSystem.entiy;
/**
* User 类用于表示用户的信息,包含用户名、密码和姓名
*/
public class User {
private final String uname; // 用户名
private final String cipher; // 密码
private final String name; // 姓名
/**
* 构造函数,用于创建 User 对象并初始化其属性
*
* @param uname 用户名
* @param cipher 密码
* @param name 姓名
*/
public User(String uname, String cipher, String name) {
this.uname = uname;
this.cipher = cipher;
this.name = name;
}
/**
* 获取用户名
*
* @return 用户名
*/
public String getUname() {
return uname;
}
/**
* 获取密码
*
* @return 密码
*/
public String getCipher() {
return cipher;
}
/**
* 获取姓名
*
* @return 姓名
*/
public String getName() {
return name;
}
}
UserService接口
package LoginSystem.service;
/**
* UserService 接口定义了用户登录的方法
*/
public interface UserService {
/**
* 登录方法,根据传入的用户名和密码判断登录是否成功
*
* @param uname 用户名
* @param cipher 密码
* @return 如果登录成功返回 true,否则返回 false
*/
boolean login(String uname, String cipher);
}
UserServiceImpl类
package LoginSystem.service;
import LoginSystem.entiy.User;
import java.util.ArrayList;
import java.util.List;
/**
* UserServiceImpl 类实现了 UserService 接口,用于处理用户登录的逻辑
*/
public class UserServiceImpl implements UserService {
private final List<User> userList; // 存储用户列表
private int round; // 记录尝试登录的次数
/**
* 构造函数,初始化用户列表和尝试次数
*
* @param user1 第一个用户对象
* @param user2 第二个用户对象
* @param user3 第三个用户对象
*/
public UserServiceImpl(User user1, User user2, User user3) {
this.userList = new ArrayList<>();
this.userList.add(user1);
this.userList.add(user2);
this.userList.add(user3);
this.round = 0; // 初始化为 0
}
/**
* 登录方法的实现
*
* @param uname 输入的用户名
* @param cipher 输入的密码
* @return 如果登录成功返回 true,否则返回 false
*/
@Override
public boolean login(String uname, String cipher) {
round++; // 尝试次数加 1
// 遍历用户列表
for (User user : userList) {
// 如果用户名匹配
if (user.getUname().equals(uname)) {
// 如果密码也匹配
if (user.getCipher().equals(cipher)) {
System.out.println("欢迎回来," + user.getName() + "!");
return true;
} else { // 密码错误
System.out.println("登陆失败,密码错误,您还有 " + (5 - round) + " 次机会。");
return false;
}
} else { // 用户名不匹配
// 如果密码匹配(用户名错误但密码正确的情况)
if (user.getCipher().equals(cipher)) {
System.out.println("登陆失败,用户名错误,您还有 " + (5 - round) + " 次机会。");
} else { // 用户名和密码都错误
System.out.println("登陆失败,用户名和密码错误,您还有 " + (5 - round) + " 次机会。");
}
return false;
}
}
return false;
}
}
Application类
package LoginSystem;
import LoginSystem.entiy.User;
import LoginSystem.service.UserService;
import LoginSystem.service.UserServiceImpl;
import java.util.Scanner;
/**
* Application 类是程序的入口点,用于处理用户登录的交互逻辑
*/
public class Application {
public static void main(String[] args) {
// 创建三个用户
User u1 = new User("2021033868", "0618", "小撒");
User u2 = new User("2021033867", "12345678", "小刘");
User u3 = new User("2021033869", "zcr", "小瑞");
// 创建用来登陆的服务对象
UserService us = new UserServiceImpl(u1, u2, u3);
Scanner sc = new Scanner(System.in);
int round = 0; // 记录登录尝试的次数
// 当尝试次数小于 5 时,循环让用户输入用户名和密码进行登录
while (round < 5) {
System.out.print("请输入用户名:");
String uname = sc.next();
System.out.print("请输入密码:");
String cipher = sc.next();
// 调用服务对象的登录方法,如果登录成功则退出循环
if (us.login(uname, cipher)) {
break;
}
round++; // 尝试次数加 1
}
// 如果尝试次数达到 5 次,则提示失败次数过多
if (round == 5) {
System.out.println("失败次数过多!");
}
}
}