java模拟实现用户User密码管理:输入旧的用户名和密码,如果正确,方有权限更新;从键盘获取新的密码,进行更新 要求:密码校验错误超过三次,锁定,不给修改
时间: 2024-09-28 07:03:07 浏览: 39
在Java中,我们可以创建一个`User`类来模拟这个密码管理的功能。这里涉及到数据验证、用户身份验证以及错误处理。以下是简单的实现步骤:
```java
import java.util.Scanner;
import java.util.HashMap;
class User {
private String username;
private String password;
private int failedAttempts = 0;
// 构造函数,初始化用户信息
public User(String username, String password) {
this.username = username;
this.password = password;
}
// 检查密码是否匹配
boolean checkPassword(String inputPassword) {
return password.equals(inputPassword);
}
// 更新密码
void updatePassword(String newPassword) {
if (checkPassword(password)) {
this.password = newPassword;
resetFailedAttempts();
System.out.println("密码已成功更新!");
} else {
incrementFailedAttempts();
handleFailedLogin();
}
}
// 锁定和重置失败尝试次数
private void resetFailedAttempts() {
failedAttempts = 0;
}
// 增加失败尝试次数
private void incrementFailedAttempts() {
failedAttempts++;
if (failedAttempts >= 3) {
lockAccount();
}
}
// 锁定账户
private void lockAccount() {
System.out.println("密码输入错误次数过多,账户已被锁定。");
System.out.println("请输入管理员密码解锁(仅示例,实际应用应更安全):");
// 这里只是一个演示,实际应用应从其他安全源获取管理员密码
String adminPassword = "admin123"; // 管理员密码假设已知
if (adminPassword.equals(inputAdminPassword())) {
resetFailedAttempts(); // 解锁后重置尝试次数
} else {
System.out.println("管理员密码无效,无法解锁。");
}
}
// 获取并验证管理员密码
private String inputAdminPassword() {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
return input; // 这里只是一个简单获取,实际应用应有更严谨的输入验证
}
// 主程序入口
public static void main(String[] args) {
User user = new User("testUser", "testPassword");
while (true) {
System.out.println("请输入旧密码(退出请输入'exit'):");
String oldPassword = inputFromUser();
if ("exit".equals(oldPassword)) break;
if (!user.checkPassword(oldPassword)) {
user.incrementFailedAttempts();
handleFailedLogin();
} else {
System.out.println("请输入新密码:");
String newPassword = inputFromUser();
user.updatePassword(newPassword);
}
}
}
// 从用户那里获取输入
private static String inputFromUser() {
Scanner scanner = new Scanner(System.in);
return scanner.nextLine();
}
// 失败登录处理
private void handleFailedLogin() {
if (failedAttempts > 0) {
System.out.println("密码错误,还有" + (3 - failedAttempts) + "次机会。");
}
}
}
```
阅读全文